diff --git a/parm/aero/aero_bmat_jedi_config.yaml.j2 b/parm/aero/aero_bmat_jedi_config.yaml.j2 new file mode 100644 index 000000000..d30a1bd7c --- /dev/null +++ b/parm/aero/aero_bmat_jedi_config.yaml.j2 @@ -0,0 +1,19 @@ +aero_interpbkg: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + jedi_args: ['fv3jedi', 'convertstate'] + mpi_cmd: '{{ APRUN_AEROANLGENB }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' + jcb_algo: aero_convert_background +aero_diagb: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_chem_diagb.x' + mpi_cmd: '{{ APRUN_AEROANLGENB }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' + jcb_algo: aero_gen_bmatrix_diagb +aero_diffusion: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_error_covariance_toolbox.x' + mpi_cmd: '{{ APRUN_AEROANLGENB }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' + jcb_algo: aero_gen_bmatrix_diffusion diff --git a/parm/aero/aero_bmat_save.yaml.j2 b/parm/aero/aero_bmat_save.yaml.j2 new file mode 100644 index 000000000..d7addee30 --- /dev/null +++ b/parm/aero/aero_bmat_save.yaml.j2 @@ -0,0 +1,19 @@ +{% set cycle_HH = current_cycle | strftime("%H") %} +{% set HEAD = RUN + ".t" + cycle_HH + "z." %} +{% set offset_td = "+6H" | to_timedelta %} +{% set background_time = current_cycle | add_to_datetime(offset_td) %} +copy: +### copy YAMLs used +{% set yaml_list = ['aero_diagb.yaml', 'aero_diffusion.yaml', 'aero_interpbkg.yaml'] %} +{% for fname in yaml_list %} +- ["{{ DATA }}/{{ fname }}", "{{ COMOUT_CHEM_BMAT }}/{{ HEAD }}{{ fname }}"] +{% endfor %} +### copy stddev files to ROTDIR +{% for tile in range(1, ntiles+1) %} +- ["{{ DATA }}/stddev/{{ background_time | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc", "{{ COMOUT_CHEM_BMAT }}/{{ background_time | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} +### copy coupler file +- ["{{ DATA }}/stddev/{{ background_time | to_fv3time }}.stddev.coupler.res", "{{ COMOUT_CHEM_BMAT }}/{{ background_time | to_fv3time }}.stddev.coupler.res"] +### copy diffusion files +- ["{{ DATA }}/diffusion/diffusion_hz.nc", "{{ COMOUT_CHEM_BMAT }}/{{ HEAD }}aero_diffusion_hz.nc"] +- ["{{ DATA }}/diffusion/diffusion_vt.nc", "{{ COMOUT_CHEM_BMAT }}/{{ HEAD }}aero_diffusion_vt.nc"] diff --git a/parm/aero/aero_bmat_stage.yaml.j2 b/parm/aero/aero_bmat_stage.yaml.j2 new file mode 100644 index 000000000..56dce8df8 --- /dev/null +++ b/parm/aero/aero_bmat_stage.yaml.j2 @@ -0,0 +1,46 @@ +###################################### +# set some variables +###################################### +{% set offset_td = "+6H" | to_timedelta %} +{% set background_time = current_cycle | add_to_datetime(offset_td) %} +{% set ftype_list = ['fv_core.res', 'fv_tracer.res', 'sfc_data'] %} +###################################### +# create working directories +###################################### +mkdir: +- "{{ DATA }}/bkg" +- "{{ DATA }}/stddev" +- "{{ DATA }}/clm_stddev" +- "{{ DATA }}/diffusion" +- "{{ DATA }}/rescale" +copy: +###################################### +# copy deterministic background files +###################################### +# define variables +# Declare a dict of search and replace terms to run on each template +{% set tmpl_dict = {'${ROTDIR}':ROTDIR, + '${RUN}':RUN, + '${YMD}':current_cycle | to_YMD, + '${HH}':current_cycle | strftime("%H"), + '${MEMDIR}':""} %} + +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ background_time | to_fv3time }}.coupler.res", "{{ DATA }}/bkg/{{ background_time | to_fv3time }}.coupler.res"] +{% for ftype in ftype_list %} + {% for tile in range(1, ntiles+1) %} +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ background_time | to_fv3time }}.{{ ftype }}.tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ background_time | to_fv3time }}.{{ ftype }}.tile{{ tile }}.nc"] +- ["{{ FIXorog }}/{{ CASE }}/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc" ] + {% endfor %} +{% endfor %} +###################################### +# copy climatological stddev files +###################################### +{% for tile in range(1, ntiles+1) %} +- ["{{ BERROR_DATA_DIR }}/stddev.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/clm_stddev/stddev.fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} +###################################### +# copy stddev rescaling factor files +###################################### +{% for tile in range(1, ntiles+1) %} +- ["{{ BERROR_DATA_DIR }}/rescale.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/rescale/rescale.fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} diff --git a/parm/aero/aero_crtm_coeff.yaml.j2 b/parm/aero/aero_crtm_coeff.yaml.j2 new file mode 100644 index 000000000..b48d8ff23 --- /dev/null +++ b/parm/aero/aero_crtm_coeff.yaml.j2 @@ -0,0 +1,13 @@ +mkdir: +- '{{ DATA }}/crtm/' +copy: +- ['{{ CRTM_FIX }}/AerosolCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/CloudCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_npp.SpcCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_npp.TauCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_j1.SpcCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_j1.TauCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin', '{{ DATA }}/crtm/'] diff --git a/parm/aero/aero_det_inc_vars.yaml b/parm/aero/aero_det_inc_vars.yaml new file mode 100644 index 000000000..298373d6e --- /dev/null +++ b/parm/aero/aero_det_inc_vars.yaml @@ -0,0 +1 @@ +incvars: ['dust1', 'dust2', 'dust3', 'dust4', 'dust5', 'seas1', 'seas2', 'seas3', 'seas4', 'so4', 'oc1', 'oc2', 'bc1', 'bc2'] diff --git a/parm/aero/aero_det_jedi_config.yaml.j2 b/parm/aero/aero_det_jedi_config.yaml.j2 new file mode 100644 index 000000000..4171f9467 --- /dev/null +++ b/parm/aero/aero_det_jedi_config.yaml.j2 @@ -0,0 +1,7 @@ +aeroanlvar: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_AEROANL }}' + jedi_args: ['fv3jedi', 'variational'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' diff --git a/parm/aero/aero_det_save.yaml.j2 b/parm/aero/aero_det_save.yaml.j2 new file mode 100644 index 000000000..45674cc61 --- /dev/null +++ b/parm/aero/aero_det_save.yaml.j2 @@ -0,0 +1,25 @@ +###################################### +# set some variables +###################################### +{% if DOIAU == True %} + {% set bkgtime = AERO_WINDOW_BEGIN %} +{% else %} + {% set bkgtime = current_cycle %} +{% endif %} +###################################### +mkdir: +- "{{ COMOUT_CHEM_ANALYSIS }}" +- "{{ COMOUT_ATMOS_RESTART }}" +- "{{ COMOUT_CONF }}" +copy: +## copy variational YAML to ROTDIR +- ["{{ DATA }}/aeroanlvar.yaml", "{{ COMOUT_CONF }}/{{ APREFIX }}aerovar.yaml"] +## copy increments +{% for tile in range(1,ntiles+1) %} +- ["{{ DATA }}/anl/aeroinc.{{ current_cycle | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc", "{{ COMOUT_CHEM_ANALYSIS }}/aeroinc.{{ current_cycle | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} +- ["{{ DATA }}/anl/aeroinc_gauss.{{ current_cycle | to_isotime }}.gaussian.modelLevels.nc", "{{ COMOUT_CHEM_ANALYSIS }}/{{ APREFIX }}aeroinc.nc"] +## copy analysis +{% for tile in range(1,ntiles+1) %} +- ["{{ DATA }}/anl/{{ bkgtime | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc", "{{ COMOUT_ATMOS_RESTART }}/{{ bkgtime | to_fv3time }}.aeroanl_fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} diff --git a/parm/aero/aero_det_stage.yaml.j2 b/parm/aero/aero_det_stage.yaml.j2 new file mode 100644 index 000000000..839d7fd74 --- /dev/null +++ b/parm/aero/aero_det_stage.yaml.j2 @@ -0,0 +1,50 @@ +###################################### +# set some variables +###################################### +{% set bkg_times = [] %} +{% for fh in aero_bkg_fhr %} + {% set offset = fh | string + "H" %} + {% set fcst_timedelta = offset | to_timedelta %} + {% set fcst_time = AERO_WINDOW_BEGIN | add_to_datetime(fcst_timedelta) %} + {% do bkg_times.append(fcst_time) %} +{% endfor %} +{% if DOIAU == True %} + {% set anl_time = AERO_WINDOW_BEGIN %} +{% else %} + {% set anl_time = current_cycle %} +{% endif %} +{% set fvfiles = ['fv_core.res.', 'fv_tracer.res.', 'sfc_data.', 'fv_srf_wnd.res.'] %} +###################################### +mkdir: +- "{{ DATA }}/anl" +- "{{ DATA }}/diags" +- "{{ DATA }}/berror" +- "{{ DATA }}/bkg" +copy: +###################################### +## copy backgrounds +{% for bkgtime in bkg_times %} +- ["{{ COMIN_ATMOS_RESTART_PREV }}/{{ bkgtime | to_fv3time }}.coupler.res", "{{ DATA }}/bkg/{{ bkgtime | to_fv3time }}.coupler.res"] + {% for fvfile in fvfiles %} + {% for tile in range(1,ntiles+1) %} +- ["{{ COMIN_ATMOS_RESTART_PREV }}/{{ bkgtime | to_fv3time }}.{{ fvfile }}tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ bkgtime | to_fv3time }}.{{ fvfile }}tile{{ tile }}.nc"] + {% endfor %} + {% endfor %} +{% endfor %} +###################################### +## copy backgrounds again for fv_tracer to create analysis files later +{% for tile in range(1,ntiles+1) %} +- ["{{ COMIN_ATMOS_RESTART_PREV }}/{{ anl_time | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/anl/{{ anl_time | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} + +###################################### +## copy berror files from COMIN_CHEM_BMAT_PREV +## stddev files +{% for tile in range(1, ntiles+1) %} +- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ current_cycle | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/berror/{{ current_cycle | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc"] +{% endfor %} +### copy coupler file +- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ current_cycle | to_fv3time }}.stddev.coupler.res", "{{ DATA }}/berror/{{ current_cycle | to_fv3time }}.stddev.coupler.res"] +### copy diffusion files +- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ GPREFIX }}aero_diffusion_hz.nc", "{{ DATA }}/berror/diffusion_hz.nc"] +- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ GPREFIX }}aero_diffusion_vt.nc", "{{ DATA }}/berror/diffusion_vt.nc"] diff --git a/parm/aero/aero_jedi_fix.yaml.j2 b/parm/aero/aero_jedi_fix.yaml.j2 new file mode 100644 index 000000000..6a5ca865b --- /dev/null +++ b/parm/aero/aero_jedi_fix.yaml.j2 @@ -0,0 +1,6 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] diff --git a/parm/aero/aero_stage_crtm_coeff.yaml.j2 b/parm/aero/aero_stage_crtm_coeff.yaml.j2 new file mode 100644 index 000000000..b48d8ff23 --- /dev/null +++ b/parm/aero/aero_stage_crtm_coeff.yaml.j2 @@ -0,0 +1,13 @@ +mkdir: +- '{{ DATA }}/crtm/' +copy: +- ['{{ CRTM_FIX }}/AerosolCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/CloudCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_npp.SpcCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_npp.TauCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_j1.SpcCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/v.viirs-m_j1.TauCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin', '{{ DATA }}/crtm/'] +- ['{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin', '{{ DATA }}/crtm/'] diff --git a/parm/aero/aero_stage_jedi_fix.yaml.j2 b/parm/aero/aero_stage_jedi_fix.yaml.j2 new file mode 100644 index 000000000..6a5ca865b --- /dev/null +++ b/parm/aero/aero_stage_jedi_fix.yaml.j2 @@ -0,0 +1,6 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] diff --git a/parm/aero/jcb-base.yaml.j2 b/parm/aero/jcb-base.yaml.j2 index fac2aea48..8fa735ad5 100644 --- a/parm/aero/jcb-base.yaml.j2 +++ b/parm/aero/jcb-base.yaml.j2 @@ -85,7 +85,7 @@ aero_diagb_smooth_vert_iter: {{ aero_diagb_smooth_vert_iter | default(0) }} aero_diffusion_iter: {{ aero_diffusion_iter | default(0) }} aero_diffusion_horiz_len: {{ aero_diffusion_horiz_len | default(1.0, true)}} aero_diffusion_fixed_val: {{ aero_diffusion_fixed_val | default(1.0, true)}} -aero_rescaling_factor_file: {{ AERO_BMATRIX_RESCALE_TMPL }} +aero_rescaling_factor_file: {{ AERO_BMATRIX_RESCALE_YAML }} # Analysis aero_analysis_path: ./anl diff --git a/parm/analcalc/analcalc_jedi_config.yaml.j2 b/parm/analcalc/analcalc_jedi_config.yaml.j2 new file mode 100644 index 000000000..9912248f9 --- /dev/null +++ b/parm/analcalc/analcalc_jedi_config.yaml.j2 @@ -0,0 +1,25 @@ +atm_addincrement: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + jedi_args: ['fv3jedi', 'addincrement'] + mpi_cmd: '{{ APRUN_ANALCALC_FV3JEDI }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo: atm_addincrement +{% if DO_AERO_ANL %} +aero_addincrement: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + jedi_args: ['fv3jedi', 'addincrement'] + mpi_cmd: '{{ APRUN_ANALCALC_FV3JEDI }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' + jcb_algo: aero_addincrement +{% endif %} +{% if DO_JEDISNOWDA %} +snow_addincrement: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + jedi_args: ['fv3jedi', 'addincrement'] + mpi_cmd: '{{ APRUN_ANALCALC_FV3JEDI }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' + jcb_algo: snow_addincrement +{% endif %} diff --git a/parm/analcalc/analcalc_stage.yaml.j2 b/parm/analcalc/analcalc_stage.yaml.j2 new file mode 100644 index 000000000..2a9a871c5 --- /dev/null +++ b/parm/analcalc/analcalc_stage.yaml.j2 @@ -0,0 +1,14 @@ +copy: +- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}atmf006.nc", "{{ DATA }}"] +- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}sfcf006.nc", "{{ DATA }}"] +- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf006.nc", "{{ DATA }}"] +- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc", "{{ DATA }}"] +{% for itile in range(6) %} +- ["{{ COMIN_ATMOS_ANALYSIS }}/{{ APREFIX }}cubed_sphere_grid_atminc.tile{{ itile+1 }}.nc", "{{ DATA }}"] +{% if DO_AERO_ANL %} +- ["{{ COMIN_AERO_ANALYSIS }}/{{ APREFIX }}aeroinc.{{ current_cycle | to_fv3time }}.fv_tracer.res.tile{{ itile+1 }}.nc", "{{ DATA }}"] +{% endif %} +{% if DO_JEDISNOWDA %} +- ["{{ COMIN_SNOW_ANALYSIS }}/{{ APREFIX }}snowinc.{{ current_cycle | to_fv3time }}.sfc_data.tile{{ itile+1 }}.nc", "{{ DATA }}"] +{% endif %} +{% endfor %} diff --git a/parm/stat/aero/jcb-base.yaml.j2 b/parm/anlstat/aero/jcb-base.yaml.j2 similarity index 100% rename from parm/stat/aero/jcb-base.yaml.j2 rename to parm/anlstat/aero/jcb-base.yaml.j2 diff --git a/parm/anlstat/anlstat_base_config.yaml.j2 b/parm/anlstat/anlstat_base_config.yaml.j2 new file mode 100644 index 000000000..de817f5f6 --- /dev/null +++ b/parm/anlstat/anlstat_base_config.yaml.j2 @@ -0,0 +1,35 @@ +aero: + stat_file_path: '{{ COMIN_AERO_ANALYSIS }}' + stat_file_name: 'aerostat.tgz' + obs spaces: + - name: viirs_npp + input file: "diag_viirs_npp_aod_{{ current_cycle | to_YMDH }}.nc" + output file: "viirs_npp_{{ current_cycle | to_YMDH }}_output_aod.nc" + - name: viirs_n20 + input file: "diag_viirs_n20_aod_{{ current_cycle | to_YMDH }}.nc" + output file: "viirs_n20_{{ current_cycle | to_YMDH }}_output_aod.nc" + +atmos: + stat_file_path: '{{ COMIN_ATMOS_ANALYSIS }}' + stat_file_name: 'atmstat' + obs spaces: + - name: conventional_ps + input file: "diag_conventional_ps_{{ current_cycle | to_YMDH }}.nc" + output file: "conventional_ps_{{ current_cycle | to_YMDH }}_output_atmos.nc" + +snow: + stat_file_path: '{{ COMIN_SNOW_ANALYSIS }}' + stat_file_name: 'snowstat.tgz' + obs spaces: + - name: ims_snow + input file: "diag_ims_snow_{{ current_cycle | to_YMDH }}.nc" + output file: "ims_snow_{{ current_cycle | to_YMDH }}_output_snow.nc" + - name: sfcsno + input file: "diag_sfcsno_{{ current_cycle | to_YMDH }}.nc" + output file: "sfcsno_{{ current_cycle | to_YMDH }}_output_snow.nc" + - name: snocvr + input file: "diag_snocvr_{{ current_cycle | to_YMDH }}.nc" + output file: "snocvr_{{ current_cycle | to_YMDH }}_output_snow.nc" + - name: madis_snow + input file: "diag_madis_snow_{{ current_cycle | to_YMDH }}.nc" + output file: "madis_snow_{{ current_cycle | to_YMDH }}_output_snow.nc" diff --git a/parm/anlstat/anlstat_jedi_config.yaml.j2 b/parm/anlstat/anlstat_jedi_config.yaml.j2 new file mode 100644 index 000000000..6a03b4c0e --- /dev/null +++ b/parm/anlstat/anlstat_jedi_config.yaml.j2 @@ -0,0 +1,21 @@ +aero: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_ioda_diag-stats.x' + mpi_cmd: '{{ APRUN_ANLSTAT }}' + # jedi_args: None + jcb_base_yaml: '{{ PARMgfs }}/gdas/anlstat/aero/jcb-base.yaml.j2' + jcb_algo: 'anlstat' +atmos: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_ioda_diag-stats.x' + mpi_cmd: '{{ APRUN_ANLSTAT }}' + # jedi_args: None + jcb_base_yaml: '{{ PARMgfs }}/gdas/anlstat/atmos/jcb-base.yaml.j2' + jcb_algo: 'anlstat' +snow: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_ioda_diag-stats.x' + mpi_cmd: '{{ APRUN_ANLSTAT }}' + # jedi_args: None + jcb_base_yaml: '{{ PARMgfs }}/gdas/anlstat/snow/jcb-base.yaml.j2' + jcb_algo: 'anlstat' diff --git a/parm/stat/atmos/jcb-base.yaml.j2 b/parm/anlstat/atmos/jcb-base.yaml.j2 similarity index 100% rename from parm/stat/atmos/jcb-base.yaml.j2 rename to parm/anlstat/atmos/jcb-base.yaml.j2 diff --git a/parm/stat/snow/jcb-base.yaml.j2 b/parm/anlstat/snow/jcb-base.yaml.j2 similarity index 100% rename from parm/stat/snow/jcb-base.yaml.j2 rename to parm/anlstat/snow/jcb-base.yaml.j2 diff --git a/parm/atm/atm_det_jedi_config.yaml.j2 b/parm/atm/atm_det_jedi_config.yaml.j2 new file mode 100644 index 000000000..3933437c8 --- /dev/null +++ b/parm/atm/atm_det_jedi_config.yaml.j2 @@ -0,0 +1,13 @@ +atmanlvar: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_ATMANLVAR }}' + jedi_args: ['fv3jedi', 'variational'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' +atmanlfv3inc: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_fv3inc.x' + mpi_cmd: '{{ APRUN_ATMANLFV3INC }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_FV3INC }}' diff --git a/parm/atm/atm_det_stage_berror_gsibec.yaml.j2 b/parm/atm/atm_det_stage_berror_gsibec.yaml.j2 new file mode 100644 index 000000000..e6c5e4160 --- /dev/null +++ b/parm/atm/atm_det_stage_berror_gsibec.yaml.j2 @@ -0,0 +1,8 @@ +{% set fname_list = ['gfs_gsi_global.nml', 'gsi-coeffs-gfs-global.nc4'] %} + +mkdir: +- '{{ DATA }}/berror' +copy: +{% for fname in fname_list %} +- ['{{ HOMEgfs }}/fix/gdas/gsibec/{{ CASE_ANL }}/{{ fname }}', '{{ DATA }}/berror'] +{% endfor %} diff --git a/parm/atm/atm_det_stage_bkg.yaml.j2 b/parm/atm/atm_det_stage_bkg.yaml.j2 new file mode 100644 index 000000000..b4b6bc883 --- /dev/null +++ b/parm/atm/atm_det_stage_bkg.yaml.j2 @@ -0,0 +1,5 @@ +mkdir: +- '{{ DATA }}/bkg' +copy: +- ['{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/bkg/'] +- ['{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/bkg/'] diff --git a/parm/atm/atm_det_stage_fv3ens.yaml.j2 b/parm/atm/atm_det_stage_fv3ens.yaml.j2 new file mode 100644 index 000000000..804bb252e --- /dev/null +++ b/parm/atm/atm_det_stage_fv3ens.yaml.j2 @@ -0,0 +1,15 @@ +mkdir: +{% for imem in range(1,NMEM_ENS+1) %} +- '{{ DATA }}/ens/{{ 'mem%03d' | format(imem) }}' +{% endfor %} +copy: +{% for imem in range(1,NMEM_ENS+1) %} + {% set memchar = 'mem%03d' | format(imem) %} + {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, + '${RUN}': 'enkfgdas', + '${YMD}': previous_cycle | to_YMD, + '${HH}': previous_cycle | strftime('%H'), + '${MEMDIR}': memchar }) %} +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/ens/{{ memchar }}/'] +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/ens/{{ memchar }}/'] +{% endfor %} diff --git a/parm/atm/atm_ecen_jedi_config.yaml.j2 b/parm/atm/atm_ecen_jedi_config.yaml.j2 new file mode 100644 index 000000000..5ecf34501 --- /dev/null +++ b/parm/atm/atm_ecen_jedi_config.yaml.j2 @@ -0,0 +1,12 @@ +correction_increment: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_correction_increment.x' + mpi_cmd: '{{ APRUN_CORRECTION_INCREMENT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo: fv3jedi_correction_increment +ensemble_recenter: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_ensemble_add_increment.x' + mpi_cmd: '{{ APRUN_ENSEMBLE_RECENTER }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo: fv3jedi_ensemble_recenter diff --git a/parm/atm/atm_ecen_stage.yaml.j2 b/parm/atm/atm_ecen_stage.yaml.j2 new file mode 100644 index 000000000..851cab444 --- /dev/null +++ b/parm/atm/atm_ecen_stage.yaml.j2 @@ -0,0 +1,36 @@ +mkdir: +{% for imem in range(1,NMEM_ENS+1) %} +{% set memchar = 'mem%03d' | format(imem) %} +- '{{ DATA }}/{{ memchar }}' +{% endfor %} +copy: +{% for fh in IAUFHRS %} +- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf{{ '%03d' % fh }}.nc", "{{ DATA }}"] +- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf{{ '%03d' % fh }}.nc", "{{ DATA }}"] +{% if fh == 6 %} +- ["{{ COMIN_ATMOS_ANALYSIS_ENSSTAT }}/{{ APREFIX_ENS }}cubed_sphere_grid_atmanl.ensmean.nc", "{{ DATA }}/{{ APREFIX_ENS }}cubed_sphere_grid_atma006.ensmean.nc"] +{% for itile in range(6) %} +- ["{{ COMIN_ATMOS_ANALYSIS }}/{{ APREFIX }}cubed_sphere_grid_atminc.tile{{ itile+1 }}.nc", "{{ DATA }}/{{ APREFIX }}cubed_sphere_grid_atmi006.tile{{ itile+1 }}.nc"] +{% endfor %} +{% else %} +- ["{{ COMIN_ATMOS_ANALYSIS_ENSSTAT }}/{{ APREFIX_ENS }}cubed_sphere_grid_atma{{ '%03d' % fh }}.ensmean.nc", "{{ DATA }}"] +{% for itile in range(6) %} +- ["{{ COMIN_ATMOS_ANALYSIS }}/{{ APREFIX }}cubed_sphere_grid_atmi{{ '%03d' % fh }}.tile{{ itile+1 }}.nc", "{{ DATA }}"] +{% endfor %} +{% endif %} +{% endfor %} +{% for imem in range(1,NMEM_ENS+1) %} + {% set memchar = 'mem%03d' | format(imem) %} + {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, + '${RUN}': 'enkfgdas', + '${YMD}': current_cycle | to_YMD, + '${HH}': current_cycle | strftime('%H'), + '${MEMDIR}': memchar }) %} +{% for fh in IAUFHRS %} +{% if fh == 6 %} +- ['{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ APREFIX_ENS }}cubed_sphere_grid_atminc.nc', '{{ DATA }}/{{ memchar }}/{{ APREFIX_ENS }}cubed_sphere_grid_atmi006.nc'] +{% else %} +- ['{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ APREFIX_ENS }}cubed_sphere_grid_atmi{{ '%03d' % fh }}.nc', '{{ DATA }}/{{ memchar }}/'] +{% endif %} +{% endfor %} +{% endfor %} diff --git a/parm/atm/atm_ens_jedi_config.yaml.j2 b/parm/atm/atm_ens_jedi_config.yaml.j2 new file mode 100644 index 000000000..5c0045cb0 --- /dev/null +++ b/parm/atm/atm_ens_jedi_config.yaml.j2 @@ -0,0 +1,27 @@ +atmensanlobs: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_ATMENSANLOBS }}' + jedi_args: ['fv3jedi', 'localensembleda'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_OBS }}' +atmensanlsol: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_ATMENSANLSOL }}' + jedi_args: ['fv3jedi', 'localensembleda'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_SOL }}' +atmensanlfv3inc: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_fv3inc.x' + mpi_cmd: '{{ APRUN_ATMENSANLFV3INC }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_FV3INC }}' +atmensanlletkf: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_ATMENSANLLETKF }}' + jedi_args: ['fv3jedi', 'localensembleda'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_LETKF }}' diff --git a/parm/atm/atm_ens_stage_bkg.yaml.j2 b/parm/atm/atm_ens_stage_bkg.yaml.j2 new file mode 100644 index 000000000..6a685ac1c --- /dev/null +++ b/parm/atm/atm_ens_stage_bkg.yaml.j2 @@ -0,0 +1,23 @@ +mkdir: +{% for imem in range(1,NMEM_ENS+1) %} + {% set memchar = 'mem%03d' | format(imem) %} + {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, + '${RUN}': RUN, + '${YMD}': current_cycle | to_YMD, + '${HH}': current_cycle | strftime('%H'), + '${MEMDIR}': memchar }) %} +- '{{ DATA }}/bkg/{{ memchar }}' +- '{{ DATA }}/anl/{{ memchar }}' +- '{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}' +{% endfor %} +copy: +{% for imem in range(1,NMEM_ENS+1) %} + {% set memchar = 'mem%03d' | format(imem) %} + {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, + '${RUN}': 'enkfgdas', + '${YMD}': previous_cycle | to_YMD, + '${HH}': previous_cycle | strftime('%H'), + '${MEMDIR}': memchar }) %} +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/bkg/{{ memchar }}/'] +- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/bkg/{{ memchar }}/'] +{% endfor %} diff --git a/parm/atm/atm_stage_crtm_coeff.yaml.j2 b/parm/atm/atm_stage_crtm_coeff.yaml.j2 new file mode 100644 index 000000000..b943f5cbb --- /dev/null +++ b/parm/atm/atm_stage_crtm_coeff.yaml.j2 @@ -0,0 +1,178 @@ +mkdir: +- {{ DATA }}/crtm +copy: +# Emissivity files +- [{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/NPOESS.IRice.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/NPOESS.IRland.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/NPOESS.IRsnow.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/Nalli.IRwater.EmisCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/FASTEM6.MWwater.EmisCoeff.bin, {{ DATA }}/crtm] +# Aerosol and Cloud files +- [{{ CRTM_FIX }}/AerosolCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/CloudCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/CloudCoeff.GFDLFV3.-109z-1.bin, {{ DATA }}/crtm] +# Satellite_Sensor specific Tau and Spc coefficient files +- [{{ CRTM_FIX }}/abi_g16.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/abi_g16.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/abi_g17.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/abi_g17.TauCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/abi_g18.SpcCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/abi_g18.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ahi_himawari8.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ahi_himawari8.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ahi_himawari9.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ahi_himawari9.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/airs_aqua.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/airs_aqua.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsr2_gcom-w1.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsr2_gcom-w1.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsre_aqua.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsre_aqua.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_aqua.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_aqua.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_metop-a.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_metop-b.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_metop-c.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_n15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_n15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_n18.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_n18.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_n19.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsua_n19.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsub_n17.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/amsub_n17.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/atms_n20.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/atms_n20.TauCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/atms_n21.SpcCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/atms_n21.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/atms_npp.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/atms_npp.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_metop-a.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_metop-b.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_metop-c.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_n18.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_n18.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_n19.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/avhrr3_n19.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/cris-fsr_n20.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/cris-fsr_n20.TauCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/cris-fsr_n21.SpcCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/cris-fsr_n21.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/cris-fsr_npp.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/cris-fsr_npp.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/gmi_gpm.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/gmi_gpm.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs3_n17.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs3_n17.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs4_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs4_metop-a.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs4_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs4_metop-b.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs4_n19.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/hirs4_n19.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/iasi_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/iasi_metop-a.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/iasi_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/iasi_metop-b.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/iasi_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/iasi_metop-c.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g11.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g11.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g12.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g12.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g13.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g13.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g14.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g14.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/imgr_g15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_metop-a.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_metop-b.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_metop-c.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_n18.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_n18.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_n19.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/mhs_n19.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/saphir_meghat.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/saphir_meghat.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m08.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m08.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m09.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m09.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m10.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m10.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m11.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/seviri_m11.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g11.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g11.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g12.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g12.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g13.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g13.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g14.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g14.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD1_g15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g11.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g11.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g12.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g12.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g13.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g13.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g14.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g14.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD2_g15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g11.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g11.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g12.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g12.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g13.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g13.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g14.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g14.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD3_g15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g11.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g11.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g12.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g12.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g13.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g13.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g14.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g14.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/sndrD4_g15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmi_f15.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmi_f15.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f16.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f16.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f17.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f17.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f18.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f18.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f19.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f19.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f20.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/ssmis_f20.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/viirs-m_j1.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/viirs-m_j1.TauCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/viirs-m_j2.SpcCoeff.bin, {{ DATA }}/crtm] +##- [{{ CRTM_FIX }}/viirs-m_j2.TauCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/viirs-m_npp.SpcCoeff.bin, {{ DATA }}/crtm] +- [{{ CRTM_FIX }}/viirs-m_npp.TauCoeff.bin, {{ DATA }}/crtm] +# Special Spc files +##- [{{ CRTM_FIX }}/amsua_metop-a_v2.SpcCoeff.bin, {{ DATA }}/crtm] diff --git a/parm/atm/atm_stage_jedi_fix.yaml.j2 b/parm/atm/atm_stage_jedi_fix.yaml.j2 new file mode 100644 index 000000000..6a5ca865b --- /dev/null +++ b/parm/atm/atm_stage_jedi_fix.yaml.j2 @@ -0,0 +1,6 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] diff --git a/parm/soca/fields_metadata.yaml b/parm/marine/fields_metadata.yaml similarity index 100% rename from parm/soca/fields_metadata.yaml rename to parm/marine/fields_metadata.yaml diff --git a/parm/soca/fms/input.nml b/parm/marine/fms/input.nml similarity index 100% rename from parm/soca/fms/input.nml rename to parm/marine/fms/input.nml diff --git a/parm/soca/fms/input.nml.j2 b/parm/marine/fms/input.nml.j2 similarity index 100% rename from parm/soca/fms/input.nml.j2 rename to parm/marine/fms/input.nml.j2 diff --git a/parm/soca/jcb-base.yaml.j2 b/parm/marine/jcb-base.yaml.j2 similarity index 99% rename from parm/soca/jcb-base.yaml.j2 rename to parm/marine/jcb-base.yaml.j2 index 930926ef9..c59016bdc 100644 --- a/parm/soca/jcb-base.yaml.j2 +++ b/parm/marine/jcb-base.yaml.j2 @@ -81,7 +81,7 @@ marine_obsdataout_prefix: '' marine_obsdataout_suffix: '.{{ current_cycle | to_YMDH }}.nc4' # Outer loops -marine_ninner_1: '{{SOCA_NINNER}}' +marine_ninner_1: '{{NINNER}}' marine_grad_red_1: 1e-7 # Output diff --git a/parm/soca/jcb-prototype_3dfgat.yaml.j2 b/parm/marine/jcb-prototype_3dfgat.yaml.j2 similarity index 65% rename from parm/soca/jcb-prototype_3dfgat.yaml.j2 rename to parm/marine/jcb-prototype_3dfgat.yaml.j2 index 58358f601..d3fdb24e1 100644 --- a/parm/soca/jcb-prototype_3dfgat.yaml.j2 +++ b/parm/marine/jcb-prototype_3dfgat.yaml.j2 @@ -2,4 +2,4 @@ algorithm: 3dfgat # Observations -{% include MARINE_OBS_LIST_YAML %} +{% include OBS_LIST_YAML %} diff --git a/parm/soca/letkf/letkf.yaml.j2 b/parm/marine/letkf/letkf.yaml.j2 similarity index 100% rename from parm/soca/letkf/letkf.yaml.j2 rename to parm/marine/letkf/letkf.yaml.j2 diff --git a/parm/marine/marine_bmat_jedi_config.yaml.j2 b/parm/marine/marine_bmat_jedi_config.yaml.j2 new file mode 100644 index 000000000..80a3c0325 --- /dev/null +++ b/parm/marine/marine_bmat_jedi_config.yaml.j2 @@ -0,0 +1,49 @@ +gridgen: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_gridgen.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_gridgen +soca_diagb: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_diagb.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_diagb +soca_chgres: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jedi_args: ['soca', 'convertstate'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_chgres +soca_parameters_diffusion_vt: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_error_covariance_toolbox.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_parameters_diffusion_vt +soca_setcorscales: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_setcorscales.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_setcorscales +soca_parameters_diffusion_hz: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_error_covariance_toolbox.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_parameters_diffusion_hz +soca_ensb: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_ens_handler.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_ensb +soca_ensweights: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_hybridweights.x' + mpi_cmd: '{{ APRUN_MARINEBMAT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_ensweights diff --git a/parm/soca/soca_bmat_finalize.yaml.j2 b/parm/marine/marine_bmat_save.yaml.j2 similarity index 100% rename from parm/soca/soca_bmat_finalize.yaml.j2 rename to parm/marine/marine_bmat_save.yaml.j2 diff --git a/parm/marine/marine_det_jedi_config.yaml.j2 b/parm/marine/marine_det_jedi_config.yaml.j2 new file mode 100644 index 000000000..76a1e4910 --- /dev/null +++ b/parm/marine/marine_det_jedi_config.yaml.j2 @@ -0,0 +1,19 @@ +var: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_MARINEANLVAR }}' + jedi_args: ['soca', 'variational'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' +soca_incpostproc: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_incr_handler.x' + mpi_cmd: '{{ APRUN_MARINEANLCHKPT }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_incpostproc +soca_diag_stats: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_soca_obsstats.x' + mpi_cmd: '{{ APRUN_MARINEANLOBSSTATS }}' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' + jcb_algo: soca_diag_stats diff --git a/parm/soca/soca_det_finalize.yaml.j2 b/parm/marine/marine_det_save.yaml.j2 similarity index 100% rename from parm/soca/soca_det_finalize.yaml.j2 rename to parm/marine/marine_det_save.yaml.j2 diff --git a/parm/soca/soca_det_files_stage.yaml.j2 b/parm/marine/marine_det_stage.yaml.j2 similarity index 100% rename from parm/soca/soca_det_files_stage.yaml.j2 rename to parm/marine/marine_det_stage.yaml.j2 diff --git a/parm/soca/soca_det_bkg_stage.yaml.j2 b/parm/marine/marine_det_stage_bkg.yaml.j2 similarity index 100% rename from parm/soca/soca_det_bkg_stage.yaml.j2 rename to parm/marine/marine_det_stage_bkg.yaml.j2 diff --git a/parm/soca/soca_ecen_jedi_config.yaml.j2 b/parm/marine/marine_ecen_jedi_config.yaml.j2 similarity index 70% rename from parm/soca/soca_ecen_jedi_config.yaml.j2 rename to parm/marine/marine_ecen_jedi_config.yaml.j2 index 20535eaa5..9bebb152a 100644 --- a/parm/soca/soca_ecen_jedi_config.yaml.j2 +++ b/parm/marine/marine_ecen_jedi_config.yaml.j2 @@ -2,11 +2,11 @@ gridgen: rundir: '{{ DATA }}' exe_src: '{{ EXECgfs }}/gdas_soca_gridgen.x' mpi_cmd: '{{ APRUN_MARINEANLECEN }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' jcb_algo: soca_gridgen ens_handler: rundir: '{{ DATA }}' exe_src: '{{ EXECgfs }}/gdas_soca_anpproc.x' mpi_cmd: '{{ APRUN_MARINEANLECEN }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' + jcb_base_yaml: '{{ PARMgfs }}/gdas/marine/jcb-base.yaml.j2' jcb_algo: soca_ens_handler diff --git a/parm/soca/soca_ecen_finalize.yaml.j2 b/parm/marine/marine_ecen_save.yaml.j2 similarity index 100% rename from parm/soca/soca_ecen_finalize.yaml.j2 rename to parm/marine/marine_ecen_save.yaml.j2 diff --git a/parm/soca/soca_ecen_stage.yaml.j2 b/parm/marine/marine_ecen_stage.yaml.j2 similarity index 100% rename from parm/soca/soca_ecen_stage.yaml.j2 rename to parm/marine/marine_ecen_stage.yaml.j2 diff --git a/parm/soca/letkf/letkf_save.yaml.j2 b/parm/marine/marine_ens_save.yaml.j2 similarity index 100% rename from parm/soca/letkf/letkf_save.yaml.j2 rename to parm/marine/marine_ens_save.yaml.j2 diff --git a/parm/soca/letkf/letkf_stage.yaml.j2 b/parm/marine/marine_ens_stage.yaml.j2 similarity index 87% rename from parm/soca/letkf/letkf_stage.yaml.j2 rename to parm/marine/marine_ens_stage.yaml.j2 index 233e45eb9..e40071f32 100644 --- a/parm/soca/letkf/letkf_stage.yaml.j2 +++ b/parm/marine/marine_ens_stage.yaml.j2 @@ -24,7 +24,7 @@ mkdir: # copy mom input template and det bkg ###################################### copy: -- ["{{ PARMgfs }}/gdas/soca/fms/input.nml", "{{ DATA }}/mom_input.nml.tmpl"] -- ["{{ PARMgfs }}/gdas/soca/fields_metadata.yaml", "{{ DATA }}/fields_metadata.yaml"] +- ["{{ PARMgfs }}/gdas/marine/fms/input.nml", "{{ DATA }}/mom_input.nml.tmpl"] +- ["{{ PARMgfs }}/gdas/marine/fields_metadata.yaml", "{{ DATA }}/fields_metadata.yaml"] - ["{{ COMIN_OCEAN_HISTORY_PREV }}/gdas.ocean.t{{ gcyc }}z.inst.f009.nc", "{{ DATA }}/INPUT/MOM.res.nc"] - ["{{ COMIN_ICE_HISTORY_PREV }}/gdas.ice.t{{ gcyc }}z.inst.f009.nc", "{{ DATA }}/INPUT/cice.res.nc"] diff --git a/parm/soca/ensda/stage_ens_mem.yaml.j2 b/parm/marine/marine_ens_stage_bkg.yaml.j2 similarity index 100% rename from parm/soca/ensda/stage_ens_mem.yaml.j2 rename to parm/marine/marine_ens_stage_bkg.yaml.j2 diff --git a/parm/marine/marine_stage_fix_025.yaml.j2 b/parm/marine/marine_stage_fix_025.yaml.j2 new file mode 100644 index 000000000..54c43e329 --- /dev/null +++ b/parm/marine/marine_stage_fix_025.yaml.j2 @@ -0,0 +1,30 @@ +mkdir: +- "{{ DATA }}/INPUT" +- "{{ DATA }}/anl_geom" +###################################### +# fix files to copy +###################################### +copy: +# Deterministic resource files +- ["{{ INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"] +- ["{{ INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"] +- ["{{ INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"] +- ["{{ INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"] +- ["{{ INPUT_FIX_DIR }}/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] +- ["{{ INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/hycom1_75_800m.nc", "{{ DATA }}/INPUT/hycom1_75_800m.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/layer_coord.nc", "{{ DATA }}/INPUT/layer_coord.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_topog.nc", "{{ DATA }}/INPUT/ocean_topog.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/tidal_amplitude.v20140616.nc", "{{ DATA }}/INPUT/tidal_amplitude.v20140616.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_40L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_40L.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/All_edits.nc", "{{ DATA }}/INPUT/All_edits.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/MOM_channels_global_025", "{{ DATA }}/INPUT/MOM_channels_global_025"] +- ["{{ INPUT_FIX_DIR }}/INPUT/seawifs-clim-1997-2010.1440x1080.v20180328.nc", "{{ DATA }}/INPUT/seawifs-clim-1997-2010.1440x1080.v20180328.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/geothermal_davies2013_v1.nc", "{{ DATA }}/INPUT/geothermal_davies2013_v1.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_46L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_46L.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/C384_mosaic.nc", "{{ DATA }}/INPUT/C384_mosaic.nc"] +# Analysis resource files +- ["{{ ANL_GEOM }}/soca_gridspec.nc", "{{ DATA }}/anl_geom/soca_gridspec.nc"] +- ["{{ ANL_GEOM }}/MOM_input", "{{ DATA }}/anl_geom/MOM_input"] \ No newline at end of file diff --git a/parm/marine/marine_stage_fix_100.yaml.j2 b/parm/marine/marine_stage_fix_100.yaml.j2 new file mode 100644 index 000000000..aa92bf5d2 --- /dev/null +++ b/parm/marine/marine_stage_fix_100.yaml.j2 @@ -0,0 +1,30 @@ +mkdir: +- "{{ DATA }}/INPUT" +- "{{ DATA }}/anl_geom" +###################################### +# fix files to copy +###################################### +copy: +# Deterministic resource files +- ["{{ INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"] +- ["{{ INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"] +- ["{{ INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"] +- ["{{ INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"] +- ["{{ INPUT_FIX_DIR }}/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] +- ["{{ INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/hycom1_75_800m.nc", "{{ DATA }}/INPUT/hycom1_75_800m.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/layer_coord.nc", "{{ DATA }}/INPUT/layer_coord.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/topog.nc", "{{ DATA }}/INPUT/topog.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/vgrid_75_2m.nc", "{{ DATA }}/INPUT/vgrid_75_2m.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/KH_background_2d.nc", "{{ DATA }}/INPUT/KH_background_2d.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/tidal_amplitude.nc", "{{ DATA }}/INPUT/tidal_amplitude.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_40L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_40L.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_46L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_46L.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/topo_edits_011818.nc", "{{ DATA }}/INPUT/topo_edits_011818.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/MOM_channels_SPEAR", "{{ DATA }}/INPUT/MOM_channels_SPEAR"] +- ["{{ INPUT_FIX_DIR }}/INPUT/seawifs_1998-2006_smoothed_2X.nc", "{{ DATA }}/INPUT/seawifs_1998-2006_smoothed_2X.nc"] +# Analysis resource files +- ["{{ ANL_GEOM }}/soca_gridspec.nc", "{{ DATA }}/anl_geom/soca_gridspec.nc"] +- ["{{ ANL_GEOM }}/MOM_input", "{{ DATA }}/anl_geom/MOM_input"] diff --git a/parm/marine/marine_stage_fix_500.yaml.j2 b/parm/marine/marine_stage_fix_500.yaml.j2 new file mode 100644 index 000000000..fb1ed7211 --- /dev/null +++ b/parm/marine/marine_stage_fix_500.yaml.j2 @@ -0,0 +1,22 @@ +mkdir: +- "{{ DATA }}/INPUT" +- "{{ DATA }}/anl_geom" +###################################### +# fix files to copy +###################################### +copy: +# Deterministic resource files +- ["{{ INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"] +- ["{{ INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"] +- ["{{ INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"] +- ["{{ INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"] +- ["{{ INPUT_FIX_DIR }}/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] +- ["{{ INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/hycom1_25.nc", "{{ DATA }}/INPUT/hycom1_25.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/layer_coord25.nc", "{{ DATA }}/INPUT/layer_coord25.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"] +- ["{{ INPUT_FIX_DIR }}/INPUT/ocean_topog.nc", "{{ DATA }}/INPUT/ocean_topog.nc"] +# Analysis resource files +- ["{{ ANL_GEOM }}/soca_gridspec.nc", "{{ DATA }}/anl_geom/soca_gridspec.nc"] +- ["{{ ANL_GEOM }}/MOM_input", "{{ DATA }}/anl_geom/MOM_input"] \ No newline at end of file diff --git a/parm/marine/marine_stage_utilities.yaml.j2 b/parm/marine/marine_stage_utilities.yaml.j2 new file mode 100644 index 000000000..29846c922 --- /dev/null +++ b/parm/marine/marine_stage_utilities.yaml.j2 @@ -0,0 +1,6 @@ +###################################### +# Utility yaml files to copy +###################################### +copy: +- ["{{ HOMEgfs }}/parm/gdas/marine/fields_metadata.yaml", "{{ DATA }}/fields_metadata.yaml"] +- ["{{ HOMEgfs }}/parm/gdas/marine/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] diff --git a/parm/soca/obs/obs_list.yaml.j2 b/parm/marine/obs/obs_list.yaml.j2 similarity index 100% rename from parm/soca/obs/obs_list.yaml.j2 rename to parm/marine/obs/obs_list.yaml.j2 diff --git a/parm/soca/obs/obs_list_base_yaml.j2 b/parm/marine/obs/obs_list_base.yaml.j2 similarity index 100% rename from parm/soca/obs/obs_list_base_yaml.j2 rename to parm/marine/obs/obs_list_base.yaml.j2 diff --git a/parm/soca/obsop_name_map.yaml b/parm/marine/obsop_name_map.yaml similarity index 100% rename from parm/soca/obsop_name_map.yaml rename to parm/marine/obsop_name_map.yaml diff --git a/parm/soca/obsprep/obsprep_config.yaml b/parm/marine/obsprep/obsprep_config.yaml similarity index 100% rename from parm/soca/obsprep/obsprep_config.yaml rename to parm/marine/obsprep/obsprep_config.yaml diff --git a/parm/aero/hofx/hofx_nomodel.yaml.j2 b/parm/obsolete/aero/hofx/hofx_nomodel.yaml.j2 similarity index 100% rename from parm/aero/hofx/hofx_nomodel.yaml.j2 rename to parm/obsolete/aero/hofx/hofx_nomodel.yaml.j2 diff --git a/parm/aero/prep/prep_viirs.yaml.j2 b/parm/obsolete/aero/prep/prep_viirs.yaml.j2 similarity index 100% rename from parm/aero/prep/prep_viirs.yaml.j2 rename to parm/obsolete/aero/prep/prep_viirs.yaml.j2 diff --git a/parm/aero/variational/3dvar_fgat_gfs_aero.yaml.j2 b/parm/obsolete/aero/variational/3dvar_fgat_gfs_aero.yaml.j2 similarity index 100% rename from parm/aero/variational/3dvar_fgat_gfs_aero.yaml.j2 rename to parm/obsolete/aero/variational/3dvar_fgat_gfs_aero.yaml.j2 diff --git a/parm/io/fv3jedi_fieldmetadata_fv3inc.yaml b/parm/obsolete/io/fv3jedi_fieldmetadata_fv3inc.yaml similarity index 100% rename from parm/io/fv3jedi_fieldmetadata_fv3inc.yaml rename to parm/obsolete/io/fv3jedi_fieldmetadata_fv3inc.yaml diff --git a/parm/io/fv3jedi_fieldmetadata_history.yaml b/parm/obsolete/io/fv3jedi_fieldmetadata_history.yaml similarity index 100% rename from parm/io/fv3jedi_fieldmetadata_history.yaml rename to parm/obsolete/io/fv3jedi_fieldmetadata_history.yaml diff --git a/parm/io/fv3jedi_fieldmetadata_restart.yaml b/parm/obsolete/io/fv3jedi_fieldmetadata_restart.yaml similarity index 100% rename from parm/io/fv3jedi_fieldmetadata_restart.yaml rename to parm/obsolete/io/fv3jedi_fieldmetadata_restart.yaml diff --git a/parm/snow/hofx/hofx_nomodel.yaml.j2 b/parm/obsolete/snow/hofx/hofx_nomodel.yaml.j2 similarity index 100% rename from parm/snow/hofx/hofx_nomodel.yaml.j2 rename to parm/obsolete/snow/hofx/hofx_nomodel.yaml.j2 diff --git a/parm/snow/obs/lists/gdas_snow.yaml.j2 b/parm/obsolete/snow/obs/lists/gdas_snow.yaml.j2 similarity index 100% rename from parm/snow/obs/lists/gdas_snow.yaml.j2 rename to parm/obsolete/snow/obs/lists/gdas_snow.yaml.j2 diff --git a/parm/soca/berror/obsolete/soca_bump_loc.yaml b/parm/obsolete/soca/berror/soca_bump_loc.yaml similarity index 100% rename from parm/soca/berror/obsolete/soca_bump_loc.yaml rename to parm/obsolete/soca/berror/soca_bump_loc.yaml diff --git a/parm/soca/berror/obsolete/soca_ensrecenter.yaml b/parm/obsolete/soca/berror/soca_ensrecenter.yaml similarity index 100% rename from parm/soca/berror/obsolete/soca_ensrecenter.yaml rename to parm/obsolete/soca/berror/soca_ensrecenter.yaml diff --git a/parm/soca/berror/obsolete/soca_ensweights.yaml b/parm/obsolete/soca/berror/soca_ensweights.yaml similarity index 100% rename from parm/soca/berror/obsolete/soca_ensweights.yaml rename to parm/obsolete/soca/berror/soca_ensweights.yaml diff --git a/parm/soca/berror/obsolete/soca_parameters_diffusion_hz.yaml b/parm/obsolete/soca/berror/soca_parameters_diffusion_hz.yaml similarity index 100% rename from parm/soca/berror/obsolete/soca_parameters_diffusion_hz.yaml rename to parm/obsolete/soca/berror/soca_parameters_diffusion_hz.yaml diff --git a/parm/soca/berror/obsolete/soca_parameters_diffusion_vt.yaml b/parm/obsolete/soca/berror/soca_parameters_diffusion_vt.yaml similarity index 100% rename from parm/soca/berror/obsolete/soca_parameters_diffusion_vt.yaml rename to parm/obsolete/soca/berror/soca_parameters_diffusion_vt.yaml diff --git a/parm/soca/berror/obsolete/soca_setlocscales.yaml b/parm/obsolete/soca/berror/soca_setlocscales.yaml similarity index 100% rename from parm/soca/berror/obsolete/soca_setlocscales.yaml rename to parm/obsolete/soca/berror/soca_setlocscales.yaml diff --git a/parm/soca/gridgen/gridgen.yaml b/parm/obsolete/soca/gridgen/gridgen.yaml similarity index 100% rename from parm/soca/gridgen/gridgen.yaml rename to parm/obsolete/soca/gridgen/gridgen.yaml diff --git a/parm/templates/stage.yaml b/parm/obsolete/templates/stage.yaml similarity index 100% rename from parm/templates/stage.yaml rename to parm/obsolete/templates/stage.yaml diff --git a/parm/snow/snow_det_jedi_config.yaml.j2 b/parm/snow/snow_det_jedi_config.yaml.j2 new file mode 100644 index 000000000..48498069b --- /dev/null +++ b/parm/snow/snow_det_jedi_config.yaml.j2 @@ -0,0 +1,13 @@ +snowanlvar: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_SNOWANL }}' + jedi_args: ['fv3jedi', 'variational'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ PARMgfs }}/gdas/snow/jcb-prototype_2dvar.yaml.j2' +scf_to_ioda: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_scf_to_ioda.x' + mpi_cmd: '{{ APRUN_APPLY_INCR }}' # only use 6 tasks + jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' + jcb_algo: snow_ims_scf_preprocess \ No newline at end of file diff --git a/parm/snow/snow_det_stage_bkg.yaml.j2 b/parm/snow/snow_det_stage_bkg.yaml.j2 new file mode 100644 index 000000000..164fb3945 --- /dev/null +++ b/parm/snow/snow_det_stage_bkg.yaml.j2 @@ -0,0 +1,8 @@ +mkdir: +- '{{ DATA }}/bkg' +copy: +- ['{{ COMIN_ATMOS_RESTART_PREV }}/{{ current_cycle | to_fv3time }}.coupler.res', '{{ DATA }}/bkg/'] +{% for tile in range(1, ntiles+1) %} +- ['{{ COMIN_ATMOS_RESTART_PREV }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc', '{{ DATA }}/bkg/'] +- ["{{ FIXorog }}/{{ CASE }}/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc" ] +{% endfor %} \ No newline at end of file diff --git a/parm/snow/snow_ens_jedi_config.yaml.j2 b/parm/snow/snow_ens_jedi_config.yaml.j2 new file mode 100644 index 000000000..7f2bc65b6 --- /dev/null +++ b/parm/snow/snow_ens_jedi_config.yaml.j2 @@ -0,0 +1,20 @@ +esnowanlensmean: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_ESNOWANL }}' + jedi_args: ['fv3jedi', 'ensmean'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' + jcb_algo: 'fv3jedi_snow_ensmean' +snowanlvar: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas.x' + mpi_cmd: '{{ APRUN_ESNOWANL }}' + jedi_args: ['fv3jedi', 'variational'] + jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' + jcb_algo_yaml: '{{ PARMgfs }}/gdas/snow/jcb-prototype_2dvar.yaml.j2' +scf_to_ioda: + rundir: '{{ DATA }}' + exe_src: '{{ EXECgfs }}/gdas_fv3jedi_scf_to_ioda.x' + mpi_cmd: '{{ APRUN_APPLY_INCR }}' # only use 6 tasks + jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' + jcb_algo: snow_ims_scf_preprocess \ No newline at end of file diff --git a/parm/snow/snow_ens_save.yaml.j2 b/parm/snow/snow_ens_save.yaml.j2 new file mode 100644 index 000000000..a2a5763ab --- /dev/null +++ b/parm/snow/snow_ens_save.yaml.j2 @@ -0,0 +1,43 @@ +copy: +###################################### +# copy analyses to directories +###################################### +{% for mem in range(1, NMEM_ENS + 1) %} + # define variables + # Declare a dict of search and replace terms to run on each template + {% set tmpl_dict = {'${ROTDIR}':ROTDIR, + '${RUN}':RUN, + '${YMD}':current_cycle | to_YMD , + '${HH}':current_cycle | strftime("%H"), + '${MEMDIR}':"mem" + '%03d' % mem} %} + + {% for tile in range(1, ntiles+1) %} +- ["{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] + {% endfor %} + {% if DOIAU == True %} + # if using IAU, also need analyses copied at the beginning of the window + {% for tile in range(1, ntiles+1) %} +- ["{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] + {% endfor %} + {% endif %} +{% endfor %} +###################################### +# copy ensemble mean increment to COM +###################################### +# define variables +# Declare a dict of search and replace terms to run on each template +{% set tmpl_dict = {'${ROTDIR}':ROTDIR, + '${RUN}':RUN, + '${YMD}':current_cycle | to_YMD , + '${HH}':current_cycle | strftime("%H"), + '${MEMDIR}':"ensstat"} %} + +{% for tile in range(1, ntiles+1) %} +- ["{{ DATA }}/inc/ensmean/snowinc.{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/snowinc.{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] +{% endfor %} +{% if DOIAU == True %} + # if using IAU, also need increment copied at the beginning of the window + {% for tile in range(1, ntiles+1) %} +- ["{{ DATA }}/inc/ensmean/snowinc.{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/snowinc.{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] + {% endfor %} +{% endif %} diff --git a/parm/snow/snow_ens_stage_bkg.yaml.j2 b/parm/snow/snow_ens_stage_bkg.yaml.j2 new file mode 100644 index 000000000..cae119ee7 --- /dev/null +++ b/parm/snow/snow_ens_stage_bkg.yaml.j2 @@ -0,0 +1,52 @@ +###################################### +# set some variables +###################################### +{% if DOIAU == True %} + {% set bkg_time = SNOW_WINDOW_BEGIN | to_fv3time %} +{% else %} + {% set bkg_time = current_cycle | to_fv3time %} +{% endif %} +###################################### +# create working directories +###################################### +mkdir: +- "{{ DATA }}/obs" +- "{{ DATA }}/bkg/ensmean" +- "{{ DATA }}/anl/ensmean" +{% for mem in range(1, NMEM_ENS + 1) %} +- "{{ DATA }}/bkg/mem{{ '%03d' % mem }}" +- "{{ DATA }}/anl/mem{{ '%03d' % mem }}" +{% endfor %} +copy: +###################################### +# copy ensemble background files +###################################### +{% for mem in range(1, NMEM_ENS + 1) %} + {% set gmem = mem+mem_offset %} + {% if gmem > NMEM_ENS_MAX %} + {% set gmem = gmem-NMEM_ENS_MAX %} + {% endif %} + # define variables + # Declare a dict of search and replace terms to run on each template + {% set tmpl_dict = {'${ROTDIR}':ROTDIR, + '${RUN}':"enkfgdas", + '${YMD}':previous_cycle | to_YMD, + '${HH}':previous_cycle | strftime("%H"), + '${MEMDIR}':"mem" + '%03d' % gmem} %} + + # copy coupler file +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.coupler.res", "{{ DATA }}/bkg/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.coupler.res"] + # we need to copy them to two places, one serves as the basis for the analysis + {% for tile in range(1, ntiles+1) %} +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] + {% endfor %} + {% if DOIAU == True %} + # if using IAU, also need backgrounds copied at the beginning of the window + # we need to copy them to two places, one serves as the basis for the analysis + {% for tile in range(1, ntiles+1) %} +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/mem{{ '%03d' % mem }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] +- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] + {% endfor %} + {% endif %} +{% endfor %} diff --git a/parm/snow/snow_jedi_fix.yaml.j2 b/parm/snow/snow_jedi_fix.yaml.j2 new file mode 100644 index 000000000..6a5ca865b --- /dev/null +++ b/parm/snow/snow_jedi_fix.yaml.j2 @@ -0,0 +1,6 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] diff --git a/parm/snow/snow_stage_berror.yaml.j2 b/parm/snow/snow_stage_berror.yaml.j2 new file mode 100644 index 000000000..e23021730 --- /dev/null +++ b/parm/snow/snow_stage_berror.yaml.j2 @@ -0,0 +1,4 @@ +mkdir: +- '{{ DATA }}/berror' +copy: +- ['{{ HOMEgfs }}/fix/gdas/snow/snow_bump_nicas_250km_shadowlevels_nicas.nc', '{{ DATA }}/berror'] diff --git a/parm/snow/snow_stage_ims_scf2ioda.yaml.j2 b/parm/snow/snow_stage_ims_scf2ioda.yaml.j2 new file mode 100644 index 000000000..30ff3a3ed --- /dev/null +++ b/parm/snow/snow_stage_ims_scf2ioda.yaml.j2 @@ -0,0 +1,3 @@ +copy: +- ['{{ COMIN_OBS }}/{{OPREFIX}}imssnow96.asc', '{{ DATA }}/obs/ims{{ current_cycle | to_julian }}_4km_v1.3.asc'] +- ['{{ FIXgfs }}/gdas/obs/ims/IMS_4km_to_{{ CASE }}.mx{{ OCNRES }}.nc', '{{ DATA }}/obs/IMS4km_to_FV3_mapping.{{ CASE }}.mx{{ OCNRES }}_oro_data.nc'] diff --git a/parm/snow/snow_stage_jedi_fix.yaml.j2 b/parm/snow/snow_stage_jedi_fix.yaml.j2 new file mode 100644 index 000000000..6a5ca865b --- /dev/null +++ b/parm/snow/snow_stage_jedi_fix.yaml.j2 @@ -0,0 +1,6 @@ +mkdir: +- '{{ DATA }}/fv3jedi' +copy: +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] diff --git a/parm/snow/snow_stage_orog.yaml.j2 b/parm/snow/snow_stage_orog.yaml.j2 new file mode 100644 index 000000000..f915b36d1 --- /dev/null +++ b/parm/snow/snow_stage_orog.yaml.j2 @@ -0,0 +1,8 @@ +mkdir: +- "{{ DATA }}/orog/ens" +copy: +- ["{{ FIXorog }}/{{ CASE_ENS }}/{{ CASE_ENS }}_mosaic.nc", "{{ DATA }}/orog/ens/{{ CASE_ENS }}_mosaic.nc"] +{% for tile in range(1, ntiles+1) %} +- ["{{ FIXorog }}/{{ CASE_ENS }}/{{ CASE_ENS }}_grid.tile{{ tile }}.nc", "{{ DATA }}/orog/ens/{{ CASE_ENS }}_grid.tile{{ tile }}.nc"] +- ["{{ FIXorog }}/{{ CASE_ENS }}/{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc", "{{ DATA }}/orog/ens/{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc" ] +{% endfor %} diff --git a/parm/soca/letkf/marine-jcb-lektf.yaml.j2 b/parm/soca/letkf/marine-jcb-lektf.yaml.j2 deleted file mode 100644 index 1eb0824c6..000000000 --- a/parm/soca/letkf/marine-jcb-lektf.yaml.j2 +++ /dev/null @@ -1,3 +0,0 @@ -# JEDI algorithm being invoked -algorithm: marine_letkf - diff --git a/parm/soca/obs/obs_stats.yaml.j2 b/parm/soca/obs/obs_stats.yaml.j2 deleted file mode 100644 index f1359b2df..000000000 --- a/parm/soca/obs/obs_stats.yaml.j2 +++ /dev/null @@ -1,7 +0,0 @@ -time window: - begin: '1900-01-01T00:00:00Z' - end: '2035-01-01T00:00:00Z' - bound to include: begin - -obs spaces: - {{ obs_spaces }} diff --git a/parm/soca/soca_ens_bkg_stage.yaml.j2 b/parm/soca/soca_ens_bkg_stage.yaml.j2 deleted file mode 100644 index b6f1416fb..000000000 --- a/parm/soca/soca_ens_bkg_stage.yaml.j2 +++ /dev/null @@ -1,40 +0,0 @@ -###################################### -# set some variables -###################################### -{% set gPDY = previous_cycle | to_YMD %} -{% set gcyc = previous_cycle | strftime("%H") %} -###################################### -# create ens bkg directories -###################################### -mkdir: -{% for mem in range(1, NMEM_ENS + 1) %} - - "{{ DATAens }}/ens/mem{{ '%03d' % mem }}" -{% endfor %} -###################################### -# copy ensemble background files -###################################### -copy: -{% for mem in range(1, NMEM_ENS + 1) %} - # define variables - # Declare a dict of search and replace terms to GDUMP on each template - {% set tmpl_dict = {'ROTDIR':ROTDIR, - 'RUN': GDUMP_ENS, - 'YMD':gPDY, - 'HH':gcyc, - 'MEMDIR':"mem" + '%03d' % mem} %} - - # Replace template variables with tmpl_dict, one key at a time - # This must be done in a namespace to overcome jinja scoping - # Variables set inside of a for loop are lost at the end of the loop - # unless they are part of a namespace - {% set com_prev_ocn = namespace(COMIN_OCEAN_HISTORY_MEM = COM_OCEAN_HISTORY_TMPL) %} - {% set com_prev_ice = namespace(COMIN_ICE_HISTORY_MEM = COM_ICE_HISTORY_TMPL) %} - {% for key in tmpl_dict.keys() %} - {% set search_term = '${' + key + '}' %} - {% set replace_term = tmpl_dict[key] %} - {% set com_prev_ocn.COMIN_OCEAN_HISTORY_MEM = com_prev_ocn.COMIN_OCEAN_HISTORY_MEM.replace(search_term, replace_term) %} - {% set com_prev_ice.COMIN_ICE_HISTORY_MEM = com_prev_ice.COMIN_ICE_HISTORY_MEM.replace(search_term, replace_term) %} - {% endfor %} - - ["{{ com_prev_ocn.COMIN_OCEAN_HISTORY_MEM }}/{{ GDUMP_ENS }}.ocean.t{{ gcyc }}z.inst.f006.nc", "{{ DATAens }}/ens/mem{{ '%03d' % mem }}/{{ GDUMP_ENS }}.ocean.t{{ gcyc }}z.inst.f006.nc"] - - ["{{ com_prev_ice.COMIN_ICE_HISTORY_MEM }}/{{ GDUMP_ENS }}.ice.t{{ gcyc }}z.inst.f006.nc", "{{ DATAens }}/ens/mem{{ '%03d' % mem }}/{{ GDUMP_ENS }}.ice.t{{ gcyc }}z.inst.f006.nc"] -{% endfor %} diff --git a/parm/soca/soca_fix_stage_025.yaml.j2 b/parm/soca/soca_fix_stage_025.yaml.j2 deleted file mode 100644 index 8158b6a3c..000000000 --- a/parm/soca/soca_fix_stage_025.yaml.j2 +++ /dev/null @@ -1,30 +0,0 @@ -mkdir: -- "{{ DATA }}/INPUT" -- "{{ DATA }}/anl_geom" -###################################### -# fix files to copy -###################################### -copy: -# Deterministic resource files -- ["{{ SOCA_INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"] -- ["{{ SOCA_INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"] -- ["{{ SOCA_INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"] -- ["{{ SOCA_INPUT_FIX_DIR }}/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/hycom1_75_800m.nc", "{{ DATA }}/INPUT/hycom1_75_800m.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/layer_coord.nc", "{{ DATA }}/INPUT/layer_coord.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_topog.nc", "{{ DATA }}/INPUT/ocean_topog.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/tidal_amplitude.v20140616.nc", "{{ DATA }}/INPUT/tidal_amplitude.v20140616.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_40L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_40L.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/All_edits.nc", "{{ DATA }}/INPUT/All_edits.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/MOM_channels_global_025", "{{ DATA }}/INPUT/MOM_channels_global_025"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/seawifs-clim-1997-2010.1440x1080.v20180328.nc", "{{ DATA }}/INPUT/seawifs-clim-1997-2010.1440x1080.v20180328.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/geothermal_davies2013_v1.nc", "{{ DATA }}/INPUT/geothermal_davies2013_v1.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_46L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_46L.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/C384_mosaic.nc", "{{ DATA }}/INPUT/C384_mosaic.nc"] -# Analysis resource files -- ["{{ SOCA_ANL_GEOM }}/soca_gridspec.nc", "{{ DATA }}/anl_geom/soca_gridspec.nc"] -- ["{{ SOCA_ANL_GEOM }}/MOM_input", "{{ DATA }}/anl_geom/MOM_input"] \ No newline at end of file diff --git a/parm/soca/soca_fix_stage_100.yaml.j2 b/parm/soca/soca_fix_stage_100.yaml.j2 deleted file mode 100644 index 71785b59c..000000000 --- a/parm/soca/soca_fix_stage_100.yaml.j2 +++ /dev/null @@ -1,30 +0,0 @@ -mkdir: -- "{{ DATA }}/INPUT" -- "{{ DATA }}/anl_geom" -###################################### -# fix files to copy -###################################### -copy: -# Deterministic resource files -- ["{{ SOCA_INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"] -- ["{{ SOCA_INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"] -- ["{{ SOCA_INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"] -- ["{{ SOCA_INPUT_FIX_DIR }}/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/hycom1_75_800m.nc", "{{ DATA }}/INPUT/hycom1_75_800m.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/layer_coord.nc", "{{ DATA }}/INPUT/layer_coord.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/topog.nc", "{{ DATA }}/INPUT/topog.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/vgrid_75_2m.nc", "{{ DATA }}/INPUT/vgrid_75_2m.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/KH_background_2d.nc", "{{ DATA }}/INPUT/KH_background_2d.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/tidal_amplitude.nc", "{{ DATA }}/INPUT/tidal_amplitude.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_40L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_40L.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/interpolate_zgrid_46L.nc", "{{ DATA }}/INPUT/interpolate_zgrid_46L.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/topo_edits_011818.nc", "{{ DATA }}/INPUT/topo_edits_011818.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/MOM_channels_SPEAR", "{{ DATA }}/INPUT/MOM_channels_SPEAR"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/seawifs_1998-2006_smoothed_2X.nc", "{{ DATA }}/INPUT/seawifs_1998-2006_smoothed_2X.nc"] -# Analysis resource files -- ["{{ SOCA_ANL_GEOM }}/soca_gridspec.nc", "{{ DATA }}/anl_geom/soca_gridspec.nc"] -- ["{{ SOCA_ANL_GEOM }}/MOM_input", "{{ DATA }}/anl_geom/MOM_input"] diff --git a/parm/soca/soca_fix_stage_500.yaml.j2 b/parm/soca/soca_fix_stage_500.yaml.j2 deleted file mode 100644 index 82a6e9947..000000000 --- a/parm/soca/soca_fix_stage_500.yaml.j2 +++ /dev/null @@ -1,22 +0,0 @@ -mkdir: -- "{{ DATA }}/INPUT" -- "{{ DATA }}/anl_geom" -###################################### -# fix files to copy -###################################### -copy: -# Deterministic resource files -- ["{{ SOCA_INPUT_FIX_DIR }}/rossrad.nc", "{{ DATA }}/rossrad.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/field_table", "{{ DATA }}/field_table"] -- ["{{ SOCA_INPUT_FIX_DIR }}/diag_table", "{{ DATA }}/diag_table"] -- ["{{ SOCA_INPUT_FIX_DIR }}/MOM_input", "{{ DATA }}/MOM_input"] -- ["{{ SOCA_INPUT_FIX_DIR }}/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/grid_spec.nc", "{{ DATA }}/INPUT/grid_spec.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/hycom1_25.nc", "{{ DATA }}/INPUT/hycom1_25.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/layer_coord25.nc", "{{ DATA }}/INPUT/layer_coord25.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_hgrid.nc", "{{ DATA }}/INPUT/ocean_hgrid.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_mosaic.nc", "{{ DATA }}/INPUT/ocean_mosaic.nc"] -- ["{{ SOCA_INPUT_FIX_DIR }}/INPUT/ocean_topog.nc", "{{ DATA }}/INPUT/ocean_topog.nc"] -# Analysis resource files -- ["{{ SOCA_ANL_GEOM }}/soca_gridspec.nc", "{{ DATA }}/anl_geom/soca_gridspec.nc"] -- ["{{ SOCA_ANL_GEOM }}/MOM_input", "{{ DATA }}/anl_geom/MOM_input"] \ No newline at end of file diff --git a/parm/soca/soca_utils_stage.yaml.j2 b/parm/soca/soca_utils_stage.yaml.j2 deleted file mode 100644 index 462cfccd0..000000000 --- a/parm/soca/soca_utils_stage.yaml.j2 +++ /dev/null @@ -1,6 +0,0 @@ -###################################### -# Utility yaml files to copy -###################################### -copy: -- ["{{ HOMEgfs }}/parm/gdas/soca/fields_metadata.yaml", "{{ DATA }}/fields_metadata.yaml"] -- ["{{ HOMEgfs }}/parm/gdas/soca/obsop_name_map.yaml", "{{ DATA }}/obsop_name_map.yaml"] diff --git a/test/aero/genyaml_3dvar.sh b/test/aero/genyaml_3dvar.sh index 047d672e8..9161779e6 100755 --- a/test/aero/genyaml_3dvar.sh +++ b/test/aero/genyaml_3dvar.sh @@ -18,7 +18,7 @@ export assim_freq=6 export OPREFIX='gdas.t18z.' # input and output YAMLs -export YAMLin=$srcdir/parm/aero/variational/3dvar_gfs_aero.yaml.j2 +export YAMLin=$srcdir/test/testinput/3dvar_gfs_aero.yaml.j2 export YAMLout=$DATA/3dvar_gfs_aero.yaml # remove and make test directory diff --git a/test/gw-ci/soca/jcb-prototype_3dfgat_3DVarAOWCDA.yaml.j2 b/test/gw-ci/soca/jcb-prototype_3dfgat_3DVarAOWCDA.yaml.j2 index 6d701d873..86e23f0fa 100644 --- a/test/gw-ci/soca/jcb-prototype_3dfgat_3DVarAOWCDA.yaml.j2 +++ b/test/gw-ci/soca/jcb-prototype_3dfgat_3DVarAOWCDA.yaml.j2 @@ -2,7 +2,7 @@ algorithm: 3dfgat # Observations -{% include MARINE_OBS_LIST_YAML %} +{% include OBS_LIST_YAML %} # Testing things # -------------- diff --git a/parm/aero/variational/3dvar_gfs_aero.yaml.j2 b/test/testinput/3dvar_gfs_aero.yaml.j2 similarity index 100% rename from parm/aero/variational/3dvar_gfs_aero.yaml.j2 rename to test/testinput/3dvar_gfs_aero.yaml.j2 diff --git a/ush/soca/prep_ocean_obs.py b/ush/soca/prep_ocean_obs.py index 48871a593..ddec46ff9 100644 --- a/ush/soca/prep_ocean_obs.py +++ b/ush/soca/prep_ocean_obs.py @@ -83,10 +83,10 @@ def initialize(self): except OSError: logger.warning("Could not copy RECCAP2_region_masks_all_v20221025.nc") - OBS_YAML = self.task_config['MARINE_OBS_LIST_YAML'] + OBS_YAML = self.task_config['OBS_LIST_YAML'] self.task_config.observations = parse_j2yaml(OBS_YAML, self.task_config)['observations'] - obsconfigfile = os.path.join(self.task_config['PARMgfs'], 'gdas/soca/obs/obs_list_base_yaml.j2') + obsconfigfile = os.path.join(self.task_config['PARMgfs'], 'gdas/marine/obs/obs_list_base.yaml.j2') obsconfig = parse_j2yaml(obsconfigfile, self.task_config)['observers'] OBSPREP_YAML = self.task_config['OBSPREP_YAML']