From 50f42cab876860a54e9f760988de79f9434f5bdd Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 17 Oct 2025 19:49:11 +0000 Subject: [PATCH 1/5] Initial commit --- algorithm/marine/soca_ensb.yaml.j2 | 4 ++-- observations/marine/adt_rads_all.yaml.j2 | 7 +++++- observations/marine/icec_amsr2_north.yaml.j2 | 23 +++++++++++-------- observations/marine/icec_amsr2_south.yaml.j2 | 23 +++++++++++-------- .../marine/icec_generic_passive.yaml.j2 | 7 +++++- observations/marine/icec_ssmis_f17_l2.yaml.j2 | 7 +++++- .../marine/insitu_profile_bathy.yaml.j2 | 7 +++++- .../marine/insitu_profile_glider.yaml.j2 | 7 +++++- .../insitu_profile_marinemammal.yaml.j2 | 7 +++++- .../marine/insitu_profile_tesac.yaml.j2 | 7 +++++- .../insitu_profile_tesac_salinity.yaml.j2 | 7 +++++- .../marine/insitu_profile_tropical.yaml.j2 | 7 +++++- .../marine/insitu_profile_xbtctd.yaml.j2 | 7 +++++- .../marine/insitu_salt_profile_argo.yaml.j2 | 7 +++++- .../marine/insitu_surface_altkob.yaml.j2 | 7 +++++- .../insitu_surface_dbuoyb_drifter.yaml.j2 | 7 +++++- .../marine/insitu_surface_trkob.yaml.j2 | 7 +++++- .../insitu_surface_trkob_salinity.yaml.j2 | 7 +++++- .../marine/insitu_temp_profile_argo.yaml.j2 | 7 +++++- .../insitu_temp_surface_drifter.yaml.j2 | 7 +++++- observations/marine/sss_smap_l2.yaml.j2 | 7 +++++- observations/marine/sss_smos_l2.yaml.j2 | 7 +++++- observations/marine/sst_generic.yaml.j2 | 7 +++++- observations/marine/sst_generic_geo.yaml.j2 | 7 +++++- 24 files changed, 156 insertions(+), 41 deletions(-) diff --git a/algorithm/marine/soca_ensb.yaml.j2 b/algorithm/marine/soca_ensb.yaml.j2 index 794dfadc..9351877c 100644 --- a/algorithm/marine/soca_ensb.yaml.j2 +++ b/algorithm/marine/soca_ensb.yaml.j2 @@ -38,7 +38,7 @@ soca increments: # Could also be states, but they are read as increments pattern: '%mem%' template: date: '{{ marine_window_begin_iso }}' - basename: '{{ enspert_relpath }}/ens/' + basename: '{{ marine_enspert_relpath }}/ens/' ocn_filename: 'ocean.%mem%.nc' ice_filename: 'ice.%mem%.nc' read_from_file: 3 @@ -114,7 +114,7 @@ trajectory: read_from_file: 1 output increment: - datadir: '{{ enspert_relpath }}/' + datadir: '{{ marine_enspert_relpath }}/' date: '{{ marine_window_begin_iso }}' exp: trash type: incr diff --git a/observations/marine/adt_rads_all.yaml.j2 b/observations/marine/adt_rads_all.yaml.j2 index 3ab01da9..a82f710d 100644 --- a/observations/marine/adt_rads_all.yaml.j2 +++ b/observations/marine/adt_rads_all.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [absoluteDynamicTopography] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -62,7 +67,7 @@ name: MetaData/longitude minvalue: 32 maxvalue: 56 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/icec_amsr2_north.yaml.j2 b/observations/marine/icec_amsr2_north.yaml.j2 index c8d42894..d96cff06 100644 --- a/observations/marine/icec_amsr2_north.yaml.j2 +++ b/observations/marine/icec_amsr2_north.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaIceFraction] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -41,15 +46,15 @@ action: name: inflate error inflation factor: 2.0 -{% if letkf_app | default(false) %} - - filter: Gaussian Thinning - horizontal_mesh: 25 #km - use_reduced_horizontal_grid: true - select_median: true - action: - name: reduce obs space -{% endif %} -{% if letkf_app | default(false) %} +#{% if marine_letkf_app | default(false) %} +# - filter: Gaussian Thinning +# horizontal_mesh: 25 #km +# use_reduced_horizontal_grid: true +# select_median: true +# action: +# name: reduce obs space +#{% endif %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/icec_amsr2_south.yaml.j2 b/observations/marine/icec_amsr2_south.yaml.j2 index c8d42894..d96cff06 100644 --- a/observations/marine/icec_amsr2_south.yaml.j2 +++ b/observations/marine/icec_amsr2_south.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaIceFraction] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -41,15 +46,15 @@ action: name: inflate error inflation factor: 2.0 -{% if letkf_app | default(false) %} - - filter: Gaussian Thinning - horizontal_mesh: 25 #km - use_reduced_horizontal_grid: true - select_median: true - action: - name: reduce obs space -{% endif %} -{% if letkf_app | default(false) %} +#{% if marine_letkf_app | default(false) %} +# - filter: Gaussian Thinning +# horizontal_mesh: 25 #km +# use_reduced_horizontal_grid: true +# select_median: true +# action: +# name: reduce obs space +#{% endif %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/icec_generic_passive.yaml.j2 b/observations/marine/icec_generic_passive.yaml.j2 index 0cb55181..8526710a 100644 --- a/observations/marine/icec_generic_passive.yaml.j2 +++ b/observations/marine/icec_generic_passive.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaIceFraction] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -57,7 +62,7 @@ where: - variable: {name: GeoVaLs/sea_surface_temperature} maxvalue: -4.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/icec_ssmis_f17_l2.yaml.j2 b/observations/marine/icec_ssmis_f17_l2.yaml.j2 index 700fdfb6..ac83a5e8 100644 --- a/observations/marine/icec_ssmis_f17_l2.yaml.j2 +++ b/observations/marine/icec_ssmis_f17_l2.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaIceFraction] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -57,7 +62,7 @@ # where: # - variable: {name: GeoVaLs/sea_surface_temperature} # maxvalue: -4.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_bathy.yaml.j2 b/observations/marine/insitu_profile_bathy.yaml.j2 index ad936b25..fe8bea75 100644 --- a/observations/marine/insitu_profile_bathy.yaml.j2 +++ b/observations/marine/insitu_profile_bathy.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: InsituTemperature obs error: @@ -28,7 +33,7 @@ - ObsError/waterTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_glider.yaml.j2 b/observations/marine/insitu_profile_glider.yaml.j2 index 12479989..513af6cc 100644 --- a/observations/marine/insitu_profile_glider.yaml.j2 +++ b/observations/marine/insitu_profile_glider.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Composite components: @@ -32,7 +37,7 @@ - ObsError/waterTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_marinemammal.yaml.j2 b/observations/marine/insitu_profile_marinemammal.yaml.j2 index 12479989..513af6cc 100644 --- a/observations/marine/insitu_profile_marinemammal.yaml.j2 +++ b/observations/marine/insitu_profile_marinemammal.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Composite components: @@ -32,7 +37,7 @@ - ObsError/waterTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_tesac.yaml.j2 b/observations/marine/insitu_profile_tesac.yaml.j2 index a004fefe..9eb69b6b 100644 --- a/observations/marine/insitu_profile_tesac.yaml.j2 +++ b/observations/marine/insitu_profile_tesac.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Composite components: @@ -30,7 +35,7 @@ - ObsError/waterTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_tesac_salinity.yaml.j2 b/observations/marine/insitu_profile_tesac_salinity.yaml.j2 index a92e2bf4..6a0fe755 100644 --- a/observations/marine/insitu_profile_tesac_salinity.yaml.j2 +++ b/observations/marine/insitu_profile_tesac_salinity.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [salinity] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: VertInterp observation alias file: ./obsop_name_map.yaml @@ -32,7 +37,7 @@ - ObsError/salinity coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_tropical.yaml.j2 b/observations/marine/insitu_profile_tropical.yaml.j2 index 05318743..83c5788b 100644 --- a/observations/marine/insitu_profile_tropical.yaml.j2 +++ b/observations/marine/insitu_profile_tropical.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Composite components: @@ -38,7 +43,7 @@ where: - variable: {name: GeoVaLs/sea_surface_temperature} maxvalue: -4.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_profile_xbtctd.yaml.j2 b/observations/marine/insitu_profile_xbtctd.yaml.j2 index 12479989..513af6cc 100644 --- a/observations/marine/insitu_profile_xbtctd.yaml.j2 +++ b/observations/marine/insitu_profile_xbtctd.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Composite components: @@ -32,7 +37,7 @@ - ObsError/waterTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_salt_profile_argo.yaml.j2 b/observations/marine/insitu_salt_profile_argo.yaml.j2 index 91a76c65..c11b6248 100644 --- a/observations/marine/insitu_salt_profile_argo.yaml.j2 +++ b/observations/marine/insitu_salt_profile_argo.yaml.j2 @@ -18,6 +18,11 @@ observed variables: [salinity] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: VertInterp observation alias file: ./obsop_name_map.yaml @@ -186,7 +191,7 @@ - ObsError/salinity coefs: - 100.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_surface_altkob.yaml.j2 b/observations/marine/insitu_surface_altkob.yaml.j2 index 2192f995..aadad95f 100644 --- a/observations/marine/insitu_surface_altkob.yaml.j2 +++ b/observations/marine/insitu_surface_altkob.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [seaSurfaceTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Identity observation alias file: obsop_name_map.yaml @@ -29,7 +34,7 @@ - ObsError/seaSurfaceTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_surface_dbuoyb_drifter.yaml.j2 b/observations/marine/insitu_surface_dbuoyb_drifter.yaml.j2 index c79cd5b6..b99ea1d0 100644 --- a/observations/marine/insitu_surface_dbuoyb_drifter.yaml.j2 +++ b/observations/marine/insitu_surface_dbuoyb_drifter.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [seaSurfaceTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -45,7 +50,7 @@ - variable: {name: GeoVaLs/sea_surface_temperature} minvalue: -1.2 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_surface_trkob.yaml.j2 b/observations/marine/insitu_surface_trkob.yaml.j2 index 6dea2041..c4b8e8b5 100644 --- a/observations/marine/insitu_surface_trkob.yaml.j2 +++ b/observations/marine/insitu_surface_trkob.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [seaSurfaceTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: Identity observation alias file: ./obsop_name_map.yaml @@ -29,7 +34,7 @@ - ObsError/seaSurfaceTemperature coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_surface_trkob_salinity.yaml.j2 b/observations/marine/insitu_surface_trkob_salinity.yaml.j2 index 80ca4e85..97f4c58f 100644 --- a/observations/marine/insitu_surface_trkob_salinity.yaml.j2 +++ b/observations/marine/insitu_surface_trkob_salinity.yaml.j2 @@ -11,6 +11,11 @@ obsfile: "{{marine_obsdataout_path}}/{{marine_obsdataout_prefix}}{{observation_from_jcb}}{{marine_obsdataout_suffix}}" simulated variables: [seaSurfaceSalinity] observed variables: [seaSurfaceSalinity] +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -29,7 +34,7 @@ - ObsError/seaSurfaceSalinity coefs: - 1000.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_temp_profile_argo.yaml.j2 b/observations/marine/insitu_temp_profile_argo.yaml.j2 index b193a594..b2c0572e 100644 --- a/observations/marine/insitu_temp_profile_argo.yaml.j2 +++ b/observations/marine/insitu_temp_profile_argo.yaml.j2 @@ -18,6 +18,11 @@ observed variables: [waterTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} obs operator: name: InsituTemperature obs error: @@ -182,7 +187,7 @@ - ObsError/waterTemperature coefs: - 100.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/insitu_temp_surface_drifter.yaml.j2 b/observations/marine/insitu_temp_surface_drifter.yaml.j2 index 2b2830fe..648ee2ed 100644 --- a/observations/marine/insitu_temp_surface_drifter.yaml.j2 +++ b/observations/marine/insitu_temp_surface_drifter.yaml.j2 @@ -13,6 +13,11 @@ observed variables: [seaSurfaceTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -49,7 +54,7 @@ - filter: Background Check absolute threshold: 5.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/sss_smap_l2.yaml.j2 b/observations/marine/sss_smap_l2.yaml.j2 index aeaa3451..a075b554 100644 --- a/observations/marine/sss_smap_l2.yaml.j2 +++ b/observations/marine/sss_smap_l2.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaSurfaceSalinity] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -44,7 +49,7 @@ where: - variable: {name: GeoVaLs/distance_from_coast} minvalue: 100e3 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/sss_smos_l2.yaml.j2 b/observations/marine/sss_smos_l2.yaml.j2 index aeaa3451..a075b554 100644 --- a/observations/marine/sss_smos_l2.yaml.j2 +++ b/observations/marine/sss_smos_l2.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaSurfaceSalinity] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -44,7 +49,7 @@ where: - variable: {name: GeoVaLs/distance_from_coast} minvalue: 100e3 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/sst_generic.yaml.j2 b/observations/marine/sst_generic.yaml.j2 index b9fd51d5..d887bf22 100644 --- a/observations/marine/sst_generic.yaml.j2 +++ b/observations/marine/sst_generic.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaSurfaceTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -62,7 +67,7 @@ - filter: Background Check absolute threshold: 5.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 diff --git a/observations/marine/sst_generic_geo.yaml.j2 b/observations/marine/sst_generic_geo.yaml.j2 index 75b148e0..ffe625a4 100644 --- a/observations/marine/sst_generic_geo.yaml.j2 +++ b/observations/marine/sst_generic_geo.yaml.j2 @@ -12,6 +12,11 @@ simulated variables: [seaSurfaceTemperature] io pool: max pool size: 1 +{% if marine_letkf_app | default(false) %} + distribution: + name: Halo + halo size: {{ marine_letkf_dist_halo_size }} +{% endif %} get values: time interpolation: linear obs operator: @@ -68,7 +73,7 @@ - filter: Background Check absolute threshold: 5.0 -{% if letkf_app | default(false) %} +{% if marine_letkf_app | default(false) %} obs localizations: - localization method: Rossby base value: 100.0e3 From 288081cdd65741603e3ca9cac6a7effd79f8a450 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Mon, 20 Oct 2025 13:30:58 +0000 Subject: [PATCH 2/5] Add local ensemble DA model templates --- algorithm/marine/marine_letkf.yaml.j2 | 76 +++++++++++++++++++ model/marine/marine_background_ensemble.yaml | 11 +++ model/marine/marine_output_increment.yaml.j2 | 4 + model/marine/marine_output_mean_prior.yaml.j2 | 4 + .../marine_output_variance_posterior.yaml.j2 | 4 + .../marine_output_variance_prior.yaml.j2 | 4 + model/marine/marine_posterior_output.yaml.j2 | 4 + 7 files changed, 107 insertions(+) create mode 100644 algorithm/marine/marine_letkf.yaml.j2 create mode 100644 model/marine/marine_background_ensemble.yaml create mode 100644 model/marine/marine_output_increment.yaml.j2 create mode 100644 model/marine/marine_output_mean_prior.yaml.j2 create mode 100644 model/marine/marine_output_variance_posterior.yaml.j2 create mode 100644 model/marine/marine_output_variance_prior.yaml.j2 create mode 100644 model/marine/marine_posterior_output.yaml.j2 diff --git a/algorithm/marine/marine_letkf.yaml.j2 b/algorithm/marine/marine_letkf.yaml.j2 new file mode 100644 index 00000000..c0d270d3 --- /dev/null +++ b/algorithm/marine/marine_letkf.yaml.j2 @@ -0,0 +1,76 @@ + +geometry: + geom_grid_file: soca_gridspec.nc + mom6_input_nml: mom_input.nml + fields metadata: fields_metadata.yaml + +time window: + begin: &date '{{ window_begin }}' + length: PT6H + +background: + members from template: + template: + date: '{{ marine_window_middle_iso }}' + ocn_filename: "ocean.%mem%.nc" + ice_filename: "ice.%mem%.nc" + read_from_file: 1 + basename: {{ marine_enspert_relpath }}/ens/ + 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, sea_ice_area_fraction] + pattern: '%mem%' + nmembers: {{ marine_number_ensemble_members }} + +observations: # all_observations + observers: +{% for observation_from_jcb in observations %} +{% if use_observer(observation_from_jcb) %} +{% filter indent(width=2) %} +{% include observation_from_jcb + '.yaml.j2' %} +{% endfilter %} +{% endif %} +{% endfor %} + +driver: + do posterior observer: true + save posterior mean increment: true + save posterior mean: true + save posterior variance: true + save prior mean: true + save prior variance: true + +local ensemble DA: + solver: Deterministic LETKF + inflation: + rtps: 0.5 + rtpp: 0.6 + mult: 1.1 + +output: + datadir: letkf_output/ + date: *date + exp: letkf + type: ens + +output mean prior: + datadir: letkf_output/ + date: *date + exp: letkf.mean_prior + type: fc + +output variance prior: + datadir: letkf_output/ + date: *date + exp: letkf.var_prior + type: fc + +output variance posterior: + datadir: letkf_output/ + date: *date + exp: letkf.var_post + type: an + +output increment: + datadir: letkf_output/ + date: *date + exp: letkf.inc + type: ens diff --git a/model/marine/marine_background_ensemble.yaml b/model/marine/marine_background_ensemble.yaml new file mode 100644 index 00000000..d2e7ebae --- /dev/null +++ b/model/marine/marine_background_ensemble.yaml @@ -0,0 +1,11 @@ +members from template: + template: + date: '{{ marine_window_middle_iso }}' + ocn_filename: "ocean.%mem%.nc" + ice_filename: "ice.%mem%.nc" + read_from_file: 1 + basename: {{ marine_enspert_relpath }}/ens/ + state variables: [sea_water_salinity, sea_water_potential_temperature, sea_surface_height_above_geoid, sea_water_cell_thickness, eastwar\ +d_sea_water_velocity, northward_sea_water_velocity, sea_ice_area_fraction] + pattern: '%mem%' + nmembers: {{ marine_number_ensemble_members }} diff --git a/model/marine/marine_output_increment.yaml.j2 b/model/marine/marine_output_increment.yaml.j2 new file mode 100644 index 00000000..3a0a1cc4 --- /dev/null +++ b/model/marine/marine_output_increment.yaml.j2 @@ -0,0 +1,4 @@ +datadir: letkf_output/ +date: *date +exp: letkf.inc +type: ens diff --git a/model/marine/marine_output_mean_prior.yaml.j2 b/model/marine/marine_output_mean_prior.yaml.j2 new file mode 100644 index 00000000..99270d1f --- /dev/null +++ b/model/marine/marine_output_mean_prior.yaml.j2 @@ -0,0 +1,4 @@ +datadir: letkf_output/ +date: *date +exp: letkf.mean_prior +type: fc diff --git a/model/marine/marine_output_variance_posterior.yaml.j2 b/model/marine/marine_output_variance_posterior.yaml.j2 new file mode 100644 index 00000000..d764a98d --- /dev/null +++ b/model/marine/marine_output_variance_posterior.yaml.j2 @@ -0,0 +1,4 @@ +datadir: letkf_output/ +date: *date +exp: letkf.var_post +type: an diff --git a/model/marine/marine_output_variance_prior.yaml.j2 b/model/marine/marine_output_variance_prior.yaml.j2 new file mode 100644 index 00000000..c7992b3c --- /dev/null +++ b/model/marine/marine_output_variance_prior.yaml.j2 @@ -0,0 +1,4 @@ +datadir: letkf_output/ +date: *date +exp: letkf.var_prior +type: fc diff --git a/model/marine/marine_posterior_output.yaml.j2 b/model/marine/marine_posterior_output.yaml.j2 new file mode 100644 index 00000000..fc1f71ac --- /dev/null +++ b/model/marine/marine_posterior_output.yaml.j2 @@ -0,0 +1,4 @@ +datadir: letkf_output/ +date: *date +exp: letkf +type: ens From 2740f13f5f00766d0ef84ef39465ed52fc1f2047 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Mon, 20 Oct 2025 13:32:00 +0000 Subject: [PATCH 3/5] Update --- algorithm/marine/marine_letkf.yaml.j2 | 76 --------------------------- 1 file changed, 76 deletions(-) delete mode 100644 algorithm/marine/marine_letkf.yaml.j2 diff --git a/algorithm/marine/marine_letkf.yaml.j2 b/algorithm/marine/marine_letkf.yaml.j2 deleted file mode 100644 index c0d270d3..00000000 --- a/algorithm/marine/marine_letkf.yaml.j2 +++ /dev/null @@ -1,76 +0,0 @@ - -geometry: - geom_grid_file: soca_gridspec.nc - mom6_input_nml: mom_input.nml - fields metadata: fields_metadata.yaml - -time window: - begin: &date '{{ window_begin }}' - length: PT6H - -background: - members from template: - template: - date: '{{ marine_window_middle_iso }}' - ocn_filename: "ocean.%mem%.nc" - ice_filename: "ice.%mem%.nc" - read_from_file: 1 - basename: {{ marine_enspert_relpath }}/ens/ - 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, sea_ice_area_fraction] - pattern: '%mem%' - nmembers: {{ marine_number_ensemble_members }} - -observations: # all_observations - observers: -{% for observation_from_jcb in observations %} -{% if use_observer(observation_from_jcb) %} -{% filter indent(width=2) %} -{% include observation_from_jcb + '.yaml.j2' %} -{% endfilter %} -{% endif %} -{% endfor %} - -driver: - do posterior observer: true - save posterior mean increment: true - save posterior mean: true - save posterior variance: true - save prior mean: true - save prior variance: true - -local ensemble DA: - solver: Deterministic LETKF - inflation: - rtps: 0.5 - rtpp: 0.6 - mult: 1.1 - -output: - datadir: letkf_output/ - date: *date - exp: letkf - type: ens - -output mean prior: - datadir: letkf_output/ - date: *date - exp: letkf.mean_prior - type: fc - -output variance prior: - datadir: letkf_output/ - date: *date - exp: letkf.var_prior - type: fc - -output variance posterior: - datadir: letkf_output/ - date: *date - exp: letkf.var_post - type: an - -output increment: - datadir: letkf_output/ - date: *date - exp: letkf.inc - type: ens From 949dd3d25378645bf9a639693d0a683989a2ef5c Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Mon, 20 Oct 2025 18:06:14 +0000 Subject: [PATCH 4/5] Debug --- ...kground_ensemble.yaml => marine_background_ensemble.yaml.j2} | 0 model/marine/marine_output_increment.yaml.j2 | 2 +- model/marine/marine_output_mean_prior.yaml.j2 | 2 +- model/marine/marine_output_variance_prior.yaml.j2 | 2 +- model/marine/marine_posterior_output.yaml.j2 | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename model/marine/{marine_background_ensemble.yaml => marine_background_ensemble.yaml.j2} (100%) diff --git a/model/marine/marine_background_ensemble.yaml b/model/marine/marine_background_ensemble.yaml.j2 similarity index 100% rename from model/marine/marine_background_ensemble.yaml rename to model/marine/marine_background_ensemble.yaml.j2 diff --git a/model/marine/marine_output_increment.yaml.j2 b/model/marine/marine_output_increment.yaml.j2 index 3a0a1cc4..4cae3192 100644 --- a/model/marine/marine_output_increment.yaml.j2 +++ b/model/marine/marine_output_increment.yaml.j2 @@ -1,4 +1,4 @@ datadir: letkf_output/ -date: *date +date: '{{ marine_window_begin_iso }}' exp: letkf.inc type: ens diff --git a/model/marine/marine_output_mean_prior.yaml.j2 b/model/marine/marine_output_mean_prior.yaml.j2 index 99270d1f..20fedd4c 100644 --- a/model/marine/marine_output_mean_prior.yaml.j2 +++ b/model/marine/marine_output_mean_prior.yaml.j2 @@ -1,4 +1,4 @@ datadir: letkf_output/ -date: *date +date: '{{ marine_window_begin_iso }}' exp: letkf.mean_prior type: fc diff --git a/model/marine/marine_output_variance_prior.yaml.j2 b/model/marine/marine_output_variance_prior.yaml.j2 index c7992b3c..de97f917 100644 --- a/model/marine/marine_output_variance_prior.yaml.j2 +++ b/model/marine/marine_output_variance_prior.yaml.j2 @@ -1,4 +1,4 @@ datadir: letkf_output/ -date: *date +date: '{{ marine_window_begin_iso }}' exp: letkf.var_prior type: fc diff --git a/model/marine/marine_posterior_output.yaml.j2 b/model/marine/marine_posterior_output.yaml.j2 index fc1f71ac..fc823ea8 100644 --- a/model/marine/marine_posterior_output.yaml.j2 +++ b/model/marine/marine_posterior_output.yaml.j2 @@ -1,4 +1,4 @@ datadir: letkf_output/ -date: *date +date: '{{ marine_window_begin_iso }}' exp: letkf type: ens From aeaa7e2fcd5856026aa75360b03cc35626bf0804 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Mon, 20 Oct 2025 18:07:27 +0000 Subject: [PATCH 5/5] Debug --- model/marine/marine_background_ensemble.yaml.j2 | 3 +-- model/marine/marine_output_variance_posterior.yaml.j2 | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/model/marine/marine_background_ensemble.yaml.j2 b/model/marine/marine_background_ensemble.yaml.j2 index d2e7ebae..911cf80a 100644 --- a/model/marine/marine_background_ensemble.yaml.j2 +++ b/model/marine/marine_background_ensemble.yaml.j2 @@ -5,7 +5,6 @@ members from template: ice_filename: "ice.%mem%.nc" read_from_file: 1 basename: {{ marine_enspert_relpath }}/ens/ - state variables: [sea_water_salinity, sea_water_potential_temperature, sea_surface_height_above_geoid, sea_water_cell_thickness, eastwar\ -d_sea_water_velocity, northward_sea_water_velocity, sea_ice_area_fraction] + 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, sea_ice_area_fraction] pattern: '%mem%' nmembers: {{ marine_number_ensemble_members }} diff --git a/model/marine/marine_output_variance_posterior.yaml.j2 b/model/marine/marine_output_variance_posterior.yaml.j2 index d764a98d..734344d9 100644 --- a/model/marine/marine_output_variance_posterior.yaml.j2 +++ b/model/marine/marine_output_variance_posterior.yaml.j2 @@ -1,4 +1,4 @@ datadir: letkf_output/ -date: *date +date: '{{ marine_window_begin_iso }}' exp: letkf.var_post type: an