From 068a1f8508bbff3a6c589178e8319944862868a6 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Thu, 16 Jan 2025 19:24:27 +0000 Subject: [PATCH 1/4] initial --- lektf.yaml.j2 | 189 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 lektf.yaml.j2 diff --git a/lektf.yaml.j2 b/lektf.yaml.j2 new file mode 100644 index 0000000..9dfc0dd --- /dev/null +++ b/lektf.yaml.j2 @@ -0,0 +1,189 @@ +{% set gcyc = previous_cycle | strftime("%H") %} + +geometry: + geom_grid_file: soca_gridspec.nc + mom6_input_nml: mom_input.nml + fields metadata: fields_metadata.yaml + +time window: + begin: &date '{{ WINDOW_BEGIN | to_isotime }}' + length: PT6H + +background: + members from template: + template: + date: '{{ WINDOW_MIDDLE | to_isotime }}' + ocn_filename: "ocean.%mem%.nc" + ice_filename: "ice.%mem%.nc" + read_from_file: 1 + basename: {{ 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: {{ NMEM_ENS }} + +observations: all_observations +# observers: + +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: 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 + + + + + +# Set the model component to be used in later configuration +{% set model_component = model_component|default('model_component') %} + +cost function: + + cost type: 3D-Var + + time window: + begin: '{{window_begin}}' + length: '{{window_length}}' + bound to include: '{{ bound_to_include | default("begin", true) }}' + + geometry: +{% filter indent(width=4) %} +{% set geometry_background_file = geometry_background_file|default(model_component ~ 'geometry_background', true) ~ '.yaml.j2' %} +{% include geometry_background_file %} +{% endfilter %} + + analysis variables: {{analysis_variables}} + + background: +{% filter indent(width=4) %} +{% set background_file = background_file|default(model_component ~ 'background', true) ~ '.yaml.j2' %} +{% include background_file %} +{% endfilter %} + + background error: +{% filter indent(width=4) %} +{% set background_error_file = background_error_file|default(model_component ~ 'background_error', true) ~ '.yaml.j2' %} +{% include background_error_file %} +{% endfilter %} + + observations: + obs perturbations: {{ obs_perturbations | default(false, true) }} + observers: +{% for observation_from_jcb in observations %} +{% if use_observer(observation_from_jcb) %} +{% filter indent(width=4) %} +{% include observation_from_jcb + '.yaml.j2' %} +{% endfilter %} +{% endif %} +{% endfor %} + +variational: + minimizer: + algorithm: {{minimizer}} + iterations: +# Loop over outer loops +{% for i in range(1, number_of_outer_loops+1) %} +{% filter indent(width=2) %} +{% set var_outer_loop_file = model_component ~ '3dvar_outer_loop_' + i|string + '.yaml.j2' %} +{% include var_outer_loop_file %} +{% endfilter %} +{% endfor %} + +final: + diagnostics: + departures: {{final_diagnostics_departures}} +{% if final_prints_frequency is defined %} + prints: + frequency: {{final_prints_frequency}} +{% endif %} + +# Optional final fields to write out +{% if final_increment_to_latlon_file is defined %} + increment to structured grid: +{% filter indent(width=4) %} +{% set final_increment_to_latlon_file = final_increment_to_latlon_file ~ '.yaml.j2' %} +{% include final_increment_to_latlon_file %} +{% endfilter %} +{% endif %} + +{% if final_analysis_to_latlon_file is defined %} + analysis to structured grid: +{% filter indent(width=4) %} +{% set final_analysis_to_latlon_file = final_analysis_to_latlon_file ~ '.yaml.j2' %} +{% include final_analysis_to_latlon_file %} +{% endfilter %} +{% endif %} + +{% if final_increment_file is defined %} + increment: +{% filter indent(width=4) %} +{% set final_increment_file = final_increment_file ~ '.yaml.j2' %} +{% include final_increment_file %} +{% endfilter %} +{% endif %} + +# Optionally write out the final analysis +{% if output_file is defined %} +output: +{% filter indent(width=2) %} +{% set output_file = output_file ~ '.yaml.j2' %} +{% include output_file %} +{% endfilter %} +{% endif %} + +# Optionally test the application +{% if test_reference_filename is defined %} +test: + reference filename: {{test_reference_filename}} +{% if test_output_filename is defined %} + test output filename: {{test_output_filename}} +{% endif %} +{% if log_output_filename is defined %} + log output filename: {{log_output_filename}} +{% endif %} +{% if mpi_pattern is defined %} + mpi pattern: {{mpi_pattern}} +{% endif %} + float relative tolerance: {{test_float_relative_tolerance | default(1.0e-6, true)}} + float absolute tolerance: {{test_float_absolute_tolerance | default(0.0, true) }} + integer tolerance: {{test_integer_tolerance | default(0, true) }} +{% endif %} From 7a18466c885a9cb24ecc6f3cc1420e0a4b81276e Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Thu, 30 Jan 2025 19:24:09 +0000 Subject: [PATCH 2/4] this one works as is --- lektf.yaml.j2 | 189 -------------------------------------------------- letkf.yaml.j2 | 69 ++++++++++++++++++ 2 files changed, 69 insertions(+), 189 deletions(-) delete mode 100644 lektf.yaml.j2 create mode 100644 letkf.yaml.j2 diff --git a/lektf.yaml.j2 b/lektf.yaml.j2 deleted file mode 100644 index 9dfc0dd..0000000 --- a/lektf.yaml.j2 +++ /dev/null @@ -1,189 +0,0 @@ -{% set gcyc = previous_cycle | strftime("%H") %} - -geometry: - geom_grid_file: soca_gridspec.nc - mom6_input_nml: mom_input.nml - fields metadata: fields_metadata.yaml - -time window: - begin: &date '{{ WINDOW_BEGIN | to_isotime }}' - length: PT6H - -background: - members from template: - template: - date: '{{ WINDOW_MIDDLE | to_isotime }}' - ocn_filename: "ocean.%mem%.nc" - ice_filename: "ice.%mem%.nc" - read_from_file: 1 - basename: {{ 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: {{ NMEM_ENS }} - -observations: all_observations -# observers: - -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: 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 - - - - - -# Set the model component to be used in later configuration -{% set model_component = model_component|default('model_component') %} - -cost function: - - cost type: 3D-Var - - time window: - begin: '{{window_begin}}' - length: '{{window_length}}' - bound to include: '{{ bound_to_include | default("begin", true) }}' - - geometry: -{% filter indent(width=4) %} -{% set geometry_background_file = geometry_background_file|default(model_component ~ 'geometry_background', true) ~ '.yaml.j2' %} -{% include geometry_background_file %} -{% endfilter %} - - analysis variables: {{analysis_variables}} - - background: -{% filter indent(width=4) %} -{% set background_file = background_file|default(model_component ~ 'background', true) ~ '.yaml.j2' %} -{% include background_file %} -{% endfilter %} - - background error: -{% filter indent(width=4) %} -{% set background_error_file = background_error_file|default(model_component ~ 'background_error', true) ~ '.yaml.j2' %} -{% include background_error_file %} -{% endfilter %} - - observations: - obs perturbations: {{ obs_perturbations | default(false, true) }} - observers: -{% for observation_from_jcb in observations %} -{% if use_observer(observation_from_jcb) %} -{% filter indent(width=4) %} -{% include observation_from_jcb + '.yaml.j2' %} -{% endfilter %} -{% endif %} -{% endfor %} - -variational: - minimizer: - algorithm: {{minimizer}} - iterations: -# Loop over outer loops -{% for i in range(1, number_of_outer_loops+1) %} -{% filter indent(width=2) %} -{% set var_outer_loop_file = model_component ~ '3dvar_outer_loop_' + i|string + '.yaml.j2' %} -{% include var_outer_loop_file %} -{% endfilter %} -{% endfor %} - -final: - diagnostics: - departures: {{final_diagnostics_departures}} -{% if final_prints_frequency is defined %} - prints: - frequency: {{final_prints_frequency}} -{% endif %} - -# Optional final fields to write out -{% if final_increment_to_latlon_file is defined %} - increment to structured grid: -{% filter indent(width=4) %} -{% set final_increment_to_latlon_file = final_increment_to_latlon_file ~ '.yaml.j2' %} -{% include final_increment_to_latlon_file %} -{% endfilter %} -{% endif %} - -{% if final_analysis_to_latlon_file is defined %} - analysis to structured grid: -{% filter indent(width=4) %} -{% set final_analysis_to_latlon_file = final_analysis_to_latlon_file ~ '.yaml.j2' %} -{% include final_analysis_to_latlon_file %} -{% endfilter %} -{% endif %} - -{% if final_increment_file is defined %} - increment: -{% filter indent(width=4) %} -{% set final_increment_file = final_increment_file ~ '.yaml.j2' %} -{% include final_increment_file %} -{% endfilter %} -{% endif %} - -# Optionally write out the final analysis -{% if output_file is defined %} -output: -{% filter indent(width=2) %} -{% set output_file = output_file ~ '.yaml.j2' %} -{% include output_file %} -{% endfilter %} -{% endif %} - -# Optionally test the application -{% if test_reference_filename is defined %} -test: - reference filename: {{test_reference_filename}} -{% if test_output_filename is defined %} - test output filename: {{test_output_filename}} -{% endif %} -{% if log_output_filename is defined %} - log output filename: {{log_output_filename}} -{% endif %} -{% if mpi_pattern is defined %} - mpi pattern: {{mpi_pattern}} -{% endif %} - float relative tolerance: {{test_float_relative_tolerance | default(1.0e-6, true)}} - float absolute tolerance: {{test_float_absolute_tolerance | default(0.0, true) }} - integer tolerance: {{test_integer_tolerance | default(0, true) }} -{% endif %} diff --git a/letkf.yaml.j2 b/letkf.yaml.j2 new file mode 100644 index 0000000..5ba0516 --- /dev/null +++ b/letkf.yaml.j2 @@ -0,0 +1,69 @@ + +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: '{{window_middle}}' + ocn_filename: "ocean.%mem%.nc" + ice_filename: "ice.%mem%.nc" + read_from_file: 1 + basename: {{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: + +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: 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 \ No newline at end of file From 4aca25f43400c5cbbf00c7e481c551fa863862e9 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 31 Jan 2025 20:09:38 +0000 Subject: [PATCH 3/4] newline --- letkf.yaml.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/letkf.yaml.j2 b/letkf.yaml.j2 index 5ba0516..9cbbd6c 100644 --- a/letkf.yaml.j2 +++ b/letkf.yaml.j2 @@ -66,4 +66,5 @@ output increment: datadir: letkf_output/ date: *date exp: letkf.inc - type: ens \ No newline at end of file + type: ens + From a0190d0821127c43985f4dbd39ee050961149772 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Thu, 6 Feb 2025 18:43:21 +0000 Subject: [PATCH 4/4] rename letkf file --- letkf.yaml.j2 => marine_letkf.yaml.j2 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename letkf.yaml.j2 => marine_letkf.yaml.j2 (100%) diff --git a/letkf.yaml.j2 b/marine_letkf.yaml.j2 similarity index 100% rename from letkf.yaml.j2 rename to marine_letkf.yaml.j2