From 3db6ccd951a130055be58e56811db0c0dc755d47 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Fri, 4 Oct 2024 16:29:17 -0600 Subject: [PATCH 01/13] adjust print size automatically --- src/soca/Fields/Fields.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/soca/Fields/Fields.cc b/src/soca/Fields/Fields.cc index 7ff40b83e..d85e428ef 100644 --- a/src/soca/Fields/Fields.cc +++ b/src/soca/Fields/Fields.cc @@ -137,6 +137,12 @@ double Fields::norm() const { void Fields::print(std::ostream & os) const { os << std::endl << " Valid time: " << validTime(); + // find the longest field name, for use in formatting of the print + size_t maxNameLen = 0; + for (const auto & field : fieldSet_) { + maxNameLen = std::max(maxNameLen, field.name().size()); + } + // for each field for (const auto & field : fieldSet_) { size_t count = 0; @@ -175,7 +181,7 @@ void Fields::print(std::ostream & os) const { if (count > 0) sum /= count; // done with this field, print information - os << std::endl << std::right << std::setw(7) << field.name() + os << std::endl << std::right << std::setw(maxNameLen) << field.name() << " min=" << std::fixed << std::setw(12) << std::right << min << " max=" << std::fixed << std::setw(12) << From 345d5a64d60621a9d70f95566dfc10901decbd7c Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Fri, 4 Oct 2024 16:29:50 -0600 Subject: [PATCH 02/13] ssh --- .../Balance/soca_balance_mod.F90 | 6 +++--- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 2 +- src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc | 2 +- test/Data/fields_metadata.yml | 3 +-- test/testinput/3dvar.yml | 18 ++++++++++++++++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index 3f735f6c0..fd2354bd1 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -257,7 +257,7 @@ subroutine soca_balance_mult(self, dxa, dxm) fld_m%val(i,j,:) = fld_a%val(i,j,:) + & & self%kst%jacobian(i,j,:) * tocn_a%val(i,j,:) - case ("ssh") ! SSH + case ("sea_surface_height_above_geoid") ! SSH fld_m%val(i,j,:) = fld_a%val(i,j,:) do k = 1, tocn_a%nz fld_m%val(i,j,:) = fld_m%val(i,j,:) + & @@ -294,7 +294,7 @@ subroutine soca_balance_multad(self, dxa, dxm) cicen_m => null() call dxm%get("socn", socn_m) - call dxm%get("ssh", ssh_m) + call dxm%get("sea_surface_height_above_geoid", ssh_m) if (dxm%has("cicen")) call dxm%get("cicen",cicen_m) do n = 1, size(dxa%fields) @@ -397,7 +397,7 @@ subroutine soca_balance_multinvad(self, dxa, dxm) cicen_a => null() call dxa%get("socn", socn_a) - call dxa%get("ssh", ssh_a) + call dxa%get("sea_surface_height_above_geoid", ssh_a) if (dxa%has("cicen")) call dxa%get("cicen",cicen_a) do n = 1, size(dxm%fields) diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index 21f638e90..61cd1c233 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -243,7 +243,7 @@ subroutine soca_bkgerrgodas_ssh(self) domain%is = self%geom%isc ; domain%ie = self%geom%iec domain%js = self%geom%jsc ; domain%je = self%geom%jec - call self%std_bkgerr%get("ssh", ssh) + call self%std_bkgerr%get("sea_surface_height_above_geoid", ssh) ! Loop over compute domain do i = domain%is, domain%ie diff --git a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc index 040d7ad82..e47bed4bc 100644 --- a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc +++ b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc @@ -82,7 +82,7 @@ void BkgErrFilt::multiply(oops::FieldSet3D & fset) const { util::Timer timer("soca::BkgErrFilt", "multiply"); const std::set FIELDS3D{"tocn", "socn"}; - const std::set FIELDS2D{"ssh"}; + const std::set FIELDS2D{"sea_surface_height_above_geoid"}; const auto v_mult3D = atlas::array::make_view(mult3D_); const auto v_mult2D = atlas::array::make_view(mult2D_); diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index 25bf2d23c..ae1c43100 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -57,8 +57,7 @@ io name: h vert interp: false -- name: ssh - getval name: sea_surface_height_above_geoid +- name: sea_surface_height_above_geoid io file: ocn io name: ave_ssh diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index 8df2dcd82..6010c5704 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -10,7 +10,21 @@ cost function: time window: begin: 2018-04-14T00:00:00Z length: P2D - analysis variables: &soca_vars [cicen, hicen, hsnon, socn, tocn, ssh, hocn, sw, lhf, shf, lw, us, mld, layer_depth] + analysis variables: &soca_vars + - cicen + - hicen + - hsnon + - socn + - tocn + - sea_surface_height_above_geoid + - hocn + - sw + - lhf + - shf + - lw + - us + - mld + - layer_depth geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -37,7 +51,7 @@ cost function: vertical: levels: 25 filepath: data_generated/parameters_diffusion/vt_5lvls - - variables: [ssh] + - variables: [sea_surface_height_above_geoid] horizontal: filepath: data_generated/parameters_diffusion/hz_smaller From 8f3a487812bcfbcafc7e4eb702a3c7542d899f2c Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Fri, 4 Oct 2024 16:37:37 -0600 Subject: [PATCH 03/13] tocn --- src/soca/Fields/soca_fields_mod.F90 | 2 +- .../LinearVariableChange/Balance/soca_balance_mod.F90 | 10 +++++----- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 4 ++-- src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc | 2 +- test/Data/fields_metadata.yml | 3 +-- test/testinput/3dvar.yml | 4 ++-- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index f0f6fdd45..9b9bd68b3 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -910,7 +910,7 @@ subroutine soca_fields_read(self, f_conf, vdate) ! Compute mixed layer depth TODO: Move somewhere else ... if (self%has("mld") .and. self%has("layer_depth")) then - call self%get("tocn", field) + call self%get("sea_water_potential_temperature", field) call self%get("socn", field2) call self%get("mld", mld) mld%val = 0.0 diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index fd2354bd1..a59c01f56 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -105,7 +105,7 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) jsd=geom%jsd; jed=geom%jed ! Get required fields - call traj%get("tocn", tocn) + call traj%get("sea_water_potential_temperature", tocn) call traj%get("socn", socn) call traj%get("hocn", hocn) call traj%get("mld", mld) @@ -240,7 +240,7 @@ subroutine soca_balance_mult(self, dxa, dxm) !> K= [ Ketat Ketas I 0 ] !> [ Kct 0 0 I ] - call dxa%get("tocn",tocn_a) + call dxa%get("sea_water_potential_temperature",tocn_a) call dxa%get("socn",socn_a) do n=1, size(dxm%fields) @@ -307,7 +307,7 @@ subroutine soca_balance_multad(self, dxa, dxm) case default fld_a%val(i,j,:) = fld_m%val(i,j,:) - case ("tocn") ! Temperature + case ("sea_water_potential_temperature") ! Temperature fld_a%val(i,j,:) = fld_m%val(i,j,:) + & & self%kst%jacobian(i,j,:) * socn_m%val(i,j,:) + & & self%ksshts%kssht(i,j,:) * ssh_m%val(i,j,1) @@ -341,7 +341,7 @@ subroutine soca_balance_multinv(self, dxa, dxm) type(soca_field), pointer :: fld_m, fld_a type(soca_field), pointer :: tocn_m, socn_m - call dxm%get("tocn", tocn_m) + call dxm%get("sea_water_potential_temperature", tocn_m) call dxm%get("socn", socn_m) do n = 1, size(dxa%fields) @@ -410,7 +410,7 @@ subroutine soca_balance_multinvad(self, dxa, dxm) case default fld_m%val(i,j,:) = fld_a%val(i,j,:) - case ('tocn') ! Temperature + case ('sea_water_potential_temperature') ! Temperature fld_m%val(i,j,:) = fld_a%val(i,j,:) & & - self%kst%jacobian(i,j,:) * socn_a%val(i,j,:) & & + ( self%ksshts%ksshs(i,j,:) * self%kst%jacobian(i,j,:) & diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index 61cd1c233..ec452a998 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -182,8 +182,8 @@ subroutine soca_bkgerrgodas_tocn(self) call sst%init(domain, self%sst_bgerr_file) call sst%bin(self%geom%lon, self%geom%lat) - call self%bkg%get("tocn", tocn_b) - call self%std_bkgerr%get("tocn", tocn_e) + call self%bkg%get("sea_water_potential_temperature", tocn_b) + call self%std_bkgerr%get("sea_water_potential_temperature", tocn_e) call self%bkg%get("hocn", hocn) call self%bkg%get("layer_depth",layer_depth) diff --git a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc index e47bed4bc..f19dadc8c 100644 --- a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc +++ b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc @@ -81,7 +81,7 @@ BkgErrFilt::BkgErrFilt( void BkgErrFilt::multiply(oops::FieldSet3D & fset) const { util::Timer timer("soca::BkgErrFilt", "multiply"); - const std::set FIELDS3D{"tocn", "socn"}; + const std::set FIELDS3D{"sea_water_potential_temperature", "socn"}; const std::set FIELDS2D{"sea_surface_height_above_geoid"}; const auto v_mult3D = atlas::array::make_view(mult3D_); diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index ae1c43100..f493ae724 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -19,9 +19,8 @@ # -------------------------------------------------------------------------------------------------- # Ocean state variables # -------------------------------------------------------------------------------------------------- -- name: tocn +- name: sea_water_potential_temperature levels: full_ocn - getval name: sea_water_potential_temperature getval name surface: sea_surface_temperature io file: ocn io name: Temp diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index 6010c5704..87ba3e7e3 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -15,7 +15,7 @@ cost function: - hicen - hsnon - socn - - tocn + - sea_water_potential_temperature - sea_surface_height_above_geoid - hocn - sw @@ -45,7 +45,7 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn] + - variables: [sea_water_potential_temperature, socn] horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: From bf38f59d86e4d6d4f47bc86fec33852aadb935ef Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Fri, 4 Oct 2024 16:43:05 -0600 Subject: [PATCH 04/13] mld --- src/soca/Fields/soca_fields_mod.F90 | 4 +-- .../Balance/soca_balance_mod.F90 | 2 +- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 2 +- test/Data/fields_metadata.yml | 2 +- test/testinput/3dvar.yml | 27 +++++++++++++------ 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index 9b9bd68b3..aa4295267 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -909,10 +909,10 @@ subroutine soca_fields_read(self, f_conf, vdate) end if ! Compute mixed layer depth TODO: Move somewhere else ... - if (self%has("mld") .and. self%has("layer_depth")) then + if (self%has("ocean_mixed_layer_thickness") .and. self%has("layer_depth")) then call self%get("sea_water_potential_temperature", field) call self%get("socn", field2) - call self%get("mld", mld) + call self%get("ocean_mixed_layer_thickness", mld) mld%val = 0.0 do i = isc, iec do j = jsc, jec diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index a59c01f56..b111f0393 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -108,7 +108,7 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) call traj%get("sea_water_potential_temperature", tocn) call traj%get("socn", socn) call traj%get("hocn", hocn) - call traj%get("mld", mld) + call traj%get("ocean_mixed_layer_thickness", mld) call traj%get("layer_depth", layer_depth) if (traj%has("cicen")) call traj%get("cicen", cicen) diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index ec452a998..de4411872 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -289,7 +289,7 @@ subroutine soca_bkgerrgodas_socn(self) ! Loop over compute domain call self%std_bkgerr%get("socn", field) - call self%bkg%get("mld", mld) + call self%bkg%get("ocean_mixed_layer_thickness", mld) call self%bkg%get("layer_depth", layer_depth) do i = domain%is, domain%ie diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index f493ae724..8318efbd5 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -170,7 +170,7 @@ - name: mesoscale_representation_error -- name: mld +- name: ocean_mixed_layer_thickness - name: sea_floor_depth_below_sea_surface diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index 87ba3e7e3..368c5a3f2 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -10,21 +10,19 @@ cost function: time window: begin: 2018-04-14T00:00:00Z length: P2D - analysis variables: &soca_vars + analysis variables: &soca_an_vars - cicen - hicen - hsnon - socn - sea_water_potential_temperature - sea_surface_height_above_geoid - - hocn - sw - lhf - shf - lw - us - - mld - - layer_depth + geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -37,7 +35,21 @@ cost function: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: *soca_vars + state variables: &soca_bg_vars + - cicen + - hicen + - hsnon + - socn + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - hocn + - sw + - lhf + - shf + - lw + - us + - ocean_mixed_layer_thickness + - layer_depth background error: covariance model: SABER @@ -63,10 +75,9 @@ cost function: date: *bkg_date - linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS From b2d276e6a02b4cbcf53054693aadae429afcdaf0 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Fri, 4 Oct 2024 19:02:26 -0600 Subject: [PATCH 05/13] socn --- src/soca/Fields/soca_fields_mod.F90 | 2 +- .../Balance/soca_balance_mod.F90 | 14 +++++++------- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 2 +- src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc | 2 +- src/soca/Utils/OceanSmoother.h | 2 +- test/Data/fields_metadata.yml | 3 +-- test/testinput/3dvar.yml | 8 +++++--- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index aa4295267..94013f187 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -911,7 +911,7 @@ subroutine soca_fields_read(self, f_conf, vdate) ! Compute mixed layer depth TODO: Move somewhere else ... if (self%has("ocean_mixed_layer_thickness") .and. self%has("layer_depth")) then call self%get("sea_water_potential_temperature", field) - call self%get("socn", field2) + call self%get("sea_water_salinity", field2) call self%get("ocean_mixed_layer_thickness", mld) mld%val = 0.0 do i = isc, iec diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index b111f0393..2d10e6703 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -106,7 +106,7 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) ! Get required fields call traj%get("sea_water_potential_temperature", tocn) - call traj%get("socn", socn) + call traj%get("sea_water_salinity", socn) call traj%get("hocn", hocn) call traj%get("ocean_mixed_layer_thickness", mld) call traj%get("layer_depth", layer_depth) @@ -241,7 +241,7 @@ subroutine soca_balance_mult(self, dxa, dxm) !> [ Kct 0 0 I ] call dxa%get("sea_water_potential_temperature",tocn_a) - call dxa%get("socn",socn_a) + call dxa%get("sea_water_salinity",socn_a) do n=1, size(dxm%fields) fld_m => dxm%fields(n) @@ -253,7 +253,7 @@ subroutine soca_balance_mult(self, dxa, dxm) case default fld_m%val(i,j,:) = fld_a%val(i,j,:) - case("socn") ! Salinity + case("sea_water_salinity") ! Salinity fld_m%val(i,j,:) = fld_a%val(i,j,:) + & & self%kst%jacobian(i,j,:) * tocn_a%val(i,j,:) @@ -293,7 +293,7 @@ subroutine soca_balance_multad(self, dxa, dxm) cicen_m => null() - call dxm%get("socn", socn_m) + call dxm%get("sea_water_salinity", socn_m) call dxm%get("sea_surface_height_above_geoid", ssh_m) if (dxm%has("cicen")) call dxm%get("cicen",cicen_m) @@ -317,7 +317,7 @@ subroutine soca_balance_multad(self, dxa, dxm) & self%kct(i,j) * sum(cicen_m%val(i,j,:)) end if - case ("socn") ! Salinity + case ("sea_water_salinity") ! Salinity fld_a%val(i,j,:) = fld_m%val(i,j,:) + & & self%ksshts%ksshs(i,j,:) * ssh_m%val(i,j, 1) @@ -342,7 +342,7 @@ subroutine soca_balance_multinv(self, dxa, dxm) type(soca_field), pointer :: tocn_m, socn_m call dxm%get("sea_water_potential_temperature", tocn_m) - call dxm%get("socn", socn_m) + call dxm%get("sea_water_salinity", socn_m) do n = 1, size(dxa%fields) fld_a => dxa%fields(n) @@ -396,7 +396,7 @@ subroutine soca_balance_multinvad(self, dxa, dxm) cicen_a => null() - call dxa%get("socn", socn_a) + call dxa%get("sea_water_salinity", socn_a) call dxa%get("sea_surface_height_above_geoid", ssh_a) if (dxa%has("cicen")) call dxa%get("cicen",cicen_a) diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index de4411872..6fd7f66cf 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -288,7 +288,7 @@ subroutine soca_bkgerrgodas_socn(self) ! TODO read in a precomputed surface S background error ! Loop over compute domain - call self%std_bkgerr%get("socn", field) + call self%std_bkgerr%get("sea_water_salinity", field) call self%bkg%get("ocean_mixed_layer_thickness", mld) call self%bkg%get("layer_depth", layer_depth) diff --git a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc index f19dadc8c..b6ca901d6 100644 --- a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc +++ b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc @@ -81,7 +81,7 @@ BkgErrFilt::BkgErrFilt( void BkgErrFilt::multiply(oops::FieldSet3D & fset) const { util::Timer timer("soca::BkgErrFilt", "multiply"); - const std::set FIELDS3D{"sea_water_potential_temperature", "socn"}; + const std::set FIELDS3D{"sea_water_potential_temperature", "sea_water_salinity"}; const std::set FIELDS2D{"sea_surface_height_above_geoid"}; const auto v_mult3D = atlas::array::make_view(mult3D_); diff --git a/src/soca/Utils/OceanSmoother.h b/src/soca/Utils/OceanSmoother.h index 76f33323d..a6835965b 100644 --- a/src/soca/Utils/OceanSmoother.h +++ b/src/soca/Utils/OceanSmoother.h @@ -106,7 +106,7 @@ class OceanSmoother { false, this}; oops::Parameter mldVariable{"mld variable", "The name of the MLD variable in the fieldset passed to the constructor", - "mld", this}; + "ocean_mixed_layer_thickness", this}; oops::Parameter mldSmooth{"mld smooth", "If true, smooth the MLD by the horizontal scales before using it for the vertical scales", true, this}; diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index 8318efbd5..7262d557c 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -25,9 +25,8 @@ io file: ocn io name: Temp -- name: socn +- name: sea_water_salinity levels: full_ocn - getval name: sea_water_salinity getval name surface: sea_surface_salinity io file: ocn io name: Salt diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index 368c5a3f2..2a7cf0589 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -14,7 +14,7 @@ cost function: - cicen - hicen - hsnon - - socn + - sea_water_salinity - sea_water_potential_temperature - sea_surface_height_above_geoid - sw @@ -39,7 +39,7 @@ cost function: - cicen - hicen - hsnon - - socn + - sea_water_salinity - sea_water_potential_temperature - sea_surface_height_above_geoid - hocn @@ -57,7 +57,9 @@ cost function: saber block name: diffusion read: groups: - - variables: [sea_water_potential_temperature, socn] + - variables: + - sea_water_potential_temperature + - sea_water_salinity horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: From cdc9f3b6a2b3f9afdfea43eb5d7d120020fcf92e Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Fri, 4 Oct 2024 19:59:34 -0600 Subject: [PATCH 06/13] more vars --- src/soca/Fields/soca_fields_mod.F90 | 8 ++--- src/soca/Increment/soca_increment_mod.F90 | 2 +- .../Balance/soca_balance_mod.F90 | 4 +-- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 13 +++++--- src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc | 4 +-- src/soca/Utils/OceanSmoother.h | 2 +- .../Model2GeoVaLs/Model2GeoVaLs.F90 | 4 +-- test/Data/fields_metadata.yml | 33 +++++++------------ test/testinput/3dvar.yml | 24 +++++++------- 9 files changed, 45 insertions(+), 49 deletions(-) diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index 94013f187..98a67b9e9 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -727,7 +727,7 @@ subroutine soca_fields_read(self, f_conf, vdate) ! iread = 1 (state) or 3 (increment): Read restart file if ((iread==1).or.(iread==3)) then - if (self%has("hocn")) call self%get("hocn", hocn) + call self%get("sea_water_cell_thickness", hocn) ! filename for ocean call f_conf%get_or_die("basename", str) basename = str @@ -900,8 +900,8 @@ subroutine soca_fields_read(self, f_conf, vdate) ! Initialize mid-layer depth from layer thickness ! TODO, this shouldn't live here, it should be part of the variable change class only - if (self%has("layer_depth")) then - call self%get("layer_depth", layer_depth) + if (self%has("depth_below_sea_surface")) then + call self%get("depth_below_sea_surface", layer_depth) layer_depth%val = 0.5 * hocn%val do k = 2, hocn%nz layer_depth%val(:,:,k) = layer_depth%val(:,:,k) + sum(hocn%val(:,:,1:k-1), dim=3) @@ -909,7 +909,7 @@ subroutine soca_fields_read(self, f_conf, vdate) end if ! Compute mixed layer depth TODO: Move somewhere else ... - if (self%has("ocean_mixed_layer_thickness") .and. self%has("layer_depth")) then + if (self%has("ocean_mixed_layer_thickness") .and. self%has("depth_below_sea_surface")) then call self%get("sea_water_potential_temperature", field) call self%get("sea_water_salinity", field2) call self%get("ocean_mixed_layer_thickness", mld) diff --git a/src/soca/Increment/soca_increment_mod.F90 b/src/soca/Increment/soca_increment_mod.F90 index efe91dea4..b5c1dcfaa 100644 --- a/src/soca/Increment/soca_increment_mod.F90 +++ b/src/soca/Increment/soca_increment_mod.F90 @@ -80,7 +80,7 @@ subroutine soca_increment_random(self) field => self%fields(i) ! TODO remove this once increment / state are fully separated ! NOTE: can't randomize "hocn", testIncrementInterpAD fails - if (field%name == 'hocn') cycle + if (field%name == "sea_water_cell_thickness") cycle call normal_distribution(field%val, 0.0_kind_real, 1.0_kind_real, rseed) end do diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index 2d10e6703..085d3ec8e 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -107,9 +107,9 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) ! Get required fields call traj%get("sea_water_potential_temperature", tocn) call traj%get("sea_water_salinity", socn) - call traj%get("hocn", hocn) + call traj%get("sea_water_cell_thickness", hocn) call traj%get("ocean_mixed_layer_thickness", mld) - call traj%get("layer_depth", layer_depth) + call traj%get("depth_below_sea_surface", layer_depth) if (traj%has("cicen")) call traj%get("cicen", cicen) ! allocate space diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index 6fd7f66cf..3acaf49e6 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -96,7 +96,12 @@ subroutine soca_bkgerrgodas_setup(self, f_conf, bkg, geom) do i=1,size(self%std_bkgerr%fields) field => self%std_bkgerr%fields(i) select case(field%name) - case ('sw','lw','lhf','shf','us','swh') + case ('net_downwelling_shortwave_radiation',& + 'net_downwelling_longwave_radiation',& + 'upward_latent_heat_flux_in_air',& + 'upward_sensible_heat_flux_in_air',& + 'friction_velocity_over_water',& + 'sea_surface_wave_significant_height') call bkg%get(field%name, field_bkg) field%val = abs(field_bkg%val) field%val = 0.1_kind_real * field%val @@ -184,8 +189,8 @@ subroutine soca_bkgerrgodas_tocn(self) call self%bkg%get("sea_water_potential_temperature", tocn_b) call self%std_bkgerr%get("sea_water_potential_temperature", tocn_e) - call self%bkg%get("hocn", hocn) - call self%bkg%get("layer_depth",layer_depth) + call self%bkg%get("sea_water_cell_thickness", hocn) + call self%bkg%get("depth_below_sea_surface",layer_depth) ! Loop over compute domain do i = domain%is, domain%ie @@ -290,7 +295,7 @@ subroutine soca_bkgerrgodas_socn(self) ! Loop over compute domain call self%std_bkgerr%get("sea_water_salinity", field) call self%bkg%get("ocean_mixed_layer_thickness", mld) - call self%bkg%get("layer_depth", layer_depth) + call self%bkg%get("depth_below_sea_surface", layer_depth) do i = domain%is, domain%ie do j = domain%js, domain%je diff --git a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc index b6ca901d6..952821931 100644 --- a/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc +++ b/src/soca/SaberBlocks/BkgErrFilt/BkgErrFilt.cc @@ -39,7 +39,7 @@ BkgErrFilt::BkgErrFilt( ASSERT(outerGeometryData.fieldSet()[0].shape(0) == xb.fieldSet()[0].shape(0)); const double MIN_THICKNESS = 1.0e-3; - const int levels = xb["hocn"].levels(); + const int levels = xb["sea_water_cell_thickness"].levels(); mask_ = innerGeometryData_.getField("interp_mask"); mult3D_ = innerGeometryData_.functionSpace().createField( @@ -48,7 +48,7 @@ BkgErrFilt::BkgErrFilt( atlas::option::levels(1) ); auto v_mult3D = atlas::array::make_view(mult3D_); auto v_mult2D = atlas::array::make_view(mult2D_); - const auto v_hocn = atlas::array::make_view(xb["hocn"]); + const auto v_hocn = atlas::array::make_view(xb["sea_water_cell_thickness"]); const auto v_mask = atlas::array::make_view(mask_); v_mult3D.assign(0.0); diff --git a/src/soca/Utils/OceanSmoother.h b/src/soca/Utils/OceanSmoother.h index a6835965b..fbdfe2dab 100644 --- a/src/soca/Utils/OceanSmoother.h +++ b/src/soca/Utils/OceanSmoother.h @@ -125,7 +125,7 @@ class OceanSmoother { this}; oops::Parameter thicknessVariable{"thickness variable", "The name of the layer thickness state variable in the fieldset passed to the constructor", - "hocn", this}; + "sea_water_cell_thickness", this}; }; // ----------------------------------------------------------------------------- diff --git a/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 b/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 index 7345c5441..94d0ca0a0 100644 --- a/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 +++ b/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 @@ -64,7 +64,7 @@ subroutine soca_model2geovals_changevar_f90(c_key_geom, c_key_xin, c_key_xout) & xout%fields(i)%val(:,:,1) = real(geom%lon, kind=kind_real) case ('sea_water_depth') - call xin%get('hocn', field) + call xin%get('sea_water_cell_thickness', field) xout%fields(i)%val = 0.5 * field%val do kk = 2, field%nz xout%fields(i)%val(:,:,kk) = xout%fields(i)%val(:,:,kk) + & @@ -105,7 +105,7 @@ subroutine soca_model2geovals_changevar_f90(c_key_geom, c_key_xin, c_key_xout) & xout%fields(i)%val(:,:,1) = field%val(:,:,1) + 273.15_kind_real case ('sea_floor_depth_below_sea_surface') - call xin%get('hocn', field) + call xin%get('sea_water_cell_thickness', field) xout%fields(i)%val(:,:,1) = sum(field%val, dim=3) ! identity operators diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index 7262d557c..d45739010 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -32,25 +32,22 @@ io name: Salt property: positive_definite -- name: uocn +- name: eastward_sea_water_velocity grid: u levels: full_ocn - getval name: eastward_sea_water_velocity getval name surface: surface_eastward_sea_water_velocity io file: ocn io name: u -- name: vocn +- name: northward_sea_water_velocity grid: v levels: full_ocn - getval name: northward_sea_water_velocity getval name surface: surface_northward_sea_water_velocity io file: ocn io name: v -- name: hocn +- name: sea_water_cell_thickness levels: full_ocn - getval name: sea_water_cell_thickness io file: ocn io name: h vert interp: false @@ -98,8 +95,7 @@ # -------------------------------------------------------------------------------------------------- # wave state variables # -------------------------------------------------------------------------------------------------- -- name: swh - getval name: sea_surface_wave_significant_height +- name: sea_surface_wave_significant_height io file: wav io name: hs property: positive_definite @@ -107,33 +103,28 @@ # -------------------------------------------------------------------------------------------------- # sea surface variables # -------------------------------------------------------------------------------------------------- -- name: sw +- name: net_downwelling_shortwave_radiation masked: false - getval name: net_downwelling_shortwave_radiation io file: sfc io name: sw_rad -- name: lw +- name: net_downwelling_longwave_radiation masked: false - getval name: net_downwelling_longwave_radiation io file: sfc io name: lw_rad -- name: lhf +- name: upward_latent_heat_flux_in_air masked: false - getval name: upward_latent_heat_flux_in_air io file: sfc io name: latent_heat -- name: shf +- name: upward_sensible_heat_flux_in_air masked: false - getval name: upward_sensible_heat_flux_in_air io file: sfc io name: sens_heat -- name: us +- name: friction_velocity_over_water masked: false - getval name: friction_velocity_over_water io file: sfc io name: fric_vel @@ -163,7 +154,7 @@ - name: distance_from_coast masked: false -- name: layer_depth +- name: depth_below_sea_surface levels: full_ocn vert interp: false @@ -176,9 +167,9 @@ - name: sea_area_fraction masked: false -- name: surface_temperature_where_sea +- name: surface_temperature_where_sea # TODO delete this -- name: sea_water_depth +- name: sea_water_depth # TODO delete this levels: full_ocn - name: latitude diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index 2a7cf0589..afe7ae01c 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -17,11 +17,11 @@ cost function: - sea_water_salinity - sea_water_potential_temperature - sea_surface_height_above_geoid - - sw - - lhf - - shf - - lw - - us + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc @@ -42,14 +42,14 @@ cost function: - sea_water_salinity - sea_water_potential_temperature - sea_surface_height_above_geoid - - hocn - - sw - - lhf - - shf - - lw - - us + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water - ocean_mixed_layer_thickness - - layer_depth + - depth_below_sea_surface background error: covariance model: SABER From c7cdd6ffb976bac136dc97973eb1bbdb355c11d7 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Mon, 7 Oct 2024 12:37:39 -0600 Subject: [PATCH 07/13] make a bunch of tests work --- src/soca/Fields/soca_fields_mod.F90 | 2 +- src/soca/Increment/soca_increment_mod.F90 | 18 ++--- .../Balance/soca_balance_mod.F90 | 18 ++--- .../BkgErr/soca_bkgerr_mod.F90 | 15 ++-- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 5 +- .../util/soca_bkgerrutil_mod.F90 | 16 ++-- .../Model2GeoVaLs/Model2GeoVaLs.F90 | 2 +- .../Soca2Cice/soca_soca2cice_mod.F90 | 24 +++--- test/Data/fields_metadata.yml | 81 +++++++------------ test/executables/TestOceanSmoother.cc | 2 +- test/testinput/3dvar.yml | 12 +-- test/testinput/3dvar_nicas.yml | 31 ++++--- test/testinput/enspert.yml | 34 +++++++- test/testinput/forecast_identity.yml | 14 +++- test/testinput/forecast_pseudo.yml | 8 +- test/testinput/geometry_iterator_2d.yml | 9 ++- test/testinput/getvalues.yml | 18 ++++- test/testinput/hofx_3d.yml | 20 ++++- test/testinput/hofx_4d_pseudo.yml | 8 +- test/testinput/increment.yml | 16 +++- test/testinput/letkf.yml | 12 ++- test/testinput/letkf_split_observer.yml | 10 ++- test/testinput/letkf_split_solver.yml | 10 ++- test/testinput/makeobs.yml | 13 ++- test/testinput/oceanSmoother.yml | 9 ++- test/testinput/parameters_bump_cor_nicas.yml | 32 ++++---- .../parameters_bump_cor_nicas_scales.yml | 23 ++++-- test/testinput/parameters_bump_cov.yml | 4 +- test/testinput/parameters_bump_loc.yml | 19 ++--- test/testinput/parameters_diffusion.yml | 9 ++- .../testinput/parameters_diffusion_lowres.yml | 7 +- test/testinput/setcorscales.yml | 23 ++++-- test/testinput/varchange_ana2model.yml | 17 +++- test/testinput/varchange_balance.yml | 23 +++++- test/testinput/varchange_balance_TSSSH.yml | 15 +++- test/testinput/varchange_bkgerrgodas.yml | 23 +++++- test/testinput/varchange_bkgerrsoca.yml | 16 +++- .../testinput/varchange_bkgerrsoca_stddev.yml | 16 +++- 38 files changed, 431 insertions(+), 203 deletions(-) diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index 98a67b9e9..dd1de92d8 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -727,7 +727,7 @@ subroutine soca_fields_read(self, f_conf, vdate) ! iread = 1 (state) or 3 (increment): Read restart file if ((iread==1).or.(iread==3)) then - call self%get("sea_water_cell_thickness", hocn) + if (self%has("sea_water_cell_thickness")) call self%get("sea_water_cell_thickness", hocn) ! filename for ocean call f_conf%get_or_die("basename", str) basename = str diff --git a/src/soca/Increment/soca_increment_mod.F90 b/src/soca/Increment/soca_increment_mod.F90 index b5c1dcfaa..26a1a6ac3 100644 --- a/src/soca/Increment/soca_increment_mod.F90 +++ b/src/soca/Increment/soca_increment_mod.F90 @@ -149,23 +149,23 @@ subroutine soca_increment_dirac(self, f_conf) field => null() select case(ifdir(n)) case (1) - call self%get("tocn", field) + call self%get("sea_water_potential_temperature", field) case (2) - call self%get("socn", field) + call self%get("sea_water_salinity", field) case (3) - call self%get("ssh", field) + call self%get("sea_surface_height_above_geoid", field) case (4) - call self%get("cicen", field) + call self%get("sea_ice_category_area_fraction", field) case (5) - call self%get("hicen", field) + call self%get("sea_ice_category_thickness", field) case (6) - call self%get("chl", field) + call self%get("mass_concentration_of_chlorophyll_in_sea_water", field) case (7) - call self%get("biop", field) + call self%get("molar_concentration_of_biomass_in_sea_water_in_p_units", field) case (8) - call self%get("uocn", field) + call self%get("eastward_sea_water_velocity", field) case (9) - call self%get("vocn", field) + call self%get("northward_sea_water_velocity", field) case default ! TODO print error that out of range end select diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index 085d3ec8e..bb7aad994 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -110,7 +110,7 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) call traj%get("sea_water_cell_thickness", hocn) call traj%get("ocean_mixed_layer_thickness", mld) call traj%get("depth_below_sea_surface", layer_depth) - if (traj%has("cicen")) call traj%get("cicen", cicen) + if (traj%has("sea_ice_category_area_fraction")) call traj%get("sea_ice_category_area_fraction", cicen) ! allocate space nl = hocn%nz @@ -179,7 +179,7 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) deallocate(jac) ! Compute Kct - if (traj%has("cicen")) then + if (traj%has("sea_ice_category_area_fraction")) then ! Setup dc/dT allocate(kct(isd:ied,jsd:jed)) kct = 0.0_kind_real @@ -265,7 +265,7 @@ subroutine soca_balance_mult(self, dxa, dxm) & self%ksshts%ksshs(i,j,k) * socn_a%val(i,j,k) end do - case ("cicen") ! Ice fraction + case ("sea_ice_category_area_fraction") ! Ice fraction do k = 1, fld_m%nz fld_m%val(i,j,k) = fld_a%val(i,j,k) + & & self%kct(i,j) * tocn_a%val(i,j,1) @@ -295,7 +295,7 @@ subroutine soca_balance_multad(self, dxa, dxm) call dxm%get("sea_water_salinity", socn_m) call dxm%get("sea_surface_height_above_geoid", ssh_m) - if (dxm%has("cicen")) call dxm%get("cicen",cicen_m) + if (dxm%has("sea_ice_category_area_fraction")) call dxm%get("sea_ice_category_area_fraction",cicen_m) do n = 1, size(dxa%fields) fld_a => dxa%fields(n) @@ -354,11 +354,11 @@ subroutine soca_balance_multinv(self, dxa, dxm) case default fld_a%val(i,j,:) = fld_m%val(i,j,:) - case ('socn') ! Salinity + case ('sea_water_salinity') ! Salinity fld_a%val(i,j,:) = fld_m%val(i,j,:) - & & self%kst%jacobian(i,j,:) * tocn_m%val(i,j,:) - case ('ssh') ! SSH + case ('sea_surface_height_above_geoid') ! SSH fld_a%val(i,j, :) = fld_m%val(i,j, :) do k = 1, tocn_m%nz fld_a%val(i,j,:) = fld_a%val(i,j,:) + & @@ -367,7 +367,7 @@ subroutine soca_balance_multinv(self, dxa, dxm) & self%ksshts%ksshs(i,j,k) * socn_m%val(i,j,k) end do - case ('cicen') ! Ice fraction + case ('sea_ice_category_area_fraction') ! Ice fraction fld_a%val(i,j,:) = fld_m%val(i,j,:) do k = 1, fld_m%nz fld_a%val(i,j,k) = fld_a%val(i,j,k) - & @@ -398,7 +398,7 @@ subroutine soca_balance_multinvad(self, dxa, dxm) call dxa%get("sea_water_salinity", socn_a) call dxa%get("sea_surface_height_above_geoid", ssh_a) - if (dxa%has("cicen")) call dxa%get("cicen",cicen_a) + if (dxa%has("sea_ice_category_area_fraction")) call dxa%get("sea_ice_category_area_fraction",cicen_a) do n = 1, size(dxm%fields) fld_m => dxm%fields(n) @@ -421,7 +421,7 @@ subroutine soca_balance_multinvad(self, dxa, dxm) & - self%kct(i,j) * sum(cicen_a%val(i,j,:)) end if - case ('socn') ! Salinity + case ('sea_water_salinity') ! Salinity fld_m%val(i,j,:) = fld_a%val(i,j,:) - & & self%ksshts%ksshs(i,j,:) * ssh_a%val(i,j,1) diff --git a/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 b/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 index 26cfd4352..c69392242 100644 --- a/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 @@ -82,7 +82,7 @@ subroutine soca_bkgerr_setup(self, f_conf, bkg, geom) do i=1,size(self%std_bkgerr%fields) field => self%std_bkgerr%fields(i) select case(field%name) - case ("tocn", "socn", "ssh") + case ("sea_water_potential_temperature", "sea_water_salinity", "sea_surface_height_above_geoid") field%val = sqrt(field%val) end select end do @@ -94,12 +94,12 @@ subroutine soca_bkgerr_setup(self, f_conf, bkg, geom) ! Get constand background error for sst and sss if ( f_conf%has("fixed_std_sst") ) then call f_conf%get_or_die("fixed_std_sst", std) - call self%std_bkgerr%get("tocn", field) + call self%std_bkgerr%get("sea_water_potential_temperature", field) field%val(:,:,1) = std end if if ( f_conf%has("fixed_std_sss") ) then call f_conf%get_or_die("fixed_std_sss", std) - call self%std_bkgerr%get("socn", field) + call self%std_bkgerr%get("sea_water_salinity", field) field%val(:,:,1) = std end if @@ -110,10 +110,15 @@ subroutine soca_bkgerr_setup(self, f_conf, bkg, geom) do i=1,size(self%std_bkgerr%fields) field => self%std_bkgerr%fields(i) select case(field%name) - case ('sw','lw','lhf','shf','us') + case ('net_downwelling_shortwave_radiation',& + 'net_downwelling_longwave_radiation',& + 'upward_latent_heat_flux_in_air',& + 'upward_sensible_heat_flux_in_air',& + 'friction_velocity_over_water') call bkg%get(field%name, field_bkg) field%val = abs(field_bkg%val) * 0.1_kind_real - case ('chl','biop') + case ('mass_concentration_of_chlorophyll_in_sea_water',& + 'molar_concentration_of_biomass_in_sea_water_in_p_units') call bkg%get(field%name, field_bkg) field%val = abs(field_bkg%val) * 0.2_kind_real end select diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index 3acaf49e6..2b41b7b14 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -105,7 +105,10 @@ subroutine soca_bkgerrgodas_setup(self, f_conf, bkg, geom) call bkg%get(field%name, field_bkg) field%val = abs(field_bkg%val) field%val = 0.1_kind_real * field%val - case ('chl','biop','uocn','vocn') + case ('mass_concentration_of_chlorophyll_in_sea_water',& + 'molar_concentration_of_biomass_in_sea_water_in_p_units',& + 'eastward_sea_water_velocity',& + 'northward_sea_water_velocity') call bkg%get(field%name, field_bkg) field%val = abs(field_bkg%val) * 0.2_kind_real end select diff --git a/src/soca/LinearVariableChange/util/soca_bkgerrutil_mod.F90 b/src/soca/LinearVariableChange/util/soca_bkgerrutil_mod.F90 index 8bf8835c3..78c43e4b2 100644 --- a/src/soca/LinearVariableChange/util/soca_bkgerrutil_mod.F90 +++ b/src/soca/LinearVariableChange/util/soca_bkgerrutil_mod.F90 @@ -88,28 +88,28 @@ subroutine soca_bkgerr_applybounds(self, fld) do n=1,size(fld%fields) field => fld%fields(n) select case(field%name) - case ("tocn") + case ("sea_water_potential_temperature") vmin = self%t_min!! \relates soca_bkgerrutil_mod::soca_bkgerr_bounds_type vmax = self%t_max - case ("socn") + case ("sea_water_salinity") vmin = self%s_min vmax = self%s_max - case ("ssh") + case ("sea_surface_height_above_geoid") vmin = self%ssh_min vmax = self%ssh_max - case ("cicen") + case ("sea_ice_category_area_fraction") vmin = self%cicen_min vmax = self%cicen_max - case ("hicen") + case ("sea_ice_category_thickness") vmin = self%hicen_min vmax = self%hicen_max - case ("chl") + case ("mass_concentration_of_chlorophyll_in_sea_water") vmin = self%chl_min vmax = self%chl_max - case ("biop") + case ("molar_concentration_of_biomass_in_sea_water_in_p_units") vmin = self%biop_min vmax = self%biop_max - case ("swh") + case ("sea_surface_wave_significant_height") vmin = self%swh_min vmax = self%swh_max case default diff --git a/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 b/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 index 94d0ca0a0..817a21a06 100644 --- a/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 +++ b/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 @@ -101,7 +101,7 @@ subroutine soca_model2geovals_changevar_f90(c_key_geom, c_key_xin, c_key_xout) & ! special derived state variables case ('surface_temperature_where_sea') - call xin%get('tocn', field) + call xin%get('sea_water_potential_temperature', field) xout%fields(i)%val(:,:,1) = field%val(:,:,1) + 273.15_kind_real case ('sea_floor_depth_below_sea_surface') diff --git a/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 b/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 index fcf0a70ca..57408106e 100644 --- a/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 +++ b/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 @@ -206,9 +206,9 @@ subroutine shuffle_ice(self, geom, xm) allocate(idx(nn_max), testmin(nn_max)) ! pointers to soca fields (most likely an analysis) - call xm%get("tocn",t_ana) - call xm%get("socn",s_ana) - call xm%get("cicen",aice_ana) + call xm%get("sea_water_potential_temperature",t_ana) + call xm%get("sea_water_salinity",s_ana) + call xm%get("sea_ice_category_area_fraction",aice_ana) do i = geom%isc, geom%iec do j = geom%jsc, geom%jec @@ -266,11 +266,11 @@ subroutine cleanup_ice(self, geom, xm) real(kind=kind_real), allocatable :: zTin(:), zTsn(:), temp_sno_test ! pointers to soca fields (most likely an analysis) - call xm%get("tocn",t_ana) - call xm%get("socn",s_ana) - call xm%get("cicen",aice_ana) - call xm%get("hicen", hice_ana) - call xm%get("hsnon", hsno_ana) + call xm%get("sea_water_potential_temperature",t_ana) + call xm%get("sea_water_salinity",s_ana) + call xm%get("sea_ice_category_area_fraction",aice_ana) + call xm%get("sea_ice_category_thickness", hice_ana) + call xm%get("sea_ice_category_snow_thickness", hsno_ana) ! get thickness category bounds allocate(h_bounds(0:self%ncat)) @@ -354,10 +354,10 @@ subroutine prior_dist_rescale(self, geom, xm) type(soca_field), pointer :: s_ana, aice_ana, hice_ana, hsno_ana integer :: c, i, j - call xm%get("cicen", aice_ana) - call xm%get("hicen", hice_ana) - call xm%get("hsnon", hsno_ana) - call xm%get("socn", s_ana) + call xm%get("sea_ice_category_area_fraction", aice_ana) + call xm%get("sea_ice_category_thickness", hice_ana) + call xm%get("sea_ice_category_snow_thickness", hsno_ana) + call xm%get("sea_water_salinity", s_ana) do i = geom%isc, geom%iec do j = geom%jsc, geom%jec diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index d45739010..f50fe9c56 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -59,36 +59,30 @@ # -------------------------------------------------------------------------------------------------- # ice state variables # -------------------------------------------------------------------------------------------------- -- name: hicen - getval name: sea_ice_category_thickness +- name: sea_ice_category_thickness io file: ice io name: hicen property: positive_definite -- name: cicen - getval name: sea_ice_category_area_fraction +- name: sea_ice_category_area_fraction getval name surface: sea_ice_area_fraction # note: not accurate, should be "sum" not "surface" io file: ice io name: aicen -- name: hsnon - getval name: sea_ice_category_snow_thickness +- name: sea_ice_category_snow_thickness io file: ice io name: hsnon property: positive_definite -- name: tsfc - getval name: snow_ice_surface_temperature +- name: snow_ice_surface_temperature io file: ice io name: Tsfc_h -- name: tair - getval name: air_temperature +- name: air_temperature io file: ice io name: Tair_h -- name: sice - getval name: bulk_ice_salinity +- name: bulk_ice_salinity io file: ice io name: sice_h @@ -132,17 +126,15 @@ # -------------------------------------------------------------------------------------------------- # BGC # -------------------------------------------------------------------------------------------------- -- name: chl +- name: mass_concentration_of_chlorophyll_in_sea_water levels: full_ocn - getval name: mass_concentration_of_chlorophyll_in_sea_water getval name surface: sea_surface_chlorophyll io file: ocn io name: chl property: positive_definite -- name: biop +- name: molar_concentration_of_biomass_in_sea_water_in_p_units levels: full_ocn - getval name: molar_concentration_of_biomass_in_sea_water_in_p_units getval name surface: sea_surface_biomass_in_p_units io file: ocn io name: biomass_p @@ -185,98 +177,79 @@ - name: dummy_atm1 constant value: 5.0 -- name: oz_th - getval name: ozone_thickness +- name: ozone_thickness constant value: 275 #The average amount of ozone in the atm. is 300 Dobson Units -- name: wvapor - getval name: water_vapor #g/cm^2 +- name: water_vapor #g/cm^2 constant value: 1.2 -- name: ws - getval name: surface_wind_speed +- name: surface_wind_speed constant value: 6 -- name: pres - getval name: surface_pressure +- name: surface_pressure constant value: 999 -- name: rh - getval name: relative_humidity +- name: relative_humidity constant value: 89 -- name: cld_lwp - getval name: cloud_liquid_water_path +- name: cloud_liquid_water_path constant value: 163 -- name: cov - getval name: cloud_area_fraction_in_atmosphere_layer +- name: cloud_area_fraction_in_atmosphere_layer constant value: 80 -- name: aer_tau - getval name: aerosol_optical_thickness +- name: aerosol_optical_thickness constant value: 0.16 -- name: scat_alb - getval name: single_scattering_albedo +- name: single_scattering_albedo constant value: 0.71 -- name: asym_par - getval name: asymmetry_parameter +- name: asymmetry_parameter constant value: 0.97 #---------------------ocean bio -- name: c_det +- name: Carbon_nitrogen_detritus_concentration levels: full_ocn - getval name: Carbon_nitrogen_detritus_concentration io file: bio io name: CDET property: positive_definite -- name: inorg_c +- name: Particulate_inorganic_carbon levels: full_ocn - getval name: Particulate_inorganic_carbon io file: bio io name: PIC -- name: dis_c +- name: colored_dissolved_organic_carbon levels: full_ocn - getval name: colored_dissolved_organic_carbon io file: bio io name: CDC -- name: diatom +- name: diatom_concentration levels: full_ocn - getval name: diatom_concentration io file: bio io name: DIATOM -- name: chloro +- name: chlorophyte_concentration levels: full_ocn - getval name: chlorophyte_concentration io file: bio io name: CHLORO -- name: cyano +- name: cyano-bacteria_concentration levels: full_ocn - getval name: cyano-bacteria_concentration io file: bio io name: CYANO -- name: cocco +- name: coccolithophore_concentration levels: full_ocn - getval name: coccolithophore_concentration io file: bio io name: COCCO -- name: dino +- name: dinoflagellate_concentration levels: full_ocn - getval name: dinoflagellate_concentration io file: bio io name: DINO -- name: phaeo +- name: phaeocystis_concentration levels: full_ocn - getval name: phaeocystis_concentration io file: bio io name: PHAEO diff --git a/test/executables/TestOceanSmoother.cc b/test/executables/TestOceanSmoother.cc index b2bd47ae9..834ca5eb7 100644 --- a/test/executables/TestOceanSmoother.cc +++ b/test/executables/TestOceanSmoother.cc @@ -52,7 +52,7 @@ void testMultiply() { State_ state(geom, parameters.state); // create a random increment - const std::string varname = "tocn"; + const std::string varname = "sea_water_potential_temperature"; oops::Variables vars({oops::Variable(varname)}); util::DateTime time(20240101,0); Increment_ dx(geom, vars, time); diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index afe7ae01c..f5dbec3df 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -11,9 +11,9 @@ cost function: begin: 2018-04-14T00:00:00Z length: P2D analysis variables: &soca_an_vars - - cicen - - hicen - - hsnon + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness - sea_water_salinity - sea_water_potential_temperature - sea_surface_height_above_geoid @@ -36,9 +36,9 @@ cost function: sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z state variables: &soca_bg_vars - - cicen - - hicen - - hsnon + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness - sea_water_salinity - sea_water_potential_temperature - sea_surface_height_above_geoid diff --git a/test/testinput/3dvar_nicas.yml b/test/testinput/3dvar_nicas.yml index 33dcff0a4..dca5e7150 100644 --- a/test/testinput/3dvar_nicas.yml +++ b/test/testinput/3dvar_nicas.yml @@ -10,7 +10,12 @@ cost function: time window: begin: 2018-04-14T00:00:00Z length: P2D - analysis variables: &soca_vars [socn, tocn, uocn, vocn, ssh] + analysis variables: &soca_an_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid geometry: &geom_small geom_grid_file: data_static/36x17x25/soca_gridspec.nc mom6_input_nml: data_static/36x17x25/input.nml @@ -22,7 +27,15 @@ cost function: basename: data_static/36x17x25/restarts/ ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z - state variables: [hocn, socn, tocn, uocn, vocn, ssh, mld, layer_depth] + state variables: + - sea_water_cell_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -38,13 +51,13 @@ cost function: grids: - model: variables: - - socn - - tocn - - uocn - - vocn + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity - model: variables: - - ssh + - sea_surface_height_above_geoid saber outer blocks: - saber block name: SOCABkgErrFilt ocean_depth_min: 1000 # [m] @@ -52,8 +65,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS diff --git a/test/testinput/enspert.yml b/test/testinput/enspert.yml index 273047fab..32a5edcee 100644 --- a/test/testinput/enspert.yml +++ b/test/testinput/enspert.yml @@ -7,7 +7,25 @@ model: # obviously not ideal, in the real world you'd want to run a forecast with MOM6 after running enspert name: Identity tstep: PT6H - model variables: &model_vars [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn, chl, biop, sw, lhf, shf, lw, us, mld, layer_depth] + model variables: &model_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - mass_concentration_of_chlorophyll_in_sea_water + - molar_concentration_of_biomass_in_sea_water_in_p_units + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - ocean_mixed_layer_thickness + - depth_below_sea_surface initial condition: read_from_file: 1 @@ -21,10 +39,20 @@ background error: covariance model: SABER saber central block: saber block name: diffusion - active variables: &soca_vars [tocn, socn, ssh, uocn, vocn, cicen, hicen, chl, biop] + active variables: &soca_vars + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - mass_concentration_of_chlorophyll_in_sea_water + - molar_concentration_of_biomass_in_sea_water_in_p_units + read: groups: - - variables: [tocn, socn, ssh, uocn, vocn, cicen, hicen, chl, biop] + - variables: *soca_vars horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: diff --git a/test/testinput/forecast_identity.yml b/test/testinput/forecast_identity.yml index b94bc47a3..676b851de 100644 --- a/test/testinput/forecast_identity.yml +++ b/test/testinput/forecast_identity.yml @@ -6,7 +6,19 @@ geometry: model: name: Identity tstep: PT1H - model variables: &soca_vars [cicen, hicen, socn, tocn, ssh, hocn, sw, lhf, shf, lw, us, chl] + model variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - mass_concentration_of_chlorophyll_in_sea_water initial condition: read_from_file: 1 diff --git a/test/testinput/forecast_pseudo.yml b/test/testinput/forecast_pseudo.yml index 81b87fc28..4f91a6b6d 100644 --- a/test/testinput/forecast_pseudo.yml +++ b/test/testinput/forecast_pseudo.yml @@ -29,7 +29,13 @@ initial condition: date: &date 2018-04-15T00:00:00Z basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc - state variables: [socn, tocn, ssh, hocn, uocn, vocn] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity forecast length: PT24H diff --git a/test/testinput/geometry_iterator_2d.yml b/test/testinput/geometry_iterator_2d.yml index 8ce7574d6..87d576347 100644 --- a/test/testinput/geometry_iterator_2d.yml +++ b/test/testinput/geometry_iterator_2d.yml @@ -4,7 +4,14 @@ geometry: fields metadata: data_static/fields_metadata.yml iterator dimension: 2 -inc variables: [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn] +inc variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid increment test: date: &date 2018-04-15T00:00:00Z diff --git a/test/testinput/getvalues.yml b/test/testinput/getvalues.yml index d8b094fb4..581b494b9 100644 --- a/test/testinput/getvalues.yml +++ b/test/testinput/getvalues.yml @@ -7,7 +7,21 @@ state: analytic init: method: soca_ana_init date: &date 2018-04-15T03:00:00Z - state variables: [tocn, socn, hocn, ssh, cicen, hicen, swh, sw, lw, lhf, shf, us, uocn, vocn ] + state variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness + - sea_surface_height_above_geoid + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_surface_wave_significant_height + - net_downwelling_shortwave_radiation + - net_downwelling_longwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - friction_velocity_over_water + - eastward_sea_water_velocity + - northward_sea_water_velocity variables: &vars [ # sea_water_potential_temperature, @@ -45,7 +59,7 @@ locations: lat2: 37.5 lon1: -192.5 lon2: -57 - obs errors: [1.0, 1.0, 1.0, 1.0] + obs errors: [1.0, 1.0, 1.0, 1.0] # , 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] tolerance interpolation: 10.5 # still really huge... should probably figure out why sometime. \ No newline at end of file diff --git a/test/testinput/hofx_3d.yml b/test/testinput/hofx_3d.yml index 2a48fa705..290b45b14 100644 --- a/test/testinput/hofx_3d.yml +++ b/test/testinput/hofx_3d.yml @@ -10,7 +10,23 @@ state: ocn_filename: MOM.res.nc ice_filename: cice.res.nc sfc_filename: sfc.res.nc - state variables: [cicen, hicen, hsnon, socn, tocn, ssh, hocn, uocn, vocn, sw, lhf, shf, lw, us, chl, dummy_atm1] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - mass_concentration_of_chlorophyll_in_sea_water + - dummy_atm1 time window: begin: 2018-04-14T00:00:00Z @@ -114,7 +130,7 @@ observations: name: VertInterp observation alias file: testinput/obsop_name_map.yml vertical coordinate: sea_water_depth - observation vertical coordinate: depth + observation vertical coordinate: depth - obs space: name: InsituSalinity obsdataout: diff --git a/test/testinput/hofx_4d_pseudo.yml b/test/testinput/hofx_4d_pseudo.yml index a9c51c9b4..3905d699e 100644 --- a/test/testinput/hofx_4d_pseudo.yml +++ b/test/testinput/hofx_4d_pseudo.yml @@ -29,7 +29,13 @@ initial condition: date: 2018-04-15T00:00:00Z basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc - state variables: [socn, tocn, ssh, hocn, uocn, vocn] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity time window: begin: 2018-04-15T00:00:00Z diff --git a/test/testinput/increment.yml b/test/testinput/increment.yml index c7ed87347..8008038a5 100644 --- a/test/testinput/increment.yml +++ b/test/testinput/increment.yml @@ -8,8 +8,20 @@ other geometry: mom6_input_nml: data_static/36x17x25/input.nml fields metadata: data_static/fields_metadata.yml -# TODO should add cicen/uocn/vocn, but this makes the tests fail -inc variables: [hicen, socn, tocn, uocn, vocn, ssh, chl, biop, sw, lw, lhf, shf, us] +inc variables: +- sea_ice_category_thickness +- sea_water_salinity +- sea_water_potential_temperature +- eastward_sea_water_velocity +- northward_sea_water_velocity +- sea_surface_height_above_geoid +- mass_concentration_of_chlorophyll_in_sea_water +- molar_concentration_of_biomass_in_sea_water_in_p_units +- net_downwelling_shortwave_radiation +- net_downwelling_longwave_radiation +- upward_latent_heat_flux_in_air +- upward_sensible_heat_flux_in_air +- friction_velocity_over_water increment test: tolerance AD resolution change: 1.0e-12 diff --git a/test/testinput/letkf.yml b/test/testinput/letkf.yml index 3a21afffd..bfffd09fc 100644 --- a/test/testinput/letkf.yml +++ b/test/testinput/letkf.yml @@ -14,7 +14,15 @@ background: ocn_filename: MOM.res.ens.%mem%.nc read_from_file: 1 basename: data_static/72x35x25/restarts_ens/ - state variables: [socn, tocn, ssh, uocn, vocn, hocn, chl, biop] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_cell_thickness + - mass_concentration_of_chlorophyll_in_sea_water + - molar_concentration_of_biomass_in_sea_water_in_p_units pattern: '%mem%' nmembers: 4 @@ -81,7 +89,7 @@ observations: - filter: Domain Check where: - variable: {name: GeoVaLs/sea_area_fraction} - minvalue: 0.5 + minvalue: 0.5 driver: do posterior observer: true diff --git a/test/testinput/letkf_split_observer.yml b/test/testinput/letkf_split_observer.yml index 89f3bbb1e..84b43a522 100644 --- a/test/testinput/letkf_split_observer.yml +++ b/test/testinput/letkf_split_observer.yml @@ -12,7 +12,15 @@ background: template: date: 2018-04-15T00:00:00Z read_from_file: 1 - state variables: [socn, tocn, ssh, uocn, vocn, hocn, chl, biop] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_cell_thickness + - mass_concentration_of_chlorophyll_in_sea_water + - molar_concentration_of_biomass_in_sea_water_in_p_units basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.%mem%.nc pattern: '%mem%' diff --git a/test/testinput/letkf_split_solver.yml b/test/testinput/letkf_split_solver.yml index 951d477ca..ce49b6c87 100644 --- a/test/testinput/letkf_split_solver.yml +++ b/test/testinput/letkf_split_solver.yml @@ -12,7 +12,15 @@ background: template: date: 2018-04-15T00:00:00Z read_from_file: 1 - state variables: [socn, tocn, ssh, uocn, vocn, hocn, chl, biop] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_cell_thickness + - mass_concentration_of_chlorophyll_in_sea_water + - molar_concentration_of_biomass_in_sea_water_in_p_units basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.%mem%.nc pattern: '%mem%' diff --git a/test/testinput/makeobs.yml b/test/testinput/makeobs.yml index e624e0998..b1f513b34 100644 --- a/test/testinput/makeobs.yml +++ b/test/testinput/makeobs.yml @@ -12,7 +12,18 @@ geometry: model: name: Identity # could also do PseudoModel, if you wanted tstep: PT1H - model variables: &soca_vars [cicen, hicen, socn, tocn, ssh, hocn, sw, lhf, shf, lw, us] + model variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water initial condition: read_from_file: 1 diff --git a/test/testinput/oceanSmoother.yml b/test/testinput/oceanSmoother.yml index 01f1845c1..e34168f56 100644 --- a/test/testinput/oceanSmoother.yml +++ b/test/testinput/oceanSmoother.yml @@ -8,8 +8,13 @@ state: read_from_file: 1 basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc - state variables: [tocn, socn, ssh, hocn, mld, layer_depth] - + state variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface oceanSmoother: # note that all scales here are Gaussian sigmas diff --git a/test/testinput/parameters_bump_cor_nicas.yml b/test/testinput/parameters_bump_cor_nicas.yml index d0cba90b0..8b44f11e5 100644 --- a/test/testinput/parameters_bump_cor_nicas.yml +++ b/test/testinput/parameters_bump_cor_nicas.yml @@ -10,7 +10,13 @@ background: ocn_filename: MOM.res.nc # basename: data_generated/convertstate/ # ocn_filename: ocn.convertstate.fc.2018-04-15T00:00:00Z.PT0S.nc - state variables: [socn, tocn, uocn, vocn, ssh] + state variables: &soca_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness background error: covariance model: SABER @@ -30,31 +36,21 @@ background error: resolution: 6.0 explicit length-scales: true horizontal length-scale: - - groups: - - socn - - tocn - - uocn - - vocn - - ssh + - groups: *soca_vars value: 6000.0e3 vertical length-scale: - - groups: - - socn - - tocn - - uocn - - vocn - - ssh + - groups: *soca_vars value: 100 grids: - model: variables: - - socn - - tocn - - uocn - - vocn + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity - model: variables: - - ssh + - sea_surface_height_above_geoid output model files: - parameter: cor_rh file: diff --git a/test/testinput/parameters_bump_cor_nicas_scales.yml b/test/testinput/parameters_bump_cor_nicas_scales.yml index 1438df0b6..482e3e25e 100644 --- a/test/testinput/parameters_bump_cor_nicas_scales.yml +++ b/test/testinput/parameters_bump_cor_nicas_scales.yml @@ -9,7 +9,14 @@ background: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: [socn, tocn, uocn, vocn, ssh, cicen, hicen] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_ice_category_area_fraction + - sea_ice_category_thickness background error: covariance model: SABER @@ -30,15 +37,15 @@ background error: grids: - model: variables: - - socn - - tocn - - uocn - - vocn + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity - model: variables: - - ssh - - cicen - - hicen + - sea_surface_height_above_geoid + - sea_ice_category_area_fraction + - sea_ice_category_thickness input model files: - parameter: rh file: diff --git a/test/testinput/parameters_bump_cov.yml b/test/testinput/parameters_bump_cov.yml index 04fb62ddc..1c149d43f 100644 --- a/test/testinput/parameters_bump_cov.yml +++ b/test/testinput/parameters_bump_cov.yml @@ -8,7 +8,7 @@ background: date: &date 2018-04-15T00:00:00Z basename: data_static/36x17x25/restarts/ ocn_filename: MOM.res.nc - state variables: [tocn] + state variables: [sea_water_potential_temperature] background error: covariance model: SABER @@ -19,7 +19,7 @@ background error: date: *date basename: data_static/36x17x25/restarts_ens/ ocn_filename: ocn.enspert.lowres.ens.%mem%.2018-04-15T00:00:00Z.PT6H.nc - state variables: [tocn] + state variables: [sea_water_potential_temperature] pattern: '%mem%' nmembers: 4 saber central block: diff --git a/test/testinput/parameters_bump_loc.yml b/test/testinput/parameters_bump_loc.yml index dafab8cf7..878b60ceb 100644 --- a/test/testinput/parameters_bump_loc.yml +++ b/test/testinput/parameters_bump_loc.yml @@ -9,7 +9,15 @@ background: date: &date 2018-04-15T06:00:00Z ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &stateVariables [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh] + state variables: &stateVariables + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid background error: covariance model: SABER @@ -36,14 +44,7 @@ background error: value: 500 grids: - model: - variables: - - socn - - tocn - - uocn - - vocn - - cicen - - hicen - - ssh + variables: *stateVariables test: reference filename: testref/parameters_bump_loc.test diff --git a/test/testinput/parameters_diffusion.yml b/test/testinput/parameters_diffusion.yml index 725629c46..a5445f949 100644 --- a/test/testinput/parameters_diffusion.yml +++ b/test/testinput/parameters_diffusion.yml @@ -8,7 +8,12 @@ background: basename: data_static/72x35x25/restarts/ date: &date 2018-04-15T06:00:00Z ocn_filename: MOM.res.nc - state variables: &stateVariables [socn, tocn, uocn, vocn, ssh] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid background error: covariance model: SABER @@ -23,7 +28,7 @@ background error: date: *date basename: data_generated/setcorscales/ ocn_filename: ocn.cor_rh.incr.2018-04-15T00:00:00Z.nc - model variable: ssh + model variable: sea_surface_height_above_geoid write: filepath: data_output/hz_large - horizontal: diff --git a/test/testinput/parameters_diffusion_lowres.yml b/test/testinput/parameters_diffusion_lowres.yml index a0666946d..511a7a296 100644 --- a/test/testinput/parameters_diffusion_lowres.yml +++ b/test/testinput/parameters_diffusion_lowres.yml @@ -8,7 +8,12 @@ background: basename: data_static/36x17x25/restarts/ date: &date 2018-04-15T06:00:00Z ocn_filename: MOM.res.nc - state variables: &stateVariables [socn, tocn, uocn, vocn, ssh] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid background error: covariance model: SABER diff --git a/test/testinput/setcorscales.yml b/test/testinput/setcorscales.yml index d162cbf62..48b4c42a1 100644 --- a/test/testinput/setcorscales.yml +++ b/test/testinput/setcorscales.yml @@ -5,30 +5,37 @@ resolution: date: 2018-04-15T00:00:00Z -corr variables: [socn, tocn, uocn, vocn, ssh, cicen, hicen] +corr variables: +- sea_water_salinity +- sea_water_potential_temperature +- eastward_sea_water_velocity +- northward_sea_water_velocity +- sea_surface_height_above_geoid +- sea_ice_category_area_fraction +- sea_ice_category_thickness scales: vert layers: 100 # in units of layer - socn: + sea_water_salinity: rossby mult: 40.0 min grid mult: 5.0 - tocn: + sea_water_potential_temperature: rossby mult: 30.0 min grid mult: 6.0 - uocn: + eastward_sea_water_velocity: rossby mult: 30.0 min grid mult: 6.0 - vocn: + northward_sea_water_velocity: rossby mult: 30.0 min grid mult: 6.0 - ssh: + sea_surface_height_above_geoid: rossby mult: 20.0 min grid mult: 7.0 - cicen: + sea_ice_category_area_fraction: rossby mult: 0.0 min grid mult: 8.0 min value: 1000000 - hicen: + sea_ice_category_thickness: rossby mult: 0.0 min grid mult: 9.0 min value: 5000000 diff --git a/test/testinput/varchange_ana2model.yml b/test/testinput/varchange_ana2model.yml index 765954740..659e49d05 100644 --- a/test/testinput/varchange_ana2model.yml +++ b/test/testinput/varchange_ana2model.yml @@ -7,11 +7,20 @@ variable change tests: - variable change: variable change name: Model2Ana rotate: - u: [uocn] - v: [vocn] + u: [eastward_sea_water_velocity] + v: [northward_sea_water_velocity] log: - var: [socn, chl] - output variables: &soca_vars [cicen, tocn, socn, hocn, uocn, vocn, chl] + var: + - sea_water_salinity + - mass_concentration_of_chlorophyll_in_sea_water + output variables: &soca_vars + - sea_ice_category_area_fraction + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity + - mass_concentration_of_chlorophyll_in_sea_water state: read_from_file: 1 date: 2018-04-15T00:00:00Z diff --git a/test/testinput/varchange_balance.yml b/test/testinput/varchange_balance.yml index 3bbbcced3..c7145a6a1 100644 --- a/test/testinput/varchange_balance.yml +++ b/test/testinput/varchange_balance.yml @@ -10,14 +10,31 @@ background: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn, mld, layer_depth] + state variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface linear variable change tests: - tolerance inverse: 1e-12 test inverse: 1 linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: &soca_an_vars + # - sea_ice_category_area_fraction + # - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + # - eastward_sea_water_velocity + # - northward_sea_water_velocity + - sea_surface_height_above_geoid + output variables: *soca_an_vars linear variable changes: - linear variable change name: BalanceSOCA dsdtmax: 1.0 diff --git a/test/testinput/varchange_balance_TSSSH.yml b/test/testinput/varchange_balance_TSSSH.yml index 3347593bc..8f03bfe76 100644 --- a/test/testinput/varchange_balance_TSSSH.yml +++ b/test/testinput/varchange_balance_TSSSH.yml @@ -8,14 +8,23 @@ background: date: 2018-04-15T00:00:00Z basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc - state variables: &soca_vars [socn, tocn, ssh, hocn, mld, layer_depth] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface linear variable change tests: - tolerance inverse: 1e-12 test inverse: 1 linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: &soca_an_vars + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + output variables: *soca_an_vars linear variable changes: - linear variable change name: BalanceSOCA dsdtmax: 1.0 diff --git a/test/testinput/varchange_bkgerrgodas.yml b/test/testinput/varchange_bkgerrgodas.yml index b18e98e10..860b1b08a 100644 --- a/test/testinput/varchange_bkgerrgodas.yml +++ b/test/testinput/varchange_bkgerrgodas.yml @@ -9,14 +9,31 @@ background: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, ssh, uocn, vocn, hocn, mld, layer_depth] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface linear variable change tests: - tolerance inverse: 1e-12 test inverse: 0 linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - eastward_sea_water_velocity + - northward_sea_water_velocity + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS sst_bgerr_file: data_static/godas_sst_bgerr.nc diff --git a/test/testinput/varchange_bkgerrsoca.yml b/test/testinput/varchange_bkgerrsoca.yml index 6a369e8d7..f54a80310 100644 --- a/test/testinput/varchange_bkgerrsoca.yml +++ b/test/testinput/varchange_bkgerrsoca.yml @@ -9,14 +9,24 @@ background: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, ssh, hocn] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness linear variable change tests: - tolerance inverse: 1e-12 test inverse: 0 linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrSOCA tolerance inverse: 1e-12 diff --git a/test/testinput/varchange_bkgerrsoca_stddev.yml b/test/testinput/varchange_bkgerrsoca_stddev.yml index e015e4d96..c2a900275 100644 --- a/test/testinput/varchange_bkgerrsoca_stddev.yml +++ b/test/testinput/varchange_bkgerrsoca_stddev.yml @@ -9,14 +9,24 @@ background: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, ssh, hocn] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness linear variable change tests: - tolerance inverse: 1e-12 test inverse: 0 linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrSOCA tolerance inverse: 1e-12 From 7705d537afe3f13e9d67eb4891c83ff9e7362a21 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Mon, 7 Oct 2024 13:02:56 -0600 Subject: [PATCH 08/13] more tests updated --- test/testinput/convertstate.yml | 9 +++- test/testinput/convertstate_changevar.yml | 23 ++++++--- test/testinput/diffstates.yml | 13 ++++- test/testinput/ensmeanandvariance.yml | 12 ++++- test/testinput/ensrecenter.yml | 14 ++++-- .../gen_hybrid_linear_model_coeffs.yml | 39 +++++++++------ test/testinput/hybridgain.yml | 10 +++- test/testinput/linearization_error.yml | 49 +++++++++++-------- test/testinput/parametric_stddev.yml | 21 ++++++-- test/testinput/sqrtvertloc.yml | 29 +++++++++-- 10 files changed, 159 insertions(+), 60 deletions(-) diff --git a/test/testinput/convertstate.yml b/test/testinput/convertstate.yml index 19d92c6f7..16556952b 100644 --- a/test/testinput/convertstate.yml +++ b/test/testinput/convertstate.yml @@ -18,7 +18,14 @@ states: date: &bkg_date 2018-04-15T00:00:00Z # NOTE: you probably shouldn't use uocn and vocn for now until grid # de-staggering is implemented - state variables: [ssh, tocn, socn, hocn, cicen, layer_depth] + state variables: + - sea_surface_height_above_geoid + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness + - sea_ice_category_area_fraction + - depth_below_sea_surface + output: datadir: data_output/ exp: convertstate diff --git a/test/testinput/convertstate_changevar.yml b/test/testinput/convertstate_changevar.yml index 70d950058..9065d2a9a 100644 --- a/test/testinput/convertstate_changevar.yml +++ b/test/testinput/convertstate_changevar.yml @@ -1,7 +1,3 @@ -_: #YAML anchors to be used throughout - - &soca_vars [ssh, tocn, socn, uocn, vocn, hocn, cicen, chl, layer_depth] - - input geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -13,12 +9,23 @@ variable change: variable change name: Model2Ana do inverse: false rotate: - u: [uocn] - v: [vocn] + u: [eastward_sea_water_velocity] + v: [northward_sea_water_velocity] interp: true log: - var: [socn, chl] - output variables: *soca_vars + var: + - sea_water_salinity + - mass_concentration_of_chlorophyll_in_sea_water + output variables: &soca_vars + - sea_surface_height_above_geoid + - sea_water_potential_temperature + - sea_water_salinity + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_cell_thickness + - sea_ice_category_area_fraction + - mass_concentration_of_chlorophyll_in_sea_water + - depth_below_sea_surface states: - input: diff --git a/test/testinput/diffstates.yml b/test/testinput/diffstates.yml index e0ef52c0b..55dba77b7 100644 --- a/test/testinput/diffstates.yml +++ b/test/testinput/diffstates.yml @@ -12,7 +12,16 @@ state1: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: [cicen, hicen, hsnon, socn, tocn, ssh, hocn, uocn, vocn] + state variables: &state_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity state2: read_from_file: 1 @@ -21,7 +30,7 @@ state2: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: *bkg_date - state variables: [cicen, hicen, hsnon, socn, tocn, ssh, hocn, uocn, vocn] + state variables: *state_vars output: # state1 - state2 datadir: data_output/ diff --git a/test/testinput/ensmeanandvariance.yml b/test/testinput/ensmeanandvariance.yml index 29a1f142e..519513013 100644 --- a/test/testinput/ensmeanandvariance.yml +++ b/test/testinput/ensmeanandvariance.yml @@ -8,7 +8,17 @@ _file: &_file date: &date_bkg 2018-04-15T00:00:00Z basename: data_static/72x35x25/ remap_filename: data_static/72x35x25/restarts/MOM.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn, mld, layer_depth] + state variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface ensemble: members: diff --git a/test/testinput/ensrecenter.yml b/test/testinput/ensrecenter.yml index a5c589e0b..2b30b41b2 100644 --- a/test/testinput/ensrecenter.yml +++ b/test/testinput/ensrecenter.yml @@ -3,7 +3,15 @@ geometry: mom6_input_nml: data_static/72x35x25/input.nml fields metadata: data_static/fields_metadata.yml -recenter variables: [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn] +recenter variables: &vars +- sea_ice_category_area_fraction +- sea_ice_category_thickness +- sea_water_salinity +- sea_water_potential_temperature +- eastward_sea_water_velocity +- northward_sea_water_velocity +- sea_surface_height_above_geoid +- sea_water_cell_thickness center: read_from_file: 1 @@ -11,7 +19,7 @@ center: basename: data_static/72x35x25/ ocn_filename: restarts/MOM.res.nc ice_filename: restarts/cice.res.nc - state variables: [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn] + state variables: *vars ensemble: members from template: @@ -22,7 +30,7 @@ ensemble: remap_filename: data_static/72x35x25/restarts/MOM.res.nc ocn_filename: restarts_ens/MOM.res.ens.%mem%.nc ice_filename: restarts_ens/cice.res.ens.%mem%.nc - state variables: [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn] + state variables: *vars pattern: %mem% nmembers: 4 diff --git a/test/testinput/gen_hybrid_linear_model_coeffs.yml b/test/testinput/gen_hybrid_linear_model_coeffs.yml index 969a19887..fa1b79a5b 100644 --- a/test/testinput/gen_hybrid_linear_model_coeffs.yml +++ b/test/testinput/gen_hybrid_linear_model_coeffs.yml @@ -11,13 +11,15 @@ hybrid linear model: variable change: Identity name: Identity update tstep: PT6H - variables: [socn, tocn] + variables: &tlm_vars + - sea_water_salinity + - sea_water_potential_temperature coefficients: output: base filepath: data_output/hybrid_linear_model_coeffs one file per task: true influence region size: 3 - update variables: [socn, tocn] + update variables: *tlm_vars time window: begin: 2018-04-15T00:00:00Z length: PT12H @@ -34,55 +36,62 @@ hybrid linear model: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: &state_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - depth_below_sea_surface ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT12H.nc - ID: 1 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens1/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens1.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens1/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens1.fc.2018-04-15T00:00:00Z.PT12H.nc - ID: 2 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens2/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens2.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens2/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens2.fc.2018-04-15T00:00:00Z.PT12H.nc - ID: 3 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens3/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens3.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens3/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens3.fc.2018-04-15T00:00:00Z.PT12H.nc model geometry: *geom nonlinear control: ID: 0 read_from_file: 1 basename: data_static/72x35x25/restarts/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z nonlinear ensemble: @@ -93,17 +102,17 @@ hybrid linear model: template: ID: %mem% read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.%mem%.nc date: 2018-04-15T00:00:00Z test: - variables: [socn, tocn] + variables: *tlm_vars # NOTE: iUsing large tolerances - # here just to test the plumbing the testoutput is not + # here just to test the plumbing the testoutput is not # realistic as initital perturbation is a matrix of ones - # OR accurate as the RMSbyLevel doesnt take + # OR accurate as the RMSbyLevel doesnt take # landmask into account reference filename: testref/gen_hybrid_linear_model_coeffs.test test output filename: testoutput/gen_hybrid_linear_model_coeffs.test diff --git a/test/testinput/hybridgain.yml b/test/testinput/hybridgain.yml index 4d3bb015b..717df6136 100644 --- a/test/testinput/hybridgain.yml +++ b/test/testinput/hybridgain.yml @@ -8,7 +8,15 @@ _file: &_file date: &date_bkg 2018-04-15T00:00:00Z basename: data_static/72x35x25/ remap_filename: data_static/72x35x25/restarts/MOM.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness hybrid weights: control: 0.2 diff --git a/test/testinput/linearization_error.yml b/test/testinput/linearization_error.yml index cc4f651b6..bd9b8dfc5 100644 --- a/test/testinput/linearization_error.yml +++ b/test/testinput/linearization_error.yml @@ -15,10 +15,12 @@ linear model: variable change: Identity name: Identity update tstep: PT6H - variables: [socn, tocn] + variables: &tlm_vars + - sea_water_salinity + - sea_water_potential_temperature coefficients: influence region size: 3 - update variables: [socn, tocn] + update variables: *tlm_vars time window: begin: 2018-04-15T00:00:00Z length: PT12H @@ -35,55 +37,62 @@ linear model: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: &state_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - depth_below_sea_surface ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT12H.nc - ID: 1 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens1/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens1.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens1/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens1.fc.2018-04-15T00:00:00Z.PT12H.nc - ID: 2 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens2/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens2.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens2/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens2.fc.2018-04-15T00:00:00Z.PT12H.nc - ID: 3 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens3/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens3.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens3/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens3.fc.2018-04-15T00:00:00Z.PT12H.nc model geometry: *geom nonlinear control: ID: 0 read_from_file: 1 basename: data_static/72x35x25/restarts/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z nonlinear ensemble: @@ -94,7 +103,7 @@ linear model: template: ID: %mem% read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.%mem%.nc date: 2018-04-15T00:00:00Z @@ -104,18 +113,18 @@ x1: ID: 0 read_from_file: 1 basename: data_static/72x35x25/restarts/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: MOM.res.nc - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars date: 2018-04-15T00:00:00Z x2: ID: 1 read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.1.nc - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars date: 2018-04-15T00:00:00Z # Provide the non-linear model here @@ -128,24 +137,24 @@ model: - date: 2018-04-15T06:00:00Z basename: data_generated/forecast_mom6/ ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT6H.nc - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars read_from_file: 1 - date: 2018-04-15T12:00:00Z basename: data_generated/forecast_mom6/ ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT12H.nc - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars read_from_file: 1 - ID: 1 states: - date: 2018-04-15T06:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens1/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens1.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 basename: data_generated/forecast_mom6_ens1/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *state_vars ocn_filename: ocn.fcst_ens1.fc.2018-04-15T00:00:00Z.PT12H.nc model geometry: *geom diff --git a/test/testinput/parametric_stddev.yml b/test/testinput/parametric_stddev.yml index f8265b45a..6a9021b49 100644 --- a/test/testinput/parametric_stddev.yml +++ b/test/testinput/parametric_stddev.yml @@ -6,8 +6,12 @@ input geometry: &geom output geometry: *geom linear variable change: - input variables: [tocn, socn, ssh, hocn] - output variables: [tocn, socn, ssh, hocn] + input variables: &soca_vars + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + output variables: *soca_vars linear variable changes: - linear variable change name: BkgErrGODAS @@ -28,17 +32,24 @@ linear variable change: increments: - date: 2018-04-15T00:00:00Z - input variables: [tocn, socn, ssh, hocn] + input variables: *soca_vars input: Identity: 1 date: 2018-04-15T00:00:00Z - state variables: [ssh, tocn, socn, hocn] + state variables: *soca_vars trajectory: read_from_file: 1 basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z - state variables: [ssh, tocn, socn, hocn, layer_depth, mld] + state variables: + - sea_surface_height_above_geoid + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness + - depth_below_sea_surface + - ocean_mixed_layer_thickness + output: datadir: data_output/ exp: parametric_stddev diff --git a/test/testinput/sqrtvertloc.yml b/test/testinput/sqrtvertloc.yml index fa473dace..152317e92 100644 --- a/test/testinput/sqrtvertloc.yml +++ b/test/testinput/sqrtvertloc.yml @@ -3,15 +3,31 @@ geometry: &geom mom6_input_nml: data_static/72x35x25/input.nml fields metadata: data_static/fields_metadata.yml -_model variables: &model_vars [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn, chl, biop, sw, lhf, shf, lw, us, mld, layer_depth] - background: read_from_file: 1 basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc ice_filename: cice.res.nc date: &date 2018-04-15T00:00:00Z - state variables: *model_vars + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - mass_concentration_of_chlorophyll_in_sea_water + - molar_concentration_of_biomass_in_sea_water_in_p_units + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -19,7 +35,12 @@ background error: saber block name: diffusion read: groups: - - variables: &soca_vars [ssh, tocn, socn, uocn, vocn] + - variables: &soca_vars + - sea_surface_height_above_geoid + - sea_water_potential_temperature + - sea_water_salinity + - eastward_sea_water_velocity + - northward_sea_water_velocity horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: From 639d8728d06c40661ef0c99741421b1c8f8565f3 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Tue, 8 Oct 2024 10:31:31 -0600 Subject: [PATCH 09/13] all tests pass --- .../BkgErr/soca_bkgerr_mod.F90 | 4 +- test/testinput/3dhyb.yml | 39 ++++++++++++--- test/testinput/3dhyb_diffusion.yml | 47 +++++++++++++++---- test/testinput/3dhybfgat_pseudo.yml | 40 ++++++++++++---- test/testinput/3dvar_lowres.yml | 40 +++++++++++++--- test/testinput/3dvarfgat_pseudo.yml | 30 +++++++++--- test/testinput/4denvar.yml | 22 +++++++-- test/testinput/4dhybenvar.yml | 28 ++++++++--- test/testinput/4dvar_htlm.yml | 32 ++++++++++--- test/testinput/4dvar_identity.yml | 30 +++++++++--- test/testinput/addincrement.yml | 18 ++++++- test/testinput/convertincrement.yml | 24 ++++++++-- test/testinput/dirac_diffusion.yml | 16 +++++-- test/testinput/dirac_diffusion_lowres.yml | 16 +++++-- .../testinput/dirac_soca_cor_nicas_scales.yml | 18 ++++--- test/testinput/dirac_soca_cov.yml | 26 +++++++--- test/testinput/dirac_socahyb_cov.yml | 25 +++++++--- test/testinput/state.yml | 19 +++++++- test/testref/convertincrement.test | 8 ++-- 19 files changed, 380 insertions(+), 102 deletions(-) diff --git a/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 b/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 index c69392242..016393530 100644 --- a/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErr/soca_bkgerr_mod.F90 @@ -82,7 +82,9 @@ subroutine soca_bkgerr_setup(self, f_conf, bkg, geom) do i=1,size(self%std_bkgerr%fields) field => self%std_bkgerr%fields(i) select case(field%name) - case ("sea_water_potential_temperature", "sea_water_salinity", "sea_surface_height_above_geoid") + case ("sea_water_potential_temperature",& + "sea_water_salinity",& + "sea_surface_height_above_geoid") field%val = sqrt(field%val) end select end do diff --git a/test/testinput/3dhyb.yml b/test/testinput/3dhyb.yml index e743c898f..7b885bb84 100644 --- a/test/testinput/3dhyb.yml +++ b/test/testinput/3dhyb.yml @@ -4,7 +4,16 @@ cost function: time window: begin: 2018-04-14T00:00:00Z length: P2D - analysis variables: &soca_vars [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn] + analysis variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -17,7 +26,23 @@ cost function: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: &model_vars [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn, sw, lhf, shf, lw, us, mld, layer_depth] + state variables: &soca_bg_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: hybrid @@ -28,7 +53,7 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, cicen, hicen, hsnon, uocn, vocn, ssh] + - variables: *soca_an_vars horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -42,8 +67,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS @@ -83,7 +108,7 @@ cost function: date: *bkg_date basename: data_static/72x35x25/restarts_ens/ remap_filename: data_static/72x35x25/restarts/MOM.res.nc - state variables: *soca_vars + state variables: *soca_bg_vars members: - <<: *_file ocn_filename: MOM.res.ens.1.nc @@ -101,7 +126,7 @@ cost function: localization method: SABER saber central block: saber block name: BUMP_NICAS - active variables: *soca_vars + active variables: *soca_an_vars read: io: data directory: data_generated/parameters_bump_loc diff --git a/test/testinput/3dhyb_diffusion.yml b/test/testinput/3dhyb_diffusion.yml index 547f0b4b3..430b7dbd4 100644 --- a/test/testinput/3dhyb_diffusion.yml +++ b/test/testinput/3dhyb_diffusion.yml @@ -4,7 +4,17 @@ cost function: time window: begin: 2018-04-14T00:00:00Z length: P2D - analysis variables: &soca_vars [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn] + analysis variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -17,7 +27,23 @@ cost function: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: &model_vars [cicen, hicen, hsnon, socn, tocn, uocn, vocn, ssh, hocn, sw, lhf, shf, lw, us, mld, layer_depth] + state variables: &soca_bg_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: hybrid @@ -28,13 +54,18 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, cicen, hicen, hsnon] + - variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: levels: 25 filepath: data_generated/parameters_diffusion/vt_5lvls - - variables: [ssh] + - variables: [sea_surface_height_above_geoid] horizontal: filepath: data_generated/parameters_diffusion/hz_smaller @@ -45,8 +76,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS @@ -87,7 +118,7 @@ cost function: date: *bkg_date basename: data_static/72x35x25/restarts_ens/ # remap_filename: data_static/72x35x25/restarts/MOM.res.nc - state variables: *soca_vars + state variables: *soca_bg_vars members: - <<: *_file ocn_filename: MOM.res.ens.1.nc @@ -107,7 +138,7 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, ssh, cicen, hicen, hsnon, uocn, vocn] + - variables: *soca_an_vars multivariate strategy: duplicated horizontal: filepath: data_generated/parameters_diffusion/hz_smaller diff --git a/test/testinput/3dhybfgat_pseudo.yml b/test/testinput/3dhybfgat_pseudo.yml index c27c419bb..7be8d4af4 100644 --- a/test/testinput/3dhybfgat_pseudo.yml +++ b/test/testinput/3dhybfgat_pseudo.yml @@ -4,7 +4,14 @@ cost function: time window: begin: *date_begin length: PT24H - analysis variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn] + analysis variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc @@ -35,8 +42,8 @@ cost function: variable change: variable change name: Model2Ana rotate: - u: [uocn] - v: [vocn] + u: [eastward_sea_water_velocity] + v: [northward_sea_water_velocity] log: var: [] @@ -46,7 +53,17 @@ cost function: ocn_filename: MOM.res.nc ice_filename: cice.res.nc date: *date_begin - state variables: &model_vars [cicen, hicen, socn, uocn, vocn, tocn, ssh, hocn, mld, layer_depth] + state variables: &soca_bg_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: hybrid @@ -57,7 +74,12 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, ssh, cicen, hicen] + - variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid + - sea_ice_category_area_fraction + - sea_ice_category_thickness horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -71,8 +93,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS @@ -109,7 +131,7 @@ cost function: date: *date_begin basename: data_static/72x35x25/restarts_ens/ # remap_filename: data_static/72x35x25/restarts/MOM.res.nc - state variables: *soca_vars + state variables: *soca_bg_vars members: - <<: *_file ocn_filename: MOM.res.ens.1.nc @@ -127,7 +149,7 @@ cost function: localization method: SABER saber central block: saber block name: BUMP_NICAS - active variables: *soca_vars + active variables: *soca_an_vars read: io: data directory: data_generated/parameters_bump_loc diff --git a/test/testinput/3dvar_lowres.yml b/test/testinput/3dvar_lowres.yml index 68c934cb2..bed2528b3 100644 --- a/test/testinput/3dvar_lowres.yml +++ b/test/testinput/3dvar_lowres.yml @@ -10,7 +10,19 @@ cost function: time window: begin: 2018-04-14T00:00:00Z length: P2D - analysis variables: &soca_vars [cicen, hicen, hsnon, socn, tocn, ssh, hocn, sw, lhf, shf, lw, us, mld, layer_depth] + analysis variables: &soca_an_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + geometry: geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -23,7 +35,21 @@ cost function: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: *soca_vars + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -34,13 +60,15 @@ cost function: read: groups: # NOTE, the lower resolution files are used here - - variables: [tocn, socn] + - variables: + - sea_water_potential_temperature + - sea_water_salinity horizontal: filepath: data_generated/parameters_diffusion_lowres/hz_smaller vertical: levels: 25 filepath: data_generated/parameters_diffusion_lowres/vt_5lvls - - variables: [ssh] + - variables: [sea_surface_height_above_geoid] horizontal: filepath: data_generated/parameters_diffusion_lowres/hz_smaller @@ -51,8 +79,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS diff --git a/test/testinput/3dvarfgat_pseudo.yml b/test/testinput/3dvarfgat_pseudo.yml index 2f17c81db..1bb5d4c97 100644 --- a/test/testinput/3dvarfgat_pseudo.yml +++ b/test/testinput/3dvarfgat_pseudo.yml @@ -10,7 +10,12 @@ cost function: time window: begin: &date_begin 2018-04-15T00:00:00Z length: PT24H - analysis variables: &soca_vars [socn, tocn, uocn, vocn, ssh] + analysis variables: &soca_an_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc mom6_input_nml: data_static/72x35x25/input.nml @@ -19,8 +24,8 @@ cost function: variable change: variable change name: Model2Ana rotate: - u: [uocn] - v: [vocn] + u: [eastward_sea_water_velocity] + v: [northward_sea_water_velocity] log: var: [] @@ -49,7 +54,15 @@ cost function: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: [socn, tocn, ssh, hocn, uocn, vocn, mld, layer_depth] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -57,7 +70,10 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, ssh] + - variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -71,8 +87,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BalanceSOCA diff --git a/test/testinput/4denvar.yml b/test/testinput/4denvar.yml index c7c8aab7b..3df5847d6 100644 --- a/test/testinput/4denvar.yml +++ b/test/testinput/4denvar.yml @@ -1,6 +1,11 @@ cost function: cost type: 4D-Ens-Var - analysis variables: [socn, tocn, uocn, vocn, ssh] + analysis variables: + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid time window: begin: 2018-04-15T00:00:00Z length: PT24H @@ -17,10 +22,17 @@ cost function: - _bkg_state: &_bkg_state read_from_file: 1 basename: data_generated/forecast_mom6/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: &soca_bg_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - depth_below_sea_surface read_from_file: 1 basename: data_static/72x35x25/restarts/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *soca_bg_vars ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z - <<: *_bkg_state @@ -50,10 +62,10 @@ cost function: states: - _bkg_err_state: &_bkg_err_state read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *soca_bg_vars basename: data_generated/forecast_mom6_ens%mem%/ read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *soca_bg_vars basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.%mem%.nc date: 2018-04-15T00:00:00Z diff --git a/test/testinput/4dhybenvar.yml b/test/testinput/4dhybenvar.yml index 5df9393f5..9cbdc75ac 100644 --- a/test/testinput/4dhybenvar.yml +++ b/test/testinput/4dhybenvar.yml @@ -1,6 +1,12 @@ cost function: cost type: 4D-Ens-Var - analysis variables: [socn, tocn, uocn, vocn, ssh] + analysis variables: &soca_an_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + time window: begin: 2018-04-15T00:00:00Z length: PT24H @@ -17,10 +23,17 @@ cost function: - _bkg_state: &_bkg_state read_from_file: 1 basename: data_generated/forecast_mom6/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: &soca_bg_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - depth_below_sea_surface read_from_file: 1 basename: data_static/72x35x25/restarts/ - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *soca_bg_vars ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z - <<: *_bkg_state @@ -47,7 +60,10 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, ssh] + - variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -70,10 +86,10 @@ cost function: states: - _bkg_err_state: &_bkg_err_state read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *soca_bg_vars basename: data_generated/forecast_mom6_ens%mem%/ read_from_file: 1 - state variables: [socn, tocn, uocn, vocn, ssh, hocn, layer_depth] + state variables: *soca_bg_vars basename: data_static/72x35x25/restarts_ens/ ocn_filename: MOM.res.ens.%mem%.nc date: 2018-04-15T00:00:00Z diff --git a/test/testinput/4dvar_htlm.yml b/test/testinput/4dvar_htlm.yml index f8c5e91ed..fe76c64ca 100644 --- a/test/testinput/4dvar_htlm.yml +++ b/test/testinput/4dvar_htlm.yml @@ -4,7 +4,12 @@ cost function: time window: begin: *date_begin length: PT12H - analysis variables: &soca_vars [socn, tocn, uocn, vocn, ssh, hocn] + analysis variables: &soca_an_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc @@ -38,7 +43,15 @@ cost function: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc date: *date_begin - state variables: &model_vars [socn, uocn, vocn, tocn, ssh, hocn, mld, layer_depth] + state variables: &soca_bg_vars + - sea_water_salinity + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -46,7 +59,10 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, ssh] + - variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -60,8 +76,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS @@ -124,9 +140,11 @@ variational: tstep: PT6H variable change: Identity update tstep: PT6H - variables: [socn, tocn] + variables: &tlm_vars + - sea_water_salinity + - sea_water_potential_temperature coefficients: - update variables: [socn, tocn] + update variables: *tlm_vars influence region size: 3 time window: begin: 2018-04-15T00:00:00Z diff --git a/test/testinput/4dvar_identity.yml b/test/testinput/4dvar_identity.yml index 1d2740ed7..1e135970e 100644 --- a/test/testinput/4dvar_identity.yml +++ b/test/testinput/4dvar_identity.yml @@ -4,7 +4,12 @@ cost function: time window: begin: *date_begin length: PT12H - analysis variables: &soca_vars [socn, tocn, uocn, vocn, ssh, hocn] + analysis variables: &soca_an_vars + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid geometry: &geom geom_grid_file: data_generated/gridgen/soca_gridspec.72x35x25.nc @@ -28,8 +33,8 @@ cost function: variable change: variable change name: Model2Ana rotate: - u: [uocn] - v: [vocn] + u: [eastward_sea_water_velocity] + v: [northward_sea_water_velocity] log: var: [] @@ -38,7 +43,15 @@ cost function: basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc date: *date_begin - state variables: &model_vars [socn, uocn, vocn, tocn, ssh, hocn, mld, layer_depth] + state variables: &soca_bg_vars + - sea_water_salinity + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -46,7 +59,10 @@ cost function: saber block name: diffusion read: groups: - - variables: [tocn, socn, ssh] + - variables: + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -60,8 +76,8 @@ cost function: efold_z: 2500.0 # [m] linear variable change: - input variables: *soca_vars - output variables: *soca_vars + input variables: *soca_an_vars + output variables: *soca_an_vars linear variable changes: - linear variable change name: BkgErrGODAS diff --git a/test/testinput/addincrement.yml b/test/testinput/addincrement.yml index 14bd05aa6..1723d065d 100644 --- a/test/testinput/addincrement.yml +++ b/test/testinput/addincrement.yml @@ -12,7 +12,18 @@ state: ice_filename: cice.res.nc sfc_filename: sfc.res.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: [cicen, hicen, hsnon, socn, tocn, ssh, hocn, uocn, vocn, mld, layer_depth] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity + - ocean_mixed_layer_thickness + - depth_below_sea_surface increment: read_from_file: 1 @@ -20,7 +31,10 @@ increment: ocn_filename: ocn.3dvar.iter1.incr.2018-04-15T00:00:00Z.nc ice_filename: ice.3dvar.iter1.incr.2018-04-15T00:00:00Z.nc date: *bkg_date - added variables: [hsnon, socn, tocn] + added variables: + - sea_ice_category_snow_thickness + - sea_water_salinity + - sea_water_potential_temperature output: datadir: data_output/ diff --git a/test/testinput/convertincrement.yml b/test/testinput/convertincrement.yml index b1cf1d3b8..3effe5586 100644 --- a/test/testinput/convertincrement.yml +++ b/test/testinput/convertincrement.yml @@ -6,8 +6,12 @@ input geometry: &geom output geometry: *geom linear variable change: - input variables: [tocn, socn, ssh, hocn] - output variables: [tocn, socn, ssh, hocn] + input variables: &soca_inc_vars + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid +# - sea_water_cell_thickness + output variables: *soca_inc_vars linear variable changes: - linear variable change name: BalanceSOCA kst: @@ -20,19 +24,29 @@ linear variable change: increments: - date: 2018-04-15T00:00:00Z - input variables: [tocn, socn, ssh, hocn] + input variables: *soca_inc_vars input: read_from_file: 1 basename: data_generated/3dvar/ ocn_filename: ocn.3dvar.iter1.incr.2018-04-15T00:00:00Z.nc date: 2018-04-15T00:00:00Z - state variables: [ssh, tocn, socn, hocn] + state variables: + - sea_surface_height_above_geoid + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness trajectory: read_from_file: 1 basename: data_static/72x35x25/restarts/ ocn_filename: MOM.res.nc date: 2018-04-15T00:00:00Z - state variables: [ssh, tocn, socn, hocn, layer_depth, mld] + state variables: &soca_bg_vars + - sea_surface_height_above_geoid + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness + - depth_below_sea_surface + - ocean_mixed_layer_thickness output: datadir: data_output/ exp: convertincrement diff --git a/test/testinput/dirac_diffusion.yml b/test/testinput/dirac_diffusion.yml index 7450d571b..2d43b12a5 100644 --- a/test/testinput/dirac_diffusion.yml +++ b/test/testinput/dirac_diffusion.yml @@ -9,7 +9,15 @@ background: date: &date 2018-04-15T00:00:00Z ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, ssh, hocn, mld, layer_depth] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -18,7 +26,9 @@ background error: saber block name: diffusion read: groups: - - variables: [tocn, socn] + - variables: + - sea_water_potential_temperature + - sea_water_salinity multivariate strategy: univariate # or duplicated, if dealing with localization instead # the default is "univariate" horizontal: @@ -26,7 +36,7 @@ background error: vertical: levels: 25 filepath: data_generated/parameters_diffusion/vt_5lvls - - variables: [ssh] + - variables: [sea_surface_height_above_geoid] horizontal: filepath: data_generated/parameters_diffusion/hz_smaller diff --git a/test/testinput/dirac_diffusion_lowres.yml b/test/testinput/dirac_diffusion_lowres.yml index b66fe13a4..6f3ac144c 100644 --- a/test/testinput/dirac_diffusion_lowres.yml +++ b/test/testinput/dirac_diffusion_lowres.yml @@ -9,7 +9,15 @@ background: date: &date 2018-04-15T00:00:00Z ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, ssh, hocn, mld, layer_depth] + state variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -18,7 +26,9 @@ background error: saber block name: diffusion read: groups: - - variables: [tocn, socn] + - variables: + - sea_water_potential_temperature + - sea_water_salinity multivariate strategy: univariate # or duplicated, if dealing with localization instead # the default is "univariate" horizontal: @@ -26,7 +36,7 @@ background error: vertical: levels: 25 filepath: data_generated/parameters_diffusion_lowres/vt_5lvls - - variables: [ssh] + - variables: [sea_surface_height_above_geoid] horizontal: filepath: data_generated/parameters_diffusion_lowres/hz_smaller diff --git a/test/testinput/dirac_soca_cor_nicas_scales.yml b/test/testinput/dirac_soca_cor_nicas_scales.yml index 3779d5ffd..0402b3a3d 100644 --- a/test/testinput/dirac_soca_cor_nicas_scales.yml +++ b/test/testinput/dirac_soca_cor_nicas_scales.yml @@ -9,7 +9,13 @@ background: date: &date 2018-04-15T00:00:00Z ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [socn, tocn, ssh, hocn, cicen, hicen] + state variables: + - sea_water_salinity + - sea_water_potential_temperature + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - sea_ice_category_area_fraction + - sea_ice_category_thickness background error: covariance model: SABER @@ -25,13 +31,13 @@ background error: grids: - model: variables: - - socn - - tocn + - sea_water_salinity + - sea_water_potential_temperature - model: variables: - - ssh - - cicen - - hicen + - sea_surface_height_above_geoid + - sea_ice_category_area_fraction + - sea_ice_category_thickness dirac: ixdir: [1, 17, 41, 31, 51, 63, 81, 14, 16, 43] diff --git a/test/testinput/dirac_soca_cov.yml b/test/testinput/dirac_soca_cov.yml index 67520e32f..4f2d9157a 100644 --- a/test/testinput/dirac_soca_cov.yml +++ b/test/testinput/dirac_soca_cov.yml @@ -9,7 +9,17 @@ background: date: &date 2018-04-15T00:00:00Z ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn, mld, layer_depth] + state variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface background error: covariance model: SABER @@ -17,7 +27,14 @@ background error: saber block name: diffusion read: groups: - - variables: [cicen, hicen, uocn, vocn, tocn, socn, ssh] + - variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -33,7 +50,6 @@ background error: linear variable change: input variables: *soca_vars output variables: *soca_vars - linear variable changes: - linear variable change name: BkgErrGODAS @@ -51,8 +67,6 @@ background error: cicen_max: 0.5 hicen_min: 10.0 hicen_max: 100.0 - input variables: *soca_vars - output variables: *soca_vars - linear variable change name: BalanceSOCA kst: @@ -65,8 +79,6 @@ background error: dcdt: filename: data_static/72x35x25/dcdt.nc name: dcdt - input variables: *soca_vars - output variables: *soca_vars dirac: ixdir: [1, 17, 41, 31, 51, 63, 81, 14, 16, 43, 55] diff --git a/test/testinput/dirac_socahyb_cov.yml b/test/testinput/dirac_socahyb_cov.yml index b3535e515..dbe05d01c 100644 --- a/test/testinput/dirac_socahyb_cov.yml +++ b/test/testinput/dirac_socahyb_cov.yml @@ -9,7 +9,17 @@ background: date: &date 2018-04-15T00:00:00Z ocn_filename: MOM.res.nc ice_filename: cice.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn, mld, layer_depth] + state variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - ocean_mixed_layer_thickness + - depth_below_sea_surface _file: &_file read_from_file: 1 @@ -27,7 +37,14 @@ background error: saber block name: diffusion read: groups: - - variables: [cicen, hicen, uocn, vocn, tocn, socn, ssh] + - variables: + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_water_potential_temperature + - sea_water_salinity + - sea_surface_height_above_geoid horizontal: filepath: data_generated/parameters_diffusion/hz_smaller vertical: @@ -60,8 +77,6 @@ background error: cicen_max: 0.5 hicen_min: 10.0 hicen_max: 100.0 - input variables: *soca_vars - output variables: *soca_vars - linear variable change name: BalanceSOCA kst: @@ -74,8 +89,6 @@ background error: dcdt: filename: data_static/72x35x25/dcdt.nc name: dcdt - input variables: *soca_vars - output variables: *soca_vars weight: value: 0.5 diff --git a/test/testinput/state.yml b/test/testinput/state.yml index 114ed8174..e6d7edc6c 100644 --- a/test/testinput/state.yml +++ b/test/testinput/state.yml @@ -11,7 +11,22 @@ state test: ocn_filename: MOM.res.nc ice_filename: cice.res.nc sfc_filename: sfc.res.nc - state variables: &soca_vars [cicen, hicen, socn, tocn, uocn, vocn, ssh, hocn, sw, lhf, shf, lw, us, mld, layer_depth] + state variables: &soca_vars + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_water_salinity + - sea_water_potential_temperature + - eastward_sea_water_velocity + - northward_sea_water_velocity + - sea_surface_height_above_geoid + - sea_water_cell_thickness + - net_downwelling_shortwave_radiation + - upward_latent_heat_flux_in_air + - upward_sensible_heat_flux_in_air + - net_downwelling_longwave_radiation + - friction_velocity_over_water + - ocean_mixed_layer_thickness + - depth_below_sea_surface remap_filename: data_static/72x35x25/restarts/MOM.res.nc state generate: @@ -22,7 +37,7 @@ state test: state variables: *soca_vars norm file: 387790.8913881866 - norm generated state: 484.53094249329843 + norm generated state: 371.70278401427595 date: *date tolerance: 1.0e-08 diff --git a/test/testref/convertincrement.test b/test/testref/convertincrement.test index 9ce05ed64..8bcc8926d 100644 --- a/test/testref/convertincrement.test +++ b/test/testref/convertincrement.test @@ -1,10 +1,9 @@ -Input increment: +Input increment: Valid time: 2018-04-15T00:00:00Z tocn min=-0.2230844555090276 max=0.1817337705816250 mean=0.0017112251024892 socn min=-0.0003694497492410 max=0.0129947577386863 mean=0.0000127289661201 ssh min=-0.0004275436187777 max=0.0007444984139562 mean=0.0000269610241517 - hocn min=0.0000000000000000 max=0.0000000000000000 mean=0.0000000000000000 -Trajectory state: +Trajectory state: Valid time: 2018-04-15T00:00:00Z ssh min=-1.9244847628277935 max=0.9272826517867588 mean=-0.2767903423591662 tocn min=-1.8883899372702533 max=31.7004645720658580 mean=6.0175649583533595 @@ -12,9 +11,8 @@ Trajectory state: hocn min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642065023017 layer_depth min=2.2854716757984130 max=5658.3057467114012979 mean=1200.5229536158392420 mld min=2.2854716757984130 max=4593.1533423819937525 mean=192.4109073940401515 -Output increment: +Output increment: Valid time: 2018-04-15T00:00:00Z tocn min=-0.2230844555090276 max=0.1817337705816250 mean=0.0017112251024892 socn min=-0.0003694497492410 max=0.0129947577386863 mean= -nan ssh min=-0.0061039986666023 max=0.0040160743992308 mean=0.0002527354430666 - hocn min=0.0000000000000000 max=0.0000000000000000 mean=0.0000000000000000 From 1544c5b58e9a0a412c3899257b857df32960469a Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Tue, 8 Oct 2024 14:04:37 -0600 Subject: [PATCH 10/13] revert depth_below_sea_surface --- src/soca/Fields/soca_fields_mod.F90 | 6 +++--- .../LinearVariableChange/Balance/soca_balance_mod.F90 | 2 +- .../BkgErrGodas/soca_bkgerrgodas_mod.F90 | 4 ++-- src/soca/VariableChange/VariableChange.cc | 8 +++----- test/Data/fields_metadata.yml | 6 +----- test/testinput/3dhyb.yml | 2 +- test/testinput/3dhyb_diffusion.yml | 2 +- test/testinput/3dhybfgat_pseudo.yml | 2 +- test/testinput/3dvar.yml | 2 +- test/testinput/3dvar_lowres.yml | 2 +- test/testinput/3dvar_nicas.yml | 2 +- test/testinput/3dvarfgat_pseudo.yml | 2 +- test/testinput/4denvar.yml | 2 +- test/testinput/4dhybenvar.yml | 2 +- test/testinput/4dvar_htlm.yml | 2 +- test/testinput/4dvar_identity.yml | 2 +- test/testinput/addincrement.yml | 2 +- test/testinput/convertincrement.yml | 2 +- test/testinput/convertstate.yml | 2 +- test/testinput/convertstate_changevar.yml | 2 +- test/testinput/dirac_diffusion.yml | 2 +- test/testinput/dirac_diffusion_lowres.yml | 2 +- test/testinput/dirac_soca_cov.yml | 2 +- test/testinput/dirac_socahyb_cov.yml | 2 +- test/testinput/ensmeanandvariance.yml | 2 +- test/testinput/enspert.yml | 2 +- test/testinput/gen_hybrid_linear_model_coeffs.yml | 2 +- test/testinput/linearization_error.yml | 2 +- test/testinput/oceanSmoother.yml | 2 +- test/testinput/parametric_stddev.yml | 2 +- test/testinput/sqrtvertloc.yml | 2 +- test/testinput/state.yml | 4 ++-- test/testinput/varchange_balance.yml | 2 +- test/testinput/varchange_balance_TSSSH.yml | 2 +- test/testinput/varchange_bkgerrgodas.yml | 2 +- 35 files changed, 41 insertions(+), 47 deletions(-) diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index dd1de92d8..b70b548eb 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -900,8 +900,8 @@ subroutine soca_fields_read(self, f_conf, vdate) ! Initialize mid-layer depth from layer thickness ! TODO, this shouldn't live here, it should be part of the variable change class only - if (self%has("depth_below_sea_surface")) then - call self%get("depth_below_sea_surface", layer_depth) + if (self%has("sea_water_depth")) then + call self%get("sea_water_depth", layer_depth) layer_depth%val = 0.5 * hocn%val do k = 2, hocn%nz layer_depth%val(:,:,k) = layer_depth%val(:,:,k) + sum(hocn%val(:,:,1:k-1), dim=3) @@ -909,7 +909,7 @@ subroutine soca_fields_read(self, f_conf, vdate) end if ! Compute mixed layer depth TODO: Move somewhere else ... - if (self%has("ocean_mixed_layer_thickness") .and. self%has("depth_below_sea_surface")) then + if (self%has("ocean_mixed_layer_thickness") .and. self%has("sea_water_depth")) then call self%get("sea_water_potential_temperature", field) call self%get("sea_water_salinity", field2) call self%get("ocean_mixed_layer_thickness", mld) diff --git a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 index bb7aad994..fa4e0debd 100644 --- a/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 +++ b/src/soca/LinearVariableChange/Balance/soca_balance_mod.F90 @@ -109,7 +109,7 @@ subroutine soca_balance_setup(self, f_conf, traj, geom) call traj%get("sea_water_salinity", socn) call traj%get("sea_water_cell_thickness", hocn) call traj%get("ocean_mixed_layer_thickness", mld) - call traj%get("depth_below_sea_surface", layer_depth) + call traj%get("sea_water_depth", layer_depth) if (traj%has("sea_ice_category_area_fraction")) call traj%get("sea_ice_category_area_fraction", cicen) ! allocate space diff --git a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 index 2b41b7b14..f1ba757b6 100644 --- a/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 +++ b/src/soca/LinearVariableChange/BkgErrGodas/soca_bkgerrgodas_mod.F90 @@ -193,7 +193,7 @@ subroutine soca_bkgerrgodas_tocn(self) call self%bkg%get("sea_water_potential_temperature", tocn_b) call self%std_bkgerr%get("sea_water_potential_temperature", tocn_e) call self%bkg%get("sea_water_cell_thickness", hocn) - call self%bkg%get("depth_below_sea_surface",layer_depth) + call self%bkg%get("sea_water_depth",layer_depth) ! Loop over compute domain do i = domain%is, domain%ie @@ -298,7 +298,7 @@ subroutine soca_bkgerrgodas_socn(self) ! Loop over compute domain call self%std_bkgerr%get("sea_water_salinity", field) call self%bkg%get("ocean_mixed_layer_thickness", mld) - call self%bkg%get("depth_below_sea_surface", layer_depth) + call self%bkg%get("sea_water_depth", layer_depth) do i = domain%is, domain%ie do j = domain%js, domain%je diff --git a/src/soca/VariableChange/VariableChange.cc b/src/soca/VariableChange/VariableChange.cc index 87d15635c..ee5c5ecee 100644 --- a/src/soca/VariableChange/VariableChange.cc +++ b/src/soca/VariableChange/VariableChange.cc @@ -69,16 +69,14 @@ void VariableChange::changeVar(State & x, const oops::Variables & vars) const { // The following is TEMPORARY. // ---------------------------------------------------------------------------- - // We need to do some variable renaming BEFORE we run VADER. - // Eventually, we will internally rename these variables when they are - // first loaded in so that we won't have to worry about it here. + // We need to create some variables that VADER will need to run. + // TODO(Travis): This is a bit of a hack, create lat/lon directly here + // or as a vader recipe. if (vars.has("sea_water_temperature")) { Log::debug() << "VariableChange::changeVar Pre-VADER variable changes. " << std::endl; oops::Variables preVaderVars(std::vector{ "latitude", "longitude", - "sea_water_potential_temperature", - "sea_water_salinity", "sea_water_depth"}); preVaderVars += x.variables(); State preVader(x.geometry(), preVaderVars, x.validTime()); diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index f50fe9c56..d6e1674fb 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -146,10 +146,6 @@ - name: distance_from_coast masked: false -- name: depth_below_sea_surface - levels: full_ocn - vert interp: false - - name: mesoscale_representation_error - name: ocean_mixed_layer_thickness @@ -161,7 +157,7 @@ - name: surface_temperature_where_sea # TODO delete this -- name: sea_water_depth # TODO delete this +- name: sea_water_depth levels: full_ocn - name: latitude diff --git a/test/testinput/3dhyb.yml b/test/testinput/3dhyb.yml index 7b885bb84..517ed56ce 100644 --- a/test/testinput/3dhyb.yml +++ b/test/testinput/3dhyb.yml @@ -42,7 +42,7 @@ cost function: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: hybrid diff --git a/test/testinput/3dhyb_diffusion.yml b/test/testinput/3dhyb_diffusion.yml index 430b7dbd4..5a101c70c 100644 --- a/test/testinput/3dhyb_diffusion.yml +++ b/test/testinput/3dhyb_diffusion.yml @@ -43,7 +43,7 @@ cost function: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: hybrid diff --git a/test/testinput/3dhybfgat_pseudo.yml b/test/testinput/3dhybfgat_pseudo.yml index 7be8d4af4..7d03a9cda 100644 --- a/test/testinput/3dhybfgat_pseudo.yml +++ b/test/testinput/3dhybfgat_pseudo.yml @@ -63,7 +63,7 @@ cost function: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: hybrid diff --git a/test/testinput/3dvar.yml b/test/testinput/3dvar.yml index f5dbec3df..6f344176f 100644 --- a/test/testinput/3dvar.yml +++ b/test/testinput/3dvar.yml @@ -49,7 +49,7 @@ cost function: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/3dvar_lowres.yml b/test/testinput/3dvar_lowres.yml index bed2528b3..ac63b5401 100644 --- a/test/testinput/3dvar_lowres.yml +++ b/test/testinput/3dvar_lowres.yml @@ -49,7 +49,7 @@ cost function: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/3dvar_nicas.yml b/test/testinput/3dvar_nicas.yml index dca5e7150..d0a7c031b 100644 --- a/test/testinput/3dvar_nicas.yml +++ b/test/testinput/3dvar_nicas.yml @@ -35,7 +35,7 @@ cost function: - northward_sea_water_velocity - sea_surface_height_above_geoid - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/3dvarfgat_pseudo.yml b/test/testinput/3dvarfgat_pseudo.yml index 1bb5d4c97..a31d4fcf5 100644 --- a/test/testinput/3dvarfgat_pseudo.yml +++ b/test/testinput/3dvarfgat_pseudo.yml @@ -62,7 +62,7 @@ cost function: - eastward_sea_water_velocity - northward_sea_water_velocity - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/4denvar.yml b/test/testinput/4denvar.yml index 3df5847d6..2465e9e68 100644 --- a/test/testinput/4denvar.yml +++ b/test/testinput/4denvar.yml @@ -29,7 +29,7 @@ cost function: - northward_sea_water_velocity - sea_surface_height_above_geoid - sea_water_cell_thickness - - depth_below_sea_surface + - sea_water_depth read_from_file: 1 basename: data_static/72x35x25/restarts/ state variables: *soca_bg_vars diff --git a/test/testinput/4dhybenvar.yml b/test/testinput/4dhybenvar.yml index 9cbdc75ac..f363b30ef 100644 --- a/test/testinput/4dhybenvar.yml +++ b/test/testinput/4dhybenvar.yml @@ -30,7 +30,7 @@ cost function: - northward_sea_water_velocity - sea_surface_height_above_geoid - sea_water_cell_thickness - - depth_below_sea_surface + - sea_water_depth read_from_file: 1 basename: data_static/72x35x25/restarts/ state variables: *soca_bg_vars diff --git a/test/testinput/4dvar_htlm.yml b/test/testinput/4dvar_htlm.yml index fe76c64ca..42ecd1d68 100644 --- a/test/testinput/4dvar_htlm.yml +++ b/test/testinput/4dvar_htlm.yml @@ -51,7 +51,7 @@ cost function: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/4dvar_identity.yml b/test/testinput/4dvar_identity.yml index 1e135970e..894d9d49d 100644 --- a/test/testinput/4dvar_identity.yml +++ b/test/testinput/4dvar_identity.yml @@ -51,7 +51,7 @@ cost function: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/addincrement.yml b/test/testinput/addincrement.yml index 1723d065d..bdf591d20 100644 --- a/test/testinput/addincrement.yml +++ b/test/testinput/addincrement.yml @@ -23,7 +23,7 @@ state: - eastward_sea_water_velocity - northward_sea_water_velocity - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth increment: read_from_file: 1 diff --git a/test/testinput/convertincrement.yml b/test/testinput/convertincrement.yml index 3effe5586..1f87ea9d0 100644 --- a/test/testinput/convertincrement.yml +++ b/test/testinput/convertincrement.yml @@ -45,7 +45,7 @@ increments: - sea_water_potential_temperature - sea_water_salinity - sea_water_cell_thickness - - depth_below_sea_surface + - sea_water_depth - ocean_mixed_layer_thickness output: datadir: data_output/ diff --git a/test/testinput/convertstate.yml b/test/testinput/convertstate.yml index 16556952b..a31df38b7 100644 --- a/test/testinput/convertstate.yml +++ b/test/testinput/convertstate.yml @@ -24,7 +24,7 @@ states: - sea_water_salinity - sea_water_cell_thickness - sea_ice_category_area_fraction - - depth_below_sea_surface + - sea_water_depth output: datadir: data_output/ diff --git a/test/testinput/convertstate_changevar.yml b/test/testinput/convertstate_changevar.yml index 9065d2a9a..eb84f42b7 100644 --- a/test/testinput/convertstate_changevar.yml +++ b/test/testinput/convertstate_changevar.yml @@ -25,7 +25,7 @@ variable change: - sea_water_cell_thickness - sea_ice_category_area_fraction - mass_concentration_of_chlorophyll_in_sea_water - - depth_below_sea_surface + - sea_water_depth states: - input: diff --git a/test/testinput/dirac_diffusion.yml b/test/testinput/dirac_diffusion.yml index 2d43b12a5..b1045fbfb 100644 --- a/test/testinput/dirac_diffusion.yml +++ b/test/testinput/dirac_diffusion.yml @@ -17,7 +17,7 @@ background: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/dirac_diffusion_lowres.yml b/test/testinput/dirac_diffusion_lowres.yml index 6f3ac144c..1ac37f052 100644 --- a/test/testinput/dirac_diffusion_lowres.yml +++ b/test/testinput/dirac_diffusion_lowres.yml @@ -17,7 +17,7 @@ background: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/dirac_soca_cov.yml b/test/testinput/dirac_soca_cov.yml index 4f2d9157a..fcb4943cc 100644 --- a/test/testinput/dirac_soca_cov.yml +++ b/test/testinput/dirac_soca_cov.yml @@ -19,7 +19,7 @@ background: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/dirac_socahyb_cov.yml b/test/testinput/dirac_socahyb_cov.yml index dbe05d01c..589754bf7 100644 --- a/test/testinput/dirac_socahyb_cov.yml +++ b/test/testinput/dirac_socahyb_cov.yml @@ -19,7 +19,7 @@ background: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth _file: &_file read_from_file: 1 diff --git a/test/testinput/ensmeanandvariance.yml b/test/testinput/ensmeanandvariance.yml index 519513013..a1610ffdd 100644 --- a/test/testinput/ensmeanandvariance.yml +++ b/test/testinput/ensmeanandvariance.yml @@ -18,7 +18,7 @@ _file: &_file - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth ensemble: members: diff --git a/test/testinput/enspert.yml b/test/testinput/enspert.yml index 32a5edcee..1c94409ad 100644 --- a/test/testinput/enspert.yml +++ b/test/testinput/enspert.yml @@ -25,7 +25,7 @@ model: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth initial condition: read_from_file: 1 diff --git a/test/testinput/gen_hybrid_linear_model_coeffs.yml b/test/testinput/gen_hybrid_linear_model_coeffs.yml index fa1b79a5b..3a9e4d60f 100644 --- a/test/testinput/gen_hybrid_linear_model_coeffs.yml +++ b/test/testinput/gen_hybrid_linear_model_coeffs.yml @@ -43,7 +43,7 @@ hybrid linear model: - northward_sea_water_velocity - sea_surface_height_above_geoid - sea_water_cell_thickness - - depth_below_sea_surface + - sea_water_depth ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 diff --git a/test/testinput/linearization_error.yml b/test/testinput/linearization_error.yml index bd9b8dfc5..9654336db 100644 --- a/test/testinput/linearization_error.yml +++ b/test/testinput/linearization_error.yml @@ -44,7 +44,7 @@ linear model: - northward_sea_water_velocity - sea_surface_height_above_geoid - sea_water_cell_thickness - - depth_below_sea_surface + - sea_water_depth ocn_filename: ocn.forecast_mom6.fc.2018-04-15T00:00:00Z.PT6H.nc - date: 2018-04-15T12:00:00Z read_from_file: 1 diff --git a/test/testinput/oceanSmoother.yml b/test/testinput/oceanSmoother.yml index e34168f56..aec9c762d 100644 --- a/test/testinput/oceanSmoother.yml +++ b/test/testinput/oceanSmoother.yml @@ -14,7 +14,7 @@ state: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth oceanSmoother: # note that all scales here are Gaussian sigmas diff --git a/test/testinput/parametric_stddev.yml b/test/testinput/parametric_stddev.yml index 6a9021b49..f335330cb 100644 --- a/test/testinput/parametric_stddev.yml +++ b/test/testinput/parametric_stddev.yml @@ -47,7 +47,7 @@ increments: - sea_water_potential_temperature - sea_water_salinity - sea_water_cell_thickness - - depth_below_sea_surface + - sea_water_depth - ocean_mixed_layer_thickness output: diff --git a/test/testinput/sqrtvertloc.yml b/test/testinput/sqrtvertloc.yml index 152317e92..8c03664f5 100644 --- a/test/testinput/sqrtvertloc.yml +++ b/test/testinput/sqrtvertloc.yml @@ -27,7 +27,7 @@ background: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth background error: covariance model: SABER diff --git a/test/testinput/state.yml b/test/testinput/state.yml index e6d7edc6c..b4d3a875f 100644 --- a/test/testinput/state.yml +++ b/test/testinput/state.yml @@ -26,7 +26,7 @@ state test: - net_downwelling_longwave_radiation - friction_velocity_over_water - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth remap_filename: data_static/72x35x25/restarts/MOM.res.nc state generate: @@ -37,7 +37,7 @@ state test: state variables: *soca_vars norm file: 387790.8913881866 - norm generated state: 371.70278401427595 + norm generated state: 358.48861601992229 date: *date tolerance: 1.0e-08 diff --git a/test/testinput/varchange_balance.yml b/test/testinput/varchange_balance.yml index c7145a6a1..475499e28 100644 --- a/test/testinput/varchange_balance.yml +++ b/test/testinput/varchange_balance.yml @@ -20,7 +20,7 @@ background: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth linear variable change tests: - tolerance inverse: 1e-12 diff --git a/test/testinput/varchange_balance_TSSSH.yml b/test/testinput/varchange_balance_TSSSH.yml index 8f03bfe76..f78f1c386 100644 --- a/test/testinput/varchange_balance_TSSSH.yml +++ b/test/testinput/varchange_balance_TSSSH.yml @@ -14,7 +14,7 @@ background: - sea_surface_height_above_geoid - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth linear variable change tests: - tolerance inverse: 1e-12 diff --git a/test/testinput/varchange_bkgerrgodas.yml b/test/testinput/varchange_bkgerrgodas.yml index 860b1b08a..a02d3f2d3 100644 --- a/test/testinput/varchange_bkgerrgodas.yml +++ b/test/testinput/varchange_bkgerrgodas.yml @@ -19,7 +19,7 @@ background: - northward_sea_water_velocity - sea_water_cell_thickness - ocean_mixed_layer_thickness - - depth_below_sea_surface + - sea_water_depth linear variable change tests: - tolerance inverse: 1e-12 From a23201a770459d627be481087276bd7d66013d82 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Tue, 8 Oct 2024 15:24:24 -0600 Subject: [PATCH 11/13] get rid of unused metadata fields --- src/soca/Fields/FieldsMetadata.cc | 11 +++----- src/soca/Fields/FieldsMetadata.h | 7 ++--- src/soca/Fields/soca_fields_metadata_mod.F90 | 28 ++++++------------- src/soca/Fields/soca_fields_mod.F90 | 2 +- src/soca/Geometry/soca_geom.interface.F90 | 2 +- .../Model2GeoVaLs/Model2GeoVaLs.F90 | 5 ++-- test/Data/fields_metadata.yml | 23 ++++++++------- 7 files changed, 31 insertions(+), 47 deletions(-) diff --git a/src/soca/Fields/FieldsMetadata.cc b/src/soca/Fields/FieldsMetadata.cc index d74572f0c..bfaca0adc 100644 --- a/src/soca/Fields/FieldsMetadata.cc +++ b/src/soca/Fields/FieldsMetadata.cc @@ -33,21 +33,18 @@ FieldsMetadata::FieldsMetadata(const std::string & filename) { // read in portion of the values (not all are read in on the C++ side, until // needed) f->name = config.getString("name"); - f->getvalName = config.getString("getval name", f->name); - f->getvalNameSurface = config.getString("getval name surface", ""); + f->nameSurface = config.getString("name surface", ""); // check for duplicates if (fieldMetadata_.count(f->name) > 0 || - fieldMetadata_.count(f->getvalName) > 0 || - fieldMetadata_.count(f->getvalNameSurface) > 0) { + fieldMetadata_.count(f->nameSurface) > 0) { util::abor1_cpp("Duplicate field metadata: " + f->name); } // insert into the maps, multiple copies are inserted for valid name fieldMetadata_[f->name] = f; - fieldMetadata_[f->getvalName] = f; - if (f->getvalNameSurface != "") { - fieldMetadata_[f->getvalNameSurface] = f; + if (f->nameSurface != "") { + fieldMetadata_[f->nameSurface] = f; } } } diff --git a/src/soca/Fields/FieldsMetadata.h b/src/soca/Fields/FieldsMetadata.h index 38145407d..552c22822 100644 --- a/src/soca/Fields/FieldsMetadata.h +++ b/src/soca/Fields/FieldsMetadata.h @@ -21,10 +21,9 @@ namespace soca { /// variable name used by UFO, and the variable name used by UFO for the surface /// (if this is a 3D field). struct FieldMetadata { - std::string name; ///< The internal (within soca) variable name. - std::string getvalName; ///< The variable name used by UFO. - std::string getvalNameSurface; ///< The variable name used by UFO for the surface - /// (if this is a 3D field). + std::string name; ///< The soca and JEDI name. + std::string nameSurface; ///< The variable name used by UFO for the surface + /// (if this is a 3D field). }; // -------------------------------------------------------------------------------------- diff --git a/src/soca/Fields/soca_fields_metadata_mod.F90 b/src/soca/Fields/soca_fields_metadata_mod.F90 index e3f83d3c0..b1edb556d 100644 --- a/src/soca/Fields/soca_fields_metadata_mod.F90 +++ b/src/soca/Fields/soca_fields_metadata_mod.F90 @@ -19,12 +19,11 @@ module soca_fields_metadata_mod !! !! Instances of these types are to be held by soca_fields_metadata type, public :: soca_field_metadata - character(len=:), allocatable :: name !< internal name used only by soca code + character(len=:), allocatable :: name !< name used by soca and JEDI + character(len=:), allocatable :: name_surface ! name used by UFO for the surface (if this is a 3D field) character(len=1) :: grid !< "h", "u" or "v" logical :: masked !< should use land mask when interpolating character(len=:), allocatable :: levels !< "1", or "full_ocn" - character(len=:), allocatable :: getval_name !< variable name used by UFO - character(len=:), allocatable :: getval_name_surface ! name used by UFO for the surface (if this is a 3D field) character(len=:), allocatable :: io_file !< the restart file domain (ocn, sfc, ice). Or if "CONSTANT" use the value in "constant_value" character(len=:), allocatable :: io_name !< the name use in the restart IO character(len=:), allocatable :: property !< physical property of the field, "none" or "positive_definite" @@ -88,6 +87,9 @@ subroutine soca_fields_metadata_create(self, filename) call conf_list(i)%get_or_die("name", self%metadata(i)%name) + if(.not. conf_list(i)%get("name surface", str)) str="" + self%metadata(i)%name_surface = str + if(.not. conf_list(i)%get("grid", str)) str = 'h' self%metadata(i)%grid = str @@ -97,12 +99,6 @@ subroutine soca_fields_metadata_create(self, filename) if(.not. conf_list(i)%get("levels", str)) str = "1" self%metadata(i)%levels = str - if(.not. conf_list(i)%get("getval name", str)) str=self%metadata(i)%name - self%metadata(i)%getval_name = str - - if(.not. conf_list(i)%get("getval name surface", str)) str="" - self%metadata(i)%getval_name_surface = str - if(.not. conf_list(i)%get("io name", str)) str = "" self%metadata(i)%io_name = str @@ -140,14 +136,9 @@ subroutine soca_fields_metadata_create(self, filename) do i=1,size(self%metadata) do j=i+1,size(self%metadata) if ( self%metadata(i)%name == self%metadata(j)%name .or. & - self%metadata(i)%name == self%metadata(j)%getval_name .or. & - self%metadata(i)%name == self%metadata(j)%getval_name_surface .or. & - self%metadata(i)%getval_name == self%metadata(j)%name .or. & - self%metadata(i)%getval_name == self%metadata(j)%getval_name .or. & - self%metadata(i)%getval_name == self%metadata(j)%getval_name_surface .or. & - ( self%metadata(i)%getval_name_surface /= "" .and. ( & - self%metadata(i)%getval_name_surface == self%metadata(j)%name .or. & - self%metadata(i)%getval_name_surface == self%metadata(j)%getval_name ))) then + self%metadata(i)%name == self%metadata(j)%name_surface .or. & + ( self%metadata(i)%name_surface /= "" .and. & + self%metadata(i)%name_surface == self%metadata(j)%name)) then str=repeat(" ",1024) write(str, *) "Duplicate field metadata: ", i, self%metadata(i)%name, & j, self%metadata(j)%name @@ -186,8 +177,7 @@ function soca_fields_metadata_get(self, name) result(field) ! find the field by any of its internal or getval names do i=1,size(self%metadata) if( trim(self%metadata(i)%name) == trim(name) .or. & - trim(self%metadata(i)%getval_name) == trim(name) .or. & - trim(self%metadata(i)%getval_name_surface) == trim(name) ) then + trim(self%metadata(i)%name_surface) == trim(name) ) then field = self%metadata(i) return endif diff --git a/src/soca/Fields/soca_fields_mod.F90 b/src/soca/Fields/soca_fields_mod.F90 index b70b548eb..ddae5cb4f 100644 --- a/src/soca/Fields/soca_fields_mod.F90 +++ b/src/soca/Fields/soca_fields_mod.F90 @@ -433,7 +433,7 @@ subroutine soca_fields_init_vars(self, vars) end select ! determine number of levels - if (self%fields(i)%name == self%fields(i)%metadata%getval_name_surface) then + if (self%fields(i)%name == self%fields(i)%metadata%name_surface) then ! if this field is a surface getval, override the number of levels with 1 nz = 1 else diff --git a/src/soca/Geometry/soca_geom.interface.F90 b/src/soca/Geometry/soca_geom.interface.F90 index c446f717e..47ff6e1da 100644 --- a/src/soca/Geometry/soca_geom.interface.F90 +++ b/src/soca/Geometry/soca_geom.interface.F90 @@ -120,7 +120,7 @@ subroutine soca_geo_get_num_levels_c(c_key_self, c_vars, c_levels_size, c_levels case ("1") c_levels(i) = 1 case ("full_ocn") - if (field_name == field%getval_name_surface) then + if (field_name == field%name_surface) then c_levels(i) = 1 else c_levels(i) = self%nzo diff --git a/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 b/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 index 817a21a06..0de8fbb9b 100644 --- a/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 +++ b/src/soca/VariableChange/Model2GeoVaLs/Model2GeoVaLs.F90 @@ -111,10 +111,9 @@ subroutine soca_model2geovals_changevar_f90(c_key_geom, c_key_xin, c_key_xout) & ! identity operators case default call xin%get(xout%fields(i)%metadata%name, field) - if (xout%fields(i)%name == field%metadata%name .or. & - xout%fields(i)%name == field%metadata%getval_name ) then + if (xout%fields(i)%name == field%metadata%name ) then xout%fields(i)%val(:,:,:) = field%val(:,:,:) !< full field - elseif (field%metadata%getval_name_surface == xout%fields(i)%name) then + elseif (field%metadata%name_surface == xout%fields(i)%name) then xout%fields(i)%val(:,:,1) = field%val(:,:,1) !< surface only of a 3D field else call abor1_ftn( 'error in soca_model2geovals_changevar_f90 processing ' & diff --git a/test/Data/fields_metadata.yml b/test/Data/fields_metadata.yml index d6e1674fb..6e6980feb 100644 --- a/test/Data/fields_metadata.yml +++ b/test/Data/fields_metadata.yml @@ -1,14 +1,13 @@ # -------------------------------------------------------------------------------------------------- # Field metadata for SOCA. Each field can contain the following information: # -# name: Internal name used by soca code and config files +# name: name used by soca and by the rest of JEDI +# name surface: JEDI variable name for 2D surface of a 3D field (Default: ) # grid: "h", "u", or "v" (Default: h) # masked: use land mask if true (Default: true) # levels: "1" or "full_ocn" (Default: 1) -# getval_name: variable name expected by GetValues (Default: ) -# getval_name_surface: GetValues variable name for 2D surface of a 3D field (Default: ) -# io_file: The restart file domain "ocn", "sfc", or "ice" (Default: ) -# io_name: The variable name used in the restart IO (Default: ) +# io file: The restart file domain "ocn", "sfc", or "ice" (Default: ) +# io name: The variable name used in the restart IO (Default: ) # constant value: Used for "dummy" fields. Sets the entire field to the given constant globally # This parameter cannot be used with io_file/io_name # fill value: If the field is masked, this value will be used for the masked areas. @@ -20,29 +19,29 @@ # Ocean state variables # -------------------------------------------------------------------------------------------------- - name: sea_water_potential_temperature + name surface: sea_surface_temperature levels: full_ocn - getval name surface: sea_surface_temperature io file: ocn io name: Temp - name: sea_water_salinity + name surface: sea_surface_salinity levels: full_ocn - getval name surface: sea_surface_salinity io file: ocn io name: Salt property: positive_definite - name: eastward_sea_water_velocity + name surface: surface_eastward_sea_water_velocity grid: u levels: full_ocn - getval name surface: surface_eastward_sea_water_velocity io file: ocn io name: u - name: northward_sea_water_velocity + name surface: surface_northward_sea_water_velocity grid: v levels: full_ocn - getval name surface: surface_northward_sea_water_velocity io file: ocn io name: v @@ -65,7 +64,7 @@ property: positive_definite - name: sea_ice_category_area_fraction - getval name surface: sea_ice_area_fraction # note: not accurate, should be "sum" not "surface" + name surface: sea_ice_area_fraction # note: not accurate, should be "sum" not "surface" io file: ice io name: aicen @@ -127,15 +126,15 @@ # BGC # -------------------------------------------------------------------------------------------------- - name: mass_concentration_of_chlorophyll_in_sea_water + name surface: sea_surface_chlorophyll levels: full_ocn - getval name surface: sea_surface_chlorophyll io file: ocn io name: chl property: positive_definite - name: molar_concentration_of_biomass_in_sea_water_in_p_units + name surface: sea_surface_biomass_in_p_units levels: full_ocn - getval name surface: sea_surface_biomass_in_p_units io file: ocn io name: biomass_p property: positive_definite From 9fc331266534171ed1656f257ef35d74527fb06f Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Tue, 8 Oct 2024 16:17:56 -0600 Subject: [PATCH 12/13] fix everything else I forgot --- .../Soca2Cice/soca_soca2cice_mod.F90 | 6 +-- test/testinput/convertstate_soca2cice.yml | 10 ++++- test/testinput/hofx_oasim_3d.yml | 24 +++++++++-- test/testref/convertstate_soca2cice.test | 40 +++++++++---------- 4 files changed, 52 insertions(+), 28 deletions(-) diff --git a/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 b/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 index 57408106e..91c42d2f4 100644 --- a/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 +++ b/src/soca/VariableChange/Soca2Cice/soca_soca2cice_mod.F90 @@ -162,9 +162,9 @@ subroutine check_ice_bounds(self, geom, xm) real(kind=kind_real) :: hice_max = 8.0 ! pointers to soca fields (most likely an analysis) - call xm%get("cicen",aice_ana) - call xm%get("hicen",hice_ana) - call xm%get("hsnon",hsno_ana) + call xm%get("sea_ice_category_area_fraction",aice_ana) + call xm%get("sea_ice_category_thickness",hice_ana) + call xm%get("sea_ice_category_snow_thickness",hsno_ana) ! check seaice fraction bounds where (aice_ana%val<0_kind_real) diff --git a/test/testinput/convertstate_soca2cice.yml b/test/testinput/convertstate_soca2cice.yml index 5e2b09f64..b3178d9f0 100644 --- a/test/testinput/convertstate_soca2cice.yml +++ b/test/testinput/convertstate_soca2cice.yml @@ -22,7 +22,13 @@ variable change: tstep: PT1H cice output: restart: data_output/iced.2018-04-15-00000.nc - output variables: [tocn, socn, hocn, cicen, hicen, hsnon] + output variables: &soca_vars + - sea_water_potential_temperature + - sea_water_salinity + - sea_water_cell_thickness + - sea_ice_category_area_fraction + - sea_ice_category_thickness + - sea_ice_category_snow_thickness states: - input: @@ -31,7 +37,7 @@ states: ocn_filename: ocn.3dvar.an.2018-04-15T00:00:00Z.nc ice_filename: ice.3dvar.an.2018-04-15T00:00:00Z.nc date: &bkg_date 2018-04-15T00:00:00Z - state variables: [tocn, socn, hocn, cicen, hicen, hsnon] + state variables: *soca_vars output: datadir: data_output/ exp: soca2cice diff --git a/test/testinput/hofx_oasim_3d.yml b/test/testinput/hofx_oasim_3d.yml index a53c0a995..512fc266c 100644 --- a/test/testinput/hofx_oasim_3d.yml +++ b/test/testinput/hofx_oasim_3d.yml @@ -11,9 +11,27 @@ state: ice_filename: cice.res.nc sfc_filename: sfc.res.nc bio_filename: NOBM.res.nc - state variables: [hocn, oz_th, wvapor, ws, pres, rh, cld_lwp, - cov, aer_tau, scat_alb, asym_par, c_det, inorg_c, dis_c, - diatom, chloro, cyano, cocco, dino, phaeo] + state variables: + - sea_water_cell_thickness + - ozone_thickness + - water_vapor + - surface_wind_speed + - surface_pressure + - relative_humidity + - cloud_liquid_water_path + - cloud_area_fraction_in_atmosphere_layer + - aerosol_optical_thickness + - single_scattering_albedo + - asymmetry_parameter + - Carbon_nitrogen_detritus_concentration + - Particulate_inorganic_carbon + - colored_dissolved_organic_carbon + - diatom_concentration + - chlorophyte_concentration + - cyano-bacteria_concentration + - coccolithophore_concentration + - dinoflagellate_concentration + - phaeocystis_concentration time window: begin: 2018-04-14T00:00:00Z diff --git a/test/testref/convertstate_soca2cice.test b/test/testref/convertstate_soca2cice.test index ac8430833..64375e4b4 100644 --- a/test/testref/convertstate_soca2cice.test +++ b/test/testref/convertstate_soca2cice.test @@ -1,27 +1,27 @@ Input state: Valid time: 2018-04-15T00:00:00Z - tocn min=-1.8883899372702533 max=31.7004645720658580 mean=6.0184359934491134 - socn min=10.7210460395083924 max=40.4416591897031168 mean=34.5443926214474004 - hocn min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642065023017 - cicen min=-0.0000754351015983 max=1.0003473321988883 mean=0.1175504050745892 - hicen min=0.0000000000000000 max=4.0326673084246947 mean=0.4712515705773916 - hsnon min=0.0000000000000000 max=1.2712833951042413 mean=0.0886865877527975 +sea_water_potential_temperature min=-1.8883899372702533 max=31.7004645720658580 mean=6.0192761834558457 + sea_water_salinity min=10.7210460395083924 max=40.4416591897031168 mean=34.5444024551186359 + sea_water_cell_thickness min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642064969300 + sea_ice_category_area_fraction min=-0.0001426936911699 max=1.0000042197240977 mean=0.1175175651714392 + sea_ice_category_thickness min=0.0000000000000000 max=4.0326673084246947 mean=0.4712515705773916 +sea_ice_category_snow_thickness min=0.0000000000000000 max=1.2712833951042413 mean=0.0886865877527975 Variable transform: -Variable change from: 6 variables: tocn, socn, hocn, cicen, hicen, hsnon -Variable change to: 6 variables: tocn, socn, hocn, cicen, hicen, hsnon +Variable change from: 6 variables: sea_water_potential_temperature, sea_water_salinity, sea_water_cell_thickness, sea_ice_category_area_fraction, sea_ice_category_thickness, sea_ice_category_snow_thickness +Variable change to: 6 variables: sea_water_potential_temperature, sea_water_salinity, sea_water_cell_thickness, sea_ice_category_area_fraction, sea_ice_category_thickness, sea_ice_category_snow_thickness State after variable transform: Valid time: 2018-04-15T00:00:00Z - tocn min=-1.8883899372702533 max=31.7004645720658580 mean=6.0184359934491134 - socn min=10.7210460395083924 max=40.4416591897031168 mean=34.5443926214474004 - hocn min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642065023017 - cicen min=0.0000000000000000 max=1.0000000000000002 mean=0.1168265457313632 - hicen min=0.0000000000000000 max=4.0326673084246947 mean=0.2834662468107482 - hsnon min=0.0000000000000000 max=1.2712833951042413 mean=0.0433676327298715 +sea_water_potential_temperature min=-1.8883899372702533 max=31.7004645720658580 mean=6.0192761834558457 + sea_water_salinity min=10.7210460395083924 max=40.4416591897031168 mean=34.5444024551186359 + sea_water_cell_thickness min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642064969300 + sea_ice_category_area_fraction min=0.0000000000000000 max=1.0000000000000002 mean=0.1167739648983999 + sea_ice_category_thickness min=0.0000000000000000 max=4.0326673084246947 mean=0.2834618983600976 +sea_ice_category_snow_thickness min=0.0000000000000000 max=1.2712833951042413 mean=0.0433671009341639 Output state: Valid time: 2018-04-15T00:00:00Z - tocn min=-1.8883899372702533 max=31.7004645720658580 mean=6.0184359934491134 - socn min=10.7210460395083924 max=40.4416591897031168 mean=34.5443926214474004 - hocn min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642065023017 - cicen min=0.0000000000000000 max=1.0000000000000002 mean=0.1168265457313632 - hicen min=0.0000000000000000 max=4.0326673084246947 mean=0.2834662468107482 - hsnon min=0.0000000000000000 max=1.2712833951042413 mean=0.0433676327298715 +sea_water_potential_temperature min=-1.8883899372702533 max=31.7004645720658580 mean=6.0192761834558457 + sea_water_salinity min=10.7210460395083924 max=40.4416591897031168 mean=34.5444024551186359 + sea_water_cell_thickness min=0.0009999999999977 max=1345.6400000000003274 mean=128.6280642064969300 + sea_ice_category_area_fraction min=0.0000000000000000 max=1.0000000000000002 mean=0.1167739648983999 + sea_ice_category_thickness min=0.0000000000000000 max=4.0326673084246947 mean=0.2834618983600976 +sea_ice_category_snow_thickness min=0.0000000000000000 max=1.2712833951042413 mean=0.0433671009341639 From d5038b8ba82850a01739220b2d9e555172634328 Mon Sep 17 00:00:00 2001 From: Travis Sluka Date: Tue, 15 Oct 2024 10:51:56 -0600 Subject: [PATCH 13/13] forgot a "<" --- src/soca/Fields/soca_fields_metadata_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/soca/Fields/soca_fields_metadata_mod.F90 b/src/soca/Fields/soca_fields_metadata_mod.F90 index b1edb556d..68b87f2a6 100644 --- a/src/soca/Fields/soca_fields_metadata_mod.F90 +++ b/src/soca/Fields/soca_fields_metadata_mod.F90 @@ -20,7 +20,7 @@ module soca_fields_metadata_mod !! Instances of these types are to be held by soca_fields_metadata type, public :: soca_field_metadata character(len=:), allocatable :: name !< name used by soca and JEDI - character(len=:), allocatable :: name_surface ! name used by UFO for the surface (if this is a 3D field) + character(len=:), allocatable :: name_surface !< name used by UFO for the surface (if this is a 3D field) character(len=1) :: grid !< "h", "u" or "v" logical :: masked !< should use land mask when interpolating character(len=:), allocatable :: levels !< "1", or "full_ocn"