diff --git a/algorithm/aero/aero_addincrement.yaml.j2 b/algorithm/aero/aero_addincrement.yaml.j2 new file mode 100644 index 0000000..b07acd0 --- /dev/null +++ b/algorithm/aero/aero_addincrement.yaml.j2 @@ -0,0 +1,43 @@ +state geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ aero_layout_x }} + - {{ aero_layout_y }} + npx: {{ aero_npx_ges }} + npy: {{ aero_npy_ges }} + npz: {{ aero_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml +increment geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ aero_layout_x }} + - {{ aero_layout_y }} + npx: {{ aero_npx_ges }} + npy: {{ aero_npy_ges }} + npz: {{ aero_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml +state: + datetime: {{ atmosphere_background_time_iso }} + state variables: {{ analysis_variables }} + filetype: cube sphere history + provider: ufs + datapath: ./ + filename: {{ aero_variational_history_prefix }}cubed_sphere_grid_atmf006.nc +increment: + added variables: {{ analysis_variables }} + filetype: fms restart + datapath: ./ + filename is datetime templated: true + filename_trcr: '%yyyy%mm%dd.%hh%MM%ss.fv_tracer.res.nc' + prefix: aeroinc +output: + filetype: auxgrid + gridtype: gaussian + datapath: ./ + filename: aeroanl. diff --git a/algorithm/atmosphere/atm_addincrement.yaml.j2 b/algorithm/atmosphere/atm_addincrement.yaml.j2 new file mode 100644 index 0000000..0f0d2ed --- /dev/null +++ b/algorithm/atmosphere/atm_addincrement.yaml.j2 @@ -0,0 +1,41 @@ +state geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml +increment geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml +state: + datetime: {{ atmosphere_background_time_iso }} + state variables: [ua,va,t,sphum,ice_wat,liq_wat,o3mr,delp,delz] + filetype: cube sphere history + provider: ufs + filename: {{ atmosphere_variational_history_prefix }}cubed_sphere_grid_atmf006.nc + datapath: ./ +increment: + added variables: [ua,va,t,sphum,ice_wat,liq_wat,o3mr,delp,delz] + filetype: fms restart + is restart: false + filename_nonrestart: {{ atmosphere_variational_analysis_prefix }}cubed_sphere_grid_atminc.nc + datapath: ./ +output: + filetype: auxgrid + gridtype: gaussian + filename: atmanl. diff --git a/algorithm/atmosphere/fv3jedi_correction_increment.yaml.j2 b/algorithm/atmosphere/fv3jedi_correction_increment.yaml.j2 new file mode 100644 index 0000000..94dd1cb --- /dev/null +++ b/algorithm/atmosphere/fv3jedi_correction_increment.yaml.j2 @@ -0,0 +1,73 @@ +increment variables: [liq_wat,delz,delp,ice_wat,o3mr,sphum,t,ua,va] +deterministic background geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml +variational increment geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml +ensemble mean analysis geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_anl }} + npy: {{ atmosphere_npy_anl }} + npz: {{ atmosphere_npz_anl }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml +correction increment geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_anl }} + npy: {{ atmosphere_npy_anl }} + npz: {{ atmosphere_npz_anl }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml +forecast hours: +{% for ihour in range( atmosphere_iau_hours | length ) %} +- datetime: {{ atmosphere_iau_times_iso[ihour] }} + deterministic background: + filetype: cube sphere history + provider: ufs + datapath: ./ + filename: {{ atmosphere_variational_history_prefix }}cubed_sphere_grid_atmf{{ '%03d' % atmosphere_iau_hours[ihour] }}.nc + variational increment: + filetype: fms restart + is restart: false + datapath: ./ + filename_nonrestart: {{ atmosphere_variational_analysis_prefix }}cubed_sphere_grid_atmi{{ '%03d' % atmosphere_iau_hours[ihour] }}.nc + ensemble mean analysis: + filetype: cube sphere history + provider: ufs + datapath: ./ + filename: enkf{{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_atma{{ '%03d' % atmosphere_iau_hours[ihour] }}.ensmean.nc + correction increment: + filetype: cube sphere history + provider: ufs + datapath: ./ + filename: enkf{{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_catmi{{ '%03d' % atmosphere_iau_hours[ihour] }}.nc +{% endfor %} diff --git a/algorithm/atmosphere/fv3jedi_ensemble_recenter.yaml.j2 b/algorithm/atmosphere/fv3jedi_ensemble_recenter.yaml.j2 new file mode 100644 index 0000000..7980940 --- /dev/null +++ b/algorithm/atmosphere/fv3jedi_ensemble_recenter.yaml.j2 @@ -0,0 +1,47 @@ +members: +{% for imember in range(atmosphere_number_ensemble_members) %} +{% for ihour in range( atmosphere_iau_hours | length ) %} +- state geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_anl }} + npy: {{ atmosphere_npy_anl }} + npz: {{ atmosphere_npz_anl }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml + increment geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ atmosphere_layout_x }} + - {{ atmosphere_layout_y }} + npx: {{ atmosphere_npx_anl }} + npy: {{ atmosphere_npy_anl }} + npz: {{ atmosphere_npz_anl }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml + state: + datetime: {{ atmosphere_iau_times_iso[ihour] }} + state variables: [ua,va,t,sphum,ice_wat,liq_wat,o3mr,delp,delz] + filetype: cube sphere history + provider: ufs + datapath: ./ + filename: enkf{{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_catmi{{ '%03d' % atmosphere_iau_hours[ihour] }}.nc + increment: + added variables: [ua,va,t,sphum,ice_wat,liq_wat,o3mr,delp,delz] + filetype: cube sphere history + provider: ufs + datapath: ./mem{{ '%0{}d'.format(3)|format(imember+1) }} + filename: enkf{{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_atmi{{ '%03d' % atmosphere_iau_hours[ihour] }}.nc + output: + filetype: fms restart + is restart: false + datapath: ./mem{{ '%0{}d'.format(3)|format(imember+1) }} + filename_nonrestart: enkf{{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_ratmi{{ '%03d' % atmosphere_iau_hours[ihour] }}.nc +{% endfor %} +{% endfor %} diff --git a/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 b/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 index 576a133..cac17a0 100644 --- a/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 +++ b/algorithm/atmosphere/fv3jedi_fv3inc_lgetkf.yaml.j2 @@ -39,7 +39,7 @@ fv3 increment geometry: npx: {{ atmosphere_npx_ges }} npy: {{ atmosphere_npy_ges }} npz: {{ atmosphere_npz_ges }} - field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml members from template: template: background input: @@ -53,12 +53,14 @@ members from template: state variables: *bkgvars jedi increment input: filetype: cube sphere history - filename: ./anl/mem%mem%/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 provider: ufs + datapath: ./anl/mem%mem% + filename: cubed_sphere_grid_atminc.jedi.nc fv3 increment output: - filetype: auxgrid - gridtype: gaussian - filename: ./anl/mem%mem%/atminc. + filetype: cube sphere history + provider: ufs + datapath: ./anl/mem%mem% + filename: {{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_atminc.nc pattern: '%mem%' nmembers: {{ atmosphere_number_ensemble_members }} zero padding: 3 diff --git a/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 b/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 index dd60ebb..91c47f0 100644 --- a/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 +++ b/algorithm/atmosphere/fv3jedi_fv3inc_variational.yaml.j2 @@ -24,9 +24,9 @@ jedi increment geometry: layout: - {{ atmosphere_layout_x }} - {{ atmosphere_layout_y }} - npx: {{ atmosphere_npx_anl }} - npy: {{ atmosphere_npy_anl }} - npz: {{ atmosphere_npz_anl }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml fv3 increment geometry: fms initialization: @@ -36,9 +36,9 @@ fv3 increment geometry: layout: - {{ atmosphere_layout_x }} - {{ atmosphere_layout_y }} - npx: {{ atmosphere_npx_anl }} - npy: {{ atmosphere_npy_anl }} - npz: {{ atmosphere_npz_anl }} + npx: {{ atmosphere_npx_ges }} + npy: {{ atmosphere_npy_ges }} + npz: {{ atmosphere_npz_ges }} field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_fv3inc.yaml members: - background input: @@ -48,16 +48,20 @@ members: ufs soil nlev: 4 ufs fields split by level: [smc,stc] datetime: "{{ atmosphere_background_time_iso }}" - filenames: [ {{ atmosphere_variational_history_prefix }}cubed_sphere_grid_atmf006.nc, {{ atmosphere_variational_history_prefix }}cubed_sphere_grid_sfcf006.nc ] + filenames: + - {{ atmosphere_variational_history_prefix }}cubed_sphere_grid_atmf006.nc + - {{ atmosphere_variational_history_prefix }}cubed_sphere_grid_sfcf006.nc state variables: *bkgvars jedi increment input: filetype: cube sphere history - filename: ./anl/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 provider: ufs + datapath: ./anl + filename: cubed_sphere_grid_atminc.jedi.nc fv3 increment output: - filetype: auxgrid - gridtype: gaussian - filename: ./anl/atminc. + filetype: fms restart + is restart: false + datapath: ./anl + filename_nonrestart: {{ atmosphere_variational_analysis_prefix }}cubed_sphere_grid_atminc.nc # Optionally test the application {% if do_testing | default(false) %} diff --git a/algorithm/snow/snow_addincrement.yaml.j2 b/algorithm/snow/snow_addincrement.yaml.j2 new file mode 100644 index 0000000..9563261 --- /dev/null +++ b/algorithm/snow/snow_addincrement.yaml.j2 @@ -0,0 +1,43 @@ +state geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ snow_layout_x }} + - {{ snow_layout_y }} + npx: {{ snow_npx_ges }} + npy: {{ snow_npy_ges }} + npz: {{ snow_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_history.yaml +increment geometry: + fms initialization: + namelist filename: ./fv3jedi/fmsmpp.nml + field table filename: ./fv3jedi/field_table + akbk: ./fv3jedi/akbk.nc4 + layout: + - {{ snow_layout_x }} + - {{ snow_layout_y }} + npx: {{ snow_npx_ges }} + npy: {{ snow_npy_ges }} + npz: {{ snow_npz_ges }} + field metadata override: ./fv3jedi/fv3jedi_fieldmetadata_restart.yaml +state: + datetime: {{ atmosphere_background_time_iso }} + state variables: {{ analysis_variables }} + filetype: cube sphere history + provider: ufs + datapath: ./ + filename: {{ snow_variational_history_prefix }}cubed_sphere_grid_sfcf006.nc +increment: + added variables: {{ analysis_variables }} + filetype: fms restart + datapath: ./ + filename is datetime templated: true + filename_sfcd: '%yyyy%mm%dd.%hh%MM%ss.sfc_data.nc' + prefix: snowinc +output: + filetype: auxgrid + gridtype: gaussian + datapath: ./ + filename: snowanl. diff --git a/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 b/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 index 7d9f7e7..e49a7da 100644 --- a/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 +++ b/model/atmosphere/atmosphere_final_increment_cubed_sphere.yaml.j2 @@ -1,7 +1,7 @@ output: state component: filetype: cube sphere history - filename: ./anl/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 + filename: ./anl/cubed_sphere_grid_atminc.jedi.nc provider: ufs fields to write: [ugrd,vgrd,tmp,pressfc,spfh,icmr,clwmr,o3mr] geometry: @@ -12,7 +12,7 @@ geometry: layout: - {{atmosphere_layout_x}} - {{atmosphere_layout_y}} - npx: {{atmosphere_npx_anl}} - npy: {{atmosphere_npy_anl}} - npz: {{atmosphere_npz_anl}} + npx: {{atmosphere_npx_ges}} + npy: {{atmosphere_npy_ges}} + npz: {{atmosphere_npz_ges}} field metadata override: "{{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_history.yaml" diff --git a/model/atmosphere/atmosphere_final_increment_fms_nonrestart.yaml.j2 b/model/atmosphere/atmosphere_final_increment_fms_nonrestart.yaml.j2 new file mode 100644 index 0000000..efac27a --- /dev/null +++ b/model/atmosphere/atmosphere_final_increment_fms_nonrestart.yaml.j2 @@ -0,0 +1,18 @@ +output: + state component: + filetype: fms restart + is restart: false + filename_nonrestart: ./anl/cubed_sphere_grid_atminc.jedi.nc + fields to write: [ua,va,t,ps,sphum,ice_wat,liq_wat,o3mr] +geometry: + fms initialization: + namelist filename: "{{atmosphere_fv3jedi_files_path}}/fmsmpp.nml" + field table filename: "{{atmosphere_fv3jedi_files_path}}/field_table" + akbk: "{{atmosphere_fv3jedi_files_path}}/akbk.nc4" + layout: + - {{atmosphere_layout_x}} + - {{atmosphere_layout_y}} + npx: {{atmosphere_npx_ges}} + npy: {{atmosphere_npy_ges}} + npz: {{atmosphere_npz_ges}} + field metadata override: "{{atmosphere_fv3jedi_files_path}}/fv3jedi_fieldmetadata_fv3inc.yaml" diff --git a/model/atmosphere/atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2 b/model/atmosphere/atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2 index cf655f1..8d39113 100644 --- a/model/atmosphere/atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2 +++ b/model/atmosphere/atmosphere_output_ensemble_increments_cubed_sphere.yaml.j2 @@ -1,3 +1,3 @@ filetype: cube sphere history provider: ufs -filename: ./anl/mem%{member}%/atminc.%yyyy%mm%dd.%hh%MM%ssz.nc4 +filename: ./anl/mem%{member}%/cubed_sphere_grid_atminc.jedi.nc diff --git a/model/atmosphere/atmosphere_output_ensemble_increments_fms_nonrestart.yaml.j2 b/model/atmosphere/atmosphere_output_ensemble_increments_fms_nonrestart.yaml.j2 new file mode 100644 index 0000000..ff02117 --- /dev/null +++ b/model/atmosphere/atmosphere_output_ensemble_increments_fms_nonrestart.yaml.j2 @@ -0,0 +1,4 @@ +filetype: fms restart +is restart: false +datapath: ./anl/mem%{member}% +filename_nonrestart: cubed_sphere_grid_atminc.jedi.nc diff --git a/model/atmosphere/atmosphere_posterior_output_cubed_sphere.yaml.j2 b/model/atmosphere/atmosphere_posterior_output_cubed_sphere.yaml.j2 new file mode 100644 index 0000000..aa72fc7 --- /dev/null +++ b/model/atmosphere/atmosphere_posterior_output_cubed_sphere.yaml.j2 @@ -0,0 +1,5 @@ +filetype: cube sphere history +provider: ufs +ufs soil nlev: 4 +ufs fields split by level: [smc,stc] +filename: ./anl/{{ atmosphere_ensemble_analysis_prefix }}cubed_sphere_grid_atmanl.ensmean.nc diff --git a/test/client_integration/gdas-atmosphere-templates.yaml b/test/client_integration/gdas-atmosphere-templates.yaml index 4f66e4d..0065677 100644 --- a/test/client_integration/gdas-atmosphere-templates.yaml +++ b/test/client_integration/gdas-atmosphere-templates.yaml @@ -63,6 +63,9 @@ atmosphere_background_ensemble_path: "DATA/ens/mem%mem%" atmosphere_variational_history_prefix: "bkg_" atmosphere_ensemble_history_prefix: "ens_" +atmosphere_variational_analysis_prefix: "anl_" +atmosphere_ensemble_analysis_prefix: "anl_" + atmosphere_background_time_iso: '2024-02-02T00:00:00Z' # Background error