diff --git a/modulefiles/tasks/wcoss2/analysis_gsi.local.lua b/modulefiles/tasks/wcoss2/analysis_gsi.local.lua index bd953c28a..415599d80 100644 --- a/modulefiles/tasks/wcoss2/analysis_gsi.local.lua +++ b/modulefiles/tasks/wcoss2/analysis_gsi.local.lua @@ -22,3 +22,4 @@ load(pathJoin("crtm", os.getenv("crtm_ver"))) load(pathJoin("udunits", os.getenv("udunits_ver"))) load(pathJoin("gsl", os.getenv("gsl_ver"))) load(pathJoin("nco", os.getenv("nco_ver"))) + diff --git a/modulefiles/tasks/wcoss2/enkfupdt.local.lua b/modulefiles/tasks/wcoss2/enkfupdt.local.lua index 86747d3b2..6b53eb714 100644 --- a/modulefiles/tasks/wcoss2/enkfupdt.local.lua +++ b/modulefiles/tasks/wcoss2/enkfupdt.local.lua @@ -1,4 +1,3 @@ -load(pathJoin("PrgEnv-intel", os.getenv("PrgEnv_intel_ver"))) load(pathJoin("intel", os.getenv("intel_ver"))) load(pathJoin("craype", os.getenv("craype_ver"))) load(pathJoin("python", os.getenv("python_ver"))) diff --git a/modulefiles/tasks/wcoss2/make_ics.local.lua b/modulefiles/tasks/wcoss2/make_ics.local.lua index b2eb55bfd..e7c567001 100644 --- a/modulefiles/tasks/wcoss2/make_ics.local.lua +++ b/modulefiles/tasks/wcoss2/make_ics.local.lua @@ -1,4 +1,3 @@ -load(pathJoin("PrgEnv-intel", os.getenv("PrgEnv_intel_ver"))) load(pathJoin("intel", os.getenv("intel_ver"))) load(pathJoin("craype", os.getenv("craype_ver"))) load(pathJoin("python", os.getenv("python_ver"))) @@ -13,7 +12,7 @@ load(pathJoin("pnetcdf-D", os.getenv("pnetcdf_ver"))) load(pathJoin("bacio", os.getenv("bacio_ver"))) load(pathJoin("w3emc", os.getenv("w3emc_ver"))) load(pathJoin("nemsio", os.getenv("nemsio_ver"))) +load(pathJoin("libaec",os.getenv("libaec_ver"))) +load(pathJoin("g2c",os.getenv("g2c_ver"))) +load(pathJoin("libjpeg-turbo",os.getenv("libjpeg_turbo_ver"))) load(pathJoin("wgrib2", os.getenv("wgrib2_ver"))) -load(pathJoin("udunits", os.getenv("udunits_ver"))) -load(pathJoin("gsl", os.getenv("gsl_ver"))) -load(pathJoin("nco", os.getenv("nco_ver"))) diff --git a/modulefiles/tasks/wcoss2/make_lbcs.local.lua b/modulefiles/tasks/wcoss2/make_lbcs.local.lua index e8fdcb468..f215f77f3 100644 --- a/modulefiles/tasks/wcoss2/make_lbcs.local.lua +++ b/modulefiles/tasks/wcoss2/make_lbcs.local.lua @@ -1,4 +1,3 @@ -load(pathJoin("PrgEnv-intel", os.getenv("PrgEnv_intel_ver"))) load(pathJoin("intel", os.getenv("intel_ver"))) load(pathJoin("craype", os.getenv("craype_ver"))) load(pathJoin("python", os.getenv("python_ver"))) @@ -14,7 +13,11 @@ load(pathJoin("pnetcdf-D", os.getenv("pnetcdf_ver"))) load(pathJoin("bacio", os.getenv("bacio_ver"))) load(pathJoin("w3emc", os.getenv("w3emc_ver"))) load(pathJoin("nemsio", os.getenv("nemsio_ver"))) +load(pathJoin("libaec",os.getenv("libaec_ver"))) +load(pathJoin("g2c",os.getenv("g2c_ver"))) +load(pathJoin("libjpeg-turbo",os.getenv("libjpeg_turbo_ver"))) load(pathJoin("wgrib2", os.getenv("wgrib2_ver"))) load(pathJoin("udunits", os.getenv("udunits_ver"))) load(pathJoin("gsl", os.getenv("gsl_ver"))) load(pathJoin("nco", os.getenv("nco_ver"))) + diff --git a/modulefiles/tasks/wcoss2/post.local.lua b/modulefiles/tasks/wcoss2/post.local.lua index b35c3b4ab..39be88e2d 100644 --- a/modulefiles/tasks/wcoss2/post.local.lua +++ b/modulefiles/tasks/wcoss2/post.local.lua @@ -1,7 +1,6 @@ unload("PrgEnv-intel") unload("netcdf") -load(pathJoin("PrgEnv-intel", os.getenv("PrgEnv_intel_ver"))) load(pathJoin("intel", os.getenv("intel_ver"))) load(pathJoin("craype", os.getenv("craype_ver"))) load(pathJoin("python", os.getenv("python_ver"))) @@ -14,4 +13,7 @@ load(pathJoin("hdf5-D", os.getenv("hdf5_ver"))) load(pathJoin("netcdf-D", os.getenv("netcdf_ver"))) load(pathJoin("pnetcdf-D", os.getenv("pnetcdf_ver"))) load(pathJoin("libjpeg", os.getenv("libjpeg_ver"))) +load(pathJoin("libaec",os.getenv("libaec_ver"))) +load(pathJoin("g2c",os.getenv("g2c_ver"))) +load(pathJoin("libjpeg-turbo",os.getenv("libjpeg_turbo_ver"))) load(pathJoin("wgrib2", os.getenv("wgrib2_ver"))) diff --git a/modulefiles/tasks/wcoss2/prdgen.local.lua b/modulefiles/tasks/wcoss2/prdgen.local.lua index bb7b8ee46..0e3bc174d 100644 --- a/modulefiles/tasks/wcoss2/prdgen.local.lua +++ b/modulefiles/tasks/wcoss2/prdgen.local.lua @@ -1,6 +1,6 @@ + load(pathJoin("cfp", os.getenv("cfp_ver"))) -load(pathJoin("PrgEnv-intel", os.getenv("PrgEnv_intel_ver"))) load(pathJoin("intel", os.getenv("intel_ver"))) load(pathJoin("craype", os.getenv("craype_ver"))) load(pathJoin("python", os.getenv("python_ver"))) @@ -11,10 +11,9 @@ load(pathJoin("cray-pals", os.getenv("cray_pals_ver"))) load(pathJoin("hdf5-D", os.getenv("hdf5_ver"))) load(pathJoin("netcdf-D", os.getenv("netcdf_ver"))) load(pathJoin("pnetcdf-D", os.getenv("pnetcdf_ver"))) +load(pathJoin("libaec",os.getenv("libaec_ver"))) +load(pathJoin("g2c",os.getenv("g2c_ver"))) +load(pathJoin("libjpeg-turbo",os.getenv("libjpeg_turbo_ver"))) load(pathJoin("wgrib2", os.getenv("wgrib2_ver"))) load(pathJoin("libjpeg", os.getenv("libjpeg_ver"))) load(pathJoin("grib_util", os.getenv("grib_util_ver"))) - -load(pathJoin("udunits", os.getenv("udunits_ver"))) -load(pathJoin("gsl", os.getenv("gsl_ver"))) -load(pathJoin("nco", os.getenv("nco_ver"))) diff --git a/modulefiles/wflow_wcoss2.lua b/modulefiles/wflow_wcoss2.lua index 853e5b43d..b93ca7402 100644 --- a/modulefiles/wflow_wcoss2.lua +++ b/modulefiles/wflow_wcoss2.lua @@ -12,5 +12,5 @@ prepend_path("MODULEPATH", os.getenv("modulepath_mpi")) load(pathJoin("crtm", os.getenv("crtm_ver"))) prepend_path("MODULEPATH","/apps/ops/test/nco/modulefiles") -load(pathJoin("core/rocoto", os.getenv("rocoto_ver"))) +load(pathJoin("core/rocoto", os.getenv("rocoto_ver") or "1.3.5")) diff --git a/parm/FV3LAM_wflow_nco.xml b/parm/FV3LAM_wflow_nco.xml new file mode 100644 index 000000000..ba4c00316 --- /dev/null +++ b/parm/FV3LAM_wflow_nco.xml @@ -0,0 +1,3719 @@ +{# + +This is a Jinja-enabled Rocoto XML template. It is filled in using the +fill_template.py script, and is done automatically by the +generate_workflow.sh step of preparing a regional workflow configured +experiment. + +See README.xml_templating.md for information on using the Templating mechanisms. +-#} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{%- if is_rtma %} + +{%- else %} + +{%- endif %} + + + + +{%- if partition_default is not none %} +&ACCOUNT;&QUEUE_DEFAULT;{{ partition_default }}&RRFS_RESERVE;"> +{%- else %} +&ACCOUNT;&QUEUE_DEFAULT;"> +{%- endif %} +{%- if partition_forecast is not none %} +&ACCOUNT;&QUEUE_FORECAST;{{ partition_forecast }}"> +{%- else %} +&ACCOUNT;&QUEUE_FORECAST;"> +{%- endif %} +{%- if partition_analysis is not none %} +&ACCOUNT;&QUEUE_ANALYSIS;{{ partition_analysis }}"> +&ACCOUNT;&QUEUE_ANALYSIS;{{ partition_analysis }}&RRFS_RESERVE;"> +{%- else %} +&ACCOUNT;&QUEUE_ANALYSIS;"> +&ACCOUNT;&QUEUE_ANALYSIS;"> +{%- endif %} +{%- if partition_post is not none %} +&SERVICE_ACCOUNT;&QUEUE_POST;{{ partition_post }}&RRFS_POST_RESERVE;"> +{%- else %} +&SERVICE_ACCOUNT;&QUEUE_POST;"> +{%- endif %} +{%- if partition_prdgen is not none %} +&SERVICE_ACCOUNT;&QUEUE_PRDGEN;{{ partition_prdgen }}&RRFS_POST_RESERVE;"> +{%- else %} +&SERVICE_ACCOUNT;&QUEUE_PRDGEN;"> +{%- endif %} + + +{{ nnodes_process_smoke }}:ppn={{ ppn_process_smoke }}"> +{{ nnodes_process_radar }}:ppn={{ ppn_process_radar }}"> +{{ nnodes_process_lightning }}:ppn={{ ppn_process_lightning }}"> +{{ nnodes_process_bufr }}:ppn={{ ppn_process_bufr }}"> +{{ nnodes_prep_cyc }}:ppn={{ ppn_prep_cyc }}"> +{{ nnodes_save_restart }}:ppn={{ ppn_save_restart }}"> +{{ nnodes_recenter }}:ppn={{ ppn_recenter }}"> +{{ nnodes_update_lbc_soil }}:ppn={{ ppn_update_lbc_soil }}"> +{{ nnodes_analysis_gsidiag }}:ppn={{ ppn_analysis_gsidiag }}"> +{{ nnodes_prdgen }}:ppn={{ ppn_prdgen }}"> +{{ nnodes_analysis_nonvarcld }}:ppn={{ ppn_analysis_nonvarcld }}"> + +{%- if machine in ["WCOSS2"] %} +{{ nnodes_bufrsnd }}:ppn={{ ppn_bufrsnd }}:tpp={{ tpp_bufrsnd }}"> +{{ nnodes_post }}:ppn={{ ppn_post }}:tpp={{ tpp_post }}"> +{{ nnodes_analysis_enkf }}:ppn={{ ppn_analysis_enkf }}:tpp={{ tpp_analysis_enkf }}"> +{{ nnodes_make_ics }}:ppn={{ ppn_make_ics }}:tpp={{ tpp_make_ics }}"> +{{ nnodes_blend_ics }}:ppn={{ ppn_blend_ics }}"> +{{ nnodes_make_lbcs }}:ppn={{ ppn_make_lbcs }}:tpp={{ tpp_make_lbcs }}"> +{{ nnodes_analysis_gsi }}:ppn={{ ppn_analysis_gsi }}:tpp={{ tpp_analysis_gsi }}"> +{{ nnodes_forecast }}:ppn={{ ppn_forecast }}:tpp={{ tpp_forecast }}"> +{{ nnodes_forecast }}:ppn={{ ppn_forecast }}:tpp={{ tpp_forecast }}"> + +-l place=excl"> +-l place=excl"> +-l place=excl"> +-l place=excl"> +{%- if is_rtma %} +-l place=excl:scatter"> +{%- endif %} +{%- elif machine in ["JET"] %} +{{ nnodes_bufrsnd }}:ppn={{ ppn_bufrsnd }}"> +{{ nnodes_post }}:ppn={{ ppn_post }}"> +{{ nnodes_analysis_enkf }}:ppn={{ ppn_analysis_enkf }}"> +{{ nnodes_make_ics }}:ppn={{ ppn_make_ics }}"> +{{ nnodes_blend_ics }}:ppn={{ ppn_blend_ics }}"> +{{ nnodes_make_lbcs }}:ppn={{ ppn_make_lbcs }}"> +{{ ncores_analysis_gsi }}"> +{{ ncores_forecast }}"> +{{ ncores_forecast }}"> +{{ ncores_per_node }}"> +--export=NONE"> +{{ native_analysis_gsi }} &RRFS_RESERVE;"> +{{ native_forecast }} &RRFS_RESERVE;"> +{{ native_forecast }} &RRFS_RESERVE;"> +{%- elif machine in ["HERA"] %} +{{ nnodes_bufrsnd }}:ppn={{ ppn_bufrsnd }}"> +{{ nnodes_post }}:ppn={{ ppn_post }}"> +{{ nnodes_analysis_enkf }}:ppn={{ ppn_analysis_enkf }}"> +{{ nnodes_make_ics }}:ppn={{ ppn_make_ics }}"> +{{ nnodes_blend_ics }}:ppn={{ ppn_blend_ics }}"> +{{ nnodes_make_lbcs }}:ppn={{ ppn_make_lbcs }}"> +{{ ncores_analysis_gsi }}"> +{{ nnodes_forecast }}:ppn={{ ppn_forecast }}"> +{{ nnodes_forecast }}:ppn={{ ppn_forecast }}"> +{{ ncores_per_node }}"> +--export=NONE"> +{{ native_analysis_gsi }} &RRFS_RESERVE;"> + + +{%- else %} +{{ nnodes_bufrsnd }}:ppn={{ ppn_bufrsnd }}"> +{{ nnodes_post }}:ppn={{ ppn_post }}"> +{{ nnodes_analysis_enkf }}:ppn={{ ppn_analysis_enkf }}"> +{{ nnodes_make_ics }}:ppn={{ ppn_make_ics }}"> +{{ nnodes_blend_ics }}:ppn={{ ppn_blend_ics }}"> +{{ nnodes_make_lbcs }}:ppn={{ ppn_make_lbcs }}"> +{{ nnodes_analysis_gsi }}:ppn={{ ppn_analysis_gsi }}"> +{{ nnodes_forecast }}:ppn={{ ppn_forecast }}"> +{{ nnodes_forecast }}:ppn={{ ppn_forecast }}"> +{{ ncores_per_node }}"> +--export=NONE"> + + + +{%- endif %} + + + + + + + + + + + + + + + + + + + + + + + + +{{ memo_prep_cyc}}"> + + + + +{%- if do_retro %} + + + + + + + + + + + + + + +{%- else %} + + + + + + +@Y@m@d@H@M'> +@Y@m@d@H@M'> +@Y@m@d@H@M'> +@Y@m@d@H@M'> +@Y@m@d@H@M'> +@Y@m@d@H@M'> +@Y@m@d@H@M'> +@Y@m@d@H@M'> +{%- endif %} + + + + + + + + + + + + + + + + + + + +]> + +{%- if do_retro %} + +{% else %} + +{%- endif %} +{# Double quotes are required inside the strftime! Expect an error from reading the template if using single quotes. #} + {{ at_start_cycledef }} + + {{ initial_cycledef }} + {{ boundary_cycledef }} + + {{ spinup_cycledef }} + {{ prod_cycledef }} + {{ prodlong_cycledef }} + +{%- if do_save_da_output %} + {{ saveda_cycledef }} +{%- endif %} + {{ recenter_cycledef }} + + + &LOGDIR;/FV3LAM_wflow_&TAG;.log + + + + + + +{%- if run_task_make_grid %} + + + + &RSRV_DEFAULT; + &LOAD_MODULES_RUN_TASK_FP; "&MAKE_GRID_TN;" "&HOMErrfs;/jobs/JRRFS_MAKE_GRID" + {{ nnodes_make_grid }}:ppn={{ ppn_make_grid }} + {{ wtime_make_grid }} + &NODESIZE_ALL; + &TAG;_&MAKE_GRID_TN; + &LOGDIR;/&MAKE_GRID_TN;.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&MAKE_GRID_TN;_&envir;_@H + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + envir&envir; + KEEPDATAYES + + +{% endif %} + +{%- if run_task_make_orog %} + + + + &RSRV_DEFAULT; + &LOAD_MODULES_RUN_TASK_FP; "&MAKE_OROG_TN;" "&HOMErrfs;/jobs/JRRFS_MAKE_OROG" + {{ nnodes_make_orog }}:ppn={{ ppn_make_orog }} + {{ wtime_make_orog }} + &NODESIZE_ALL; + &TAG;_&MAKE_OROG_TN; + &LOGDIR;/&MAKE_OROG_TN;.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&MAKE_OROG_TN;_&envir;_@H + cyc@H + HOMErrfs&HOMErrfs; + envir&envir; + KEEPDATAYES + + + + + &RUN_TASK_MAKE_GRID;FALSE + + + + +{% endif %} + +{%- if run_task_make_sfc_climo %} + + + + &RSRV_DEFAULT; + &LOAD_MODULES_RUN_TASK_FP; "&MAKE_SFC_CLIMO_TN;" "&HOMErrfs;/jobs/JRRFS_MAKE_SFC_CLIMO" + {{ nnodes_make_sfc_climo }}:ppn={{ ppn_make_sfc_climo }} + {{ wtime_make_sfc_climo }} + &NODESIZE_ALL; + &TAG;_&MAKE_SFC_CLIMO_TN; + &LOGDIR;/&MAKE_SFC_CLIMO_TN;.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&MAKE_SFC_CLIMO_TN;_&envir;_@H + cyc@H + HOMErrfs&HOMErrfs; + envir&envir; + KEEPDATAYES + + + + + + &RUN_TASK_MAKE_GRID;FALSE + + + + &RUN_TASK_MAKE_OROG;FALSE + + + + + +{% endif %} + + +{%- if not do_ensfcst %} + + + +{%- if do_spinup %} + spinupcyc prodcyc,prodcyc_long + spinup prod +{% else %} + prodcyc,prodcyc_long + prod +{%- endif %} + +{%- if do_smoke_dust %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&PROCESS_SMOKE_TN;" "&HOMErrfs;/jobs/JRRFS_PROCESS_SMOKE" + + &RESOURCES_PROCESS_SMOKE; + &NATIVE_ALL; + &WALLTIME_PROCESS_SMOKE; + &MEMO_PROCESS_SMOKE; + &NODESIZE_ALL; + &TAG;_&PROCESS_SMOKE_TN;_#type# + &LOGDIR;/&PROCESS_SMOKE_TN;_#type#_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&PROCESS_SMOKE_TN;_#type#_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + DCOMROOT&DCOMROOT; + CYCLE_TYPE#type# + GESROOT&GESROOT; + cyc@H + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + @Y@m@d@H@M00 + {%- if do_retro %} + &FG_ROOT;/&RUN;.@Y@m@d/@H/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + + + +{%- endif %} + +{%- if do_analysis_nonvarcld or do_enkf_radar_ref or do_envar_radar_ref %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_PROCESS_RADAR" + + &RESOURCES_PROCESS_RADAR; + &NATIVE_ALL; + &WALLTIME_PROCESS_RADAR; + &NODESIZE_ALL; + &TAG;_&PROCESS_RADAR_TN;_#type# + &LOGDIR;/&PROCESS_RADAR_TN;_#type#_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&PROCESS_RADAR_TN;_#type#_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + CYCLE_TYPE#type# + RADAR_REF_THINNING{{ radar_ref_thinning }} + GESROOT&GESROOT; + COMROOT&COMROOT; + DCOMROOT&DCOMROOT; + cyc@H + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + @Y@m@d@H@M00 + + + + + +{%- if do_glmfed_da %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&PROCESS_SMOKE_TN;" "&HOMErrfs;/jobs/JRRFS_PROCESS_LIGHTNING" + + &RESOURCES_PROCESS_LIGHTNING; + &NATIVE_ALL; + &WALLTIME_PROCESS_LIGHTNING; + &NODESIZE_ALL; + &TAG;_&PROCESS_LIGHTNING_TN;_#type# + &LOGDIR;/&PROCESS_LIGHTNING_TN;_#type#_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&PROCESS_LIGHTNING_TN;_#type#_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + DCOMROOT&DCOMROOT; + CYCLE_TYPE#type# + cyc@H + PREP_MODEL0 + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + @Y@m@d@H@M00 + + + +{%- endif %} + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_PROCESS_BUFR" + + &RESOURCES_PROCESS_BUFR; + &NATIVE_ALL; + &WALLTIME_PROCESS_BUFR; + &MEMO_PROCESS_BUFR; + &NODESIZE_ALL; + &TAG;_&PROCESS_BUFR_TN;_#type# + &LOGDIR;/&PROCESS_BUFR_TN;_#type#_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&PROCESS_BUFR_TN;_#type#_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + CYCLE_TYPE#type# + cyc@H + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + @Y@m@d@H@M00 + + + + + +{%- endif %} + + + +{% endif %} + +{% if not is_rtma %} +{%- if do_ensemble %} + + + + {%- for m in range(1, num_ens_members+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} + {%- if do_enscontrol %} + /gec00{% for m in range(2, num_ens_members+1) %}{{ " /gep%02d"%m }}{% endfor %} + _mem0000{% for m in range(2, num_ens_members+1) %}{{ " _mem%04d"%m }}{% endfor %} + {%- else %} + {% for m in range(1, num_ens_members+1) %}{{ " /gep%02d"%m }}{% endfor %} + {% for m in range(1, num_ens_members+1) %}{{ " _mem%04d"%m }}{% endfor %} + {% for m in range(1, num_ens_members+1) %}{{ " mem%03d"%m }}{% endfor %} + {%- endif %} + {% for m in range(1, num_ens_members+1) %}{{ " /mem%03d"%m }}{% endfor %} +{%- endif %} + +{%- if not do_ensfcst %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&MAKE_ICS_TN;" "&HOMErrfs;/jobs/JRRFS_MAKE_ICS" + &RESOURCES_MAKE_ICS; + &NATIVE_ALL; + &WALLTIME_MAKE_ICS; + &NODESIZE_ALL; + &TAG;_&MAKE_ICS_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&MAKE_ICS_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&MAKE_ICS_TN;{{ uscore_ensmem_name}}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + FG_ROOT&FG_ROOT; + EXTRN_MDL_NAME_ICS{{ extrn_mdl_name_ics }} + MEMBER_NAME#{{ ensmem_indx_name }}# + GEFS_INPUT_SUBDIR#subdirGE# + WRF_MEM_NAME#memNameWRF# + GDASENKF_INPUT_SUBDIR#subdirGDAS# + GDAS_MEM_NAME#memNameGDAS# + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + &RUN_TASK_MAKE_GRID;FALSE + + + + &RUN_TASK_MAKE_OROG;FALSE + + + + &RUN_TASK_MAKE_SFC_CLIMO;FALSE + + + {%- if machine in ["WCOSS2"] %} + {%- if extrn_mdl_name_ics in ["GFS"] %} + {%- if do_retro %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {% else %} + {{ extrn_mdl_sysbasedir_ics }}/gfs.@Y@m@d/@H/atmos/gfs.t@Hz.atmf{{ "%03d" % extrn_mdl_ics_offset_hrs }}.nc + {%- endif %} + {%- elif extrn_mdl_name_ics in ["GDASENKF"] %} + + {{ extrn_mdl_sysbasedir_ics }}/enkfgdas.@Y@m@d/@H/atmos/#subdirGDAS#/gdas.t@Hz.atmf00{{ extrn_mdl_ics_offset_hrs }}.nc + {{ extrn_mdl_sysbasedir_ics }}/enkfgdas.@Y@m@d/@H/atmos/#subdirGDAS#/gdas.t@Hz.sfcf00{{ extrn_mdl_ics_offset_hrs }}.nc + + {%- elif extrn_mdl_name_ics in ["GEFS"] %} + {%- if do_retro %} + {{ extrn_mdl_sysbasedir_ics }}/#subdirGE#/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {% else %} + {{ extrn_mdl_sysbasedir_ics }}/gefs.@Y@m@d/@H/atmos/pgrb2bp5/#subdirGE#.t@Hz.pgrb2b.0p50.f{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {%- endif %} + {% else %} + {%- if do_retro %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {% else %} + {{ extrn_mdl_sysbasedir_ics }}/gfs.@Y@m@d/@H/atmos/gfs.t@Hz.pgrb2.0p25.f{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {%- endif %} + {%- endif %} + {% else %} + {%- if extrn_mdl_name_ics in ["GEFS"] %} + {{ extrn_mdl_sysbasedir_ics }}/#subdirGE#/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {%- elif extrn_mdl_name_ics in ["GDASENKF"] %} + + {%- if machine in ["HERA"] %} + {{ extrn_mdl_sysbasedir_ics }}/enkfgdas.@Y@m@d/@H/atmos/#subdirGDAS#/gdas.t@Hz.atmf00{{ extrn_mdl_ics_offset_hrs }}.nc + {{ extrn_mdl_sysbasedir_ics }}/enkfgdas.@Y@m@d/@H/atmos/#subdirGDAS#/gdas.t@Hz.sfcf00{{ extrn_mdl_ics_offset_hrs }}.nc + {%- elif machine in ["JET"] %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.atmf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.sfcf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc + {%- elif machine in ["ORION","HERCULES"] %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.atmf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.sfcf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc + {%- endif %} + + {%- else %} + {%- if machine in ["JET"] %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {%- elif machine in ["HERA"] %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {%- elif machine in ["ORION","HERCULES"] %} + {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }} + {%- endif %} + {%- endif %} + {%- endif %} + + + + + + + {% if do_ens_blending %} + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&BLEND_ICS_TN;" "&HOMErrfs;/jobs/JRRFS_BLEND_ICS" + &RESOURCES_BLEND_ICS; + &NATIVE_ALL; + &WALLTIME_BLEND_ICS; + &NODESIZE_ALL; + &TAG;_&BLEND_ICS_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&BLEND_ICS_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&MAKE_ICS_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + FG_ROOT&FG_ROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + {%- if not do_retro %} + @Y@m@d@H@M00 + {%- endif %} + + {%- for mmm in range(1, 31, 1) %} + &COMROOT;/&RUN;.@Y@m@d/@H/m{{ "%03d" % mmm }}/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endfor %} + + + + + + + {% endif %} +{% endif %} + + + + {% for h in range(0, boundary_proc_group_num) %}{{ " %02d" % h }}{% endfor %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&MAKE_LBCS_TN;" "&HOMErrfs;/jobs/JRRFS_MAKE_LBCS" + &RESOURCES_MAKE_LBCS; + &NATIVE_ALL; + &WALLTIME_MAKE_LBCS; + &NODESIZE_ALL; + &TAG;_&MAKE_LBCS_TN;_#bcgrp#{{ uscore_ensmem_name }} + &LOGDIR;/&MAKE_LBCS_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H_#bcgrp#.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&MAKE_LBCS_TN;{{ uscore_ensmem_name}}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + GESROOT&GESROOT; + EXTRN_MDL_NAME_LBCS{{ extrn_mdl_name_lbcs }} + BOUNDARY_LEN{{ boundary_len_hrs }} + MEMBER_NAME#{{ ensmem_indx_name }}# + GEFS_INPUT_SUBDIR#subdirGE# + GDASENKF_INPUT_SUBDIR#subdirGDAS# + GDAS_MEM_NAME#memNameGDAS# + BCGRP#bcgrp# + BCGRPNUM{{ boundary_proc_group_num }} + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + &RUN_TASK_MAKE_GRID;FALSE + + + + &RUN_TASK_MAKE_OROG;FALSE + + + + &RUN_TASK_MAKE_SFC_CLIMO;FALSE + + + + {%- if extrn_mdl_name_lbcs in ["GEFS"] %} + {%- if machine in ["WCOSS2"] %} + {%- if do_retro %} + {%- for h in range(extrn_mdl_lbcs_offset_hrs, boundary_len_hrs+extrn_mdl_lbcs_offset_hrs+1, 3) %} + {{ extrn_mdl_sysbasedir_lbcs }}/#subdirGE#/@y@j@H000{{ "%03d" % h }} + {%- endfor %} + {% else %} + {%- for h in range(extrn_mdl_lbcs_offset_hrs, boundary_len_hrs+extrn_mdl_lbcs_offset_hrs+1, 3) %} + {{ extrn_mdl_sysbasedir_lbcs }}/gefs.@Y@m@d/@H/atmos/pgrb2bp5/#subdirGE#.t@Hz.pgrb2b.0p50.f{{ "%03d" % h }} + {%- endfor %} + {%- endif %} + {% else %} + {%- for h in range(extrn_mdl_lbcs_offset_hrs, boundary_len_hrs+extrn_mdl_lbcs_offset_hrs+1, 3) %} + {{ extrn_mdl_sysbasedir_lbcs }}/#subdirGE#/@y@j@H000{{ "%03d" % h }} + {%- endfor %} + {%- endif %} + + {%- else %} + {%- for h in range(extrn_mdl_lbcs_offset_hrs, boundary_len_hrs+extrn_mdl_lbcs_offset_hrs+1, bc_update_interval) %} + {%- if machine in ["WCOSS2"] %} + {%- if gfs_file_fmt_lbcs in ["netcdf"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/gfs.@Y@m@d/@H/atmos/gfs.t@Hz.atmf{{ "%03d" % h }}.nc + {%- else %} + {%- if do_retro %} + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }} + {%- else %} + {{ extrn_mdl_sysbasedir_lbcs }}/gfs.@Y@m@d/@H/atmos/gfs.t@Hz.pgrb2.0p25.f{{ "%03d" % h }} + {%- endif %} + {%- endif %} + {%- else %} + {%- if extrn_mdl_name_lbcs in ["GEFS"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/#subdirGE#/@y@j@H000{{ "%03d" % h }} + {%- elif extrn_mdl_name_lbcs in ["GDASENKF"] %} + {%- if machine in ["HERA"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/enkfgdas.@Y@m@d/@H/atmos/#subdirGDAS#/gdas.t@Hz.atmf{{ "%03d" % h }}.nc + {{ extrn_mdl_sysbasedir_lbcs }}/enkfgdas.@Y@m@d/@H/atmos/#subdirGDAS#/gdas.t@Hz.sfcf{{ "%03d" % h }}.nc + {%- elif machine in ["JET"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.atmf{{ "%03d" % h }}.#memNameGDAS#.nc + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.sfcf{{ "%03d" % h }}.#memNameGDAS#.nc + {%- elif machine in ["ORION","HERCULES"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.atmf{{ "%03d" % h }}.#memNameGDAS#.nc + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.sfcf{{ "%03d" % h }}.#memNameGDAS#.nc + {%- endif %} + {%- else %} + {%- if machine in ["JET"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }} + {%- elif machine in ["HERA"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }} + {%- elif machine in ["ORION","HERCULES"] %} + {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + + {%- endif %} + + + + + + + + +{%- if do_ensemble %} + +{%- endif %} + +{%- endif %} +{%- if not do_ensfcst %} +{%- if do_ensemble %} + + + {%- for m in range(1, num_ens_members+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} +{%- endif %} + +{%- if do_spinup %} + +{%- if not do_ensinit %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&PREP_CYC_TN;" "&HOMErrfs;/jobs/JRRFS_PREP_CYC" + + &RESOURCES_PREP_CYC; + &NATIVE_ALL; + &WALLTIME_PREP_CYC; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&PREP_CYC_SPINUP_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&PREP_CYC_SPINUP_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + {%- if do_ensinit %} + taskid&RUN;_&FORECAST_TN;_ensinit{{ uscore_ensmem_name }}_&envir;_@H + {%- else %} + taskid&RUN;_&FORECAST_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + {%- endif %} + PDY@Y@m@d + HH@H + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + FG_ROOT&FG_ROOT; + LBCS_ROOT&FG_ROOT; + CYCLE_TYPEspinup + {%- if do_ensinit %} + CYCLE_SUBTYPEensinit + {%- endif %} + MEMBER_NAME#{{ ensmem_indx_name }}# + GESROOT&GESROOT; + COMROOT&COMROOT; + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + {%- for h in cycl_hrs_spinstart %} + {{ h }}@H + {%- endfor %} + + {% if do_ens_blending %} + + {% else %} + + {% endif %} + + {%- for h in range(0,lbcs_search_hrs) %} + + {%- endfor %} + +{%- if do_retro %} + {%- if not do_ensemble %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/forecast_spinup/INPUT/gfs_ctrl.nc + {%- endif %} +{%- else %} + @Y@m@d@H@M00 +{%- endif %} + + + + {%- for h in cycl_hrs_spinstart %} + {{ h }}@H + {%- endfor %} +{%- if do_retro %} +{%- else %} + @Y@m@d@H@M00 +{%- endif %} + {%- if do_ensemble %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/m#mem#/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + + + + + +{%- endif %} +{% if do_ensinit -%} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&PREP_CYC_TN;" "&HOMErrfs;/jobs/JRRFS_PREP_CYC" + + &RESOURCES_PREP_CYC; + &NATIVE_ALL; + &WALLTIME_PREP_CYC; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&PREP_CYC_SPINUP_TN;_ensinit{{ uscore_ensmem_name }} + &LOGDIR;/&PREP_CYC_SPINUP_TN;_ensinit_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_ensinit{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + HH@H + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + FG_ROOT&FG_ROOT; + LBCS_ROOT&FG_ROOT; + CYCLE_TYPEspinup + {%- if do_ensinit %} + CYCLE_SUBTYPEensinit + {%- endif %} + MEMBER_NAME#{{ ensmem_indx_name }}# + GESROOT&GESROOT; + COMROOT&COMROOT; + WGF&WGF; + envir&envir; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + {%- for h in cycl_hrs_spinstart %} + {{ h }}@H + {%- endfor %} + + {% if do_ens_blending %} + + {% else %} + + {% endif %} + + {%- for h in range(0,lbcs_search_hrs) %} + + {%- endfor %} + +{%- if do_retro %} + {%- if not do_ensemble %} + &FG_ROOT;/&RUN;.@Y@m@d/@H/forecast_spinup/INPUT/gfs_ctrl.nc + {%- endif %} +{%- else %} + @Y@m@d@H@M00 +{%- endif %} + + + + {%- for h in cycl_hrs_spinstart %} + {{ h }}@H + {%- endfor %} +{%- if do_retro %} + {%- if do_ensemble %} + &FG_ROOT;/&RUN;.@Y@m@d/@H/m#mem#/forecast_spinup/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &FG_ROOT;/&RUN;.@Y@m@d/@H/forecast_spinup/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} +{%- else %} + @Y@m@d@H@M00 + {%- if do_ensemble %} + &FG_ROOT;/&RUN;.@Y@m@d/@H/m#mem#/forecast_spinup/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &FG_ROOT;/&RUN;.@Y@m@d/@H/forecast_spinup/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} +{%- endif %} + + + + + + + + + + &RSRV_FORECAST; + &WALL_LIMIT_FORECAST; + + &LOAD_MODULES_RUN_TASK_FP; "&FORECAST_TN;" "&HOMErrfs;/jobs/JRRFS_FORECAST" + &RESOURCES_FORECAST_SPINUP; + &WALLTIME_FORECAST_SPINUP; + &NATIVE_ALL; + &NATIVE_FORECAST_SPINUP; + &NODESIZE_ALL; + &TAG;_&FORECAST_TN;_ensinit{{ uscore_ensmem_name }} + &LOGDIR;/&FORECAST_TN;_ensinit_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_ensinit{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HH@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + CYCLE_TYPEspinup + CYCLE_SUBTYPEensinit + GESROOT&GESROOT; + RESTART_HRS0 + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + {%- for h in cycl_hrs_spinstart %} + {{ h }}@H + {%- endfor %} + + + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_SAVE_RESTART; + &LOAD_MODULES_RUN_TASK_FP; "&SAVE_RESTART_TN;" "&HOMErrfs;/jobs/JRRFS_SAVE_RESTART" + &RESOURCES_SAVE_RESTART; + &NATIVE_ALL; + &WALLTIME_SAVE_RESTART; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&SAVE_RESTART_TN;_ensinit{{ uscore_ensmem_name }} + &LOGDIR;/&SAVE_RESTART_TN;_ensinit_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_ensinit{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR0 + CYCLE_TYPEspinup + CYCLE_SUBTYPEensinit + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + @Y@m@d@H@M00 + + &DATAROOT;/&NET;_forecast_spinup_@H_&VERSION;/&WGF;/m#mem#/RESTART/@Y@m@d.@H@M@S.coupler.res + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/m#mem#/run_blending + + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&PREP_CYC_TN;" "&HOMErrfs;/jobs/JRRFS_PREP_CYC" + &RESOURCES_PREP_CYC; + &NATIVE_ALL; + &WALLTIME_PREP_CYC; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&PREP_CYC_SPINUP_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&PREP_CYC_SPINUP_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HH@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + FG_ROOT&FG_ROOT; + LBCS_ROOT&FG_ROOT; + CYCLE_TYPEspinup + CYCLE_SUBTYPEspinup + MEMBER_NAME#{{ ensmem_indx_name }}# + GESROOT&GESROOT; + COMROOT&COMROOT; + ENSCTRL_DATAROOT&ENSCTRL_DATAROOT; + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + {% if do_ens_blending %} + + {% else %} + + {% endif %} + + &ENSCTRL_COMOUT;/@H_spinup/analysis/analysis_nonvarcld_complete.txt + + + + +{%- endif %} +{%- if do_ens_blending or do_ensinit %} + + + &RSRV_ENKF; + &WALL_LIMIT_RECENTER; + &LOAD_MODULES_RUN_TASK_FP; "&RECENTER_TN;" &HOMErrfs;/jobs/JRRFS_RECENTER + &RESOURCES_RECENTER; + &NATIVE_ALL; + &WALLTIME_RECENTER; + &NODESIZE_ALL; + &TAG;_&RECENTER_TN;_spinup + &LOGDIR;/&RECENTER_TN;_spinup_&TAG;@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&RECENTER_TN;_spinup_&envir;_@H + nens{{ num_ens_members }} + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + ENSCTRL_DATAROOT&ENSCTRL_DATAROOT; + ENSCTRL_GESROOT&ENSCTRL_GESROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + CYCLE_TYPEspinup + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + {%- for m in range(1, num_ens_members+1) %} + {%- if do_ensinit %} + + {%- endif %} + {%- endfor %} + &ENSCTRL_COMOUT;/@H_spinup/analysis/analysis_nonvarcld_complete.txt + + + + + + + &RSRV_ENKF; + &WALL_LIMIT_RECENTER; + + &LOAD_MODULES_RUN_TASK_FP; "&RECENTER_TN;" "&HOMErrfs;/jobs/JRRFS_CALC_ENSMEAN" + &RESOURCES_RECENTER; + &NATIVE_ALL; + &WALLTIME_RECENTER; + &NODESIZE_ALL; + &TAG;_&CALC_ENSMEAN_TN;_spinup + &LOGDIR;/&CALC_ENSMEAN_TN;_spinup_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&CALC_ENSMEAN_TN;_spinup_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + CYCLE_TYPEspinup + nens{{ num_ens_members }} + GESROOT&GESROOT; + COMROOT&COMROOT; + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + &COMROOT;/&RUN;.@Y@m@d/@H/m#mem#/run_blending + + + + + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&OBSERVER_GSI_TN;_spinup_ensmean + &LOGDIR;/&OBSERVER_GSI_TN;_spinup_ensmean_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&OBSERVER_GSI_TN;_spinup_ensmean_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + GSI_TYPEOBSERVER + MEM_TYPEMEAN + CYCLE_TYPEspinup + SATBIAS_DIR&GESROOT;/satbias + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + {%- if do_enkf_radar_ref %} + + {%- endif %} + + &OBSPATH;/@Y@m@d@H.rap.t@Hz.prepbufr.tm00 + &OBSPATH;/rap.@Y@m@d/rap.t@Hz.prepbufr.tm00 + + + + + + + + + {%- for m in range(1, num_ens_members+1) -%} + {%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%} + {{- fmtstr%m -}} + {%- endfor %} + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&OBSERVER_GSI_TN;_spinup{{ uscore_ensmem_name }} + &LOGDIR;/&OBSERVER_GSI_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&OBSERVER_GSI_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + GSI_TYPEOBSERVER + MEM_TYPEMEMBER + CYCLE_TYPEspinup + SATBIAS_DIR&GESROOT;/satbias + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + + + + +{%- endif %} + +{%- if do_enkfupdate %} + + + &RSRV_ENKF; + &WALL_LIMIT_ANALYSIS; + &LOAD_MODULES_RUN_TASK_FP; "&ENKFUPDT_TN;" &HOMErrfs;/jobs/JRRFS_ANALYSIS_ENKF + + &RESOURCES_ANALYSIS_ENKF; + &WALLTIME_ANALYSIS_ENKF; + &NODESIZE_ALL; + &TAG;_&ENKFUPDT_TN;_spinup + &LOGDIR;/&ENKFUPDT_TN;_spinup_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ENKFUPDT_TN;_conv_spinup_&envir;_@H + nens{{ num_ens_members }} + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + CYCLE_TYPEspinup + OB_TYPEconv + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + +{%- endif %} + +{%- if do_enkf_radar_ref %} + + + &RSRV_ENKF; + &WALL_LIMIT_ANALYSIS; + &LOAD_MODULES_RUN_TASK_FP; "&ENKF_RADAR_REF_TN;" &HOMErrfs;/jobs/JRRFS_ANALYSIS_ENKF + + &RESOURCES_ANALYSIS_ENKF; + &WALLTIME_ANALYSIS_ENKF; + &NODESIZE_ALL; + &TAG;_&ENKF_RADAR_REF_TN;_spinup + &LOGDIR;/&ENKF_RADAR_REF_TN;_spinup_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ENKFUPDT_TN;_radardbz_spinup_&envir;_@H + nens{{ num_ens_members }} + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + CYCLE_TYPEspinup + OB_TYPEradardbz + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + {%- if do_retro %} + + {%- for m in range(1, num_ens_members+1) %} + + &GESROOT;/&RUN;.@Y@m@d/@H/m{{ "%03d" % m }}/observer_gsi_spinup/diag_conv_dbz_ges.@Y@m@d@H.nc4.gz + {%- endfor %} + + {%- endif %} + + + + +{%- endif %} + +{% if do_ensemble and do_analysis_nonvarcld %} + + + {%- for m in range(1, num_ens_members+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_NONVARCLD" + + &RESOURCES_ANALYSIS_NONVARCLD; + &WALLTIME_ANALYSIS_NONVARCLD; + &NATIVE_ALL; + &NODESIZE_ALL; + + &TAG;_&ANALYSIS_NONVARCLD_TN;_spinup{{ uscore_ensmem_name }} + &LOGDIR;/&ANALYSIS_NONVARCLD_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_NONVARCLD_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + CYCLE_TYPEspinup + MEM_TYPEMEMBER + cyc@H + MEMBER_NAME#{{ ensmem_indx_name }}# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + {%- if do_enkfupdate %} + + {%- if do_enkf_radar_ref %} + + {%- else %} + + {%- endif %} + + {%- elif do_envar_radar_ref and not do_envar_radar_ref_once %} + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + {%- else %} + + {%- endif %} + + + + + +{%- endif %} + +{%- if not do_ensemble %} +{%- if do_dacycle %} + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&ANALYSIS_GSI_TN;_spinup{{ uscore_ensmem_name }} + &LOGDIR;/&ANALYSIS_GSI_TN;{{ uscore_ensmem_name }}_spinup_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_conv_dbz_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + RRFSE_FG_ROOT&RRFSE_FG_ROOT; + CYCLE_TYPEspinup + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + nens{{ num_ens_members }} + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + OB_TYPEconv_dbz + {%- endif %} + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + @Y@m@d@H@M00 + + {%- if use_rrfse_ens %} + {%- if do_retro %} + + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + + {%- endif %} + + + + {%- for h in cycl_hrs_prodstart_ens %} + {{ h }}@H + {%- endfor %} + + {% for h in range(1, num_ens_members+1) %} + &RRFSE_FG_ROOT;/&RUNE;.@Y@m@d/@H/m{{ "%03d" % h }}/forecast_spinup/RESTART/@Y@m@d.@H0000.coupler.res + {%- endfor %} + + + {%- for h in cycl_hrs_prodstart_ens %} + {{ h }}@H + {%- endfor %} + {% for h in range(1, num_ens_members+1) %} + &RRFSE_FG_ROOT;/&RUNE;.@Y@m@d/@H/m{{ "%03d" % h }}/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endfor %} + + + + {%- endif %} + {%- endif %} + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_POST; + + &LOAD_MODULES_RUN_TASK_FP; "&POST_TN;" "&HOMErrfs;/jobs/JRRFS_UPDATE_LBC_SOIL" + &RESOURCES_UPDATE_LBC_SOIL; + &NATIVE_ALL; + &WALLTIME_UPDATE_LBC_SOIL; + &NODESIZE_ALL; + &TAG;_&UPDATE_LBC_SOIL_TN;_spinup{{ uscore_ensmem_name }} + &LOGDIR;/&UPDATE_LBC_SOIL_TN;{{ uscore_ensmem_name }}_spinup_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_conv_dbz_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + RRFSE_FG_ROOT&RRFSE_FG_ROOT; + CYCLE_TYPEspinup + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + nens{{ num_ens_members }} + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + OB_TYPEconv_dbz + {%- endif %} + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + + +{%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&HYBRID_RADAR_REF_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&HYBRID_RADAR_REF_TN;_spinup + &LOGDIR;/&HYBRID_RADAR_REF_TN;spinup_&TAG;@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_radardbz_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + RRFSE_FG_ROOT&RRFSE_FG_ROOT; + CYCLE_TYPEspinup + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + nens30 + OB_TYPEradardbz + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + + + +{% endif -%} + +{%- if do_gsidiag_offline %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSIDIAG" + &RESOURCES_ANALYSIS_GSIDIAG; + &NATIVE_ALL; + &WALLTIME_ANALYSIS_GSIDIAG; + &NODESIZE_ALL; + &TAG;_&ANALYSIS_GSIDIAG_TN;_spinup + &LOGDIR;/&ANALYSIS_GSIDIAG_TN;_spinup_&TAG;@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_conv_dbz_spinup_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + CYCLE_TYPEspinup + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + SATBIAS_DIR&GESROOT;/satbias + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + +{%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + +{%- endif %} + + + + + +{%- endif %} + +{%- endif %} + +{%- if do_analysis_nonvarcld %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_NONVARCLD" + + &RESOURCES_ANALYSIS_NONVARCLD; + &WALLTIME_ANALYSIS_NONVARCLD; + &NATIVE_ALL; + &NODESIZE_ALL; + + &TAG;_&ANALYSIS_NONVARCLD_TN;_spinup{{ uscore_ensmem_name }} + &LOGDIR;/&ANALYSIS_NONVARCLD_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_NONVARCLD_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + CYCLE_TYPEspinup + MEM_TYPEMEMBER + cyc@H + MEMBER_NAME#{{ ensmem_indx_name }}# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + {%- if do_enkfupdate %} + + {%- if do_enkf_radar_ref %} + + {%- else %} + + {%- endif %} + + {%- elif do_envar_radar_ref and not do_envar_radar_ref_once %} + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + {%- else %} + + {%- endif %} + + + + + +{%- endif %} +{%- endif %} + + + + &RSRV_FORECAST; + &WALL_LIMIT_FORECAST; + + &LOAD_MODULES_RUN_TASK_FP; "&FORECAST_TN;" "&HOMErrfs;/jobs/JRRFS_FORECAST" + &RESOURCES_FORECAST_SPINUP; + &WALLTIME_FORECAST_SPINUP; + &NATIVE_ALL; + &NATIVE_FORECAST_SPINUP; + &NODESIZE_ALL; + &TAG;_&FORECAST_TN;_spinup{{ uscore_ensmem_name }} + &LOGDIR;/&FORECAST_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HH@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + CYCLE_TYPEspinup + GESROOT&GESROOT; + RESTART_HRS1 + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + {%- if do_dacycle and do_analysis_nonvarcld%} + + {%- elif do_dacycle %} + {%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + + {%- else %} + + {%- endif %} + {%- elif do_enkfupdate or do_enkf_radar_ref %} + + + {%- for h in cycl_hrs_spinstart %} + {{ h }}@H + {%- endfor %} + + + {%- if do_ensinit or do_ens_blending %} + + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/m#mem#/run_ensinit + + + + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/m#mem#/run_blending + + + {%- else %} + + {%- endif %} + + + {%- else %} + + {%- endif %} + + + + + + + {% for h in range(da_cycle_interval_hrs, fcst_len_hrs_spinup+da_cycle_interval_hrs, da_cycle_interval_hrs) %}{{ " %03d" % h }}{% endfor %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_SAVE_RESTART; + &LOAD_MODULES_RUN_TASK_FP; "&SAVE_RESTART_TN;" "&HOMErrfs;/jobs/JRRFS_SAVE_RESTART" + &RESOURCES_SAVE_RESTART; + &NATIVE_ALL; + &WALLTIME_SAVE_RESTART; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&SAVE_RESTART_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&SAVE_RESTART_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + GESROOT&GESROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + CYCLE_TYPEspinup + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + @Y@m@d@H@M00 + {%- if do_ensemble %} + &DATAROOT;/&NET;_forecast_spinup_@H_&VERSION;/&WGF;/m#mem#/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &DATAROOT;/&RUN;_forecast_spinup_@H_&VERSION;/&WGF;/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + + + + + + +{% if do_post_spinup %} + + + + {% for h in range(0, fcst_len_hrs_spinup+1) %}{{ " %03d" % h }}{% endfor %} + + + + &RSRV_POST; + &WALL_LIMIT_POST; + &LOAD_MODULES_RUN_TASK_FP; "&POST_TN;" "&HOMErrfs;/jobs/JRRFS_POST" + &RESOURCES_POST; + &NATIVE_ALL; + &WALLTIME_POST; + &NODESIZE_ALL; + &TAG;_&POST_TN;_spinup{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&POST_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&POST_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H_f#fhr# + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + CYCLE_TYPEspinup + envir&envir; + WGF&WGF; + KEEPDATAYES + + + {%- if do_ensemble %} + &DATAROOT;/&RUN;_forecast_spinup_m#mem#_&envir;_@H/log.atm.f#fhr# + {%- else %} + &DATAROOT;/&RUN;_forecast_spinup_&envir;_@H/log.atm.f#fhr# + {%- endif %} + + + + + + + &RSRV_PRDGEN; + &WALL_LIMIT_POST; + &LOAD_MODULES_RUN_TASK_FP; "&PRDGEN_TN;" "&HOMErrfs;/jobs/JRRFS_PRDGEN" + &RESOURCES_PRDGEN; + &NATIVE_ALL; + &WALLTIME_PRDGEN; + &MEMO_PRDGEN; + &NODESIZE_ALL; + &TAG;_&PRDGEN_TN;_spinup{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&PRDGEN_TN;_spinup_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&POST_TN;_spinup{{ uscore_ensmem_name }}_&envir;_@H_f#fhr# + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + CYCLE_TYPEspinup + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + + + +{%- endif %} + + +{%- endif %} + +{%- if do_ensemble %} + +{%- endif %} + +{%- endif %} + + +{%- if do_ensemble %} + + + {%- for m in range(1, num_ens_members+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} +{%- endif %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&PREP_CYC_TN;" "&HOMErrfs;/jobs/JRRFS_PREP_CYC" + &RESOURCES_PREP_CYC; + &NATIVE_ALL; + &WALLTIME_PREP_CYC; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&PREP_CYC_PROD_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&PREP_CYC_PROD_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HH@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + FG_ROOT&FG_ROOT; + LBCS_ROOT&FG_ROOT; + CYCLE_TYPEprod + MEMBER_NAME#{{ ensmem_indx_name }}# + GESROOT&GESROOT; + COMROOT&COMROOT; + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + {%- if do_ensfcst %} + + &COMROOT;/&NET;/&VERSION;/&RUNE;.@Y@m@d/@H/m#mem#/forecast/DA_OUTPUT/coupler.res + + + {%- else %} + + + + + {%- for h in cycl_hrs_prodstart %} + {{ h }}@H + {%- endfor %} + +{%- if do_spinup %} +{%- if do_retro %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/forecast/RESTART/@Y@m@d.@H0000.coupler.res +{% else %} + + + @Y@m@d@H@M00 + {%- if do_ensemble %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/m#mem#/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + +{%- endif %} +{% else %} +{%- if do_retro %} + + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/ics/gfs_data.tile7.halo0.nc + + {%- for h in range(0, extrn_mdl_ics_offset_hrs+1) %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/lbcs/gfs_bndy.tile7.{{ "%03d" % boundary_len_hrs }}.nc + {%- endfor %} + + +{% else %} + + @Y@m@d@H@M00 + {% if do_ens_blending %} + + {% else %} + + {% endif %} + {%- if not is_rtma %} + + + + + {%- endif %} + +{%- endif %} +{%- endif %} + + + + {%- for h in cycl_hrs_prodstart %} + {{ h }}@H + {%- endfor %} +{%- if do_retro %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/forecast/RESTART/@Y@m@d.@H0000.coupler.res +{% else %} + + + @Y@m@d@H@M00 + {%- if do_ensemble %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/m#mem#/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + +{%- endif %} + + +{%- endif %} + + + + +{%- if do_ensemble %} + + +{%- if not do_ensfcst %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_PRE; + + &LOAD_MODULES_RUN_TASK_FP; "&PREP_CYC_TN;" "&HOMErrfs;/jobs/JRRFS_PREP_CYC" + &RESOURCES_PREP_CYC; + &NATIVE_ALL; + &WALLTIME_PREP_CYC; + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&PREP_CYC_PROD_TN;_ensmean + &LOGDIR;/&PREP_CYC_PROD_TN;_&TAG;_ensmean_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;_ensmean_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HH@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + FG_ROOT&FG_ROOT; + LBCS_ROOT&FG_ROOT; + CYCLE_TYPEprod + MEMBER_NAMEensmean + GESROOT&GESROOT; + COMROOT&COMROOT; + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + {%- for h in cycl_hrs_prodstart %} + {{ h }}@H + {%- endfor %} + +{%- if do_spinup %} + + + @Y@m@d@H@M00 + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H_spinup/m001/forecast/RESTART/@Y@m@d.@H0000.coupler.res + + +{% else %} +{%- if do_retro %} + + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/ics/gfs_data.tile7.halo0.nc + + {%- for h in range(0, extrn_mdl_ics_offset_hrs+1) %} + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/lbcs/gfs_bndy.tile7.{{ "%03d" % boundary_len_hrs }}.nc + {%- endfor %} + + +{% else %} + + @Y@m@d@H@M00 + {% if do_ens_blending %} + + {% else %} + + {% endif %} + {%- if not is_rtma %} + + + + + {%- endif %} + +{%- endif %} +{%- endif %} + + + + {%- for h in cycl_hrs_prodstart %} + {{ h }}@H + {%- endfor %} + @Y@m@d@H@M00 + &COMROOT;/&NET;/&VERSION;/&RUN;.@Y@m@d/@H/m001/forecast/RESTART/@Y@m@d.@H0000.coupler.res + + + + + + +{%- endif %} +{%- endif %} + +{%- if not do_ensfcst %} +{%- if do_gsiobserver %} + + + + &RSRV_ENKF; + &WALL_LIMIT_RECENTER; + + &LOAD_MODULES_RUN_TASK_FP; "&RECENTER_TN;" "&HOMErrfs;/jobs/JRRFS_CALC_ENSMEAN" + &RESOURCES_RECENTER; + &NATIVE_ALL; + &WALLTIME_RECENTER; + &NODESIZE_ALL; + &TAG;_&CALC_ENSMEAN_TN; + &LOGDIR;/&CALC_ENSMEAN_TN;_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&CALC_ENSMEAN_TN;_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + CYCLE_TYPEprod + nens{{ num_ens_members }} + GESROOT&GESROOT; + COMROOT&COMROOT; + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + {%- for m in range(1, num_ens_members+1) %} + + {%- endfor %} + + + + + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&OBSERVER_GSI_TN;_ensmean + &LOGDIR;/&OBSERVER_GSI_TN;_ensmean_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&OBSERVER_GSI_TN;_ensmean_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + GSI_TYPEOBSERVER + MEM_TYPEMEAN + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + {%- if do_enkf_radar_ref %} + + {%- endif %} + + &OBSPATH;/@Y@m@d@H.{{obstype_source}}.t@Hz.prepbufr.tm00 + &OBSPATH;/{{obstype_source}}.@Y@m@d/{{obstype_source}}.t@Hz.prepbufr.tm00 + + + + + + + {%- if do_ensemble %} + + + {%- for m in range(1, num_ens_members+1) -%} + {%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%} + {{- fmtstr%m -}} + {%- endfor %} + {%- endif %} + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&OBSERVER_GSI_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&OBSERVER_GSI_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&OBSERVER_GSI_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + GSI_TYPEOBSERVER + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + + + +{%- if do_ensemble %} + +{%- endif %} +{%- endif %} + +{%- if do_enkfupdate %} + + + &RSRV_ENKF; + &WALL_LIMIT_ANALYSIS; + &LOAD_MODULES_RUN_TASK_FP; "&ENKFUPDT_TN;" &HOMErrfs;/jobs/JRRFS_ANALYSIS_ENKF + + &RESOURCES_ANALYSIS_ENKF; + &WALLTIME_ANALYSIS_ENKF; + &NODESIZE_ALL; + &TAG;_&ENKFUPDT_TN; + &LOGDIR;/&ENKFUPDT_TN;_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ENKFUPDT_TN;_conv_&envir;_@H + nens{{ num_ens_members }} + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + OB_TYPEconv + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + +{%- endif %} + +{%- if do_enkf_radar_ref %} + + + &RSRV_ENKF; + &WALL_LIMIT_ANALYSIS; + &LOAD_MODULES_RUN_TASK_FP; "&ENKF_RADAR_REF_TN;" &HOMErrfs;/jobs/JRRFS_ANALYSIS_ENKF + + &RESOURCES_ANALYSIS_ENKF; + &WALLTIME_ANALYSIS_ENKF; + &NODESIZE_ALL; + &TAG;_&ENKF_RADAR_REF_TN; + &LOGDIR;/&ENKF_RADAR_REF_TN;_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ENKFUPDT_TN;_radardbz_&envir;_@H + nens{{ num_ens_members }} + PDY@Y@m@d + CDATE@Y@m@d@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + OB_TYPEradardbz + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + {%- if do_retro %} + + {%- for m in range(1, num_ens_members+1) %} + &GESROOT;/&RUN;.@Y@m@d/@H/m{{ "%03d" % m }}/observer_gsi/diag_conv_dbz_ges.@Y@m@d@H.nc4.gz + {%- endfor %} + + {%- endif %} + + + + +{%- endif %} + +{% if do_ensemble %} + + + {%- for m in range(1, num_ens_members+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} +{%- endif %} + +{%- if do_dacycle %} + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&ANALYSIS_GSI_TN;_prod{{ uscore_ensmem_name }} + &LOGDIR;/&ANALYSIS_GSI_TN;_&TAG;{{ uscore_ensmem_name }}_prod_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_conv_dbz{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + RRFSE_FG_ROOT&RRFSE_FG_ROOT; + CYCLE_TYPEprod + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + nens{{ num_ens_members }} + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + OB_TYPEconv_dbz + {%- endif %} + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + @Y@m@d@H@M00 + + &OBSPATH;/@Y@m@d@H.{{obstype_source}}.t@Hz.prepbufr.tm00 + &OBSPATH;/{{obstype_source}}.@Y@m@d/{{obstype_source}}.t@Hz.prepbufr.tm00 + + + {%- if use_rrfse_ens %} + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + + {%- endif %} + + {%- if do_spinup %} + + + {%- for h in cycl_hrs_prodstart_ens %} + {{ h }}@H + {%- endfor %} + + {% for h in range(1, num_ens_members+1) %} + &RRFSE_FG_ROOT;/&NET;/&VERSION;/&RUNE;.@Y@m@d/@H_spinup/m{{ "%03d" % h }}/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endfor %} + + + {%- for h in cycl_hrs_prodstart_ens %} + {{ h }}@H + {%- endfor %} + {% for h in range(1, num_ens_members+1) %} + &RRFSE_FG_ROOT;/&NET;/&VERSION;/&RUNE;.@Y@m@d/@H/m{{ "%03d" % h }}/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endfor %} + + {%- else %} + + {% for h in range(1, num_ens_members+1) %} + &RRFSE_FG_ROOT;/&NET;/&VERSION;/&RUNE;.@Y@m@d/@H/m{{ "%03d" % h }}/forecast/RESTART/@Y@m@d.@H0000.coupler.res + {%- endfor %} + + {%- endif %} + + {%- endif %} + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_POST; + + &LOAD_MODULES_RUN_TASK_FP; "&POST_TN;" "&HOMErrfs;/jobs/JRRFS_UPDATE_LBC_SOIL" + &RESOURCES_UPDATE_LBC_SOIL; + &NATIVE_ALL; + &WALLTIME_UPDATE_LBC_SOIL; + &NODESIZE_ALL; + &TAG;_&UPDATE_LBC_SOIL_TN;_prod{{ uscore_ensmem_name }} + &LOGDIR;/&UPDATE_LBC_SOIL_TN;{{ uscore_ensmem_name }}_prod_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_conv_dbz{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + RRFSE_FG_ROOT&RRFSE_FG_ROOT; + CYCLE_TYPEprod + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + nens{{ num_ens_members }} + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + OB_TYPEconv_dbz + {%- endif %} + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + + +{%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + + + + &RSRV_ANALYSIS; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&HYBRID_RADAR_REF_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSI" + &RESOURCES_ANALYSIS_GSI; + &NATIVE_ANALYSIS_GSI; + &WALLTIME_ANALYSIS_GSI; + &NODESIZE_ALL; + &TAG;_&HYBRID_RADAR_REF_TN;_prod + &LOGDIR;/&HYBRID_RADAR_REF_TN;_prod_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_radardbz{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + RRFSE_FG_ROOT&RRFSE_FG_ROOT; + CYCLE_TYPEprod + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + MEMBER_NAME#{{ ensmem_indx_name }}# + SATBIAS_DIR&GESROOT;/satbias + nens30 + OB_TYPEradardbz + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + + + +{% endif -%} + +{%- if do_gsidiag_offline %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_GSIDIAG" + &RESOURCES_ANALYSIS_GSIDIAG; + &NATIVE_ALL; + &WALLTIME_ANALYSIS_GSIDIAG; + &NODESIZE_ALL; + &TAG;_&ANALYSIS_GSIDIAG_TN;_prod + &LOGDIR;/&ANALYSIS_GSIDIAG_TN;prod_&TAG;@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_GSI_TN;_conv_dbz_&envir;_@H + PDY@Y@m@d + cyc@H + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + CYCLE_TYPEprod + GSI_TYPEANALYSIS + MEM_TYPEMEMBER + SATBIAS_DIR&GESROOT;/satbias + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + +{%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + +{%- endif %} + + + + + +{%- endif %} + +{% endif -%} + +{%- if do_analysis_nonvarcld %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANALYSIS; + + &LOAD_MODULES_RUN_TASK_FP; "&ANALYSIS_GSI_TN;" "&HOMErrfs;/jobs/JRRFS_ANALYSIS_NONVARCLD" + + &RESOURCES_ANALYSIS_NONVARCLD; + &WALLTIME_ANALYSIS_NONVARCLD; + {%- if is_rtma %} + {%- if machine in ["WCOSS2"] %} + &NATIVE_ANALYSIS_NONVARCLD; + {%- else %} + &NATIVE_ALL; + {%- endif %} + {%- else %} + &NATIVE_ALL; + {%- endif %} + &NODESIZE_ALL; + + &TAG;_&ANALYSIS_NONVARCLD_TN;_prod{{ uscore_ensmem_name }} + &LOGDIR;/&ANALYSIS_NONVARCLD_TN;_prod_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&ANALYSIS_NONVARCLD_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + CYCLE_TYPEprod + MEM_TYPEMEMBER + cyc@H + MEMBER_NAME#{{ ensmem_indx_name }}# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + {%- if do_enkfupdate %} + + {%- if do_enkf_radar_ref %} + + {%- else %} + + {%- endif %} + + {%- elif do_envar_radar_ref and not do_envar_radar_ref_once %} + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + + {%- for h in cycl_hrs_hyb_fv3lam_ens %} + {{ h }}@H + {%- endfor %} + + + + {%- else %} + + {%- endif %} + + + + + +{%- endif %} + +{%- if do_ensemble %} + +{%- endif %} +{%- endif %} + +{%- if do_recenter %} + + + &RSRV_ENKF; + &WALL_LIMIT_RECENTER; + &LOAD_MODULES_RUN_TASK_FP; "&RECENTER_TN;" &HOMErrfs;/jobs/JRRFS_RECENTER + &RESOURCES_RECENTER; + &NATIVE_ALL; + &WALLTIME_RECENTER; + &NODESIZE_ALL; + &TAG;_&RECENTER_TN; + &LOGDIR;/&RECENTER_TN;_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&RECENTER_TN;_&envir;_@H + nens{{ num_ens_members }} + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + ENSCTRL_DATAROOT&ENSCTRL_DATAROOT; + ENSCTRL_GESROOT&ENSCTRL_GESROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + cyc@H + MEMBER_NAME#{{ ensmem_indx_name }}# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + {%- if do_ensfcst %} + + {%- for m in range(1, num_ens_members+1) %} + + {%- endfor %} + &ENSCTRL_COMOUT;/@H/forecast/INPUT/coupler.res + + {%- else %} + + {%- if do_analysis_nonvarcld %} + + {%- for m in range(1, num_ens_members+1) %} + + {%- endfor %} + + {%- elif do_enkf_radar_ref %} + + {%- elif do_enkfupdate %} + + {%- endif %} + + &ENSCTRL_COMOUT;/@H/analysis_nonvarcld_complete.txt + &ENSCTRL_COMOUT;/@H_spinup/analysis_nonvarcld_complete.txt + + + {% endif %} + + + +{%- endif %} + +{%- if do_save_da_output and do_ensemble %} + + + + {%- for m in range(1, num_ens_members_fcst+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_SAVE_RESTART; + &LOAD_MODULES_RUN_TASK_FP; "&SAVE_RESTART_TN;" "&HOMErrfs;/jobs/JRRFS_SAVE_DA_OUTPUT" + {{ nnodes_save_restart }}:ppn={{ ppn_save_restart }} + {{ wtime_save_restart }} + &NODESIZE_ALL; + {{ memo_save_da_output }} + &TAG;_&SAVE_DA_OUTPUT_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&SAVE_DA_OUTPUT_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + {%- if do_ensfcst %} + CYCLE_TYPEenfcst + {%- else %} + CYCLE_TYPEprod + {%- endif %} + envir&envir; + WGF&WGF; + KEEPDATAYES + + + {%- if do_ensfcst %} + + {%- else %} + {%- if do_recenter %} + + + + {%- for h in cycl_hrs_recenter %} + {{ h }}@H + {%- endfor %} + + + + + {%- for h in cycl_hrs_recenter %} + {{ h }}@H + {%- endfor %} + + + + {%- elif do_analysis_nonvarcld%} + + {%- elif do_enkf_radar_ref %} + + {%- elif do_enkfupdate %} + + {%- endif %} + {%- endif %} + + + + +{%- endif %} + +{% if do_ensemble %} + + + {%- for m in range(1, num_ens_members+1) -%}{%- set fmtstr=" %0"~ndigits_ensmem_names~"d" -%}{{- fmtstr%m -}}{%- endfor %} +{%- endif %} + + + &RSRV_FORECAST; + &WALL_LIMIT_FORECAST; + + &LOAD_MODULES_RUN_TASK_FP; "&FORECAST_TN;" "&HOMErrfs;/jobs/JRRFS_FORECAST" + + &RESOURCES_FORECAST_PROD; + &WALLTIME_FORECAST_PROD; + &NATIVE_ALL; + &NATIVE_FORECAST_PROD; + &NODESIZE_ALL; + &TAG;_&FORECAST_TN;_prod{{ uscore_ensmem_name }} + &LOGDIR;/&FORECAST_TN;_prod_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HH@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + CYCLE_TYPEprod + GESROOT&GESROOT; + RESTART_HRS{{ restart_hrs_prod }} + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + {%- if do_ensfcst %} + {%- if do_recenter %} + + {%- else %} + + {%- endif %} + {%- else %} + {%- if do_dacycle and do_analysis_nonvarcld%} + + {%- elif do_dacycle %} + {%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + + {%- else %} + + {%- endif %} + {%- elif do_enkfupdate or do_enkf_radar_ref %} + {%- if do_recenter %} + + + + {%- for h in cycl_hrs_recenter %} + {{ h }}@H + {%- endfor %} + + + + + {%- for h in cycl_hrs_recenter %} + {{ h }}@H + {%- endfor %} + + + + {%- elif do_analysis_nonvarcld%} + + {%- elif do_enkf_radar_ref %} + + {%- else %} + + {%- endif %} + {%- else %} + + {%- endif %} + {%- endif %} + + + + +{%- if not do_ensfcst %} + + + + &RSRV_FORECAST; + &WALL_LIMIT_FORECAST; + + &LOAD_MODULES_RUN_TASK_FP; "&FORECAST_TN;" "&HOMErrfs;/jobs/JRRFS_FORECAST" + + &RESOURCES_FORECAST_PROD; + &WALLTIME_FORECAST_PROD_LONG; + &NATIVE_ALL; + &NATIVE_FORECAST_PROD; + &NODESIZE_ALL; + &TAG;_&FORECAST_TN;_prod{{ uscore_ensmem_name }} + &LOGDIR;/&FORECAST_TN;_prod_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HH@H + cyc@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + CYCLE_TYPEprod + GESROOT&GESROOT; + RESTART_HRS{{ restart_hrs_prod_long }} + envir&envir; + WGF&WGF; + PREDEF_GRID_NAME&GRID_NAME; + KEEPDATAYES + + + {%- if do_dacycle and do_analysis_nonvarcld%} + + {%- elif do_dacycle %} + {%- if do_envar_radar_ref and not do_envar_radar_ref_once %} + + {%- else %} + + {%- endif %} + {%- elif do_enkfupdate or do_enkf_radar_ref %} + {%- if do_recenter %} + + + + {%- for h in cycl_hrs_recenter %} + {{ h }}@H + {%- endfor %} + + + + + {%- for h in cycl_hrs_recenter %} + {{ h }}@H + {%- endfor %} + + + + {%- elif do_analysis_nonvarcld%} + + {%- elif do_enkf_radar_ref %} + + {%- else %} + + {%- endif %} + {%- else %} + + {%- endif %} + + + +{%- endif %} + +{%- if not do_ensfcst %} +{%- if not is_rtma %} + + + + {{ restart_hrs_prod }} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_SAVE_RESTART; + &LOAD_MODULES_RUN_TASK_FP; "&SAVE_RESTART_TN;" "&HOMErrfs;/jobs/JRRFS_SAVE_RESTART" + {{ nnodes_save_restart }}:ppn={{ ppn_save_restart }} + {{ wtime_save_restart }} + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&SAVE_RESTART_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&SAVE_RESTART_TN;_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + GESROOT&GESROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + CYCLE_TYPEprod + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + @Y@m@d@H@M00 + {%- if do_ensemble %} + &DATAROOT;/&NET;_forecast_@H_&VERSION;/&WGF;/m#mem#/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &DATAROOT;/&RUN;_forecast_@H_&VERSION;/&WGF;/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + + + + + + + + {{ restart_hrs_prod_long }} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_SAVE_RESTART; + &LOAD_MODULES_RUN_TASK_FP; "&SAVE_RESTART_TN;" "&HOMErrfs;/jobs/JRRFS_SAVE_RESTART" + {{ nnodes_save_restart }}:ppn={{ ppn_save_restart }} + {{ wtime_save_restart }} + &NODESIZE_ALL; + &MEMO_PREP_CYC; + &TAG;_&SAVE_RESTART_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&SAVE_RESTART_TN;_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&FORECAST_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + GESROOT&GESROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + CYCLE_TYPEprod + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + @Y@m@d@H@M00 + {%- if do_ensemble %} + &DATAROOT;/&NET;_forecast_@H_&VERSION;/&WGF;/m#mem#/RESTART/@Y@m@d.@H0000.coupler.res + {%- else %} + &DATAROOT;/&RUN;_forecast_@H_&VERSION;/&WGF;/RESTART/@Y@m@d.@H0000.coupler.res + {%- endif %} + + + + + + +{%- endif %} +{%- endif %} + +{%- if do_post_prod %} + + + +{%- if postproc_nsout_min > 0 %} + {%- if postproc_nfhmax_hrs < postproc_len_hrs %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(postproc_nsout_min, postproc_nfhmax_hrs*60, postproc_nsout_min) %}{{ " %03d-%02d-00 " % ( h//60,h-(h//60)*60 ) }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d-00-00 " % h }}{% endfor %} + {%- else %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(postproc_nsout_min, postproc_len_hrs*60+1, postproc_nsout_min) %}{{ " %03d-%02d-00 " % ( h//60,h-(h//60)*60 ) }}{% endfor %} + {%- endif %} +{%- else %} + {%- if postproc_nfhmax_hrs < postproc_len_hrs %} + {% for h in range(0, postproc_nfhmax_hrs,postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d " % h }}{% endfor %} + {%- else %} + {% for h in range(0, postproc_len_hrs+1, postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- endif %} +{%- endif %} + + + + &RSRV_POST; + &WALL_LIMIT_POST; + &LOAD_MODULES_RUN_TASK_FP; "&POST_TN;" "&HOMErrfs;/jobs/JRRFS_POST" + &RESOURCES_POST; + &NATIVE_ALL; + &WALLTIME_POST; + &NODESIZE_ALL; + &TAG;_&POST_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&POST_TN;_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&POST_TN;{{ uscore_ensmem_name }}_&envir;_@H_f#fhr# + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + {%- if do_ensemble %} + &DATAROOT;/&NET;_forecast_@H_&VERSION;/&WGF;/m#mem#/output/log.atm.f#fhr# + {%- else %} + &DATAROOT;/&RUN;_forecast_@H_&VERSION;/&WGF;/output/log.atm.f#fhr# + {%- endif %} + + + + + +{%- if not do_ensfcst %} + + +{%- if postproc_nsout_min > 0 %} + {%- if postproc_nfhmax_hrs < postproc_long_len_hrs %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(postproc_nsout_min, postproc_nfhmax_hrs*60, postproc_nsout_min) %}{{ " %03d-%02d-00 " % ( h//60,h-(h//60)*60 ) }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_long_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d-00-00 " % h }}{% endfor %} + {%- else %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(postproc_nsout_min, postproc_long_len_hrs*60+1, postproc_nsout_min) %}{{ " %03d-%02d-00 " % ( h//60,h-(h//60)*60 ) }}{% endfor %} + {%- endif %} +{%- else %} + {%- if postproc_nfhmax_hrs < postproc_long_len_hrs %} + {% for h in range(0, postproc_nfhmax_hrs,postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_long_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d " % h }}{% endfor %} + {%- else %} + {% for h in range(0, postproc_long_len_hrs+1, postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- endif %} +{%- endif %} + + + + &RSRV_POST; + &WALL_LIMIT_POST; + &LOAD_MODULES_RUN_TASK_FP; "&POST_TN;" "&HOMErrfs;/jobs/JRRFS_POST" + &RESOURCES_POST; + &NATIVE_ALL; + &WALLTIME_POST; + &NODESIZE_ALL; + &TAG;_&POST_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&POST_TN;_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&POST_TN;{{ uscore_ensmem_name }}_&envir;_@H_f#fhr#_long + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + &DATAROOT;/&RUN;_forecast_@H_&VERSION;/&WGF;/output/log.atm.f#fhr# + + + + +{%- endif %} + + + +{%- if postproc_nsout_min > 0 %} + {%- if postproc_nfhmax_hrs < postproc_len_hrs %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(1, postproc_nfhmax_hrs, postproc_nfhout_hrs) %}{{ " %03d-%02d-00 " % ( h,0 ) }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d-00-00 " % h }}{% endfor %} + {%- else %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(1, postproc_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d-%02d-00 " % ( h,0 ) }}{% endfor %} + {%- endif %} +{%- else %} + {%- if postproc_nfhmax_hrs < postproc_len_hrs %} + {% for h in range(0, postproc_nfhmax_hrs,postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d " % h }}{% endfor %} + {%- else %} + {% for h in range(0, postproc_len_hrs+1,postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- endif %} +{%- endif %} + + + + &RSRV_PRDGEN; + &WALL_LIMIT_POST; + &LOAD_MODULES_RUN_TASK_FP; "&PRDGEN_TN;" "&HOMErrfs;/jobs/JRRFS_PRDGEN" + &RESOURCES_PRDGEN; + &NATIVE_ALL; + &WALLTIME_PRDGEN; + &NODESIZE_ALL; + &MEMO_PRDGEN; + &TAG;_&PRDGEN_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&PRDGEN_TN;_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&POST_TN;{{ uscore_ensmem_name }}_&envir;_@H_f#fhr# + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + + + +{%- if not do_ensfcst %} + + +{%- if postproc_nsout_min > 0 %} + {%- if postproc_nfhmax_hrs < postproc_long_len_hrs %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(1, postproc_nfhmax_hrs, postproc_nfhout_hrs) %}{{ " %03d-%02d-00 " % ( h,0 ) }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_long_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d-00-00 " % h }}{% endfor %} + {%- else %} + {{ "000-%02d-%02d" % ( dt_atmos//60,dt_atmos%60 ) }} {% for h in range(1, postproc_long_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d-%02d-00 " % ( h,0 ) }}{% endfor %} + {%- endif %} +{%- else %} + {%- if postproc_nfhmax_hrs < postproc_long_len_hrs %} + {% for h in range(0, postproc_nfhmax_hrs,postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- for h in range(postproc_nfhmax_hrs, postproc_long_len_hrs+1, postproc_nfhout_hrs) %}{{ " %03d " % h }}{% endfor %} + {%- else %} + {% for h in range(0, postproc_long_len_hrs+1, postproc_nfhout_hf_hrs) %}{{ " %03d" % h }}{% endfor %} + {%- endif %} +{%- endif %} + + + + &RSRV_PRDGEN; + &WALL_LIMIT_POST; + &LOAD_MODULES_RUN_TASK_FP; "&PRDGEN_TN;" "&HOMErrfs;/jobs/JRRFS_PRDGEN" + &RESOURCES_PRDGEN; + &NATIVE_ALL; + &WALLTIME_PRDGEN; + &NODESIZE_ALL; + &MEMO_PRDGEN; + &TAG;_&PRDGEN_TN;{{ uscore_ensmem_name }}_f#fhr# + &LOGDIR;/&PRDGEN_TN;_&TAG;{{ uscore_ensmem_name }}_f#fhr#_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&POST_TN;{{ uscore_ensmem_name }}_&envir;_@H_f#fhr#_long + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + FHR#fhr# + envir&envir; + WGF&WGF; + KEEPDATAYES + + + + + + + +{%- endif %} +{%- endif %} + +{% if do_bufrsnd %} + +{%- if not do_ensfcst %} + + + &RSRV_POST; + &WALL_LIMIT_BUFRSND; + &LOAD_MODULES_RUN_TASK_FP; "&BUFRSND_TN;" "&HOMErrfs;/jobs/JRRFS_BUFRSND" + &RESOURCES_BUFRSND; + {{ wtime_bufrsnd }} + &NODESIZE_ALL; + &TAG;_&BUFRSND_TN; + &LOGDIR;/&BUFRSND_TN;_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&BUFRSND_TN;_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + tmmarktm00 + envir&envir; + WGF&WGF; + KEEPDATAYES + + + +{%- if postproc_nsout_min > 0 %} + &DATAROOT;/&RUN;_forecast_&envir;_@H/log.atm.f000-00-36 +{%- else %} + &DATAROOT;/&RUN;_forecast_&envir;_@H/log.atm.f000 +{%- endif %} + + + + +{%- endif %} + + {%- if do_ensfcst %} + + + &RSRV_POST; + &WALL_LIMIT_BUFRSND; + &LOAD_MODULES_RUN_TASK_FP; "&BUFRSND_TN;" "&HOMErrfs;/jobs/JRRFS_BUFRSND" + &RESOURCES_BUFRSND; + {{ wtime_bufrsnd }} + &NODESIZE_ALL; + &TAG;_&BUFRSND_TN;{{ uscore_ensmem_name }} + &LOGDIR;/&BUFRSND_TN;_&TAG;{{ uscore_ensmem_name }}_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + taskid&RUN;_&BUFRSND_TN;{{ uscore_ensmem_name }}_&envir;_@H + PDY@Y@m@d + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + DATAROOT&DATAROOT; + GESROOT&GESROOT; + COMROOT&COMROOT; + MEMBER_NAME#{{ ensmem_indx_name }}# + cyc@H + tmmarktm00 + envir&envir; + WGF&WGF; + KEEPDATAYES + + + &DATAROOT;/&RUN;_forecast_m#mem#_&envir;_@H/log.atm.f000 + + + + {%- endif %} + +{%- endif %} + +{%- if do_ensemble %} + +{%- endif %} + +{%- if not do_ensfcst %} + + + + &RSRV_POST; + + &HOMErrfs;/scripts/exrrfs_clean.ksh + 1:ppn=1 + 00:15:00 + &TAG;_&CLEAN_TN; + &LOGDIR;/&CLEAN_TN;_&TAG;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + LOGDIR&LOGDIR; + CDATE@Y@m@d@H + HOMErrfs&HOMErrfs; + GESROOT&GESROOT; +{%- if do_ensemble %} + nens{{ num_ens_members }} +{%- else %} + nens0 +{%- endif %} + + +{%- endif %} + + diff --git a/scripts/exrrfs_analysis_enkf.sh b/scripts/exrrfs_analysis_enkf.sh index 5cdc3876e..f4e78f225 100755 --- a/scripts/exrrfs_analysis_enkf.sh +++ b/scripts/exrrfs_analysis_enkf.sh @@ -56,9 +56,7 @@ case $MACHINE in export OMP_PROC_BIND=close export OMP_PLACES=threads export MPICH_RANK_REORDER_METHOD=0 - ncores=160 - PPN_ANALYSIS_ENKF=8 - + ncores=$(( PPN_ANALYSIS_ENKF*NNODES_ANALYSIS_ENKF )) APRUN="mpiexec -n ${ncores} -ppn ${PPN_ANALYSIS_ENKF} --label --line-buffer --cpu-bind core --depth ${OMP_NUM_THREADS}" ;; # diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index 9adb5b207..c0b2ce554 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -334,6 +334,7 @@ RUN="experiment_name" RUN_ensctrl="experiment_name" TAG="dev_grid" WGF="det" +DCOM_ROOT="/path/of/observation" PTMP="/base/path/of/directory/containing/postprocessed/output/files" ENSCTRL_PTMP="/base/path/of/directory/containing/postprocessed/output/files" GESROOT="/base/path/of/directory/containing/model/output/files" diff --git a/ush/generate_FV3LAM_wflow_nco.sh b/ush/generate_FV3LAM_wflow_nco.sh new file mode 100755 index 000000000..89fdc6a3f --- /dev/null +++ b/ush/generate_FV3LAM_wflow_nco.sh @@ -0,0 +1,776 @@ +#!/bin/bash +# +#----------------------------------------------------------------------- +# +# This file defines and then calls a function that sets up a forecast +# experiment and creates a workflow (according to the parameters speci- +# fied in the configuration file; see instructions). +# +#----------------------------------------------------------------------- +# +function generate_FV3LAM_wflow() { +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +local scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +local scrfunc_fn=$( basename "${scrfunc_fp}" ) +local scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Get the name of this function. +# +#----------------------------------------------------------------------- +# +local func_name="${FUNCNAME[0]}" +# +#----------------------------------------------------------------------- +# +# Set directories. +# +#----------------------------------------------------------------------- +# +USHrrfs="${scrfunc_dir}" +# +#----------------------------------------------------------------------- +# +# Source bash utility functions and other necessary files. +# +#----------------------------------------------------------------------- +# +. $USHrrfs/source_util_funcs.sh +. $USHrrfs/set_FV3nml_sfc_climo_filenames.sh +# +#----------------------------------------------------------------------- +# +# Run python checks +# +#----------------------------------------------------------------------- +# + +# This line will return two numbers: the python major and minor versions +pyversion=($(/usr/bin/env python3 -c 'import platform; major, minor, patch = platform.python_version_tuple(); print(major); print(minor)')) + +#Now, set an error check variable so that we can print all python errors rather than just the first +pyerrors=0 + +# Check that the call to python3 returned no errors, then check if the +# python3 minor version is 6 or higher +if [[ -z "$pyversion" ]];then + print_info_msg "\ + + Error: python3 not found" + pyerrors=$((pyerrors+1)) +else + if [[ ${#pyversion[@]} -lt 2 ]]; then + print_info_msg "\ + + Error retrieving python3 version" + pyerrors=$((pyerrors+1)) + elif [[ ${pyversion[1]} -lt 6 ]]; then + print_info_msg "\ + + Error: python version must be 3.6 or higher + python version: ${pyversion[*]}" + pyerrors=$((pyerrors+1)) + fi +fi + +#Next, check for the non-standard python packages: jinja2, yaml, and f90nml +pkgs=(jinja2 yaml f90nml) +for pkg in ${pkgs[@]} ; do + if ! /usr/bin/env python3 -c "import ${pkg}" &> /dev/null; then + print_info_msg "\ + + Error: python module ${pkg} not available" + pyerrors=$((pyerrors+1)) + fi +done + +#Finally, check if the number of errors is >0, and if so exit with helpful message +if [ $pyerrors -gt 0 ];then + print_err_msg_exit "Errors found: check your python environment" +fi + +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u -x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# check whether the .agent link is initialized +# if not, run Init.sh (otherwise, the workflow generation will fail) +#----------------------------------------------------------------------- +# +#if [[ ! -L ${USHrrfs}/../fix/.agent || ! -e ${USHrrfs}/../fix/.agent ]] \ +# && [ -e ${USHrrfs}/Init.sh ]; then +# ${USHrrfs}/Init.sh +#fi +# +#----------------------------------------------------------------------- +# +# Source the file that defines and then calls the setup function. The +# setup function in turn first sources the default configuration file +# (which contains default values for the experiment/workflow parameters) +# and then sources the user-specified configuration file (which contains +# user-specified values for a subset of the experiment/workflow parame- +# ters that override their default values). +# +#----------------------------------------------------------------------- +# +. $USHrrfs/setup_nco.sh +# +#----------------------------------------------------------------------- +# +# Set the full path to the experiment's rocoto workflow xml file. This +# file will be placed at the top level of the experiment directory and +# then used by rocoto to run the workflow. +# +#----------------------------------------------------------------------- +# +WFLOW_XML_FP="$EXPTDIR/${WFLOW_XML_FN}" +# +#----------------------------------------------------------------------- +# +# Create a multiline variable that consists of a yaml-compliant string +# specifying the values that the jinja variables in the template rocoto +# XML should be set to. These values are set either in the user-specified +# workflow configuration file (EXPT_CONFIG_FN) or in the setup.sh script +# sourced above. Then call the python script that generates the XML. +# +#----------------------------------------------------------------------- +# +ensmem_indx_name="\"\"" +uscore_ensmem_name="\"\"" +if [ "${DO_ENSEMBLE}" = "TRUE" ]; then + ensmem_indx_name="mem" + uscore_ensmem_name="_m#${ensmem_indx_name}#" +fi + +settings="\ +# +# Parameters needed by the job scheduler. +# + 'account': $ACCOUNT + 'service_account': ${SERVICE_ACCOUNT:-$ACCOUNT} + 'hpss_account': ${HPSS_ACCOUNT:-$SERVICE_ACCOUNT} + 'reservation': $RESERVATION + 'reservation_post': $RESERVATION_POST + 'sched': $SCHED + 'partition_default': ${PARTITION_DEFAULT} + 'queue_default': ${QUEUE_DEFAULT} + 'partition_hpss': ${PARTITION_HPSS} + 'queue_hpss': ${QUEUE_HPSS} + 'partition_sfc_climo': ${PARTITION_SFC_CLIMO} + 'partition_forecast': ${PARTITION_FORECAST} + 'queue_forecast': ${QUEUE_FORECAST} + 'machine': ${MACHINE} + 'partition_analysis': ${PARTITION_ANALYSIS} + 'queue_analysis': ${QUEUE_ANALYSIS} + 'partition_prdgen': ${PARTITION_PRDGEN} + 'queue_prdgen': ${QUEUE_PRDGEN} + 'partition_post': ${PARTITION_POST} + 'queue_post': ${QUEUE_POST} +# +# Workflow task names. +# + 'make_grid_tn': ${MAKE_GRID_TN} + 'make_orog_tn': ${MAKE_OROG_TN} + 'make_sfc_climo_tn': ${MAKE_SFC_CLIMO_TN} + 'make_ics_tn': ${MAKE_ICS_TN} + 'blend_ics_tn': ${BLEND_ICS_TN} + 'make_lbcs_tn': ${MAKE_LBCS_TN} + 'forecast_tn': ${FORECAST_TN} + 'post_tn': ${POST_TN} + 'prdgen_tn': ${PRDGEN_TN} + 'analysis_gsi': ${ANALYSIS_GSI_TN} + 'analysis_gsidiag': ${ANALYSIS_GSIDIAG_TN} + 'update_lbc_soil': ${UPDATE_LBC_SOIL_TN} + 'observer_gsi_ensmean': ${OBSERVER_GSI_ENSMEAN_TN} + 'observer_gsi': ${OBSERVER_GSI_TN} + 'prep_cyc_spinup': ${PREP_CYC_SPINUP_TN} + 'prep_cyc_prod': ${PREP_CYC_PROD_TN} + 'prep_cyc': ${PREP_CYC_TN} + 'calc_ensmean': ${CALC_ENSMEAN_TN} + 'process_radar': ${PROCESS_RADAR_TN} + 'process_lightning': ${PROCESS_LIGHTNING_TN} + 'process_bufr': ${PROCESS_BUFR_TN} + 'process_smoke': ${PROCESS_SMOKE_TN} + 'analysis_nonvarcld': ${ANALYSIS_NONVARCLD_TN} + 'bufrsnd_tn': ${BUFRSND_TN} + 'save_restart': ${SAVE_RESTART_TN} + 'save_da_output': ${SAVE_DA_OUTPUT_TN} + 'tag': ${TAG} + 'net': ${NET} + 'run': ${RUN} + 'envir': ${envir} + 'wgf': ${WGF} + 'grid_name': ${PREDEF_GRID_NAME} +# +# Number of nodes to use for each task. +# + 'nnodes_make_grid': ${NNODES_MAKE_GRID} + 'nnodes_make_orog': ${NNODES_MAKE_OROG} + 'nnodes_make_sfc_climo': ${NNODES_MAKE_SFC_CLIMO} + 'nnodes_make_ics': ${NNODES_MAKE_ICS} + 'nnodes_blend_ics': ${NNODES_BLEND_ICS} + 'nnodes_make_lbcs': ${NNODES_MAKE_LBCS} + 'nnodes_prep_cyc': ${NNODES_PREP_CYC} + 'nnodes_forecast': ${NNODES_FORECAST} + 'nnodes_analysis_gsi': ${NNODES_ANALYSIS_GSI} + 'nnodes_analysis_gsidiag': ${NNODES_ANALYSIS_GSIDIAG} + 'nnodes_update_lbc_soil': ${NNODES_UPDATE_LBC_SOIL} + 'nnodes_analysis_enkf': ${NNODES_ANALYSIS_ENKF} + 'nnodes_recenter': ${NNODES_RECENTER} + 'nnodes_post': ${NNODES_POST} + 'nnodes_prdgen': ${NNODES_PRDGEN} + 'nnodes_process_radar': ${NNODES_PROCESS_RADAR} + 'nnodes_process_lightning': ${NNODES_PROCESS_LIGHTNING} + 'nnodes_process_bufr': ${NNODES_PROCESS_BUFR} + 'nnodes_process_smoke': ${NNODES_PROCESS_SMOKE} + 'nnodes_analysis_nonvarcld': ${NNODES_ANALYSIS_NONVARCLD} + 'nnodes_bufrsnd': ${NNODES_BUFRSND} + 'nnodes_save_restart': ${NNODES_SAVE_RESTART} +# +# Number of cores used for a task +# + 'ncores_forecast': ${PE_MEMBER01} + 'native_forecast': ${NATIVE_FORECAST} + 'ncores_analysis_gsi': ${NCORES_ANALYSIS_GSI} + 'ncores_run_observer': ${NCORES_RUN_OBSERVER} + 'native_analysis_gsi': ${NATIVE_ANALYSIS_GSI} + 'ncores_analysis_enkf': ${NCORES_ANALYSIS_ENKF} + 'native_analysis_enkf': ${NATIVE_ANALYSIS_ENKF} +# +# Number of logical processes per node for each task. If running without +# threading, this is equal to the number of MPI processes per node. +# + 'ppn_make_grid': ${PPN_MAKE_GRID} + 'ppn_make_orog': ${PPN_MAKE_OROG} + 'ppn_make_sfc_climo': ${PPN_MAKE_SFC_CLIMO} + 'ppn_make_ics': ${PPN_MAKE_ICS} + 'ppn_blend_ics': ${PPN_BLEND_ICS} + 'ppn_make_lbcs': ${PPN_MAKE_LBCS} + 'ppn_prep_cyc': ${PPN_PREP_CYC} + 'ppn_forecast': ${PPN_FORECAST} + 'ppn_analysis_gsi': ${PPN_ANALYSIS_GSI} + 'ppn_analysis_gsidiag': ${PPN_ANALYSIS_GSIDIAG} + 'ppn_update_lbc_soil': ${PPN_UPDATE_LBC_SOIL} + 'ppn_analysis_enkf': ${PPN_ANALYSIS_ENKF} + 'ppn_recenter': ${PPN_RECENTER} + 'ppn_post': ${PPN_POST} + 'ppn_prdgen': ${PPN_PRDGEN} + 'ppn_process_radar': ${PPN_PROCESS_RADAR} + 'ppn_process_lightning': ${PPN_PROCESS_LIGHTNING} + 'ppn_process_bufr': ${PPN_PROCESS_BUFR} + 'ppn_process_smoke': ${PPN_PROCESS_SMOKE} + 'ppn_analysis_nonvarcld': ${PPN_ANALYSIS_NONVARCLD} + 'ppn_bufrsnd': ${PPN_BUFRSND} + 'ppn_save_restart': ${PPN_SAVE_RESTART} +# + 'tpp_make_ics': ${TPP_MAKE_ICS} + 'tpp_make_lbcs': ${TPP_MAKE_LBCS} + 'tpp_analysis_gsi': ${TPP_ANALYSIS_GSI} + 'tpp_analysis_enkf': ${TPP_ANALYSIS_ENKF} + 'tpp_forecast': ${TPP_FORECAST} + 'tpp_post': ${TPP_POST} + 'tpp_bufrsnd': ${TPP_BUFRSND} +# +# Maximum wallclock time for each task. +# + 'wtime_make_grid': ${WTIME_MAKE_GRID} + 'wtime_make_orog': ${WTIME_MAKE_OROG} + 'wtime_make_sfc_climo': ${WTIME_MAKE_SFC_CLIMO} + 'wtime_make_ics': ${WTIME_MAKE_ICS} + 'wtime_blend_ics': ${WTIME_BLEND_ICS} + 'wtime_make_lbcs': ${WTIME_MAKE_LBCS} + 'wtime_prep_cyc': ${WTIME_PREP_CYC} + 'wtime_forecast': ${WTIME_FORECAST} + 'wtime_forecast_long': ${WTIME_FORECAST_LONG} + 'wtime_forecast_spinup': ${WTIME_FORECAST_SPINUP} + 'wtime_analysis_gsi': ${WTIME_ANALYSIS_GSI} + 'wtime_analysis_gsidiag': ${WTIME_ANALYSIS_GSIDIAG} + 'wtime_update_lbc_soil': ${WTIME_UPDATE_LBC_SOIL} + 'wtime_analysis_enkf': ${WTIME_ANALYSIS_ENKF} + 'wtime_recenter': ${WTIME_RECENTER} + 'wtime_post': ${WTIME_POST} + 'wtime_prdgen': ${WTIME_PRDGEN} + 'wtime_process_radar': ${WTIME_PROCESS_RADAR} + 'wtime_process_lightning': ${WTIME_PROCESS_LIGHTNING} + 'wtime_process_bufr': ${WTIME_PROCESS_BUFR} + 'wtime_process_smoke': ${WTIME_PROCESS_SMOKE} + 'wtime_analysis_nonvarcld': ${WTIME_ANALYSIS_NONVARCLD} + 'wtime_bufrsnd': ${WTIME_BUFRSND} + 'wtime_save_restart': ${WTIME_SAVE_RESTART} +# +# start time for each task. +# + 'start_time_spinup': ${START_TIME_SPINUP} + 'start_time_prod': ${START_TIME_PROD} + 'start_time_conventional_spinup': ${START_TIME_CONVENTIONAL_SPINUP} + 'start_time_blending': ${START_TIME_BLENDING} + 'start_time_late_analysis': ${START_TIME_LATE_ANALYSIS} + 'start_time_conventional': ${START_TIME_CONVENTIONAL} + 'start_time_nsslmosiac': ${START_TIME_NSSLMOSIAC} + 'start_time_process_lightning': ${START_TIME_PROCESS_LIGHTNING} + 'start_time_process_smoke': ${START_TIME_PROCESS_SMOKE} +# +# Maximum memory for each task. +# + 'memo_process_bufr': ${MEMO_PROCESS_BUFR} + 'memo_analysis_nonvarcld': ${MEMO_ANALYSIS_NONVARCLD} + 'memo_prdgen': ${MEMO_PRDGEN} + 'memo_prep_cyc': ${MEMO_PREP_CYC} + 'memo_save_restart': ${MEMO_SAVE_RESTART} + 'memo_save_input': ${MEMO_SAVE_INPUT} + 'memo_process_smoke': ${MEMO_PROCESS_SMOKE} + 'memo_process_lightning': ${MEMO_PROCESS_LIGHTNING} + 'memo_save_da_output': ${MEMO_SAVE_DA_OUTPUT} +# +# Maximum number of tries for each task. +# + 'maxtries_make_grid': ${MAXTRIES_MAKE_GRID} + 'maxtries_make_orog': ${MAXTRIES_MAKE_OROG} + 'maxtries_make_sfc_climo': ${MAXTRIES_MAKE_SFC_CLIMO} + 'maxtries_make_ics': ${MAXTRIES_MAKE_ICS} + 'maxtries_blend_ics': ${MAXTRIES_BLEND_ICS} + 'maxtries_make_lbcs': ${MAXTRIES_MAKE_LBCS} + 'maxtries_prep_cyc': ${MAXTRIES_PREP_CYC} + 'maxtries_forecast': ${MAXTRIES_FORECAST} + 'maxtries_analysis_gsi': ${MAXTRIES_ANALYSIS_GSI} + 'maxtries_update_lbc_soil': ${MAXTRIES_UPDATE_LBC_SOIL} + 'maxtries_analysis_enkf': ${MAXTRIES_ANALYSIS_ENKF} + 'maxtries_recenter': ${MAXTRIES_RECENTER} + 'maxtries_post': ${MAXTRIES_POST} + 'maxtries_prdgen': ${MAXTRIES_PRDGEN} + 'maxtries_process_radar': ${MAXTRIES_PROCESS_RADAR} + 'maxtries_process_lightning': ${MAXTRIES_PROCESS_LIGHTNING} + 'maxtries_process_bufr': ${MAXTRIES_PROCESS_BUFR} + 'maxtries_process_smoke': ${MAXTRIES_PROCESS_SMOKE} + 'maxtries_analysis_nonvarcld': ${MAXTRIES_ANALYSIS_NONVARCLD} + 'maxtries_save_restart': ${MAXTRIES_SAVE_RESTART} + 'maxtries_save_da_output': ${MAXTRIES_SAVE_DA_OUTPUT} +# +# Flags that determine whether to run the specific tasks. +# + 'run_task_make_grid': ${RUN_TASK_MAKE_GRID} + 'run_task_make_orog': ${RUN_TASK_MAKE_OROG} + 'run_task_make_sfc_climo': ${RUN_TASK_MAKE_SFC_CLIMO} + 'run_task_prdgen': ${RUN_TASK_PRDGEN} +# + 'is_rtma': ${IS_RTMA} + 'fg_rootdir': ${FG_ROOTDIR} +# +# Number of physical cores per node for the current machine. +# + 'ncores_per_node': ${NCORES_PER_NODE} +# +# Directories and files. +# + 'homerrfs': $HOMErrfs + 'log_basedir': ${LOG_BASEDIR:-} + 'dataroot': ${DATAROOT:-} + 'ensctrl_dataroot': ${ENSCTRL_DATAROOT:-} + 'gesroot': ${GESROOT:-} + 'ensctrl_gesroot': ${ENSCTRL_GESROOT:-} + 'comroot': ${COMROOT:-} + 'dcomroot': ${DCOMROOT:-} + 'ensctrl_comout': ${ENSCTRL_COMOUT:-} + 'rrfse_gesroot': ${RRFSE_GESROOT:-} + 'obstype_source': ${OBSTYPE_SOURCE} + 'obspath': ${OBSPATH} + 'obspath_pm': ${OBSPATH_PM} + 'global_var_defns_fp': ${GLOBAL_VAR_DEFNS_FP} + 'load_modules_run_task_fp': ${LOAD_MODULES_RUN_TASK_FP} +# +# External model information for generating ICs and LBCs. +# + 'extrn_mdl_name_ics': ${EXTRN_MDL_NAME_ICS} + 'extrn_mdl_name_lbcs': ${EXTRN_MDL_NAME_LBCS} + 'extrn_mdl_sysbasedir_ics': ${EXTRN_MDL_SYSBASEDIR_ICS} + 'extrn_mdl_sysbasedir_lbcs': ${EXTRN_MDL_SYSBASEDIR_LBCS} + 'extrn_mdl_ics_offset_hrs': ${EXTRN_MDL_ICS_OFFSET_HRS} + 'extrn_mdl_lbcs_offset_hrs': ${EXTRN_MDL_LBCS_OFFSET_HRS} + 'extrn_mdl_lbcs_search_offset_hrs': ${EXTRN_MDL_LBCS_SEARCH_OFFSET_HRS} + 'lbcs_search_hrs': ${LBCS_SEARCH_HRS} + 'bc_update_interval': ${LBC_SPEC_INTVL_HRS} + 'gfs_file_fmt_ics': ${GFS_FILE_FMT_ICS} + 'gfs_file_fmt_lbcs': ${GFS_FILE_FMT_LBCS} +# +# Parameters that determine the set of cycles to run. +# + 'date_first_cycl': ${DATE_FIRST_CYCL} + 'date_last_cycl': ${DATE_LAST_CYCL} + 'cdate_first_cycl': !datetime ${DATE_FIRST_CYCL}${CYCL_HRS[0]} + 'cdate_last_cycl': !datetime ${DATE_LAST_CYCL}${CYCL_HRS[0]} + 'cdate_first_arch': !datetime ${DATE_FIRST_CYCL}07 + 'cdate_last_arch': !datetime ${DATE_LAST_CYCL}07 + 'cycl_hrs': [ $( printf "\'%s\', " "${CYCL_HRS[@]}" ) ] + 'cycl_hrs_spinstart': [ $( printf "\'%s\', " "${CYCL_HRS_SPINSTART[@]}" ) ] + 'cycl_hrs_prodstart': [ $( printf "\'%s\', " "${CYCL_HRS_PRODSTART[@]}" ) ] + 'cycl_hrs_prodstart_ens': [ $( printf "\'%s\', " "${CYCL_HRS_PRODSTART_ENS[@]}" ) ] + 'cycl_hrs_recenter': [ $( printf "\'%s\', " "${CYCL_HRS_RECENTER[@]}" ) ] + 'cycl_hrs_stoch': [ $( printf "\'%s\', " "${CYCL_HRS_STOCH[@]}" ) ] + 'cycl_hrs_hyb_fv3lam_ens': [ $( printf "\'%s\', " "${CYCL_HRS_HYB_FV3LAM_ENS[@]}" ) ] + 'restart_hrs_prod': ${RESTART_INTERVAL} + 'restart_hrs_prod_long': ${RESTART_INTERVAL_LONG} + 'cycl_freq': !!str 12:00:00 + 'at_start_cycledef': ${AT_START_CYCLEDEF} + 'initial_cycledef': ${INITIAL_CYCLEDEF} + 'boundary_cycledef': ${BOUNDARY_CYCLEDEF} + 'boundary_long_cycledef': ${BOUNDARY_LONG_CYCLEDEF} + 'spinup_cycledef': ${SPINUP_CYCLEDEF} + 'prod_cycledef': ${PROD_CYCLEDEF} + 'prodlong_cycledef': ${PRODLONG_CYCLEDEF} + 'saveda_cycledef': ${SAVEDA_CYCLEDEF} + 'recenter_cycledef': ${RECENTER_CYCLEDEF} + 'dt_atmos': ${DT_ATMOS} +# +# boundary, forecast, and post process length. +# + 'fcst_len_hrs': ${FCST_LEN_HRS} + 'fcst_len_hrs_spinup': ${FCST_LEN_HRS_SPINUP} + 'boundary_len_hrs': ${BOUNDARY_LEN_HRS} + 'boundary_long_len_hrs': ${BOUNDARY_LONG_LEN_HRS} + 'postproc_len_hrs': ${POSTPROC_LEN_HRS} + 'postproc_long_len_hrs': ${POSTPROC_LONG_LEN_HRS} + 'postproc_subh_len_hrs': ${POSTPROC_SUBH_LEN_HRS} + 'postproc_nsout_min': ${NSOUT_MIN} + 'postproc_nfhmax_hrs': ${NFHMAX_HF} + 'postproc_nfhout_hrs': ${NFHOUT} + 'postproc_nfhout_hf_hrs': ${NFHOUT_HF} + 'boundary_proc_group_num': ${BOUNDARY_PROC_GROUP_NUM} +# +# Ensemble-related parameters. +# + 'do_ensemble': ${DO_ENSEMBLE} + 'do_ensfcst': ${DO_ENSFCST} + 'do_ensfcst_mulphy': ${DO_ENSFCST_MULPHY} + 'num_ens_members': ${NUM_ENS_MEMBERS} + 'num_ens_members_fcst': ${NUM_ENS_MEMBERS_FCST} + 'ndigits_ensmem_names': !!str ${NDIGITS_ENSMEM_NAMES} + 'ensmem_indx_name': ${ensmem_indx_name} + 'uscore_ensmem_name': ${uscore_ensmem_name} + 'do_enscontrol': ${DO_ENSCONTROL} + 'do_gsiobserver': ${DO_GSIOBSERVER} + 'do_enkfupdate': ${DO_ENKFUPDATE} + 'do_enkf_radar_ref': ${DO_ENKF_RADAR_REF} + 'do_envar_radar_ref': ${DO_ENVAR_RADAR_REF} + 'do_envar_radar_ref_once': ${DO_ENVAR_RADAR_REF_ONCE} + 'do_recenter': ${DO_RECENTER} + 'do_bufrsnd': ${DO_BUFRSND} + 'do_ensinit': ${DO_ENSINIT} + 'do_save_da_output': ${DO_SAVE_DA_OUTPUT} + 'do_gsidiag_offline': ${DO_GSIDIAG_OFFLINE} + 'do_save_input': ${DO_SAVE_INPUT} +# +# data assimilation related parameters. +# + 'do_dacycle': ${DO_DACYCLE} + 'do_surface_cycle': ${DO_SURFACE_CYCLE} + 'da_cycle_interval_hrs': ${DA_CYCLE_INTERV} + 'do_analysis_nonvarcld': ${DO_ANALYSIS_NONVARCLD} + 'do_spinup': ${DO_SPINUP} + 'do_post_spinup': ${DO_POST_SPINUP} + 'do_post_prod': ${DO_POST_PROD} + 'do_glmfed_da': ${DO_GLM_FED_DA} + 'prep_model_for_fed': ${PREP_MODEL_FOR_FED} + 'regional_ensemble_option': ${regional_ensemble_option} + 'radar_ref_thinning': ${RADAR_REF_THINNING} + 'ensctrl_stmp': ${ENSCTRL_STMP} + 'use_rrfse_ens': ${USE_RRFSE_ENS} +# +# cycle start and end date +# + 'startyear': ${STARTYEAR} + 'startmonth': ${STARTMONTH} + 'startday': ${STARTDAY} + 'starthour': ${STARTHOUR} + 'endyear': ${ENDYEAR} + 'endmonth': ${ENDMONTH} + 'endday': ${ENDDAY} + 'endhour': ${ENDHOUR} +# +# smoke and dust related parameters. +# + 'do_smoke_dust': ${DO_SMOKE_DUST} + 'ebb_dcycle' : ${EBB_DCYCLE} +# +# retrospective experiments +# + 'do_retro': ${DO_RETRO} +# +# large-scale blending EnKF initialization +# + 'do_ens_blending': ${DO_ENS_BLENDING} +" # End of "settings" variable. + +print_info_msg $VERBOSE " +The variable \"settings\" specifying values of the rococo XML variables +has been set as follows: +#----------------------------------------------------------------------- +settings = +$settings" + +# +# Set the full path to the template rocoto XML file. Then call a python +# script to generate the experiment's actual XML file from this template +# file. +# +template_xml_fp="${PARMrrfs}/${WFLOW_XML_TMPL_FN}" +$USHrrfs/fill_jinja_template.py -q \ + -u "${settings}" \ + -t ${template_xml_fp} \ + -o ${WFLOW_XML_FP} || \ + print_err_msg_exit "\ +Call to python script fill_jinja_template.py to create a rocoto workflow +XML file from a template file failed. Parameters passed to this script +are: + Full path to template rocoto XML file: + template_xml_fp = \"${template_xml_fp}\" + Full path to output rocoto XML file: + WFLOW_XML_FP = \"${WFLOW_XML_FP}\" + Namelist settings specified on command line: + settings = +$settings" + +# +#----------------------------------------------------------------------- +# +# Create a symlink in the experiment directory that points to the workflow +# (re)launch script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +Creating symlink in the experiment directory (EXPTDIR) that points to the +workflow launch script (WFLOW_LAUNCH_SCRIPT_FP): + EXPTDIR = \"${EXPTDIR}\" + WFLOW_LAUNCH_SCRIPT_FP = \"${WFLOW_LAUNCH_SCRIPT_FP}\"" +ln -fs "${WFLOW_LAUNCH_SCRIPT_FP}" "$EXPTDIR" + +print_info_msg "Generating an alternate simple launch script +${EXPTDIR}/run_rocoto.sh" + +echo "#!/bin/bash" > ${EXPTDIR}/run_rocoto.sh +if [[ "${MACHINE,,}" == "wcoss2" ]] ; then + export rocoto_ver=1.3.5 + echo "module use /apps/ops/test/nco/modulefiles" >> ${EXPTDIR}/run_rocoto.sh + echo "module load core/rocoto/${rocoto_ver}" >> ${EXPTDIR}/run_rocoto.sh +else + echo "source /etc/profile" >> ${EXPTDIR}/run_rocoto.sh + echo "module load rocoto" >> ${EXPTDIR}/run_rocoto.sh +fi +echo "rocotorun -w ${WFLOW_XML_FN} -d ${WFLOW_XML_FN%.*}.db" >> ${EXPTDIR}/run_rocoto.sh +chmod +x ${EXPTDIR}/run_rocoto.sh +# +#----------------------------------------------------------------------- +# +cp $USHrrfs/${EXPT_CONFIG_FN} $EXPTDIR +# +#----------------------------------------------------------------------- +# +# For convenience, print out the commands that need to be issued on the +# command line in order to launch the workflow and to check its status. +# Also, print out the command that should be placed in the user's cron- +# tab in order for the workflow to be continually resubmitted. +# +#----------------------------------------------------------------------- +# +wflow_db_fn="${WFLOW_XML_FN%.xml}.db" +rocotorun_cmd="rocotorun -w ${WFLOW_XML_FN} -d ${wflow_db_fn} -v 10" +rocotostat_cmd="rocotostat -w ${WFLOW_XML_FN} -d ${wflow_db_fn} -v 10" + +print_info_msg " +======================================================================== +======================================================================== + +Workflow generation completed. + +======================================================================== +======================================================================== + +The experiment directory is: + + > EXPTDIR=\"$EXPTDIR\" + +" + +print_info_msg "\ +To launch the workflow, first ensure that you have a compatible version +of rocoto loaded. For example, to load version 1.3.1 of rocoto, use + + > module load rocoto/1.3.1 + +" + +print_info_msg " +To launch the workflow, change location to the experiment directory +(EXPTDIR) and issue the rocotrun command, as follows: + + > cd $EXPTDIR + > ${rocotorun_cmd} + +To check on the status of the workflow, issue the rocotostat command +(also from the experiment directory): + + > ${rocotostat_cmd} + +Note that: + +1) The rocotorun command must be issued after the completion of each + task in the workflow in order for the workflow to submit the next + task(s) to the queue. + +2) In order for the output of the rocotostat command to be up-to-date, + the rocotorun command must be issued immediately before the rocoto- + stat command. + +For automatic resubmission of the workflow (say every 3 minutes), the +following line can be added to the user's crontab (use \"crontab -e\" to +edit the cron table): + +*/3 * * * * cd $EXPTDIR && ./run_rocoto.sh +or +*/3 * * * * cd $EXPTDIR && ./launch_FV3LAM_wflow.sh + +NOTE: '-l' was removed from the first line of launch_FV3LAM_wflow.sh +It is suggested to add the following line to the top of crontab + +SHELL=/bin/bash -l + + +Done. +" +# +#echo -e "../fix/.agent points to " $(readlink -f ${HOMErrfs}/fix/.agent) "\n" + +# +# If necessary, run the NOMADS script to source external model data. +# +#if [ "${NOMADS}" = "TRUE" ]; then +# echo "Getting NOMADS online data" +# echo "NOMADS_file_type=" $NOMADS_file_type +# cd $EXPTDIR +# $USHrrfs/NOMADS_get_extrn_mdl_files.sh $DATE_FIRST_CYCL $CYCL_HRS $NOMADS_file_type $FCST_LEN_HRS $LBC_SPEC_INTVL_HRS +#fi +#echo "here 1 " +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 +echo "finished ..." + +} +# +#----------------------------------------------------------------------- +# +# Start of the script that will call the experiment/workflow generation +# function defined above. +# +#----------------------------------------------------------------------- +# +set -u +[[ ! -f config.sh ]] && echo "config.sh not found!" && exit 1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Set directories. +# +#----------------------------------------------------------------------- +# +USHrrfs="${scrfunc_dir}" +# +# Set the name of and full path to the temporary file in which we will +# save some experiment/workflow variables. The need for this temporary +# file is explained below. +# +tmp_fn="tmp" +tmp_fp="$USHrrfs/${tmp_fn}" +rm -f "${tmp_fp}" +# +# Set the name of and full path to the log file in which the output from +# the experiment/workflow generation function will be saved. +# +log_fn="log.generate_FV3LAM_wflow" +log_fp="$USHrrfs/${log_fn}" +rm -f "${log_fp}" +# +# Call the generate_FV3LAM_wflow function defined above to generate the +# experiment/workflow. Note that we pipe the output of the function +# (and possibly other commands) to the "tee" command in order to be able +# to both save it to a file and print it out to the screen (stdout). +# The piping causes the call to the function (and the other commands +# grouped with it using the curly braces, { ... }) to be executed in a +# subshell. As a result, the experiment/workflow variables that the +# function sets are not available outside of the grouping, i.e. they are +# not available at and after the call to "tee". Since some of these va- +# riables are needed after the call to "tee" below, we save them in a +# temporary file and read them in outside the subshell later below. +# +{ +generate_FV3LAM_wflow 2>&1 # If this exits with an error, the whole {...} group quits, so things don't work... +retval=$? +echo "$EXPTDIR" >> "${tmp_fp}" +echo "$retval" >> "${tmp_fp}" +} | tee "${log_fp}" +# +# Read in experiment/workflow variables needed later below from the tem- +# porary file created in the subshell above containing the call to the +# generate_FV3LAM_wflow function. These variables are not directly +# available here because the call to generate_FV3LAM_wflow above takes +# place in a subshell (due to the fact that we are then piping its out- +# put to the "tee" command). Then remove the temporary file. +# +exptdir=$( sed "1q;d" "${tmp_fp}" ) +retval=$( sed "2q;d" "${tmp_fp}" ) +rm "${tmp_fp}" +# +# If the call to the generate_FV3LAM_wflow function above was success- +# ful, move the log file in which the "tee" command saved the output of +# the function to the experiment directory. +# +if [ $retval -eq 0 ]; then + mv "${log_fp}" "$exptdir" +# +# If the call to the generate_FV3LAM_wflow function above was not suc- +# cessful, print out an error message and exit with a nonzero return +# code. +# +else + printf " +Experiment/workflow generation failed. Check the log file from the ex- +periment/workflow generation script in the file specified by log_fp: + log_fp = \"${log_fp}\" +Stopping. +" + exit 1 +fi diff --git a/ush/load_modules_run_task.sh b/ush/load_modules_run_task.sh new file mode 100755 index 000000000..dfa64fe03 --- /dev/null +++ b/ush/load_modules_run_task.sh @@ -0,0 +1,234 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source necessary files. +# +#----------------------------------------------------------------------- +# +HOMErrfs=${HOMErrfs:-/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0} +USHrrfs=${HOMErrfs}/ush +WORKFLOW_MANAGER="rocoto" +MACHINE="WCOSS2" +VERBOSE='TRUE' + +#### . ${GLOBAL_VAR_DEFNS_FP} +. $USHrrfs/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u -x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Check arguments. +# +#----------------------------------------------------------------------- +# +if [ "$#" -ne 2 ]; then + + print_err_msg_exit " +Incorrect number of arguments specified: + + Number of arguments specified: $# + +Usage: + + ${scrfunc_fn} task_name jjob_fp + +where the arguments are defined as follows: + + task_name: + The name of the rocoto task for which this script will load modules + and launch the J-job. + + jjob_fp + The full path to the J-job script corresponding to task_name. This + script will launch this J-job using the \"exec\" command (which will + first terminate this script and then launch the j-job; see man page of + the \"exec\" command). +" + +fi +# +#----------------------------------------------------------------------- +# +# Get the task name and the name of the J-job script. +# +#----------------------------------------------------------------------- +# +task_name="$1" +jjob_fp="$2" +# +#----------------------------------------------------------------------- +# +# For NCO mode we need to define job and jobid +# +#----------------------------------------------------------------------- +# +set +u +if [ ! -z ${SLURM_JOB_ID} ]; then + export job=${SLURM_JOB_NAME} + export pid=${pid:-${SLURM_JOB_ID}} +elif [ ! -z ${PBS_JOBID} ]; then + export job=${PBS_JOBNAME} + export pid=${pid:-${PBS_JOBID}} +else + export job=${task_name} + export pid=${pid:-$$} +fi +export jobid=${job}.${pid} +set -u +# +#----------------------------------------------------------------------- +# +# Loading ufs-srweather-app build module files +# +#----------------------------------------------------------------------- +# +default_modules_dir="$HOMErrfs/modulefiles" +machine=$(echo_lowercase $MACHINE) +if [ "${WORKFLOW_MANAGER}" != "ecflow" ]; then + source "${USHrrfs}/etc/lmod-setup.sh" ${machine} +fi +module use "${default_modules_dir}" + +if [ "${machine}" != "wcoss2" ]; then + BUILD_MOD_FN="build_${machine}_intel" + module load "${BUILD_MOD_FN}" || print_err_msg_exit "\ + Loading of platform- and compiler-specific module file (BUILD_MOD_FN) +for the workflow task specified by task_name failed: + task_name = \"${task_name}\" + BUILD_MOD_FN = \"${BUILD_MOD_FN}\"" +fi + +# +#----------------------------------------------------------------------- +# +# Set the directory (modules_dir) in which the module files for the va- +# rious workflow tasks are located. Also, set the name of the module +# file for the specified task. +# +# A module file is a file whose first line is the "magic cookie" string +# '#%Module'. It is interpreted by the "module load ..." command. It +# sets environment variables (including prepending/appending to paths) +# and loads modules. +# +# The rrfs-workflow repository contains module files for the workflow +# tasks in the template rocoto XML file for the FV3-LAM workflow that +# need modules not loaded in the BUILD_MOD_FN above. +# +# The full path to a module file for a given task is +# +# $HOMEdir/modulefiles/$machine/${task_name}.local +# +# where HOMEdir is the base directory of the workflow, machine is the +# name of the machine that we're running on (in lowercase), and task_- +# name is the name of the current task (an input to this script). +# +#----------------------------------------------------------------------- +# +modules_dir="$default_modules_dir/tasks/$machine" +modulefile_name="${task_name}" +# +#----------------------------------------------------------------------- +# +# Load the module file for the specified task on the current machine. +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Loading modules for task \"${task_name}\" ..." + +module use "${modules_dir}" || print_err_msg_exit "\ +Call to \"module use\" command failed." + +# source version file (run) only if it is specified in versions directory +if [ "${machine}" = "wcoss2" ]; then + RUN_VER_FN="run.ver" + VERSION_FILE="${HOMErrfs}/versions/${RUN_VER_FN}" + if [ -f ${VERSION_FILE} ]; then + . ${VERSION_FILE} + fi + module load prod_util/${prod_util_ver} + module load prod_envir/${prod_envir_ver} +fi +# +# Load the .local module file if available for the given task +# +modulefile_local="${task_name}.local" +if [ -f ${modules_dir}/${modulefile_local}.lua ]; then + module load "${modulefile_local}" || print_err_msg_exit "\ +Loading .local module file (in directory specified by modules_dir) for the +specified task (task_name) failed: + task_name = \"${task_name}\" + modulefile_local = \"${modulefile_local}\" + modules_dir = \"${modules_dir}\"" +elif [ -f ${modules_dir}/python_srw.lua ] ; then + module load python_srw || print_err_msg_exit "\ + Loading common python module failed. Expected python_srw.lua + in the modules directory here: + modules_dir = \"${modules_dir}\"" +fi + +module list + +# Modules that use conda and need an environment activated will set the +# SRW_ENV variable to the name of the environment to be activated. That +# must be done within the script, and not inside the module. Do that now. + +if [ -n "${SRW_ENV:-}" ] ; then + set +u + conda activate ${SRW_ENV} + set -u + conda list +fi + +# +#----------------------------------------------------------------------- +# +# Use the exec command to terminate the current script and launch the +# J-job for the specified task. +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Launching J-job (jjob_fp) for task \"${task_name}\" ... + jjob_fp = \"${jjob_fp}\" +" + +if [ "${WORKFLOW_MANAGER}" = "ecflow" ]; then + /bin/bash "${jjob_fp}" + export err=$? + [ $err -ne 0 ]&& exit $err +else + exec "${jjob_fp}" +fi + +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/function. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/ush/sample_configs/RRFS_A/config.sh.rrfs_a_c3 b/ush/sample_configs/RRFS_A/config.sh.rrfs_a_c3 index fb65d0ff9..a9b0e6831 100644 --- a/ush/sample_configs/RRFS_A/config.sh.rrfs_a_c3 +++ b/ush/sample_configs/RRFS_A/config.sh.rrfs_a_c3 @@ -1,11 +1,14 @@ MACHINE="wcoss2" -version="v0.5.2" +MACHINETYPE="person" +version="v1.1.3" ACCOUNT="RRFS_DEV" #RESERVATION="rrfsdet" -EXPT_BASEDIR="/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/$version/" -EXPT_SUBDIR="rrfs_conus" +EXPT_BASEDIR="/lfs/h2/emc/lam/noscrub/Ming.Hu/rrfs/${version}" +EXPT_SUBDIR="rrfs_c3" +WFLOW_XML_TMPL_FN="FV3LAM_wflow_nco.xml" -PREDEF_GRID_NAME=RRFS_CONUS_3km +PREDEF_GRID_NAME="RRFS_CONUS_3km" +#PREDEF_GRID_NAME="RRFS_NA_3km" . set_rrfs_config_general.sh . set_rrfs_config_SDL_VDL_MixEn.sh @@ -22,32 +25,37 @@ DO_RETRO="FALSE" DO_ANALYSIS_NONVARCLD="TRUE" DO_ENVAR_RADAR_REF="TRUE" DO_SMOKE_DUST="TRUE" +EBB_DCYCLE="2" RADARREFL_TIMELEVEL=(0) FH_DFI_RADAR="0.0,0.25,0.5" DO_SOIL_ADJUST="TRUE" DO_RADDA="TRUE" DO_BUFRSND="TRUE" USE_FVCOM="TRUE" -PREP_FVCOM="TRUE" -DO_PARALLEL_PRDGEN="FALSE" +PREP_FVCOM="FALSE" +USE_CLM="TRUE" +DO_PARALLEL_PRDGEN="TRUE" DO_GSIDIAG_OFFLINE="TRUE" -USE_CLM="FALSE" +DO_UPDATE_BC="TRUE" +DO_GLM_FED_DA="TRUE" +GLMFED_DATA_MODE="PROD" EXTRN_MDL_ICS_OFFSET_HRS="3" LBC_SPEC_INTVL_HRS="1" EXTRN_MDL_LBCS_OFFSET_HRS="6" -BOUNDARY_LEN_HRS="72" -BOUNDARY_PROC_GROUP_NUM="72" +BOUNDARY_LEN_HRS="24" +BOUNDARY_PROC_GROUP_NUM="24" # avaialble retro period: # 20210511-20210531; 20210718-20210801 -DATE_FIRST_CYCL="20230501" -DATE_LAST_CYCL="20230531" +DATE_FIRST_CYCL="20251216" +DATE_LAST_CYCL="20251216" CYCL_HRS=( "00" "12" ) CYCL_HRS_SPINSTART=("03" "15") CYCL_HRS_PRODSTART=("09" "21") -CYCLEMONTH="05" -CYCLEDAY="*" +CYCLEMONTH="12" +CYCLEDAY="16-16" +SOIL_SURGERY_time=2023100916 STARTYEAR=${DATE_FIRST_CYCL:0:4} STARTMONTH=${DATE_FIRST_CYCL:4:2} @@ -67,54 +75,71 @@ if [[ $DO_SPINUP == "TRUE" ]] ; then SPINUP_CYCLEDEF="00 03-08,15-20 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" fi -FCST_LEN_HRS="18" +FCST_LEN_HRS="03" FCST_LEN_HRS_SPINUP="1" #FCST_LEN_HRS_CYCLES=(48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18) -for i in {0..23}; do FCST_LEN_HRS_CYCLES[$i]=18; done -for i in {0..23..6}; do FCST_LEN_HRS_CYCLES[$i]=60; done +for i in {0..23}; do FCST_LEN_HRS_CYCLES[$i]=03; done +for i in {0..23..6}; do FCST_LEN_HRS_CYCLES[$i]=12; done DA_CYCLE_INTERV="1" -RESTART_INTERVAL="1 2" -RESTART_INTERVAL_LONG="1 2" +RESTART_INTERVAL="1" +RESTART_INTERVAL_LONG="1 12" ## set up post -POSTPROC_LEN_HRS="18" -POSTPROC_LONG_LEN_HRS="60" -NFHOUT_HF="1" -# 15 min output upto 18 hours -#NFHMAX_HF="18" -#NFHOUT="1" -#NSOUT="15" -#NSOUT_MIN="15" - -USE_RRFSE_ENS="TRUE" +POSTPROC_LEN_HRS="03" +POSTPROC_LONG_LEN_HRS="12" +POSTPROC_SUBH_LEN_HRS="03" + +# default +OUTPUT_FH="1 -1" +#set UPP/prodgen for 15 min output +NFHMAX_HF="03" +NFHOUT="1" +NSOUT_MIN="15" + +USE_RRFSE_ENS="FALSE" CYCL_HRS_HYB_FV3LAM_ENS=("00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23") SST_update_hour=01 GVF_update_hour=04 -SNOWICE_update_hour=00 +SNOWICE_update_hour=01 netcdf_diag=.true. binary_diag=.false. +WRTCMP_output_file="netcdf_parallel" +WRTCMP_ideflate="1" +WRTCMP_quantize_nsd="18" -regional_ensemble_option=5 +#LAYOUT_X="43" +#LAYOUT_Y="64" +#NNODES_FORECAST="52" +#WRTCMP_write_groups="3" +#WRTCMP_write_tasks_per_group="192" + + +regional_ensemble_option=1 +if [[ ${USE_RRFSE_ENS} == "TRUE" ]]; then + regional_ensemble_option=5 # 5 for RRFS ensemble +fi EXTRN_MDL_NAME_ICS="GFS" EXTRN_MDL_NAME_LBCS="GFS" envir="para" -NET="rrfs_a" -TAG="c3v52" +NET="rrfs" +TAG="c3v112" -MODEL="rrfs_a" +MODEL="rrfs" RUN="rrfs" +WGF="det" . set_rrfs_config.sh -STMP="/lfs/h2/emc/stmp/emc.lam/rrfs/${version}" # Path to directory STMP that mostly contains input files. -PTMP="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}" # Path to directory STMP that mostly contains input files. -GESROOT="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files +DCOM_ROOT="/lfs/h1/ops/prod/dcom" +STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files if [[ ${regional_ensemble_option} == "5" ]]; then - RRFSE_GESROOT="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}/nwges" # Path to RRFSE directory GESROOT that mostly contains ensemble restart files for GSI hybrid. + RRFSE_GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/com" # Path to RRFSE directory GESROOT that mostly contains ensemble restart files for GSI hybrid. NUM_ENS_MEMBERS=30 # FV3LAM ensemble size for GSI hybrid analysis - CYCL_HRS_PRODSTART_ENS=( "07" "19" ) + CYCL_HRS_PRODSTART_ENS=( "08" "20" ) DO_ENVAR_RADAR_REF="TRUE" fi diff --git a/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_c3 b/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_c3 index e3299ec8d..145f012eb 100644 --- a/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_c3 +++ b/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_c3 @@ -1,12 +1,13 @@ MACHINE="wcoss2" -version="v0.5.2" +MACHINETYPE="person" +version="v1.1.3" ACCOUNT="RRFS_DEV" -#RESERVATION="rrfsens" -#RESERVATION_POST="rrfsdet" -EXPT_BASEDIR="/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/${version}/" -EXPT_SUBDIR="rrfs_conus_enkf" +#RESERVATION="rrfsdet" +EXPT_BASEDIR="/lfs/h2/emc/lam/noscrub/Ming.Hu/rrfs/${version}" +EXPT_SUBDIR="rrfs_c3_enkf" +WFLOW_XML_TMPL_FN="FV3LAM_wflow_nco.xml" -PREDEF_GRID_NAME=RRFS_CONUS_3km +PREDEF_GRID_NAME="RRFS_CONUS_3km" . set_rrfs_config_general.sh @@ -29,35 +30,52 @@ DO_SMOKE_DUST="FALSE" #DO_BUFRSND="TRUE" #USE_FVCOM="TRUE" #PREP_FVCOM="TRUE" +DO_GLM_FED_DA="TRUE" +GLMFED_DATA_MODE="PROD" +PREP_MODEL_FOR_FED="TRUE" +USE_CLM="TRUE" +DO_PARALLEL_PRDGEN="TRUE" +DO_GSIDIAG_OFFLINE="FALSE" + +# Options for blending or cold2warm start conversion. +DO_ENS_BLENDING="TRUE" +if [[ ${DO_ENS_BLENDING} == "TRUE" ]] ; then + ENS_BLENDING_LENGTHSCALE=960 + BLEND="TRUE" # TRUE: Blend RRFS and GDAS EnKF + # FALSE: Don't blend, activate cold2warm start only, and use either GDAS or RRFS + USE_HOST_ENKF="TRUE" # TRUE: Final EnKF (u,v,t,delp,sphum) will be GDAS (no blending) + # FALSE: Final EnKF (u,v,t,delp,sphum) will be RRFS (no blending) +fi if [[ ${DO_ENSFCST} == "TRUE" ]] ; then - EXPT_SUBDIR="rrfs_conus_enfcst" + EXPT_SUBDIR="rrfs_na_enfcst" DO_SPINUP="FALSE" - DO_SAVE_DA_OUTPUT="FALSE" + DO_SAVE_DA_OUTPUT="TRUE" DO_ANALYSIS_NONVARCLD="FALSE" DO_POST_PROD="TRUE" + DO_BUFRSND="TRUE" fi -EXTRN_MDL_ICS_OFFSET_HRS="30" +EXTRN_MDL_ICS_OFFSET_HRS="7" LBC_SPEC_INTVL_HRS="1" EXTRN_MDL_LBCS_OFFSET_HRS="6" BOUNDARY_LEN_HRS="12" -BOUNDARY_PROC_GROUP_NUM="4" +BOUNDARY_PROC_GROUP_NUM="12" # avaialble retro period: # 20210511-20210531; 20210718-20210801 -DATE_FIRST_CYCL="20230401" -DATE_LAST_CYCL="20230531" +DATE_FIRST_CYCL="20251216" +DATE_LAST_CYCL="20251216" CYCL_HRS=( "00" "12" ) CYCL_HRS=( "18" ) -CYCL_HRS_SPINSTART=("06" "18") -CYCL_HRS_PRODSTART=("07" "19") +CYCL_HRS_SPINSTART=("07" "19") +CYCL_HRS_PRODSTART=("08" "20") if [[ ${DO_ENSFCST} == "TRUE" ]] ; then CYCL_HRS_STOCH=("00" "06" "12" "18") fi #CYCL_HRS_RECENTER=("19") -CYCLEMONTH="04,05" -CYCLEDAY="*" +CYCLEMONTH="12" +CYCLEDAY="16-16" STARTYEAR=${DATE_FIRST_CYCL:0:4} STARTMONTH=${DATE_FIRST_CYCL:4:2} @@ -69,26 +87,26 @@ ENDDAY=${DATE_LAST_CYCL:6:2} ENDHOUR="23" PREEXISTING_DIR_METHOD="upgrade" # "rename" -INITIAL_CYCLEDEF="${DATE_FIRST_CYCL}1800 ${DATE_LAST_CYCL}2300 12:00:00" -BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}1800 ${DATE_LAST_CYCL}2300 06:00:00" -PROD_CYCLEDEF="00 01-05,07-11,13-17,19-23 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" +INITIAL_CYCLEDEF="${DATE_FIRST_CYCL}0700 ${DATE_LAST_CYCL}2300 12:00:00" +BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" +PROD_CYCLEDEF="00 01-05,08-11,13-17,20-23 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" PRODLONG_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" #RECENTER_CYCLEDEF="00 19 * 10 2022 *" if [[ ${DO_ENSFCST} == "TRUE" ]] ; then BOUNDARY_LEN_HRS="60" - LBC_SPEC_INTVL_HRS="1" + LBC_SPEC_INTVL_HRS="3" DO_SPINUP="FALSE" INITIAL_CYCLEDEF="00 01 01 01 2100 *" - BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}1200 ${DATE_LAST_CYCL}2300 06:00:00" - PROD_CYCLEDEF="${DATE_FIRST_CYCL}1200 ${DATE_LAST_CYCL}2300 06:00:00" + BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" + PROD_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" PRODLONG_CYCLEDEF="00 01 01 01 2100 *" - RECENTER_CYCLEDEF="${DATE_FIRST_CYCL}1200 ${DATE_LAST_CYCL}2300 06:00:00" + RECENTER_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" fi if [[ $DO_SPINUP == "TRUE" ]] ; then - SPINUP_CYCLEDEF="${DATE_FIRST_CYCL}1800 ${DATE_LAST_CYCL}2300 12:00:00" + SPINUP_CYCLEDEF="${DATE_FIRST_CYCL}0700 ${DATE_LAST_CYCL}2300 12:00:00" fi if [[ $DO_SAVE_DA_OUTPUT == "TRUE" ]] ; then - SAVEDA_CYCLEDEF="${DATE_FIRST_CYCL}1200 ${DATE_LAST_CYCL}2300 06:00:00" + SAVEDA_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" fi FCST_LEN_HRS="1" @@ -96,11 +114,11 @@ FCST_LEN_HRS_SPINUP="1" POSTPROC_LEN_HRS="1" #FCST_LEN_HRS_CYCLES=(48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18) for i in {0..23}; do FCST_LEN_HRS_CYCLES[$i]=1; done -for i in {0..23..6}; do FCST_LEN_HRS_CYCLES[$i]=1; done +for i in {0..23..6}; do FCST_LEN_HRS_CYCLES[$i]=1; done if [[ ${DO_ENSFCST} == "TRUE" ]] ; then - for i in {0..23..06}; do FCST_LEN_HRS_CYCLES[$i]=60; done - FCST_LEN_HRS="60" - POSTPROC_LEN_HRS="60" + for i in {0..23..06}; do FCST_LEN_HRS_CYCLES[$i]=24; done + FCST_LEN_HRS="24" + POSTPROC_LEN_HRS="24" BOUNDARY_PROC_GROUP_NUM="10" fi DA_CYCLE_INTERV="1" @@ -108,30 +126,28 @@ RESTART_INTERVAL="1" RESTART_INTERVAL_LONG="1" netcdf_diag=.true. binary_diag=.false. +WRTCMP_output_file="netcdf_parallel" +WRTCMP_ideflate="1" +WRTCMP_quantize_nsd="18" ## set up post -#NFHOUT_HF="1" -#NFHMAX_HF="18" -#NFHOUT="3" +OUTPUT_FH="1 -1" WTIME_FORECAST="00:30:00" WTIME_FORECAST_LONG="03:45:00" +#PPN_ANALYSIS_GSI="16" NNODES_ANALYSIS_GSI="1" +#TPP_ANALYSIS_GSI="8" -EXTRN_MDL_NAME_ICS="GEFS" +EXTRN_MDL_NAME_ICS="GDASENKF" EXTRN_MDL_NAME_LBCS="GEFS" -EXTRN_MDL_SOURCE_BASEDIR_ICS="/mnt/lfs4/BMC/wrfruc/RRFSE/data/gens" -EXTRN_MDL_SOURCE_BASEDIR_LBCS="/mnt/lfs4/BMC/wrfruc/RRFSE/data/gens" - -GFS_FILE_FMT_ICS="grib2" +GFS_FILE_FMT_ICS="netcdf" GFS_FILE_FMT_LBCS="grib2" envir="para" -NET="rrfs_a" -MODEL="rrfs_b" +NET="rrfs" +MODEL="RRFS" -SPPINT=36 -LNDPINT=180 if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then NUM_ENS_MEMBERS=30 # DO_ENSCONTROL="TRUE" @@ -151,9 +167,13 @@ if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then START_TIME_SPINUP="00:30:00" LAYOUT_X="11" LAYOUT_Y="32" - NNODES_FORECAST="6" + NNODES_FORECAST="3" + PPN_FORECAST="128" + TPP_FORECAST="1" + WRTCMP_write_groups="1" + WRTCMP_write_tasks_per_group="32" - NUM_ENS_MEMBERS_FCST=9 + NUM_ENS_MEMBERS_FCST=5 if [[ ${DO_ENSFCST} == "TRUE" ]] ; then NUM_ENS_MEMBERS=${NUM_ENS_MEMBERS_FCST} WTIME_FORECAST="04:45:00" @@ -162,36 +182,49 @@ if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then LAYOUT_X="31" LAYOUT_Y="32" NNODES_FORECAST="16" +# WRTCMP_write_groups="1" +# WRTCMP_write_tasks_per_group="128" + DO_ENSFCST_MULPHY="TRUE" DO_SPP="TRUE" - DO_SPPT="TRUE" + DO_SPPT="FALSE" DO_SKEB="FALSE" - SPPT_MAG="0.7" + SPPT_MAG="0.5" DO_LSM_SPP="TRUE" DO_RECENTER="TRUE" fi - PPN_RECENTER="$(( ${NUM_ENS_MEMBERS} + 1 ))" - NNODES_RECENTER="3" + PPN_RECENTER="128" + NNODES_RECENTER="5" fi +SPPINT=36 +LNDPINT=180 + RUN_ensctrl="rrfs" RUN="enkfrrfs" -TAG="c3enkf52" +TAG="c3enkf112" +WGF="enkf" if [[ ${DO_ENSFCST} == "TRUE" ]] ; then RUN="refs" - TAG="c3enfcst52" + TAG="c3enfcst112" + WGF="ensf" fi . set_rrfs_config.sh -STMP="/lfs/h2/emc/stmp/emc.lam/rrfs/${version}" # Path to directory STMP that mostly contains input files. +EXTRN_MDL_SOURCE_BASEDIR_ICS=/lfs/h1/ops/prod/com/gefs/v12.3 +EXTRN_MDL_SOURCE_BASEDIR_LBCS=/lfs/h1/ops/prod/com/gefs/v12.3 + +DCOM_ROOT="/lfs/h1/ops/prod/dcom" +STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files if [[ ${DO_ENSFCST} == "TRUE" ]] ; then - STMP="/lfs/h2/emc/stmp/emc.lam/rrfs/${version}/enfcst" # Path to directory STMP that mostly contains input files. + STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. + PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. + GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files fi -PTMP="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}" # Path to directory STMP that mostly contains input files. -GESROOT="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files -ENSCTRL_STMP="/lfs/h2/emc/stmp/emc.lam/rrfs/${version}" # Path to directory STMP that mostly contains control input files for ensemble recentering. -ENSCTRL_PTMP="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}" # Path to directory STMP that mostly contains control input files for ensemble recentering. -ENSCTRL_GESROOT="/lfs/h2/emc/ptmp/emc.lam/rrfs/${version}/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. - +ENSCTRL_STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. diff --git a/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_n3_nco b/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_n3_nco new file mode 100644 index 000000000..e1cde812a --- /dev/null +++ b/ush/sample_configs/RRFS_A/config.sh_rrfs_a_enkf_n3_nco @@ -0,0 +1,228 @@ +MACHINE="wcoss2" +MACHINETYPE="person" +version="v1.1.3" +ACCOUNT="RRFS_DEV" +#RESERVATION="rrfsdet" +EXPT_BASEDIR="/lfs/h2/emc/lam/noscrub/Ming.Hu/rrfs/${version}" +EXPT_SUBDIR="rrfs_na_enkf" +WFLOW_XML_TMPL_FN="FV3LAM_wflow_nco.xml" + +PREDEF_GRID_NAME="RRFS_NA_3km" + +. set_rrfs_config_general.sh + +DO_ENSEMBLE="TRUE" +#DO_ENSFCST="TRUE" +#DO_DACYCLE="TRUE" +#DO_SURFACE_CYCLE="TRUE" +DO_SPINUP="TRUE" +DO_SAVE_DA_OUTPUT="TRUE" +DO_POST_SPINUP="FALSE" +DO_POST_PROD="FALSE" +#DO_RETRO="TRUE" +DO_ANALYSIS_NONVARCLD="TRUE" +#DO_ENVAR_RADAR_REF="TRUE" +DO_SMOKE_DUST="FALSE" +#RADARREFL_TIMELEVEL=(0) +#FH_DFI_RADAR="0.0,0.25,0.5" +#DO_SOIL_ADJUST="TRUE" +#DO_RADDA="FALSE" +#DO_BUFRSND="TRUE" +#USE_FVCOM="TRUE" +#PREP_FVCOM="TRUE" +DO_GLM_FED_DA="TRUE" +GLMFED_DATA_MODE="PROD" +PREP_MODEL_FOR_FED="TRUE" +USE_CLM="TRUE" +DO_PARALLEL_PRDGEN="TRUE" +DO_GSIDIAG_OFFLINE="FALSE" + +# Options for blending or cold2warm start conversion. +DO_ENS_BLENDING="TRUE" +if [[ ${DO_ENS_BLENDING} == "TRUE" ]] ; then + ENS_BLENDING_LENGTHSCALE=960 + BLEND="TRUE" # TRUE: Blend RRFS and GDAS EnKF + # FALSE: Don't blend, activate cold2warm start only, and use either GDAS or RRFS + USE_HOST_ENKF="TRUE" # TRUE: Final EnKF (u,v,t,delp,sphum) will be GDAS (no blending) + # FALSE: Final EnKF (u,v,t,delp,sphum) will be RRFS (no blending) +fi + +if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + EXPT_SUBDIR="rrfs_na_enfcst" + DO_SPINUP="FALSE" + DO_SAVE_DA_OUTPUT="TRUE" + DO_ANALYSIS_NONVARCLD="FALSE" + DO_POST_PROD="TRUE" + DO_BUFRSND="TRUE" +fi + +EXTRN_MDL_ICS_OFFSET_HRS="7" +LBC_SPEC_INTVL_HRS="1" +EXTRN_MDL_LBCS_OFFSET_HRS="6" +BOUNDARY_LEN_HRS="12" +BOUNDARY_PROC_GROUP_NUM="12" + +# avaialble retro period: +# 20210511-20210531; 20210718-20210801 +DATE_FIRST_CYCL="20251210" +DATE_LAST_CYCL="20251211" +CYCL_HRS=( "00" "12" ) +CYCL_HRS=( "18" ) +CYCL_HRS_SPINSTART=("07" "19") +CYCL_HRS_PRODSTART=("08" "20") +if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + CYCL_HRS_STOCH=("00" "06" "12" "18") +fi +#CYCL_HRS_RECENTER=("19") +CYCLEMONTH="12" +CYCLEDAY="10-11" + +STARTYEAR=${DATE_FIRST_CYCL:0:4} +STARTMONTH=${DATE_FIRST_CYCL:4:2} +STARTDAY=${DATE_FIRST_CYCL:6:2} +STARTHOUR="00" +ENDYEAR=${DATE_LAST_CYCL:0:4} +ENDMONTH=${DATE_LAST_CYCL:4:2} +ENDDAY=${DATE_LAST_CYCL:6:2} +ENDHOUR="23" + +PREEXISTING_DIR_METHOD="upgrade" # "rename" +INITIAL_CYCLEDEF="${DATE_FIRST_CYCL}0700 ${DATE_LAST_CYCL}2300 12:00:00" +BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" +PROD_CYCLEDEF="00 01-05,08-11,13-17,20-23 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" +PRODLONG_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" +#RECENTER_CYCLEDEF="00 19 * 10 2022 *" +if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + BOUNDARY_LEN_HRS="60" + LBC_SPEC_INTVL_HRS="3" + DO_SPINUP="FALSE" + INITIAL_CYCLEDEF="00 01 01 01 2100 *" + BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" + PROD_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" + PRODLONG_CYCLEDEF="00 01 01 01 2100 *" + RECENTER_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" +fi +if [[ $DO_SPINUP == "TRUE" ]] ; then + SPINUP_CYCLEDEF="${DATE_FIRST_CYCL}0700 ${DATE_LAST_CYCL}2300 12:00:00" +fi +if [[ $DO_SAVE_DA_OUTPUT == "TRUE" ]] ; then + SAVEDA_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" +fi + +FCST_LEN_HRS="1" +FCST_LEN_HRS_SPINUP="1" +POSTPROC_LEN_HRS="1" +#FCST_LEN_HRS_CYCLES=(48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18) +for i in {0..23}; do FCST_LEN_HRS_CYCLES[$i]=1; done +for i in {0..23..6}; do FCST_LEN_HRS_CYCLES[$i]=1; done +if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + for i in {0..23..06}; do FCST_LEN_HRS_CYCLES[$i]=24; done + FCST_LEN_HRS="24" + POSTPROC_LEN_HRS="24" + BOUNDARY_PROC_GROUP_NUM="10" +fi +DA_CYCLE_INTERV="1" +RESTART_INTERVAL="1" +RESTART_INTERVAL_LONG="1" +netcdf_diag=.true. +binary_diag=.false. +WRTCMP_output_file="netcdf_parallel" +WRTCMP_ideflate="1" +WRTCMP_quantize_nsd="18" + +## set up post +OUTPUT_FH="1 -1" + +WTIME_FORECAST="00:30:00" +WTIME_FORECAST_LONG="04:45:00" +PPN_ANALYSIS_GSI="16" +NNODES_ANALYSIS_GSI="1" +TPP_ANALYSIS_GSI="8" + +EXTRN_MDL_NAME_ICS="GDASENKF" +EXTRN_MDL_NAME_LBCS="GEFS" +GFS_FILE_FMT_ICS="netcdf" +GFS_FILE_FMT_LBCS="grib2" + +envir="para" +NET="rrfs" +MODEL="RRFS" + +if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then + NUM_ENS_MEMBERS=30 +# DO_ENSCONTROL="TRUE" + DO_GSIOBSERVER="TRUE" + DO_ENKFUPDATE="TRUE" +# DO_RECENTER="TRUE" + DO_ENKF_RADAR_REF="TRUE" + DO_ENSINIT="TRUE" + + RADAR_REF_THINNING="2" + CLEAN_OLDFCST_HRS="12" + CLEAN_OLDSTMPPOST_HRS="12" + cld_bld_hgt=0.0 + l_precip_clear_only=.true. + write_diag_2=.true. + + START_TIME_SPINUP="00:30:00" + LAYOUT_X="16" + LAYOUT_Y="48" + NNODES_FORECAST="12" + WRTCMP_write_groups="1" + WRTCMP_write_tasks_per_group="64" + + NUM_ENS_MEMBERS_FCST=5 + if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + NUM_ENS_MEMBERS=${NUM_ENS_MEMBERS_FCST} + WTIME_FORECAST="04:45:00" + WTIME_MAKE_LBCS="01:30:00" + + LAYOUT_X="50" + LAYOUT_Y="64" + NNODES_FORECAST="52" + WRTCMP_write_groups="1" + WRTCMP_write_tasks_per_group="128" + + DO_ENSFCST_MULPHY="TRUE" + DO_SPP="TRUE" + DO_SPPT="FALSE" + DO_SKEB="FALSE" + SPPT_MAG="0.5" + DO_LSM_SPP="TRUE" + DO_RECENTER="TRUE" + + fi + PPN_RECENTER="128" + NNODES_RECENTER="10" +fi + +SPPINT=36 +LNDPINT=180 + +RUN_ensctrl="rrfs" +RUN="enkfrrfs" +TAG="n3enkf113" +WGF="enkf" +if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + RUN="refs" + TAG="n3enfcst113" + WGF="ensf" +fi + +. set_rrfs_config.sh + +EXTRN_MDL_SOURCE_BASEDIR_ICS=/lfs/h1/ops/prod/com/gefs/v12.3 +EXTRN_MDL_SOURCE_BASEDIR_LBCS=/lfs/h1/ops/prod/com/gefs/v12.3 + +DCOM_ROOT="/lfs/h1/ops/prod/dcom" +STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files +if [[ ${DO_ENSFCST} == "TRUE" ]] ; then + STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. + PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. + GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files +fi +ENSCTRL_STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. diff --git a/ush/sample_configs/RRFS_A/config.sh_rrfs_a_n3_nco b/ush/sample_configs/RRFS_A/config.sh_rrfs_a_n3_nco new file mode 100644 index 000000000..4e261b09a --- /dev/null +++ b/ush/sample_configs/RRFS_A/config.sh_rrfs_a_n3_nco @@ -0,0 +1,144 @@ +MACHINE="wcoss2" +MACHINETYPE="person" +version="v1.1.3" +ACCOUNT="RRFS_DEV" +#RESERVATION="rrfsdet" +EXPT_BASEDIR="/lfs/h2/emc/lam/noscrub/Ming.Hu/rrfs/${version}" +EXPT_SUBDIR="rrfs_na" +WFLOW_XML_TMPL_FN="FV3LAM_wflow_nco.xml" + +PREDEF_GRID_NAME="RRFS_NA_3km" + +. set_rrfs_config_general.sh +. set_rrfs_config_SDL_VDL_MixEn.sh + +#DO_ENSEMBLE="TRUE" +#DO_ENSFCST="TRUE" +DO_DACYCLE="TRUE" +DO_SURFACE_CYCLE="TRUE" +DO_SPINUP="TRUE" +DO_SAVE_INPUT="TRUE" +DO_POST_SPINUP="FALSE" +DO_POST_PROD="TRUE" +DO_RETRO="FALSE" +DO_ANALYSIS_NONVARCLD="TRUE" +DO_ENVAR_RADAR_REF="TRUE" +DO_SMOKE_DUST="TRUE" +EBB_DCYCLE="2" +RADARREFL_TIMELEVEL=(0) +FH_DFI_RADAR="0.0,0.25,0.5" +DO_SOIL_ADJUST="TRUE" +DO_RADDA="TRUE" +DO_BUFRSND="TRUE" +USE_FVCOM="TRUE" +PREP_FVCOM="FALSE" +USE_CLM="TRUE" +DO_PARALLEL_PRDGEN="TRUE" +DO_GSIDIAG_OFFLINE="TRUE" +DO_UPDATE_BC="TRUE" +DO_GLM_FED_DA="TRUE" +GLMFED_DATA_MODE="PROD" + +EXTRN_MDL_ICS_OFFSET_HRS="3" +LBC_SPEC_INTVL_HRS="1" +EXTRN_MDL_LBCS_OFFSET_HRS="6" +BOUNDARY_LEN_HRS="24" +BOUNDARY_PROC_GROUP_NUM="24" + +# avaialble retro period: +# 20210511-20210531; 20210718-20210801 +DATE_FIRST_CYCL="20251210" +DATE_LAST_CYCL="20251211" +CYCL_HRS=( "00" "12" ) +CYCL_HRS_SPINSTART=("03" "15") +CYCL_HRS_PRODSTART=("09" "21") +CYCLEMONTH="12" +CYCLEDAY="10-11" +SOIL_SURGERY_time=2023100916 + +STARTYEAR=${DATE_FIRST_CYCL:0:4} +STARTMONTH=${DATE_FIRST_CYCL:4:2} +STARTDAY=${DATE_FIRST_CYCL:6:2} +STARTHOUR="00" +ENDYEAR=${DATE_LAST_CYCL:0:4} +ENDMONTH=${DATE_LAST_CYCL:4:2} +ENDDAY=${DATE_LAST_CYCL:6:2} +ENDHOUR="23" + +PREEXISTING_DIR_METHOD="upgrade" +INITIAL_CYCLEDEF="${DATE_FIRST_CYCL}0300 ${DATE_LAST_CYCL}2300 12:00:00" +BOUNDARY_CYCLEDEF="${DATE_FIRST_CYCL}0000 ${DATE_LAST_CYCL}2300 06:00:00" +PROD_CYCLEDEF="00 01-05,07-11,13-17,19-23 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" +PRODLONG_CYCLEDEF="00 00,06,12,18 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" +if [[ $DO_SPINUP == "TRUE" ]] ; then + SPINUP_CYCLEDEF="00 03-08,15-20 ${CYCLEDAY} ${CYCLEMONTH} ${STARTYEAR} *" +fi + +FCST_LEN_HRS="03" +FCST_LEN_HRS_SPINUP="1" +#FCST_LEN_HRS_CYCLES=(48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18 48 18 18 18 18 18) +for i in {0..23}; do FCST_LEN_HRS_CYCLES[$i]=03; done +for i in {0..23..6}; do FCST_LEN_HRS_CYCLES[$i]=12; done +DA_CYCLE_INTERV="1" +RESTART_INTERVAL="1" +RESTART_INTERVAL_LONG="1 12" +## set up post +POSTPROC_LEN_HRS="03" +POSTPROC_LONG_LEN_HRS="12" +POSTPROC_SUBH_LEN_HRS="03" + +# default +OUTPUT_FH="1 -1" +#set UPP/prodgen for 15 min output +NFHMAX_HF="03" +NFHOUT="1" +NSOUT_MIN="15" + +USE_RRFSE_ENS="FALSE" +CYCL_HRS_HYB_FV3LAM_ENS=("00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23") + +SST_update_hour=01 +GVF_update_hour=04 +SNOWICE_update_hour=01 +netcdf_diag=.true. +binary_diag=.false. +WRTCMP_output_file="netcdf_parallel" +WRTCMP_ideflate="1" +WRTCMP_quantize_nsd="18" + +LAYOUT_X="43" +LAYOUT_Y="64" +NNODES_FORECAST="52" +WRTCMP_write_groups="3" +WRTCMP_write_tasks_per_group="192" + + +regional_ensemble_option=1 +if [[ ${USE_RRFSE_ENS} == "TRUE" ]]; then + regional_ensemble_option=5 # 5 for RRFS ensemble +fi + +EXTRN_MDL_NAME_ICS="GFS" +EXTRN_MDL_NAME_LBCS="GFS" + +envir="para" + +NET="rrfs" +TAG="n3v113" + +MODEL="rrfs" +RUN="rrfs" +WGF="det" + +. set_rrfs_config.sh + +DCOM_ROOT="/lfs/h1/ops/prod/dcom" +STMP="/lfs/h2/emc/stmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +PTMP="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}" # Path to directory STMP that mostly contains input files. +GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/nwges" # Path to directory GESROOT that save boundary, cold initial, restart files +if [[ ${regional_ensemble_option} == "5" ]]; then + RRFSE_GESROOT="/lfs/h2/emc/ptmp/Ming.Hu/rrfs/${version}/com" # Path to RRFSE directory GESROOT that mostly contains ensemble restart files for GSI hybrid. + NUM_ENS_MEMBERS=30 # FV3LAM ensemble size for GSI hybrid analysis + CYCL_HRS_PRODSTART_ENS=( "08" "20" ) + DO_ENVAR_RADAR_REF="TRUE" +fi diff --git a/ush/sample_configs/config_c3/det/data_table b/ush/sample_configs/config_c3/det/data_table new file mode 100644 index 000000000..e69de29bb diff --git a/ush/sample_configs/config_c3/det/fd_ufs.yaml b/ush/sample_configs/config_c3/det/fd_ufs.yaml new file mode 100644 index 000000000..a91ff96d6 --- /dev/null +++ b/ush/sample_configs/config_c3/det/fd_ufs.yaml @@ -0,0 +1,1232 @@ + field_dictionary: + version_number: 0.0.0 + institution: National ESPC, CSC & MCL Working Groups + source: automatically generated by the NUOPC Layer + description: Community-based dictionary for shared coupling fields + entries: + # + #----------------------------------- + # section: mediator calculation for atm/ocn flux calculation + #----------------------------------- + # + - standard_name: Faox_lat + alias: mean_laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator calculation - atm/ocn surface latent heat flux + # + - standard_name: Faox_lwup + alias: mean_up_lw_flx_ocn + canonical_units: W m-2 + description: mediator calculation - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Foxx_lwnet + alias: mean_net_lw_flx + canonical_units: W m-2 + description: mediator calculation - atm/ocn net longwave flux + # + - standard_name: Foxx_sen + canonical_units: W m-2 + alias: mean_sensi_heat_flx + description: mediator calculation - atm/ocn surface sensible heat flux + # + - standard_name: Foxx_evap + canonical_units: kg m-2 s-1 + alias: mean_evap_rate + description: mediator calculation - atm/ocn specific humidity flux + # + - standard_name: Faox_evap + canonical_units: kg m-2 s-1 + description: mediator calculation - atm/ocn specific humidity flux + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_bcph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_ocph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstdry + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstwet + canonical_units: kg m-2 s-1 + description: atmosphere export + # + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_swdn + alias: inst_down_sw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward SW heat flux + # + - standard_name: Faxa_lwdn + alias: inst_down_lw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward LW heat flux + # + - standard_name: Faxa_rain + alias: inst_prec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainc + alias: inst_prec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainl + alias: inst_prec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snow + alias: inst_fprec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowc + alias: inst_fprec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowl + alias: inst_fprec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_swnet + alias: inst_net_sw_flx + canonical_units: W m-2 + description: atmosphere export + # + - standard_name: Faxa_swndf + alias: inst_down_sw_ir_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir diffuse flux + # + - standard_name: Faxa_swndr + alias: inst_down_sw_ir_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir direct flux + # + - standard_name: Faxa_swvdf + alias: inst_down_sw_vis_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+vis diffuse flux + # + - standard_name: Faxa_swvdr + alias: inst_down_sw_vis_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+visvdirect flux + # + - standard_name: Sa_dens + alias: air_density_height_lowest + canonical_units: kg m-3 + description: atmosphere export- density at the lowest model layer + # + - standard_name: Sa_pbot + alias: inst_pres_height_lowest + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_prsl + alias: inst_pres_height_lowest_from_phys + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_pslv + alias: inst_pres_height_surface + canonical_units: Pa + description: atmosphere export - instantaneous pressure land and sea surface + # + - standard_name: Sa_ptem + canonical_units: K + description: atmosphere export - bottom layer potential temperature + # + - standard_name: Sa_shum + alias: inst_spec_humid_height_lowest + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_qa + alias: inst_spec_humid_height_lowest_from_phys + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_tbot + alias: inst_temp_height_lowest + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_tskn + alias: inst_temp_height_surface + - standard_name: Sa_tskn + alias: inst_temp_skin_temperature + canonical_units: K + description: atmosphere export - sea surface skin temperature + # + - standard_name: Sa_ta + alias: inst_temp_height_lowest_from_phys + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_u + alias: inst_zonal_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer zonal wind + # + - standard_name: Sa_v + alias: inst_merid_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer meridional wind + # + - standard_name: Sa_wspd + alias: inst_wind_speed_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer wind speed + # + - standard_name: Sa_z + alias: inst_height_lowest + canonical_units: m + description: atmosphere export - bottom layer height + # + - standard_name: Sa_topo + alias: inst_surface_height + canonical_units: m + description: atmosphere export - topographic height + # + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export- zonal component of momentum flux + # + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export - meridional component of momentum flux + # + - standard_name: Faxa_lwnet + canonical_units: W m-2 + alias: inst_net_lw_flx + description: atmosphere export - mean net longwave flux from atm + # + - standard_name: Faxa_sen + canonical_units: W m-2 + alias: inst_sensi_heat_flx + description: atmosphere export - sensible heat flux + # + - standard_name : Faxa_evap + canonical_units: kg m-2 s-1 + alias: inst_evap_rate + description: atmosphere export - latent heat flux conversion + # + - standard_name: Faxx_evap + canonical_units: kg m-2 s-1 + description: atmosphere import + # + - standard_name: Faxa_lat + alias: inst_laten_heat_flx + canonical_units: W m-2 + description: atmosphere export - latent heat flux + # + - standard_name: Faxx_lat + alias: mean_laten_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_lwup + alias: mean_up_lw_flx + canonical_units: W m-2 + description: atmosphere import - merged ocn/ice flux + # + - standard_name: Faxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: atmosphere import - zonal component of momentum flux + # + - standard_name: Faxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: atmosphere import - meridional component of momentum flux + # + - standard_name: Sa_ofrac + alias: openwater_frac_in_atm + canonical_units: 1 + description: atm export to mediator - open water ocean fraction (varies with time) + # + - standard_name: Sa_u10m + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: atmosphere export - zonal wind height 10m + - standard_name: Sa_u10m + alias: eastward_wind_at_10m_height + # + - standard_name: Sa_v10m + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: atmosphere export - meridional wind height 10m + - standard_name: Sa_v10m + alias: northward_wind_at_10m_height + # + - standard_name: Sa_wspd10m + alias: inst_wind_speed_height10m + canonical_units: m s-1 + description: atmosphere export - wind speed height 10m + # + - standard_name: Sa_t2m + alias: inst_temp_height2m + canonical_units: K + description: atmosphere export - temperature height 2m + # + - standard_name: Sa_q2m + alias: inst_spec_humid_height2m + canonical_units: kg kg -1 + description: atmosphere export - specifc humidity height 2m + # + - standard_name: canopy_moisture_storage + canonical_units: m + description: canopy moisture content + # + - standard_name: inst_aerodynamic_conductance + canonical_units: m + description: aerodynamic conductance + # + - standard_name: inst_canopy_resistance + canonical_units: s m-1 + description: canopy aerodynamic resistance + # + - standard_name: leaf_area_index + canonical_units: 1 + description: leaf area index + # + - standard_name: temperature_of_soil_layer + canonical_units: K + description: temperature in soil layer + # + - standard_name: height + canonical_units: m + description: orography + # + - standard_name: Sa_exner + alias: inst_exner_function_height_lowest + canonical_units: 1 + description: dimensionless exner function at surface adjacent layer + # + - standard_name: Sa_ustar + alias: surface_friction_velocity + canonical_units: m s-1 + description: surface friction velocity + # + #----------------------------------- + # section: sea-ice export + #----------------------------------- + # + - standard_name: Faii_evap + alias: evap_rate_atm_into_ice + canonical_units: kg m-2 s-1 + description: sea-ice export + # + - standard_name: Faii_lat + alias: laten_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice latent heat flux + # + - standard_name: Faii_sen + alias: sensi_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice sensible heat flux + # + - standard_name: Faii_lwup + alias: lwup_flx_ice + canonical_units: W m-2 + description: sea-ice export - outgoing logwave radiation + # + - standard_name: Faii_swnet + canonical_units: W m-2 + description: sea-ice export to atm + # + - standard_name: Faii_taux + alias: stress_on_air_ice_zonal + canonical_units: N m-2 + description: sea-ice export to atm - air ice zonal stress + # + - standard_name: Faii_tauy + alias: stress_on_air_ice_merid + canonical_units: N m-2 + description: sea-ice export - air ice meridional stress + # + - standard_name: Fioi_bcphi + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophilic black carbon flux to ocean + # + - standard_name: Fioi_bcpho + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophobic black carbon flux to ocean + # + - standard_name: Fioi_flxdst + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - dust aerosol flux to ocean + # + - standard_name: Fioi_melth + alias: net_heat_flx_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - net heat flux to ocean + # + - standard_name: Fioi_meltw + alias: mean_fresh_water_to_ocean_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) + # + - standard_name: Fioi_meltw_wiso + alias: mean_fresh_water_to_ocean_rate_wiso + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) for 16O, 18O, HDO + # + - standard_name: Fioi_salt + alias: mean_salt_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - salt to ocean (salt flux from melting) + # + - standard_name: Fioi_swpen + alias: mean_sw_pen_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - flux of shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdr + alias: mean_sw_pen_to_ocn_vis_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vis dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdf + alias: mean_sw_pen_to_ocn_vis_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vif dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idr + alias: mean_sw_pen_to_ocn_ir_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idf + alias: mean_sw_pen_to_ocn_ir_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dif shortwave through ice to ocean + # + - standard_name: Fioi_taux + alias: stress_on_ocn_ice_zonal + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean zonal stress + # + - standard_name: Fioi_tauy + alias: stress_on_ocn_ice_merid + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean meridional stress + # + - standard_name: Si_anidf + alias: inst_ice_ir_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_anidr + alias: inst_ice_ir_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdf + alias: inst_ice_vis_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdr + alias: inst_ice_vis_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_ifrac + alias: ice_fraction + canonical_units: 1 + description: sea-ice export to atm - ice fraction (varies with time) + # + - standard_name: Si_imask + alias: ice_mask + canonical_units: 1 + description: sea-ice export - ice mask + # + - standard_name: Si_qref + canonical_units: kg kg-1 + description: sea-ice export to atm + # + - standard_name: Si_t + alias: sea_ice_surface_temperature + canonical_units: K + description: sea-ice export + # + - standard_name: Si_tref + canonical_units: K + description: sea-ice export + # + - standard_name: Si_u10 + canonical_units: m/s + description: sea-ice export + # + - standard_name: Si_vice + alias: sea_ice_volume + canonical_units: m + description: sea-ice export - volume of ice per unit area + # + - standard_name: Si_snowh + canonical_units: m + description: sea-ice export - surface_snow_water_equivalent + # + - standard_name: Si_vsno + alias: snow_volume_on_sea_ice + canonical_units: m + description: sea-ice export - volume of snow per unit area + # + - standard_name: Si_thick + canonical_units: m + description: sea-ice export - ice thickness + # + - standard_name: Si_floediam + canonical_units: m + description: sea-ice export - ice floe diameter + # + #----------------------------------- + # section: ocean export to mediator + #----------------------------------- + # + - standard_name: Fioo_q + alias: freezing_melting_potential + canonical_units: W m-2 + description: ocean export + # + - standard_name: So_bldepth + alias: mixed_layer_depth + canonical_units: m + description: ocean export + # + - standard_name: So_h + alias: sea_surface_height_above_sea_level + canonical_units: m + description: ocean export + - standard_name: So_h + alias: seahgt + # + - standard_name: So_dhdx + alias: sea_surface_slope_zonal + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_dhdy + alias: sea_surface_slope_merid + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_duu10n + canonical_units: m2 s-2 + description: ocean export + # + - standard_name: So_fswpen + canonical_units: 1 + description: ocean export + # + - standard_name: So_ofrac + canonical_units: 1 + description: ocean export + # + - standard_name: So_omask + alias: ocean_mask + canonical_units: 1 + description: ocean export + # + - standard_name: So_qref + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_re + canonical_units: 1 + description: ocean export + # + - standard_name: So_s + alias: s_surf + canonical_units: g kg-1 + description: ocean export + # + - standard_name: So_ssq + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_t + alias: sea_surface_temperature + canonical_units: K + description: ocean export + # + - standard_name: So_tref + canonical_units: K + description: ocean export + # + - standard_name: So_u + alias: ocn_current_zonal + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_u10 + canonical_units: m + description: ocean export + # + - standard_name: So_ustar + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_v + alias: ocn_current_merid + canonical_units: m s-1 + description: ocean export + # + #----------------------------------- + # section: ocean import + #----------------------------------- + # + - standard_name: Foxx_hrain + canonical_units: W m-2 + description: to ocn heat content of rain + # + - standard_name: Foxx_hsnow + canonical_units: W m-2 + description: to ocn heat content of snow + # + - standard_name: Foxx_hevap + canonical_units: W m-2 + description: to ocn heat content of evaporation + # + - standard_name: Foxx_hcond + canonical_units: W m-2 + description: to ocn heat content of condensation + # + - standard_name: Foxx_hrofl + canonical_units: W m-2 + description: to ocn heat content of liquid runoff + # + - standard_name: Foxx_hrofi + canonical_units: W m-2 + description: to ocn heat content of ice runoff + # + - standard_name: Foxx_rofi + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (frozen) + # + - standard_name: Foxx_rofl + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (liquid) + # + - standard_name: Foxx_swnet + alias: mean_net_sw_flx + canonical_units: W m-2 + description: ocean import - net shortwave radiation to ocean + # + - standard_name: Foxx_swnet_vdr + alias: mean_net_sw_vis_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible direct radiation to ocean + # + - standard_name: Foxx_swnet_vdf + alias: mean_net_sw_vis_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible diffuse radiation to ocean + # + - standard_name: Foxx_swnet_idr + alias: mean_net_sw_ir_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir direct radiation to ocean + # + - standard_name: Foxx_swnet_idf + alias: mean_net_sw_ir_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir diffuse radiation to ocean + # + - standard_name: Foxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: ocean import - sensible heat flux into ocean + # + - standard_name: Foxx_lat + canonical_units: W m-2 + description: ocean import - latent heat flux into ocean + # + - standard_name: Foxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: ocean import - zonal surface stress to ocean + # + - standard_name: Foxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: ocean import - meridional surface stress to ocean + # + #----------------------------------- + # mediator fields + #----------------------------------- + # + - standard_name: cpl_scalars + canonical_units: unitless + # + - standard_name: frac + canonical_units: 1 + # + - standard_name: mask + canonical_units: 1 + # + #----------------------------------- + # fields to use fluxes from mediator + #----------------------------------- + # + - standard_name: Faox_lat + alias: laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface latent heat flux + # + - standard_name: Faox_sen + alias: sensi_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface sensible heat flux + # + - standard_name: Faox_lwup + alias: lwup_flx_ocn + canonical_units: W m-2 + description: mediator export - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator export + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator export + # + #----------------------------------- + # section: atmosphere fields that need to be defined but are not used + #----------------------------------- + # + - standard_name: mean_prec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_fprec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_prec_rate_conv + canonical_units: kg m-2 s-1 + - standard_name: mean_down_lw_flx + canonical_units: W m-2 + - standard_name: inst_net_lw_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_flx + canonical_units: W m-2 + - standard_name: mean_net_sw_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_surface_height + canonical_units: m + - standard_name: mean_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: mean_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: N m-2 + - standard_name: inst_laten_heat_flx + canonical_units: N m-2 + - standard_name: inst_evap_rate + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_tracer_up_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_down_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_clmn_mass_dens + canonical_units: g m-2 + - standard_name: inst_tracer_anth_biom_flx + canonical_units: ug m-2 s-1 + description: atmosphere export + - standard_name: inst_pres_interface + canonical_units: Pa + - standard_name: inst_pres_levels + canonical_units: Pa + - standard_name: inst_geop_interface + canonical_units: tbd + - standard_name: inst_geop_levels + canonical_units: tbd + - standard_name: inst_temp_interface + canonical_units: K + - standard_name: inst_temp_levels + canonical_units: K + - standard_name: inst_zonal_wind_levels + canonical_units: m s-1 + - standard_name: inst_merid_wind_levels + canonical_units: m s-1 + - standard_name: inst_omega_levels + canonical_units: tbd + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_soil_moisture_content + canonical_units: tbd + - standard_name: soil_type + canonical_units: tbd + - standard_name: inst_pbl_height + canonical_units: tbd + - standard_name: surface_cell_area + canonical_units: tbd + - standard_name: inst_convective_rainfall_amount + canonical_units: tbd + - standard_name: inst_spec_humid_conv_tendency_levels + canonical_units: tbd + - standard_name: inst_exchange_coefficient_heat_levels + canonical_units: tbd + - standard_name: inst_friction_velocity + canonical_units: tbd + - standard_name: inst_rainfall_amount + canonical_units: tbd + - standard_name: inst_land_sea_mask + canonical_units: tbd + - standard_name: inst_temp_height_surface + canonical_units: tbd + - standard_name: inst_up_sensi_heat_flx + canonical_units: tbd + - standard_name: inst_lwe_snow_thickness + canonical_units: tbd + - standard_name: vegetation_type + canonical_units: tbd + - standard_name: inst_vegetation_area_frac + canonical_units: tbd + - standard_name: inst_surface_roughness + canonical_units: tbd + - standard_name: inst_laten_heat_flx + canonical_units: W m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: W m-2 + - standard_name: land_mask + canonical_units: 1 + - standard_name: inst_cloud_frac_levels + canonical_units: 1 + - standard_name: inst_ice_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_liq_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_surface_soil_wetness + canonical_units: 1 + - standard_name: lake_fraction + canonical_units: 1 + - standard_name: ice_fraction_in_atm + alias: sea_ice_area_fraction + canonical_units: 1 + - standard_name: ocean_fraction + canonical_units: 1 + - standard_name: surface_snow_area_fraction + canonical_units: 1 + # + #----------------------------------- + # WW3 import + #----------------------------------- + # + - standard_name: sea_surface_height_above_sea_level + canonical_units: m + description: ww3 import + # + - standard_name: sea_surface_salinity + alias: s_surf + canonical_units: g kg-1 + description: ww3 import + # + - standard_name: surface_eastward_sea_water_velocity + alias: ocn_current_zonal + canonical_units: m s-1 + description: ww3 import + # + - standard_name: surface_northward_sea_water_velocity + alias: ocn_current_merid + canonical_units: m s-1 + description: ww3 import + # + - standard_name: eastward_wind_at_10m_height + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: northward_wind_at_10m_height + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: sea_ice_concentration + alias: ice_fraction + canonical_units: 1 + description: ww3 import + # + #----------------------------------- + # WW3 export + #----------------------------------- + # + - standard_name: Sw_z0 + alias: wave_z0_roughness_length + canonical_units: 1 + description: ww3 export + - standard_name: Sw_z0 + alias: z0rlen + # + - standard_name: Sw_pstokes_x + alias: eastward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_pstokes_y + alias: northward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_elevation_spectrum + alias: wave_elevation_spectrum + canonical_units: m2/s + description: wave elevation spectrum + # + # remaining fields are unused but required to be present + # + - standard_name: Sw_ch + alias: wave_induced_charnock_parameter + canonical_units: 1 + description: ww3 export + - standard_name: Sw_ch + alias: charno + # + - standard_name: eastward_stokes_drift_current + alias: uscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: northward_stokes_drift_current + alias: vscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: Sw_ustokes + alias: eastward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export surface drift components + - standard_name: Sw_ustokes + alias: ussx + # + - standard_name: Sw_vstokes + alias: northward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export using surface drift components + - standard_name: Sw_vstokes + alias: ussy + # + - standard_name: Sw_wbcuru + alias: eastward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcuru + alias: wbcuru + # + - standard_name: Sw_wbcurv + alias: northward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcurv + alias: wbcurv + # + - standard_name: Sw_wbcurp + alias: wave_bottom_current_period + canonical_units: s + description: ww3 export + - standard_name: Sw_wbcurp + alias: wbcurp + # + - standard_name: Sw_wavsuu + alias: eastward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuu + alias: wavsuu + # + - standard_name: Sw_wavsuv + alias: eastward_northward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuv + alias: wavsuv + # + - standard_name: Sw_wavsvv + alias: northward_wave_radiation_stress + canonical_units: Pa + description: ww3 export + - standard_name: Sw_wavsvv + alias: wavsvv + # + - standard_name: Sw_ustokes1 + alias: eastward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes1 + alias: x1pstk + # + - standard_name: Sw_ustokes2 + alias: eastward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes2 + alias: x2pstk + # + - standard_name: Sw_ustokes3 + alias: eastward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes3 + alias: x3pstk + # + - standard_name: Sw_vstokes1 + alias: northward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes1 + alias: y1pstk + # + - standard_name: Sw_vstokes2 + alias: northward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes2 + alias: y2pstk + # + - standard_name: Sw_vstokes3 + alias: northward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes3 + alias: y3pstk + # + #----------------------------------- + # section: FV3 atm export/import to/from JEDI + #----------------------------------- + # + - standard_name: u + canonical_units: m s-1 + # + - standard_name: v + canonical_units: m s-1 + # + - standard_name: ua + canonical_units: m s-1 + # + - standard_name: va + canonical_units: m s-1 + # + - standard_name: t + canonical_units: K + # + - standard_name: delp + canonical_units: Pa + # + - standard_name: sphum + canonical_units: kg kg-1 + # + - standard_name: ice_wat + canonical_units: kg kg-1 + # + - standard_name: liq_wat + canonical_units: kg kg-1 + # + - standard_name: o3mr + canonical_units: kg kg-1 + # + - standard_name: phis + canonical_units: m2 s-2 + # + - standard_name: u_srf + canonical_units: m s-1 + # + - standard_name: v_srf + canonical_units: m s-1 + # + # + - standard_name: slmsk + canonical_units: flag + description: landmask sea/land/ice=0/1/2 + # + - standard_name: weasd + canonical_units: mm + description: water equiv of acc snow depth over land and sea ice + # + - standard_name: tsea + canonical_units: K + description: surface skin temperature + # + - standard_name: vtype + canonical_units: index + description: vegetation type + # + - standard_name: stype + canonical_units: index + description: soil type + # + - standard_name: Sa_vfrac + canonical_units: frac + description: areal fractional cover of green vegetation + - standard_name: Sa_vfrac + alias: vfrac + # + - standard_name: stc + canonical_units: K + description: soil temperature content + # + - standard_name: smc + canonical_units: m3 m-3 + description: soil moisture content + # + - standard_name: snwdph + canonical_units: mm + description: snow depth in mm + # + - standard_name: f10m + canonical_units: ratio + description: fm at 10m - Ratio of sigma level 1 wind and 10m wind + # + - standard_name: Sa_zorl + canonical_units: cm + description: composite surface roughness in cm + - standard_name: Sa_zorl + alias: zorl + # + - standard_name: t2m + canonical_units: K + description: two meter temperature + # + #----------------------------------- + # section: land export + #----------------------------------- + # + - standard_name: Sl_lfrac + alias: land_fraction + canonical_units: 1 + description: land export + # + - standard_name: Sl_lfrin + canonical_units: 1 + description: land export + # + - standard_name: Sl_t + canonical_units: K + description: land export + # + - standard_name: inst_tracer_diag_aod + canonical_units: 1 + description: AOD + # + - standard_name: Sl_sfrac + alias: inst_snow_area_fraction_lnd + canonical_units: 1 + description: land export + # + - standard_name: Sl_tref + alias: inst_temp_height2m_lnd + canonical_units: K + description: mediator export to glc - no levation classes + # + - standard_name: Sl_qref + alias: inst_spec_humid_height2m_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Sl_q + alias: inst_spec_humid_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Fall_lat + alias: inst_laten_heat_flx_lnd + canonical_units: kg kg-1 m s-1 + description: land export to atm - atm/lnd latent heat flux + # + - standard_name: Fall_sen + alias: inst_sensi_heat_flx_lnd + canonical_units: K m s-1 + description: land export to atm - atm/lnd sensible heat flux + # + - standard_name: Fall_evap + alias: inst_potential_laten_heat_flx_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_gflx + alias: inst_upward_heat_flux_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_roff + alias: inst_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Fall_soff + alias: inst_subsurface_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_cmm + alias: inst_drag_wind_speed_for_momentum + canonical_units: m s-1 + description: land export + # + - standard_name: Sl_chh + alias: inst_drag_mass_flux_for_heat_and_moisture + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_zvfun + alias: inst_func_of_roughness_length_and_vfrac + canonical_units: 1 + description: land export diff --git a/ush/sample_configs/config_c3/det/field_table b/ush/sample_configs/config_c3/det/field_table new file mode 100644 index 000000000..691a27f54 --- /dev/null +++ b/ush/sample_configs/config_c3/det/field_table @@ -0,0 +1,85 @@ +# added by FRE: sphum must be present in atmos +# specific humidity for moist runs + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e-6" / +# prognostic cloud water mixing ratio + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic ice water mixing ratio + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic rain water mixing ratio + "TRACER", "atmos_mod", "rainwat" + "longname", "rain water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic snow water mixing ratio + "TRACER", "atmos_mod", "snowwat" + "longname", "snow water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic graupel mixing ratio + "TRACER", "atmos_mod", "graupel" + "longname", "graupel mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water number concentration + "TRACER", "atmos_mod", "water_nc" + "longname", "cloud liquid water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic cloud ice number concentration + "TRACER", "atmos_mod", "ice_nc" + "longname", "cloud ice water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic rain number concentration + "TRACER", "atmos_mod", "rain_nc" + "longname", "rain number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic ozone mixing ratio tracer + "TRACER", "atmos_mod", "o3mr" + "longname", "ozone mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# water- and ice-friendly aerosols (Thompson) + "TRACER", "atmos_mod", "liq_aero" + "longname", "water-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "ice_aero" + "longname", "ice-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic subgrid scale turbulent kinetic energy + "TRACER", "atmos_mod", "sgs_tke" + "longname", "subgrid scale turbulent kinetic energy" + "units", "m2/s2" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic sigmab tracer + "TRACER", "atmos_mod", "sigmab" + "longname", "sigma fraction" + "units", "fraction" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic smoke mixing ratio tracer + "TRACER", "atmos_mod", "smoke" + "longname", "smoke mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic dust mixing ratio tracer + "TRACER", "atmos_mod", "dust" + "longname", "dust mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic coarsepm mixing ratio tracer + "TRACER", "atmos_mod", "coarsepm" + "longname", "coarsepm mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / diff --git a/ush/sample_configs/config_c3/det/input.nml b/ush/sample_configs/config_c3/det/input.nml new file mode 100644 index 000000000..0d0c13020 --- /dev/null +++ b/ush/sample_configs/config_c3/det/input.nml @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .true. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 15, 32 + make_nh = .true. + mountain = .false. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 1 + ncep_ic = .false. + nggps_ic = .true. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .false. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 4 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/det/input.nml_restart b/ush/sample_configs/config_c3/det/input.nml_restart new file mode 100644 index 000000000..1dcc6c24e --- /dev/null +++ b/ush/sample_configs/config_c3/det/input.nml_restart @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 15, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/det/input.nml_restart_18h b/ush/sample_configs/config_c3/det/input.nml_restart_18h new file mode 100644 index 000000000..1dcc6c24e --- /dev/null +++ b/ush/sample_configs/config_c3/det/input.nml_restart_18h @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 15, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/det/input.nml_restart_long b/ush/sample_configs/config_c3/det/input.nml_restart_long new file mode 100644 index 000000000..1dcc6c24e --- /dev/null +++ b/ush/sample_configs/config_c3/det/input.nml_restart_long @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 15, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/det/input.nml_restart_spinupcyc b/ush/sample_configs/config_c3/det/input.nml_restart_spinupcyc new file mode 100644 index 000000000..1dcc6c24e --- /dev/null +++ b/ush/sample_configs/config_c3/det/input.nml_restart_spinupcyc @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 15, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/det/input.nml_spinupcyc b/ush/sample_configs/config_c3/det/input.nml_spinupcyc new file mode 100644 index 000000000..0d0c13020 --- /dev/null +++ b/ush/sample_configs/config_c3/det/input.nml_spinupcyc @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .true. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 15, 32 + make_nh = .true. + mountain = .false. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 1 + ncep_ic = .false. + nggps_ic = .true. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .false. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 4 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/enkf/data_table b/ush/sample_configs/config_c3/enkf/data_table new file mode 100644 index 000000000..e69de29bb diff --git a/ush/sample_configs/config_c3/enkf/fd_ufs.yaml b/ush/sample_configs/config_c3/enkf/fd_ufs.yaml new file mode 100644 index 000000000..a91ff96d6 --- /dev/null +++ b/ush/sample_configs/config_c3/enkf/fd_ufs.yaml @@ -0,0 +1,1232 @@ + field_dictionary: + version_number: 0.0.0 + institution: National ESPC, CSC & MCL Working Groups + source: automatically generated by the NUOPC Layer + description: Community-based dictionary for shared coupling fields + entries: + # + #----------------------------------- + # section: mediator calculation for atm/ocn flux calculation + #----------------------------------- + # + - standard_name: Faox_lat + alias: mean_laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator calculation - atm/ocn surface latent heat flux + # + - standard_name: Faox_lwup + alias: mean_up_lw_flx_ocn + canonical_units: W m-2 + description: mediator calculation - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Foxx_lwnet + alias: mean_net_lw_flx + canonical_units: W m-2 + description: mediator calculation - atm/ocn net longwave flux + # + - standard_name: Foxx_sen + canonical_units: W m-2 + alias: mean_sensi_heat_flx + description: mediator calculation - atm/ocn surface sensible heat flux + # + - standard_name: Foxx_evap + canonical_units: kg m-2 s-1 + alias: mean_evap_rate + description: mediator calculation - atm/ocn specific humidity flux + # + - standard_name: Faox_evap + canonical_units: kg m-2 s-1 + description: mediator calculation - atm/ocn specific humidity flux + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_bcph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_ocph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstdry + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstwet + canonical_units: kg m-2 s-1 + description: atmosphere export + # + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_swdn + alias: inst_down_sw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward SW heat flux + # + - standard_name: Faxa_lwdn + alias: inst_down_lw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward LW heat flux + # + - standard_name: Faxa_rain + alias: inst_prec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainc + alias: inst_prec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainl + alias: inst_prec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snow + alias: inst_fprec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowc + alias: inst_fprec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowl + alias: inst_fprec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_swnet + alias: inst_net_sw_flx + canonical_units: W m-2 + description: atmosphere export + # + - standard_name: Faxa_swndf + alias: inst_down_sw_ir_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir diffuse flux + # + - standard_name: Faxa_swndr + alias: inst_down_sw_ir_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir direct flux + # + - standard_name: Faxa_swvdf + alias: inst_down_sw_vis_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+vis diffuse flux + # + - standard_name: Faxa_swvdr + alias: inst_down_sw_vis_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+visvdirect flux + # + - standard_name: Sa_dens + alias: air_density_height_lowest + canonical_units: kg m-3 + description: atmosphere export- density at the lowest model layer + # + - standard_name: Sa_pbot + alias: inst_pres_height_lowest + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_prsl + alias: inst_pres_height_lowest_from_phys + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_pslv + alias: inst_pres_height_surface + canonical_units: Pa + description: atmosphere export - instantaneous pressure land and sea surface + # + - standard_name: Sa_ptem + canonical_units: K + description: atmosphere export - bottom layer potential temperature + # + - standard_name: Sa_shum + alias: inst_spec_humid_height_lowest + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_qa + alias: inst_spec_humid_height_lowest_from_phys + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_tbot + alias: inst_temp_height_lowest + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_tskn + alias: inst_temp_height_surface + - standard_name: Sa_tskn + alias: inst_temp_skin_temperature + canonical_units: K + description: atmosphere export - sea surface skin temperature + # + - standard_name: Sa_ta + alias: inst_temp_height_lowest_from_phys + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_u + alias: inst_zonal_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer zonal wind + # + - standard_name: Sa_v + alias: inst_merid_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer meridional wind + # + - standard_name: Sa_wspd + alias: inst_wind_speed_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer wind speed + # + - standard_name: Sa_z + alias: inst_height_lowest + canonical_units: m + description: atmosphere export - bottom layer height + # + - standard_name: Sa_topo + alias: inst_surface_height + canonical_units: m + description: atmosphere export - topographic height + # + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export- zonal component of momentum flux + # + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export - meridional component of momentum flux + # + - standard_name: Faxa_lwnet + canonical_units: W m-2 + alias: inst_net_lw_flx + description: atmosphere export - mean net longwave flux from atm + # + - standard_name: Faxa_sen + canonical_units: W m-2 + alias: inst_sensi_heat_flx + description: atmosphere export - sensible heat flux + # + - standard_name : Faxa_evap + canonical_units: kg m-2 s-1 + alias: inst_evap_rate + description: atmosphere export - latent heat flux conversion + # + - standard_name: Faxx_evap + canonical_units: kg m-2 s-1 + description: atmosphere import + # + - standard_name: Faxa_lat + alias: inst_laten_heat_flx + canonical_units: W m-2 + description: atmosphere export - latent heat flux + # + - standard_name: Faxx_lat + alias: mean_laten_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_lwup + alias: mean_up_lw_flx + canonical_units: W m-2 + description: atmosphere import - merged ocn/ice flux + # + - standard_name: Faxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: atmosphere import - zonal component of momentum flux + # + - standard_name: Faxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: atmosphere import - meridional component of momentum flux + # + - standard_name: Sa_ofrac + alias: openwater_frac_in_atm + canonical_units: 1 + description: atm export to mediator - open water ocean fraction (varies with time) + # + - standard_name: Sa_u10m + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: atmosphere export - zonal wind height 10m + - standard_name: Sa_u10m + alias: eastward_wind_at_10m_height + # + - standard_name: Sa_v10m + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: atmosphere export - meridional wind height 10m + - standard_name: Sa_v10m + alias: northward_wind_at_10m_height + # + - standard_name: Sa_wspd10m + alias: inst_wind_speed_height10m + canonical_units: m s-1 + description: atmosphere export - wind speed height 10m + # + - standard_name: Sa_t2m + alias: inst_temp_height2m + canonical_units: K + description: atmosphere export - temperature height 2m + # + - standard_name: Sa_q2m + alias: inst_spec_humid_height2m + canonical_units: kg kg -1 + description: atmosphere export - specifc humidity height 2m + # + - standard_name: canopy_moisture_storage + canonical_units: m + description: canopy moisture content + # + - standard_name: inst_aerodynamic_conductance + canonical_units: m + description: aerodynamic conductance + # + - standard_name: inst_canopy_resistance + canonical_units: s m-1 + description: canopy aerodynamic resistance + # + - standard_name: leaf_area_index + canonical_units: 1 + description: leaf area index + # + - standard_name: temperature_of_soil_layer + canonical_units: K + description: temperature in soil layer + # + - standard_name: height + canonical_units: m + description: orography + # + - standard_name: Sa_exner + alias: inst_exner_function_height_lowest + canonical_units: 1 + description: dimensionless exner function at surface adjacent layer + # + - standard_name: Sa_ustar + alias: surface_friction_velocity + canonical_units: m s-1 + description: surface friction velocity + # + #----------------------------------- + # section: sea-ice export + #----------------------------------- + # + - standard_name: Faii_evap + alias: evap_rate_atm_into_ice + canonical_units: kg m-2 s-1 + description: sea-ice export + # + - standard_name: Faii_lat + alias: laten_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice latent heat flux + # + - standard_name: Faii_sen + alias: sensi_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice sensible heat flux + # + - standard_name: Faii_lwup + alias: lwup_flx_ice + canonical_units: W m-2 + description: sea-ice export - outgoing logwave radiation + # + - standard_name: Faii_swnet + canonical_units: W m-2 + description: sea-ice export to atm + # + - standard_name: Faii_taux + alias: stress_on_air_ice_zonal + canonical_units: N m-2 + description: sea-ice export to atm - air ice zonal stress + # + - standard_name: Faii_tauy + alias: stress_on_air_ice_merid + canonical_units: N m-2 + description: sea-ice export - air ice meridional stress + # + - standard_name: Fioi_bcphi + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophilic black carbon flux to ocean + # + - standard_name: Fioi_bcpho + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophobic black carbon flux to ocean + # + - standard_name: Fioi_flxdst + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - dust aerosol flux to ocean + # + - standard_name: Fioi_melth + alias: net_heat_flx_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - net heat flux to ocean + # + - standard_name: Fioi_meltw + alias: mean_fresh_water_to_ocean_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) + # + - standard_name: Fioi_meltw_wiso + alias: mean_fresh_water_to_ocean_rate_wiso + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) for 16O, 18O, HDO + # + - standard_name: Fioi_salt + alias: mean_salt_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - salt to ocean (salt flux from melting) + # + - standard_name: Fioi_swpen + alias: mean_sw_pen_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - flux of shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdr + alias: mean_sw_pen_to_ocn_vis_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vis dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdf + alias: mean_sw_pen_to_ocn_vis_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vif dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idr + alias: mean_sw_pen_to_ocn_ir_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idf + alias: mean_sw_pen_to_ocn_ir_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dif shortwave through ice to ocean + # + - standard_name: Fioi_taux + alias: stress_on_ocn_ice_zonal + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean zonal stress + # + - standard_name: Fioi_tauy + alias: stress_on_ocn_ice_merid + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean meridional stress + # + - standard_name: Si_anidf + alias: inst_ice_ir_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_anidr + alias: inst_ice_ir_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdf + alias: inst_ice_vis_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdr + alias: inst_ice_vis_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_ifrac + alias: ice_fraction + canonical_units: 1 + description: sea-ice export to atm - ice fraction (varies with time) + # + - standard_name: Si_imask + alias: ice_mask + canonical_units: 1 + description: sea-ice export - ice mask + # + - standard_name: Si_qref + canonical_units: kg kg-1 + description: sea-ice export to atm + # + - standard_name: Si_t + alias: sea_ice_surface_temperature + canonical_units: K + description: sea-ice export + # + - standard_name: Si_tref + canonical_units: K + description: sea-ice export + # + - standard_name: Si_u10 + canonical_units: m/s + description: sea-ice export + # + - standard_name: Si_vice + alias: sea_ice_volume + canonical_units: m + description: sea-ice export - volume of ice per unit area + # + - standard_name: Si_snowh + canonical_units: m + description: sea-ice export - surface_snow_water_equivalent + # + - standard_name: Si_vsno + alias: snow_volume_on_sea_ice + canonical_units: m + description: sea-ice export - volume of snow per unit area + # + - standard_name: Si_thick + canonical_units: m + description: sea-ice export - ice thickness + # + - standard_name: Si_floediam + canonical_units: m + description: sea-ice export - ice floe diameter + # + #----------------------------------- + # section: ocean export to mediator + #----------------------------------- + # + - standard_name: Fioo_q + alias: freezing_melting_potential + canonical_units: W m-2 + description: ocean export + # + - standard_name: So_bldepth + alias: mixed_layer_depth + canonical_units: m + description: ocean export + # + - standard_name: So_h + alias: sea_surface_height_above_sea_level + canonical_units: m + description: ocean export + - standard_name: So_h + alias: seahgt + # + - standard_name: So_dhdx + alias: sea_surface_slope_zonal + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_dhdy + alias: sea_surface_slope_merid + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_duu10n + canonical_units: m2 s-2 + description: ocean export + # + - standard_name: So_fswpen + canonical_units: 1 + description: ocean export + # + - standard_name: So_ofrac + canonical_units: 1 + description: ocean export + # + - standard_name: So_omask + alias: ocean_mask + canonical_units: 1 + description: ocean export + # + - standard_name: So_qref + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_re + canonical_units: 1 + description: ocean export + # + - standard_name: So_s + alias: s_surf + canonical_units: g kg-1 + description: ocean export + # + - standard_name: So_ssq + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_t + alias: sea_surface_temperature + canonical_units: K + description: ocean export + # + - standard_name: So_tref + canonical_units: K + description: ocean export + # + - standard_name: So_u + alias: ocn_current_zonal + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_u10 + canonical_units: m + description: ocean export + # + - standard_name: So_ustar + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_v + alias: ocn_current_merid + canonical_units: m s-1 + description: ocean export + # + #----------------------------------- + # section: ocean import + #----------------------------------- + # + - standard_name: Foxx_hrain + canonical_units: W m-2 + description: to ocn heat content of rain + # + - standard_name: Foxx_hsnow + canonical_units: W m-2 + description: to ocn heat content of snow + # + - standard_name: Foxx_hevap + canonical_units: W m-2 + description: to ocn heat content of evaporation + # + - standard_name: Foxx_hcond + canonical_units: W m-2 + description: to ocn heat content of condensation + # + - standard_name: Foxx_hrofl + canonical_units: W m-2 + description: to ocn heat content of liquid runoff + # + - standard_name: Foxx_hrofi + canonical_units: W m-2 + description: to ocn heat content of ice runoff + # + - standard_name: Foxx_rofi + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (frozen) + # + - standard_name: Foxx_rofl + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (liquid) + # + - standard_name: Foxx_swnet + alias: mean_net_sw_flx + canonical_units: W m-2 + description: ocean import - net shortwave radiation to ocean + # + - standard_name: Foxx_swnet_vdr + alias: mean_net_sw_vis_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible direct radiation to ocean + # + - standard_name: Foxx_swnet_vdf + alias: mean_net_sw_vis_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible diffuse radiation to ocean + # + - standard_name: Foxx_swnet_idr + alias: mean_net_sw_ir_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir direct radiation to ocean + # + - standard_name: Foxx_swnet_idf + alias: mean_net_sw_ir_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir diffuse radiation to ocean + # + - standard_name: Foxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: ocean import - sensible heat flux into ocean + # + - standard_name: Foxx_lat + canonical_units: W m-2 + description: ocean import - latent heat flux into ocean + # + - standard_name: Foxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: ocean import - zonal surface stress to ocean + # + - standard_name: Foxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: ocean import - meridional surface stress to ocean + # + #----------------------------------- + # mediator fields + #----------------------------------- + # + - standard_name: cpl_scalars + canonical_units: unitless + # + - standard_name: frac + canonical_units: 1 + # + - standard_name: mask + canonical_units: 1 + # + #----------------------------------- + # fields to use fluxes from mediator + #----------------------------------- + # + - standard_name: Faox_lat + alias: laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface latent heat flux + # + - standard_name: Faox_sen + alias: sensi_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface sensible heat flux + # + - standard_name: Faox_lwup + alias: lwup_flx_ocn + canonical_units: W m-2 + description: mediator export - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator export + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator export + # + #----------------------------------- + # section: atmosphere fields that need to be defined but are not used + #----------------------------------- + # + - standard_name: mean_prec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_fprec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_prec_rate_conv + canonical_units: kg m-2 s-1 + - standard_name: mean_down_lw_flx + canonical_units: W m-2 + - standard_name: inst_net_lw_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_flx + canonical_units: W m-2 + - standard_name: mean_net_sw_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_surface_height + canonical_units: m + - standard_name: mean_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: mean_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: N m-2 + - standard_name: inst_laten_heat_flx + canonical_units: N m-2 + - standard_name: inst_evap_rate + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_tracer_up_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_down_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_clmn_mass_dens + canonical_units: g m-2 + - standard_name: inst_tracer_anth_biom_flx + canonical_units: ug m-2 s-1 + description: atmosphere export + - standard_name: inst_pres_interface + canonical_units: Pa + - standard_name: inst_pres_levels + canonical_units: Pa + - standard_name: inst_geop_interface + canonical_units: tbd + - standard_name: inst_geop_levels + canonical_units: tbd + - standard_name: inst_temp_interface + canonical_units: K + - standard_name: inst_temp_levels + canonical_units: K + - standard_name: inst_zonal_wind_levels + canonical_units: m s-1 + - standard_name: inst_merid_wind_levels + canonical_units: m s-1 + - standard_name: inst_omega_levels + canonical_units: tbd + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_soil_moisture_content + canonical_units: tbd + - standard_name: soil_type + canonical_units: tbd + - standard_name: inst_pbl_height + canonical_units: tbd + - standard_name: surface_cell_area + canonical_units: tbd + - standard_name: inst_convective_rainfall_amount + canonical_units: tbd + - standard_name: inst_spec_humid_conv_tendency_levels + canonical_units: tbd + - standard_name: inst_exchange_coefficient_heat_levels + canonical_units: tbd + - standard_name: inst_friction_velocity + canonical_units: tbd + - standard_name: inst_rainfall_amount + canonical_units: tbd + - standard_name: inst_land_sea_mask + canonical_units: tbd + - standard_name: inst_temp_height_surface + canonical_units: tbd + - standard_name: inst_up_sensi_heat_flx + canonical_units: tbd + - standard_name: inst_lwe_snow_thickness + canonical_units: tbd + - standard_name: vegetation_type + canonical_units: tbd + - standard_name: inst_vegetation_area_frac + canonical_units: tbd + - standard_name: inst_surface_roughness + canonical_units: tbd + - standard_name: inst_laten_heat_flx + canonical_units: W m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: W m-2 + - standard_name: land_mask + canonical_units: 1 + - standard_name: inst_cloud_frac_levels + canonical_units: 1 + - standard_name: inst_ice_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_liq_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_surface_soil_wetness + canonical_units: 1 + - standard_name: lake_fraction + canonical_units: 1 + - standard_name: ice_fraction_in_atm + alias: sea_ice_area_fraction + canonical_units: 1 + - standard_name: ocean_fraction + canonical_units: 1 + - standard_name: surface_snow_area_fraction + canonical_units: 1 + # + #----------------------------------- + # WW3 import + #----------------------------------- + # + - standard_name: sea_surface_height_above_sea_level + canonical_units: m + description: ww3 import + # + - standard_name: sea_surface_salinity + alias: s_surf + canonical_units: g kg-1 + description: ww3 import + # + - standard_name: surface_eastward_sea_water_velocity + alias: ocn_current_zonal + canonical_units: m s-1 + description: ww3 import + # + - standard_name: surface_northward_sea_water_velocity + alias: ocn_current_merid + canonical_units: m s-1 + description: ww3 import + # + - standard_name: eastward_wind_at_10m_height + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: northward_wind_at_10m_height + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: sea_ice_concentration + alias: ice_fraction + canonical_units: 1 + description: ww3 import + # + #----------------------------------- + # WW3 export + #----------------------------------- + # + - standard_name: Sw_z0 + alias: wave_z0_roughness_length + canonical_units: 1 + description: ww3 export + - standard_name: Sw_z0 + alias: z0rlen + # + - standard_name: Sw_pstokes_x + alias: eastward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_pstokes_y + alias: northward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_elevation_spectrum + alias: wave_elevation_spectrum + canonical_units: m2/s + description: wave elevation spectrum + # + # remaining fields are unused but required to be present + # + - standard_name: Sw_ch + alias: wave_induced_charnock_parameter + canonical_units: 1 + description: ww3 export + - standard_name: Sw_ch + alias: charno + # + - standard_name: eastward_stokes_drift_current + alias: uscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: northward_stokes_drift_current + alias: vscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: Sw_ustokes + alias: eastward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export surface drift components + - standard_name: Sw_ustokes + alias: ussx + # + - standard_name: Sw_vstokes + alias: northward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export using surface drift components + - standard_name: Sw_vstokes + alias: ussy + # + - standard_name: Sw_wbcuru + alias: eastward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcuru + alias: wbcuru + # + - standard_name: Sw_wbcurv + alias: northward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcurv + alias: wbcurv + # + - standard_name: Sw_wbcurp + alias: wave_bottom_current_period + canonical_units: s + description: ww3 export + - standard_name: Sw_wbcurp + alias: wbcurp + # + - standard_name: Sw_wavsuu + alias: eastward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuu + alias: wavsuu + # + - standard_name: Sw_wavsuv + alias: eastward_northward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuv + alias: wavsuv + # + - standard_name: Sw_wavsvv + alias: northward_wave_radiation_stress + canonical_units: Pa + description: ww3 export + - standard_name: Sw_wavsvv + alias: wavsvv + # + - standard_name: Sw_ustokes1 + alias: eastward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes1 + alias: x1pstk + # + - standard_name: Sw_ustokes2 + alias: eastward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes2 + alias: x2pstk + # + - standard_name: Sw_ustokes3 + alias: eastward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes3 + alias: x3pstk + # + - standard_name: Sw_vstokes1 + alias: northward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes1 + alias: y1pstk + # + - standard_name: Sw_vstokes2 + alias: northward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes2 + alias: y2pstk + # + - standard_name: Sw_vstokes3 + alias: northward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes3 + alias: y3pstk + # + #----------------------------------- + # section: FV3 atm export/import to/from JEDI + #----------------------------------- + # + - standard_name: u + canonical_units: m s-1 + # + - standard_name: v + canonical_units: m s-1 + # + - standard_name: ua + canonical_units: m s-1 + # + - standard_name: va + canonical_units: m s-1 + # + - standard_name: t + canonical_units: K + # + - standard_name: delp + canonical_units: Pa + # + - standard_name: sphum + canonical_units: kg kg-1 + # + - standard_name: ice_wat + canonical_units: kg kg-1 + # + - standard_name: liq_wat + canonical_units: kg kg-1 + # + - standard_name: o3mr + canonical_units: kg kg-1 + # + - standard_name: phis + canonical_units: m2 s-2 + # + - standard_name: u_srf + canonical_units: m s-1 + # + - standard_name: v_srf + canonical_units: m s-1 + # + # + - standard_name: slmsk + canonical_units: flag + description: landmask sea/land/ice=0/1/2 + # + - standard_name: weasd + canonical_units: mm + description: water equiv of acc snow depth over land and sea ice + # + - standard_name: tsea + canonical_units: K + description: surface skin temperature + # + - standard_name: vtype + canonical_units: index + description: vegetation type + # + - standard_name: stype + canonical_units: index + description: soil type + # + - standard_name: Sa_vfrac + canonical_units: frac + description: areal fractional cover of green vegetation + - standard_name: Sa_vfrac + alias: vfrac + # + - standard_name: stc + canonical_units: K + description: soil temperature content + # + - standard_name: smc + canonical_units: m3 m-3 + description: soil moisture content + # + - standard_name: snwdph + canonical_units: mm + description: snow depth in mm + # + - standard_name: f10m + canonical_units: ratio + description: fm at 10m - Ratio of sigma level 1 wind and 10m wind + # + - standard_name: Sa_zorl + canonical_units: cm + description: composite surface roughness in cm + - standard_name: Sa_zorl + alias: zorl + # + - standard_name: t2m + canonical_units: K + description: two meter temperature + # + #----------------------------------- + # section: land export + #----------------------------------- + # + - standard_name: Sl_lfrac + alias: land_fraction + canonical_units: 1 + description: land export + # + - standard_name: Sl_lfrin + canonical_units: 1 + description: land export + # + - standard_name: Sl_t + canonical_units: K + description: land export + # + - standard_name: inst_tracer_diag_aod + canonical_units: 1 + description: AOD + # + - standard_name: Sl_sfrac + alias: inst_snow_area_fraction_lnd + canonical_units: 1 + description: land export + # + - standard_name: Sl_tref + alias: inst_temp_height2m_lnd + canonical_units: K + description: mediator export to glc - no levation classes + # + - standard_name: Sl_qref + alias: inst_spec_humid_height2m_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Sl_q + alias: inst_spec_humid_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Fall_lat + alias: inst_laten_heat_flx_lnd + canonical_units: kg kg-1 m s-1 + description: land export to atm - atm/lnd latent heat flux + # + - standard_name: Fall_sen + alias: inst_sensi_heat_flx_lnd + canonical_units: K m s-1 + description: land export to atm - atm/lnd sensible heat flux + # + - standard_name: Fall_evap + alias: inst_potential_laten_heat_flx_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_gflx + alias: inst_upward_heat_flux_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_roff + alias: inst_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Fall_soff + alias: inst_subsurface_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_cmm + alias: inst_drag_wind_speed_for_momentum + canonical_units: m s-1 + description: land export + # + - standard_name: Sl_chh + alias: inst_drag_mass_flux_for_heat_and_moisture + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_zvfun + alias: inst_func_of_roughness_length_and_vfrac + canonical_units: 1 + description: land export diff --git a/ush/sample_configs/config_c3/enkf/field_table b/ush/sample_configs/config_c3/enkf/field_table new file mode 100644 index 000000000..691a27f54 --- /dev/null +++ b/ush/sample_configs/config_c3/enkf/field_table @@ -0,0 +1,85 @@ +# added by FRE: sphum must be present in atmos +# specific humidity for moist runs + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e-6" / +# prognostic cloud water mixing ratio + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic ice water mixing ratio + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic rain water mixing ratio + "TRACER", "atmos_mod", "rainwat" + "longname", "rain water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic snow water mixing ratio + "TRACER", "atmos_mod", "snowwat" + "longname", "snow water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic graupel mixing ratio + "TRACER", "atmos_mod", "graupel" + "longname", "graupel mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water number concentration + "TRACER", "atmos_mod", "water_nc" + "longname", "cloud liquid water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic cloud ice number concentration + "TRACER", "atmos_mod", "ice_nc" + "longname", "cloud ice water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic rain number concentration + "TRACER", "atmos_mod", "rain_nc" + "longname", "rain number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic ozone mixing ratio tracer + "TRACER", "atmos_mod", "o3mr" + "longname", "ozone mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# water- and ice-friendly aerosols (Thompson) + "TRACER", "atmos_mod", "liq_aero" + "longname", "water-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "ice_aero" + "longname", "ice-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic subgrid scale turbulent kinetic energy + "TRACER", "atmos_mod", "sgs_tke" + "longname", "subgrid scale turbulent kinetic energy" + "units", "m2/s2" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic sigmab tracer + "TRACER", "atmos_mod", "sigmab" + "longname", "sigma fraction" + "units", "fraction" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic smoke mixing ratio tracer + "TRACER", "atmos_mod", "smoke" + "longname", "smoke mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic dust mixing ratio tracer + "TRACER", "atmos_mod", "dust" + "longname", "dust mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic coarsepm mixing ratio tracer + "TRACER", "atmos_mod", "coarsepm" + "longname", "coarsepm mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / diff --git a/ush/sample_configs/config_c3/enkf/input.nml b/ush/sample_configs/config_c3/enkf/input.nml new file mode 100644 index 000000000..f69682a81 --- /dev/null +++ b/ush/sample_configs/config_c3/enkf/input.nml @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .true. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 11, 32 + make_nh = .true. + mountain = .false. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 1 + ncep_ic = .false. + nggps_ic = .true. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .false. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 4 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .false. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + sigmab_coldstart = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/enkf/input.nml_restart b/ush/sample_configs/config_c3/enkf/input.nml_restart new file mode 100644 index 000000000..016887a25 --- /dev/null +++ b/ush/sample_configs/config_c3/enkf/input.nml_restart @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 11, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .false. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + sigmab_coldstart = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/enkf/input.nml_restart_spinupcyc b/ush/sample_configs/config_c3/enkf/input.nml_restart_spinupcyc new file mode 100644 index 000000000..016887a25 --- /dev/null +++ b/ush/sample_configs/config_c3/enkf/input.nml_restart_spinupcyc @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 11, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .false. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + sigmab_coldstart = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/enkf/input.nml_spinupcyc b/ush/sample_configs/config_c3/enkf/input.nml_spinupcyc new file mode 100644 index 000000000..f69682a81 --- /dev/null +++ b/ush/sample_configs/config_c3/enkf/input.nml_spinupcyc @@ -0,0 +1,351 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .true. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 11, 32 + make_nh = .true. + mountain = .false. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 1 + ncep_ic = .false. + nggps_ic = .true. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .false. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0.0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 4 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .false. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + sigmab_coldstart = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/ensf/data_table b/ush/sample_configs/config_c3/ensf/data_table new file mode 100644 index 000000000..e69de29bb diff --git a/ush/sample_configs/config_c3/ensf/fd_ufs.yaml b/ush/sample_configs/config_c3/ensf/fd_ufs.yaml new file mode 100644 index 000000000..a91ff96d6 --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/fd_ufs.yaml @@ -0,0 +1,1232 @@ + field_dictionary: + version_number: 0.0.0 + institution: National ESPC, CSC & MCL Working Groups + source: automatically generated by the NUOPC Layer + description: Community-based dictionary for shared coupling fields + entries: + # + #----------------------------------- + # section: mediator calculation for atm/ocn flux calculation + #----------------------------------- + # + - standard_name: Faox_lat + alias: mean_laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator calculation - atm/ocn surface latent heat flux + # + - standard_name: Faox_lwup + alias: mean_up_lw_flx_ocn + canonical_units: W m-2 + description: mediator calculation - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Foxx_lwnet + alias: mean_net_lw_flx + canonical_units: W m-2 + description: mediator calculation - atm/ocn net longwave flux + # + - standard_name: Foxx_sen + canonical_units: W m-2 + alias: mean_sensi_heat_flx + description: mediator calculation - atm/ocn surface sensible heat flux + # + - standard_name: Foxx_evap + canonical_units: kg m-2 s-1 + alias: mean_evap_rate + description: mediator calculation - atm/ocn specific humidity flux + # + - standard_name: Faox_evap + canonical_units: kg m-2 s-1 + description: mediator calculation - atm/ocn specific humidity flux + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_bcph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_ocph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstdry + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstwet + canonical_units: kg m-2 s-1 + description: atmosphere export + # + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_swdn + alias: inst_down_sw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward SW heat flux + # + - standard_name: Faxa_lwdn + alias: inst_down_lw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward LW heat flux + # + - standard_name: Faxa_rain + alias: inst_prec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainc + alias: inst_prec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainl + alias: inst_prec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snow + alias: inst_fprec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowc + alias: inst_fprec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowl + alias: inst_fprec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_swnet + alias: inst_net_sw_flx + canonical_units: W m-2 + description: atmosphere export + # + - standard_name: Faxa_swndf + alias: inst_down_sw_ir_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir diffuse flux + # + - standard_name: Faxa_swndr + alias: inst_down_sw_ir_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir direct flux + # + - standard_name: Faxa_swvdf + alias: inst_down_sw_vis_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+vis diffuse flux + # + - standard_name: Faxa_swvdr + alias: inst_down_sw_vis_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+visvdirect flux + # + - standard_name: Sa_dens + alias: air_density_height_lowest + canonical_units: kg m-3 + description: atmosphere export- density at the lowest model layer + # + - standard_name: Sa_pbot + alias: inst_pres_height_lowest + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_prsl + alias: inst_pres_height_lowest_from_phys + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_pslv + alias: inst_pres_height_surface + canonical_units: Pa + description: atmosphere export - instantaneous pressure land and sea surface + # + - standard_name: Sa_ptem + canonical_units: K + description: atmosphere export - bottom layer potential temperature + # + - standard_name: Sa_shum + alias: inst_spec_humid_height_lowest + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_qa + alias: inst_spec_humid_height_lowest_from_phys + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_tbot + alias: inst_temp_height_lowest + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_tskn + alias: inst_temp_height_surface + - standard_name: Sa_tskn + alias: inst_temp_skin_temperature + canonical_units: K + description: atmosphere export - sea surface skin temperature + # + - standard_name: Sa_ta + alias: inst_temp_height_lowest_from_phys + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_u + alias: inst_zonal_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer zonal wind + # + - standard_name: Sa_v + alias: inst_merid_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer meridional wind + # + - standard_name: Sa_wspd + alias: inst_wind_speed_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer wind speed + # + - standard_name: Sa_z + alias: inst_height_lowest + canonical_units: m + description: atmosphere export - bottom layer height + # + - standard_name: Sa_topo + alias: inst_surface_height + canonical_units: m + description: atmosphere export - topographic height + # + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export- zonal component of momentum flux + # + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export - meridional component of momentum flux + # + - standard_name: Faxa_lwnet + canonical_units: W m-2 + alias: inst_net_lw_flx + description: atmosphere export - mean net longwave flux from atm + # + - standard_name: Faxa_sen + canonical_units: W m-2 + alias: inst_sensi_heat_flx + description: atmosphere export - sensible heat flux + # + - standard_name : Faxa_evap + canonical_units: kg m-2 s-1 + alias: inst_evap_rate + description: atmosphere export - latent heat flux conversion + # + - standard_name: Faxx_evap + canonical_units: kg m-2 s-1 + description: atmosphere import + # + - standard_name: Faxa_lat + alias: inst_laten_heat_flx + canonical_units: W m-2 + description: atmosphere export - latent heat flux + # + - standard_name: Faxx_lat + alias: mean_laten_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_lwup + alias: mean_up_lw_flx + canonical_units: W m-2 + description: atmosphere import - merged ocn/ice flux + # + - standard_name: Faxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: atmosphere import - zonal component of momentum flux + # + - standard_name: Faxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: atmosphere import - meridional component of momentum flux + # + - standard_name: Sa_ofrac + alias: openwater_frac_in_atm + canonical_units: 1 + description: atm export to mediator - open water ocean fraction (varies with time) + # + - standard_name: Sa_u10m + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: atmosphere export - zonal wind height 10m + - standard_name: Sa_u10m + alias: eastward_wind_at_10m_height + # + - standard_name: Sa_v10m + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: atmosphere export - meridional wind height 10m + - standard_name: Sa_v10m + alias: northward_wind_at_10m_height + # + - standard_name: Sa_wspd10m + alias: inst_wind_speed_height10m + canonical_units: m s-1 + description: atmosphere export - wind speed height 10m + # + - standard_name: Sa_t2m + alias: inst_temp_height2m + canonical_units: K + description: atmosphere export - temperature height 2m + # + - standard_name: Sa_q2m + alias: inst_spec_humid_height2m + canonical_units: kg kg -1 + description: atmosphere export - specifc humidity height 2m + # + - standard_name: canopy_moisture_storage + canonical_units: m + description: canopy moisture content + # + - standard_name: inst_aerodynamic_conductance + canonical_units: m + description: aerodynamic conductance + # + - standard_name: inst_canopy_resistance + canonical_units: s m-1 + description: canopy aerodynamic resistance + # + - standard_name: leaf_area_index + canonical_units: 1 + description: leaf area index + # + - standard_name: temperature_of_soil_layer + canonical_units: K + description: temperature in soil layer + # + - standard_name: height + canonical_units: m + description: orography + # + - standard_name: Sa_exner + alias: inst_exner_function_height_lowest + canonical_units: 1 + description: dimensionless exner function at surface adjacent layer + # + - standard_name: Sa_ustar + alias: surface_friction_velocity + canonical_units: m s-1 + description: surface friction velocity + # + #----------------------------------- + # section: sea-ice export + #----------------------------------- + # + - standard_name: Faii_evap + alias: evap_rate_atm_into_ice + canonical_units: kg m-2 s-1 + description: sea-ice export + # + - standard_name: Faii_lat + alias: laten_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice latent heat flux + # + - standard_name: Faii_sen + alias: sensi_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice sensible heat flux + # + - standard_name: Faii_lwup + alias: lwup_flx_ice + canonical_units: W m-2 + description: sea-ice export - outgoing logwave radiation + # + - standard_name: Faii_swnet + canonical_units: W m-2 + description: sea-ice export to atm + # + - standard_name: Faii_taux + alias: stress_on_air_ice_zonal + canonical_units: N m-2 + description: sea-ice export to atm - air ice zonal stress + # + - standard_name: Faii_tauy + alias: stress_on_air_ice_merid + canonical_units: N m-2 + description: sea-ice export - air ice meridional stress + # + - standard_name: Fioi_bcphi + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophilic black carbon flux to ocean + # + - standard_name: Fioi_bcpho + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophobic black carbon flux to ocean + # + - standard_name: Fioi_flxdst + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - dust aerosol flux to ocean + # + - standard_name: Fioi_melth + alias: net_heat_flx_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - net heat flux to ocean + # + - standard_name: Fioi_meltw + alias: mean_fresh_water_to_ocean_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) + # + - standard_name: Fioi_meltw_wiso + alias: mean_fresh_water_to_ocean_rate_wiso + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) for 16O, 18O, HDO + # + - standard_name: Fioi_salt + alias: mean_salt_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - salt to ocean (salt flux from melting) + # + - standard_name: Fioi_swpen + alias: mean_sw_pen_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - flux of shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdr + alias: mean_sw_pen_to_ocn_vis_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vis dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdf + alias: mean_sw_pen_to_ocn_vis_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vif dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idr + alias: mean_sw_pen_to_ocn_ir_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idf + alias: mean_sw_pen_to_ocn_ir_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dif shortwave through ice to ocean + # + - standard_name: Fioi_taux + alias: stress_on_ocn_ice_zonal + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean zonal stress + # + - standard_name: Fioi_tauy + alias: stress_on_ocn_ice_merid + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean meridional stress + # + - standard_name: Si_anidf + alias: inst_ice_ir_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_anidr + alias: inst_ice_ir_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdf + alias: inst_ice_vis_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdr + alias: inst_ice_vis_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_ifrac + alias: ice_fraction + canonical_units: 1 + description: sea-ice export to atm - ice fraction (varies with time) + # + - standard_name: Si_imask + alias: ice_mask + canonical_units: 1 + description: sea-ice export - ice mask + # + - standard_name: Si_qref + canonical_units: kg kg-1 + description: sea-ice export to atm + # + - standard_name: Si_t + alias: sea_ice_surface_temperature + canonical_units: K + description: sea-ice export + # + - standard_name: Si_tref + canonical_units: K + description: sea-ice export + # + - standard_name: Si_u10 + canonical_units: m/s + description: sea-ice export + # + - standard_name: Si_vice + alias: sea_ice_volume + canonical_units: m + description: sea-ice export - volume of ice per unit area + # + - standard_name: Si_snowh + canonical_units: m + description: sea-ice export - surface_snow_water_equivalent + # + - standard_name: Si_vsno + alias: snow_volume_on_sea_ice + canonical_units: m + description: sea-ice export - volume of snow per unit area + # + - standard_name: Si_thick + canonical_units: m + description: sea-ice export - ice thickness + # + - standard_name: Si_floediam + canonical_units: m + description: sea-ice export - ice floe diameter + # + #----------------------------------- + # section: ocean export to mediator + #----------------------------------- + # + - standard_name: Fioo_q + alias: freezing_melting_potential + canonical_units: W m-2 + description: ocean export + # + - standard_name: So_bldepth + alias: mixed_layer_depth + canonical_units: m + description: ocean export + # + - standard_name: So_h + alias: sea_surface_height_above_sea_level + canonical_units: m + description: ocean export + - standard_name: So_h + alias: seahgt + # + - standard_name: So_dhdx + alias: sea_surface_slope_zonal + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_dhdy + alias: sea_surface_slope_merid + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_duu10n + canonical_units: m2 s-2 + description: ocean export + # + - standard_name: So_fswpen + canonical_units: 1 + description: ocean export + # + - standard_name: So_ofrac + canonical_units: 1 + description: ocean export + # + - standard_name: So_omask + alias: ocean_mask + canonical_units: 1 + description: ocean export + # + - standard_name: So_qref + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_re + canonical_units: 1 + description: ocean export + # + - standard_name: So_s + alias: s_surf + canonical_units: g kg-1 + description: ocean export + # + - standard_name: So_ssq + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_t + alias: sea_surface_temperature + canonical_units: K + description: ocean export + # + - standard_name: So_tref + canonical_units: K + description: ocean export + # + - standard_name: So_u + alias: ocn_current_zonal + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_u10 + canonical_units: m + description: ocean export + # + - standard_name: So_ustar + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_v + alias: ocn_current_merid + canonical_units: m s-1 + description: ocean export + # + #----------------------------------- + # section: ocean import + #----------------------------------- + # + - standard_name: Foxx_hrain + canonical_units: W m-2 + description: to ocn heat content of rain + # + - standard_name: Foxx_hsnow + canonical_units: W m-2 + description: to ocn heat content of snow + # + - standard_name: Foxx_hevap + canonical_units: W m-2 + description: to ocn heat content of evaporation + # + - standard_name: Foxx_hcond + canonical_units: W m-2 + description: to ocn heat content of condensation + # + - standard_name: Foxx_hrofl + canonical_units: W m-2 + description: to ocn heat content of liquid runoff + # + - standard_name: Foxx_hrofi + canonical_units: W m-2 + description: to ocn heat content of ice runoff + # + - standard_name: Foxx_rofi + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (frozen) + # + - standard_name: Foxx_rofl + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (liquid) + # + - standard_name: Foxx_swnet + alias: mean_net_sw_flx + canonical_units: W m-2 + description: ocean import - net shortwave radiation to ocean + # + - standard_name: Foxx_swnet_vdr + alias: mean_net_sw_vis_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible direct radiation to ocean + # + - standard_name: Foxx_swnet_vdf + alias: mean_net_sw_vis_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible diffuse radiation to ocean + # + - standard_name: Foxx_swnet_idr + alias: mean_net_sw_ir_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir direct radiation to ocean + # + - standard_name: Foxx_swnet_idf + alias: mean_net_sw_ir_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir diffuse radiation to ocean + # + - standard_name: Foxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: ocean import - sensible heat flux into ocean + # + - standard_name: Foxx_lat + canonical_units: W m-2 + description: ocean import - latent heat flux into ocean + # + - standard_name: Foxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: ocean import - zonal surface stress to ocean + # + - standard_name: Foxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: ocean import - meridional surface stress to ocean + # + #----------------------------------- + # mediator fields + #----------------------------------- + # + - standard_name: cpl_scalars + canonical_units: unitless + # + - standard_name: frac + canonical_units: 1 + # + - standard_name: mask + canonical_units: 1 + # + #----------------------------------- + # fields to use fluxes from mediator + #----------------------------------- + # + - standard_name: Faox_lat + alias: laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface latent heat flux + # + - standard_name: Faox_sen + alias: sensi_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface sensible heat flux + # + - standard_name: Faox_lwup + alias: lwup_flx_ocn + canonical_units: W m-2 + description: mediator export - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator export + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator export + # + #----------------------------------- + # section: atmosphere fields that need to be defined but are not used + #----------------------------------- + # + - standard_name: mean_prec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_fprec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_prec_rate_conv + canonical_units: kg m-2 s-1 + - standard_name: mean_down_lw_flx + canonical_units: W m-2 + - standard_name: inst_net_lw_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_flx + canonical_units: W m-2 + - standard_name: mean_net_sw_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_surface_height + canonical_units: m + - standard_name: mean_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: mean_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: N m-2 + - standard_name: inst_laten_heat_flx + canonical_units: N m-2 + - standard_name: inst_evap_rate + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_tracer_up_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_down_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_clmn_mass_dens + canonical_units: g m-2 + - standard_name: inst_tracer_anth_biom_flx + canonical_units: ug m-2 s-1 + description: atmosphere export + - standard_name: inst_pres_interface + canonical_units: Pa + - standard_name: inst_pres_levels + canonical_units: Pa + - standard_name: inst_geop_interface + canonical_units: tbd + - standard_name: inst_geop_levels + canonical_units: tbd + - standard_name: inst_temp_interface + canonical_units: K + - standard_name: inst_temp_levels + canonical_units: K + - standard_name: inst_zonal_wind_levels + canonical_units: m s-1 + - standard_name: inst_merid_wind_levels + canonical_units: m s-1 + - standard_name: inst_omega_levels + canonical_units: tbd + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_soil_moisture_content + canonical_units: tbd + - standard_name: soil_type + canonical_units: tbd + - standard_name: inst_pbl_height + canonical_units: tbd + - standard_name: surface_cell_area + canonical_units: tbd + - standard_name: inst_convective_rainfall_amount + canonical_units: tbd + - standard_name: inst_spec_humid_conv_tendency_levels + canonical_units: tbd + - standard_name: inst_exchange_coefficient_heat_levels + canonical_units: tbd + - standard_name: inst_friction_velocity + canonical_units: tbd + - standard_name: inst_rainfall_amount + canonical_units: tbd + - standard_name: inst_land_sea_mask + canonical_units: tbd + - standard_name: inst_temp_height_surface + canonical_units: tbd + - standard_name: inst_up_sensi_heat_flx + canonical_units: tbd + - standard_name: inst_lwe_snow_thickness + canonical_units: tbd + - standard_name: vegetation_type + canonical_units: tbd + - standard_name: inst_vegetation_area_frac + canonical_units: tbd + - standard_name: inst_surface_roughness + canonical_units: tbd + - standard_name: inst_laten_heat_flx + canonical_units: W m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: W m-2 + - standard_name: land_mask + canonical_units: 1 + - standard_name: inst_cloud_frac_levels + canonical_units: 1 + - standard_name: inst_ice_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_liq_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_surface_soil_wetness + canonical_units: 1 + - standard_name: lake_fraction + canonical_units: 1 + - standard_name: ice_fraction_in_atm + alias: sea_ice_area_fraction + canonical_units: 1 + - standard_name: ocean_fraction + canonical_units: 1 + - standard_name: surface_snow_area_fraction + canonical_units: 1 + # + #----------------------------------- + # WW3 import + #----------------------------------- + # + - standard_name: sea_surface_height_above_sea_level + canonical_units: m + description: ww3 import + # + - standard_name: sea_surface_salinity + alias: s_surf + canonical_units: g kg-1 + description: ww3 import + # + - standard_name: surface_eastward_sea_water_velocity + alias: ocn_current_zonal + canonical_units: m s-1 + description: ww3 import + # + - standard_name: surface_northward_sea_water_velocity + alias: ocn_current_merid + canonical_units: m s-1 + description: ww3 import + # + - standard_name: eastward_wind_at_10m_height + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: northward_wind_at_10m_height + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: sea_ice_concentration + alias: ice_fraction + canonical_units: 1 + description: ww3 import + # + #----------------------------------- + # WW3 export + #----------------------------------- + # + - standard_name: Sw_z0 + alias: wave_z0_roughness_length + canonical_units: 1 + description: ww3 export + - standard_name: Sw_z0 + alias: z0rlen + # + - standard_name: Sw_pstokes_x + alias: eastward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_pstokes_y + alias: northward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_elevation_spectrum + alias: wave_elevation_spectrum + canonical_units: m2/s + description: wave elevation spectrum + # + # remaining fields are unused but required to be present + # + - standard_name: Sw_ch + alias: wave_induced_charnock_parameter + canonical_units: 1 + description: ww3 export + - standard_name: Sw_ch + alias: charno + # + - standard_name: eastward_stokes_drift_current + alias: uscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: northward_stokes_drift_current + alias: vscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: Sw_ustokes + alias: eastward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export surface drift components + - standard_name: Sw_ustokes + alias: ussx + # + - standard_name: Sw_vstokes + alias: northward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export using surface drift components + - standard_name: Sw_vstokes + alias: ussy + # + - standard_name: Sw_wbcuru + alias: eastward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcuru + alias: wbcuru + # + - standard_name: Sw_wbcurv + alias: northward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcurv + alias: wbcurv + # + - standard_name: Sw_wbcurp + alias: wave_bottom_current_period + canonical_units: s + description: ww3 export + - standard_name: Sw_wbcurp + alias: wbcurp + # + - standard_name: Sw_wavsuu + alias: eastward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuu + alias: wavsuu + # + - standard_name: Sw_wavsuv + alias: eastward_northward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuv + alias: wavsuv + # + - standard_name: Sw_wavsvv + alias: northward_wave_radiation_stress + canonical_units: Pa + description: ww3 export + - standard_name: Sw_wavsvv + alias: wavsvv + # + - standard_name: Sw_ustokes1 + alias: eastward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes1 + alias: x1pstk + # + - standard_name: Sw_ustokes2 + alias: eastward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes2 + alias: x2pstk + # + - standard_name: Sw_ustokes3 + alias: eastward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes3 + alias: x3pstk + # + - standard_name: Sw_vstokes1 + alias: northward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes1 + alias: y1pstk + # + - standard_name: Sw_vstokes2 + alias: northward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes2 + alias: y2pstk + # + - standard_name: Sw_vstokes3 + alias: northward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes3 + alias: y3pstk + # + #----------------------------------- + # section: FV3 atm export/import to/from JEDI + #----------------------------------- + # + - standard_name: u + canonical_units: m s-1 + # + - standard_name: v + canonical_units: m s-1 + # + - standard_name: ua + canonical_units: m s-1 + # + - standard_name: va + canonical_units: m s-1 + # + - standard_name: t + canonical_units: K + # + - standard_name: delp + canonical_units: Pa + # + - standard_name: sphum + canonical_units: kg kg-1 + # + - standard_name: ice_wat + canonical_units: kg kg-1 + # + - standard_name: liq_wat + canonical_units: kg kg-1 + # + - standard_name: o3mr + canonical_units: kg kg-1 + # + - standard_name: phis + canonical_units: m2 s-2 + # + - standard_name: u_srf + canonical_units: m s-1 + # + - standard_name: v_srf + canonical_units: m s-1 + # + # + - standard_name: slmsk + canonical_units: flag + description: landmask sea/land/ice=0/1/2 + # + - standard_name: weasd + canonical_units: mm + description: water equiv of acc snow depth over land and sea ice + # + - standard_name: tsea + canonical_units: K + description: surface skin temperature + # + - standard_name: vtype + canonical_units: index + description: vegetation type + # + - standard_name: stype + canonical_units: index + description: soil type + # + - standard_name: Sa_vfrac + canonical_units: frac + description: areal fractional cover of green vegetation + - standard_name: Sa_vfrac + alias: vfrac + # + - standard_name: stc + canonical_units: K + description: soil temperature content + # + - standard_name: smc + canonical_units: m3 m-3 + description: soil moisture content + # + - standard_name: snwdph + canonical_units: mm + description: snow depth in mm + # + - standard_name: f10m + canonical_units: ratio + description: fm at 10m - Ratio of sigma level 1 wind and 10m wind + # + - standard_name: Sa_zorl + canonical_units: cm + description: composite surface roughness in cm + - standard_name: Sa_zorl + alias: zorl + # + - standard_name: t2m + canonical_units: K + description: two meter temperature + # + #----------------------------------- + # section: land export + #----------------------------------- + # + - standard_name: Sl_lfrac + alias: land_fraction + canonical_units: 1 + description: land export + # + - standard_name: Sl_lfrin + canonical_units: 1 + description: land export + # + - standard_name: Sl_t + canonical_units: K + description: land export + # + - standard_name: inst_tracer_diag_aod + canonical_units: 1 + description: AOD + # + - standard_name: Sl_sfrac + alias: inst_snow_area_fraction_lnd + canonical_units: 1 + description: land export + # + - standard_name: Sl_tref + alias: inst_temp_height2m_lnd + canonical_units: K + description: mediator export to glc - no levation classes + # + - standard_name: Sl_qref + alias: inst_spec_humid_height2m_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Sl_q + alias: inst_spec_humid_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Fall_lat + alias: inst_laten_heat_flx_lnd + canonical_units: kg kg-1 m s-1 + description: land export to atm - atm/lnd latent heat flux + # + - standard_name: Fall_sen + alias: inst_sensi_heat_flx_lnd + canonical_units: K m s-1 + description: land export to atm - atm/lnd sensible heat flux + # + - standard_name: Fall_evap + alias: inst_potential_laten_heat_flx_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_gflx + alias: inst_upward_heat_flux_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_roff + alias: inst_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Fall_soff + alias: inst_subsurface_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_cmm + alias: inst_drag_wind_speed_for_momentum + canonical_units: m s-1 + description: land export + # + - standard_name: Sl_chh + alias: inst_drag_mass_flux_for_heat_and_moisture + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_zvfun + alias: inst_func_of_roughness_length_and_vfrac + canonical_units: 1 + description: land export diff --git a/ush/sample_configs/config_c3/ensf/field_table b/ush/sample_configs/config_c3/ensf/field_table new file mode 100644 index 000000000..691a27f54 --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/field_table @@ -0,0 +1,85 @@ +# added by FRE: sphum must be present in atmos +# specific humidity for moist runs + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e-6" / +# prognostic cloud water mixing ratio + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic ice water mixing ratio + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic rain water mixing ratio + "TRACER", "atmos_mod", "rainwat" + "longname", "rain water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic snow water mixing ratio + "TRACER", "atmos_mod", "snowwat" + "longname", "snow water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic graupel mixing ratio + "TRACER", "atmos_mod", "graupel" + "longname", "graupel mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water number concentration + "TRACER", "atmos_mod", "water_nc" + "longname", "cloud liquid water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic cloud ice number concentration + "TRACER", "atmos_mod", "ice_nc" + "longname", "cloud ice water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic rain number concentration + "TRACER", "atmos_mod", "rain_nc" + "longname", "rain number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic ozone mixing ratio tracer + "TRACER", "atmos_mod", "o3mr" + "longname", "ozone mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# water- and ice-friendly aerosols (Thompson) + "TRACER", "atmos_mod", "liq_aero" + "longname", "water-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "ice_aero" + "longname", "ice-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic subgrid scale turbulent kinetic energy + "TRACER", "atmos_mod", "sgs_tke" + "longname", "subgrid scale turbulent kinetic energy" + "units", "m2/s2" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic sigmab tracer + "TRACER", "atmos_mod", "sigmab" + "longname", "sigma fraction" + "units", "fraction" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic smoke mixing ratio tracer + "TRACER", "atmos_mod", "smoke" + "longname", "smoke mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic dust mixing ratio tracer + "TRACER", "atmos_mod", "dust" + "longname", "dust mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic coarsepm mixing ratio tracer + "TRACER", "atmos_mod", "coarsepm" + "longname", "coarsepm mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / diff --git a/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch new file mode 100644 index 000000000..699cdd8f9 --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch @@ -0,0 +1,379 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 28 + ccpp_suite = 'RRFS_sas' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 31, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + conv_cf_opt = 1 + coarsepm_settling = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_shum = .false. + do_skeb = .false. + do_smoke_transport = .true. + do_spp = .true. + do_sppt = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gf_coldstart = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 3 + imfshalcnv = 3 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isatmedmf = 1 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lndp_each_step = .true. + lndp_type = 2 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + n_var_lndp = 7 + n_var_spp = 5 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 30 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .false. + rrfs_smoke_debug = .false. + satmedmf = .false. + sc_factor = 1.0 + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts + iseed_lndp = 9 + lndp_lscale = 150000, 150000, 150000, 150000, 150000 + lndp_model_type = 2 + lndp_prt_list = 0.2, 0.001, 0.001, 0.001, 0.001, 0.001, 0.2 + lndp_tau = 21600, 21600, 21600, 21600, 21600 + lndp_type = 2 + lndp_var_list = 'smc', 'vgf', 'alb', 'sal', 'emi', 'zol', 'stc' + lndpint = 180 +/ + +&nam_sppperts + iseed_spp = 4, 5, 6, 7, 8 + spp_lscale = 150000.0, 150000.0, 150000.0, 150000.0, 150000.0 + spp_prt_list = 0.2, 0.2, 0.75, 0.2, 0.2 + spp_sigtop1 = 0.1, 0.1, 0.1, 0.1, 0.1 + spp_sigtop2 = 0.025, 0.025, 0.025, 0.025, 0.025 + spp_stddev_cutoff = 1.5, 1.5, 2.5, 1.5, 1.5 + spp_tau = 21600.0, 21600.0, 21600.0, 21600.0, 21600.0 + spp_var_list = 'pbl', 'sfc', 'mp', 'rad', 'gwd' + sppint = 36 +/ + +&nam_stochy + new_lscale = .true. +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy1 b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy1 new file mode 100644 index 000000000..dd82646c8 --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy1 @@ -0,0 +1,358 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 28 + ccpp_suite = 'RRFSens_phy1' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 31, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + conv_cf_opt = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .false. + do_mynnsfclay = .false. + do_shum = .false. + do_skeb = .false. + do_smoke_transport = .true. + do_spp = .true. + do_sppt = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + dspheat = .true. + dt_inner = 36 + dust_drylimit_factor = 0.5 + dust_moist_correction = 2.0 + ebb_dcycle = 2 + effr_in = .true. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gf_coldstart = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 3 + imfshalcnv = 3 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isatmedmf = 1 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lndp_each_step = .true. + lndp_type = 2 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mosaic_lu = 1 + mosaic_soil = 1 + n_var_lndp = 7 + n_var_spp = 4 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + pre_rad = .false. + print_diff_pgr = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .true. + sc_factor = 1.0 + sfclay_compute_flux = .true. + shal_cnv = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts + iseed_lndp = 9 + lndp_lscale = 150000, 150000, 150000, 150000, 150000 + lndp_model_type = 2 + lndp_prt_list = 0.2, 0.001, 0.001, 0.001, 0.001, 0.001, 0.2 + lndp_tau = 21600, 21600, 21600, 21600, 21600 + lndp_type = 2 + lndp_var_list = 'smc', 'vgf', 'alb', 'sal', 'emi', 'zol', 'stc' + lndpint = 180 +/ + +&nam_sppperts + iseed_spp = 4, 5, 6, 7 + spp_lscale = 150000.0, 150000.0, 150000.0, 150000.0 + spp_prt_list = 0.75, 0.2, 0.2, 0.3 + spp_sigtop1 = 0.1, 0.1, 0.1, 0.1 + spp_sigtop2 = 0.025, 0.025, 0.025, 0.025 + spp_stddev_cutoff = 2.5, 1.5, 1.5, 3.0 + spp_tau = 21600.0, 21600.0, 21600.0, 21600.0 + spp_var_list = 'mp', 'rad', 'gwd', 'cu_deep' + sppint = 36 +/ + +&nam_stochy + new_lscale = .true. +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy2 b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy2 new file mode 100644 index 000000000..3c42a53fb --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy2 @@ -0,0 +1,360 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFSens_phy2' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 31, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_shum = .false. + do_skeb = .false. + do_smoke_transport = .true. + do_spp = .true. + do_sppt = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + dspheat = .true. + dt_inner = 36 + dust_drylimit_factor = 0.5 + dust_moist_correction = 2.0 + ebb_dcycle = 2 + effr_in = .true. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lndp_each_step = .true. + lndp_type = 2 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mosaic_lu = 1 + mosaic_soil = 1 + n_var_lndp = 7 + n_var_spp = 5 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .false. + sc_factor = 1.0 + sfclay_compute_flux = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts + iseed_lndp = 9 + lndp_lscale = 150000, 150000, 150000, 150000, 150000 + lndp_model_type = 2 + lndp_prt_list = 0.2, 0.001, 0.001, 0.001, 0.001, 0.001, 0.2 + lndp_tau = 21600, 21600, 21600, 21600, 21600 + lndp_type = 2 + lndp_var_list = 'smc', 'vgf', 'alb', 'sal', 'emi', 'zol', 'stc' + lndpint = 180 +/ + +&nam_sppperts + iseed_spp = 4, 5, 6, 7, 8 + spp_lscale = 150000.0, 150000.0, 150000.0, 150000.0, 150000.0 + spp_prt_list = 0.2, 0.2, 0.75, 0.2, 0.2 + spp_sigtop1 = 0.1, 0.1, 0.1, 0.1, 0.1 + spp_sigtop2 = 0.025, 0.025, 0.025, 0.025, 0.025 + spp_stddev_cutoff = 1.5, 1.5, 2.5, 1.5, 1.5 + spp_tau = 21600.0, 21600.0, 21600.0, 21600.0, 21600.0 + spp_var_list = 'pbl', 'sfc', 'mp', 'rad', 'gwd' + sppint = 36 +/ + +&nam_stochy + new_lscale = .true. +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy3 b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy3 new file mode 100644 index 000000000..2efaf688f --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy3 @@ -0,0 +1,367 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFSens_phy3' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 31, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 7 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_shum = .false. + do_skeb = .false. + do_smoke_transport = .true. + do_spp = .true. + do_sppt = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + dspheat = .true. + dt_inner = 36 + dust_drylimit_factor = 0.5 + dust_moist_correction = 2.0 + ebb_dcycle = 2 + effr_in = .true. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gf_coldstart = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 3 + imfshalcnv = -1 + imp_physics = 17 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lndp_each_step = .true. + lndp_type = 2 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mosaic_lu = 1 + mosaic_soil = 1 + n_var_lndp = 6 + n_var_spp = 4 + nsfullradar_diag = 3600 + nssl_alphah = 2.32 + nssl_alphar = 0.83 + nssl_cccn = 550000000.0 + nssl_ccn_on = .true. + nssl_ehlw0 = 0.82 + nssl_ehw0 = 0.79 + nssl_hail_on = .true. + nssl_invertccn = .true. + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + pre_rad = .false. + print_diff_pgr = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .false. + sc_factor = 1.0 + sfclay_compute_flux = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts + iseed_lndp = 9 + lndp_lscale = 150000, 150000, 150000, 150000, 150000 + lndp_model_type = 2 + lndp_prt_list = 0.2, 0.001, 0.001, 0.001, 0.001, 0.2 + lndp_tau = 21600, 21600, 21600, 21600, 21600 + lndp_type = 2 + lndp_var_list = 'smc', 'vgf', 'alb', 'sal', 'emi', 'stc' + lndpint = 180 +/ + +&nam_sppperts + iseed_spp = 4, 5, 6, 7 + spp_lscale = 150000.0, 150000.0, 150000.0, 150000.0 + spp_prt_list = 0.2, 0.2, 0.2, 0.2 + spp_sigtop1 = 0.1, 0.1, 0.1, 0.1 + spp_sigtop2 = 0.025, 0.025, 0.025, 0.025 + spp_stddev_cutoff = 1.5, 1.5, 1.5, 1.5 + spp_tau = 21600.0, 21600.0, 21600.0, 21600.0 + spp_var_list = 'pbl', 'sfc', 'rad', 'gwd' + sppint = 36 +/ + +&nam_stochy + new_lscale = .true. +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy4 b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy4 new file mode 100644 index 000000000..deb3ec4b2 --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy4 @@ -0,0 +1,366 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFSens_phy4' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 31, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 7 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + conv_cf_opt = 1 + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .false. + do_mynnsfclay = .false. + do_shum = .false. + do_skeb = .false. + do_smoke_transport = .true. + do_spp = .true. + do_sppt = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + dspheat = .true. + dt_inner = 36 + dust_drylimit_factor = 0.5 + dust_moist_correction = 2.0 + ebb_dcycle = 2 + effr_in = .true. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gf_coldstart = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 3 + imfshalcnv = 3 + imp_physics = 17 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isatmedmf = 1 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lndp_each_step = .true. + lndp_type = 2 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mosaic_lu = 1 + mosaic_soil = 1 + n_var_lndp = 7 + n_var_spp = 3 + nsfullradar_diag = 3600 + nssl_alphah = 0.95 + nssl_alphar = 1.38 + nssl_cccn = 880000000.0 + nssl_ccn_on = .true. + nssl_ehlw0 = 0.87 + nssl_ehw0 = 0.62 + nssl_hail_on = .true. + nssl_invertccn = .true. + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + pre_rad = .false. + print_diff_pgr = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .true. + sc_factor = 1.0 + sfclay_compute_flux = .true. + shal_cnv = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts + iseed_lndp = 9 + lndp_lscale = 150000, 150000, 150000, 150000, 150000 + lndp_model_type = 2 + lndp_prt_list = 0.2, 0.001, 0.001, 0.001, 0.001, 0.001, 0.2 + lndp_tau = 21600, 21600, 21600, 21600, 21600 + lndp_type = 2 + lndp_var_list = 'smc', 'vgf', 'alb', 'sal', 'emi', 'zol', 'stc' + lndpint = 180 +/ + +&nam_sppperts + iseed_spp = 4, 5, 6 + spp_lscale = 150000.0, 150000.0, 150000.0 + spp_prt_list = 0.2, 0.2, 0.3 + spp_sigtop1 = 0.1, 0.1, 0.1 + spp_sigtop2 = 0.025, 0.025, 0.025 + spp_stddev_cutoff = 1.5, 1.5, 3.0 + spp_tau = 21600.0, 21600.0, 21600.0 + spp_var_list = 'rad', 'gwd', 'cu_deep' + sppint = 36 +/ + +&nam_stochy + new_lscale = .true. +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy5 b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy5 new file mode 100644 index 000000000..6d1ebe323 --- /dev/null +++ b/ush/sample_configs/config_c3/ensf/input.nml_restart_stoch_ensphy5 @@ -0,0 +1,369 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFSens_phy5' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 10000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + agrid_vel_rst = .true. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .false. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 31, 32 + make_nh = .false. + mountain = .true. + n_split = 5 + n_sponge = -1 + n_zs_filter = 0 + na_init = 0 + ncep_ic = .false. + nggps_ic = .false. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 1821 + npy = 1093 + npz = 65 + nrows_blend = 20 + ntiles = 1 + nudge_qv = .false. + nwat = 7 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .false. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = 40000.0 + stretch_fac = 0.999 + target_lat = 38.5 + target_lon = -97.5 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .true. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_diagnostics_nml + do_hailcast = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_shum = .false. + do_skeb = .false. + do_smoke_transport = .true. + do_spp = .true. + do_sppt = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + dspheat = .true. + dt_inner = 36 + dust_drylimit_factor = 0.5 + dust_moist_correction = 2.0 + ebb_dcycle = 2 + effr_in = .true. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hwp_method = 1 + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 17 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lndp_each_step = .true. + lndp_type = 2 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mosaic_lu = 1 + mosaic_soil = 1 + n_var_lndp = 7 + n_var_spp = 4 + nsfullradar_diag = 3600 + nssl_alphah = 1.39 + nssl_alphar = 2.03 + nssl_cccn = 990000000.0 + nssl_ccn_on = .true. + nssl_ehlw0 = 0.8 + nssl_ehw0 = 0.68 + nssl_hail_on = .true. + nssl_invertccn = .true. + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + pre_rad = .false. + print_diff_pgr = .true. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .false. + sc_factor = 1.0 + sfclay_compute_flux = .true. + shal_cnv = .false. + sigmab_coldstart = .true. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts + iseed_lndp = 9 + lndp_lscale = 150000, 150000, 150000, 150000, 150000 + lndp_model_type = 2 + lndp_prt_list = 0.2, 0.001, 0.001, 0.001, 0.001, 0.001, 0.2 + lndp_tau = 21600, 21600, 21600, 21600, 21600 + lndp_type = 2 + lndp_var_list = 'smc', 'vgf', 'alb', 'sal', 'emi', 'zol', 'stc' + lndpint = 180 +/ + +&nam_sppperts + iseed_spp = 4, 5, 6, 7 + spp_lscale = 150000.0, 150000.0, 150000.0, 150000.0 + spp_prt_list = 0.2, 0.2, 0.2, 0.2 + spp_sigtop1 = 0.1, 0.1, 0.1, 0.1 + spp_sigtop2 = 0.025, 0.025, 0.025, 0.025 + spp_stddev_cutoff = 1.5, 1.5, 1.5, 1.5 + spp_tau = 21600.0, 21600.0, 21600.0, 21600.0 + spp_var_list = 'pbl', 'sfc', 'rad', 'gwd' + sppint = 36 +/ + +&nam_stochy + new_lscale = .true. +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '' + fnacna = '' + fnaisc = '' + fnalbc = '' + fnalbc2 = '' + fnglac = '' + fnmskh = '' + fnmxic = '' + fnslpc = '' + fnsmcc = '' + fnsnoa = '' + fnsnoc = '' + fnsotc = '' + fntg3c = '' + fntsfa = '' + fntsfc = '' + fnvegc = '' + fnvetc = '' + fnvmnc = '' + fnvmxc = '' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/sample_configs/config_c3/firewx/data_table b/ush/sample_configs/config_c3/firewx/data_table new file mode 100644 index 000000000..e69de29bb diff --git a/ush/sample_configs/config_c3/firewx/fd_ufs.yaml b/ush/sample_configs/config_c3/firewx/fd_ufs.yaml new file mode 100644 index 000000000..a91ff96d6 --- /dev/null +++ b/ush/sample_configs/config_c3/firewx/fd_ufs.yaml @@ -0,0 +1,1232 @@ + field_dictionary: + version_number: 0.0.0 + institution: National ESPC, CSC & MCL Working Groups + source: automatically generated by the NUOPC Layer + description: Community-based dictionary for shared coupling fields + entries: + # + #----------------------------------- + # section: mediator calculation for atm/ocn flux calculation + #----------------------------------- + # + - standard_name: Faox_lat + alias: mean_laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator calculation - atm/ocn surface latent heat flux + # + - standard_name: Faox_lwup + alias: mean_up_lw_flx_ocn + canonical_units: W m-2 + description: mediator calculation - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator calculation + # + - standard_name: Foxx_lwnet + alias: mean_net_lw_flx + canonical_units: W m-2 + description: mediator calculation - atm/ocn net longwave flux + # + - standard_name: Foxx_sen + canonical_units: W m-2 + alias: mean_sensi_heat_flx + description: mediator calculation - atm/ocn surface sensible heat flux + # + - standard_name: Foxx_evap + canonical_units: kg m-2 s-1 + alias: mean_evap_rate + description: mediator calculation - atm/ocn specific humidity flux + # + - standard_name: Faox_evap + canonical_units: kg m-2 s-1 + description: mediator calculation - atm/ocn specific humidity flux + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_bcph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_ocph + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstdry + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_dstwet + canonical_units: kg m-2 s-1 + description: atmosphere export + # + #----------------------------------- + # section: atmosphere export + #----------------------------------- + # + - standard_name: Faxa_swdn + alias: inst_down_sw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward SW heat flux + # + - standard_name: Faxa_lwdn + alias: inst_down_lw_flx + canonical_units: W m-2 + description: atmosphere export - mean downward LW heat flux + # + - standard_name: Faxa_rain + alias: inst_prec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainc + alias: inst_prec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_rainl + alias: inst_prec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snow + alias: inst_fprec_rate + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowc + alias: inst_fprec_rate_conv + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_snowl + alias: inst_fprec_rate_large + canonical_units: kg m-2 s-1 + description: atmosphere export + # + - standard_name: Faxa_swnet + alias: inst_net_sw_flx + canonical_units: W m-2 + description: atmosphere export + # + - standard_name: Faxa_swndf + alias: inst_down_sw_ir_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir diffuse flux + # + - standard_name: Faxa_swndr + alias: inst_down_sw_ir_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward nir direct flux + # + - standard_name: Faxa_swvdf + alias: inst_down_sw_vis_dif_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+vis diffuse flux + # + - standard_name: Faxa_swvdr + alias: inst_down_sw_vis_dir_flx + canonical_units: W m-2 + description: atmosphere export - mean surface downward uv+visvdirect flux + # + - standard_name: Sa_dens + alias: air_density_height_lowest + canonical_units: kg m-3 + description: atmosphere export- density at the lowest model layer + # + - standard_name: Sa_pbot + alias: inst_pres_height_lowest + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_prsl + alias: inst_pres_height_lowest_from_phys + canonical_units: Pa + description: atmosphere export - pressure at lowest model layer + # + - standard_name: Sa_pslv + alias: inst_pres_height_surface + canonical_units: Pa + description: atmosphere export - instantaneous pressure land and sea surface + # + - standard_name: Sa_ptem + canonical_units: K + description: atmosphere export - bottom layer potential temperature + # + - standard_name: Sa_shum + alias: inst_spec_humid_height_lowest + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_qa + alias: inst_spec_humid_height_lowest_from_phys + canonical_units: kg kg-1 + description: atmosphere export - bottom layer specific humidity + # + - standard_name: Sa_tbot + alias: inst_temp_height_lowest + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_tskn + alias: inst_temp_height_surface + - standard_name: Sa_tskn + alias: inst_temp_skin_temperature + canonical_units: K + description: atmosphere export - sea surface skin temperature + # + - standard_name: Sa_ta + alias: inst_temp_height_lowest_from_phys + canonical_units: K + description: atmosphere export - bottom layer temperature + # + - standard_name: Sa_u + alias: inst_zonal_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer zonal wind + # + - standard_name: Sa_v + alias: inst_merid_wind_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer meridional wind + # + - standard_name: Sa_wspd + alias: inst_wind_speed_height_lowest + canonical_units: m s-1 + description: atmosphere export - bottom layer wind speed + # + - standard_name: Sa_z + alias: inst_height_lowest + canonical_units: m + description: atmosphere export - bottom layer height + # + - standard_name: Sa_topo + alias: inst_surface_height + canonical_units: m + description: atmosphere export - topographic height + # + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx + - standard_name: Faxa_taux + alias: inst_zonal_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export- zonal component of momentum flux + # + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx + - standard_name: Faxa_tauy + alias: inst_merid_moment_flx_atm + canonical_units: N m-2 + description: atmosphere export - meridional component of momentum flux + # + - standard_name: Faxa_lwnet + canonical_units: W m-2 + alias: inst_net_lw_flx + description: atmosphere export - mean net longwave flux from atm + # + - standard_name: Faxa_sen + canonical_units: W m-2 + alias: inst_sensi_heat_flx + description: atmosphere export - sensible heat flux + # + - standard_name : Faxa_evap + canonical_units: kg m-2 s-1 + alias: inst_evap_rate + description: atmosphere export - latent heat flux conversion + # + - standard_name: Faxx_evap + canonical_units: kg m-2 s-1 + description: atmosphere import + # + - standard_name: Faxa_lat + alias: inst_laten_heat_flx + canonical_units: W m-2 + description: atmosphere export - latent heat flux + # + - standard_name: Faxx_lat + alias: mean_laten_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_lwup + alias: mean_up_lw_flx + canonical_units: W m-2 + description: atmosphere import - merged ocn/ice flux + # + - standard_name: Faxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: atmosphere import + # + - standard_name: Faxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: atmosphere import - zonal component of momentum flux + # + - standard_name: Faxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: atmosphere import - meridional component of momentum flux + # + - standard_name: Sa_ofrac + alias: openwater_frac_in_atm + canonical_units: 1 + description: atm export to mediator - open water ocean fraction (varies with time) + # + - standard_name: Sa_u10m + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: atmosphere export - zonal wind height 10m + - standard_name: Sa_u10m + alias: eastward_wind_at_10m_height + # + - standard_name: Sa_v10m + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: atmosphere export - meridional wind height 10m + - standard_name: Sa_v10m + alias: northward_wind_at_10m_height + # + - standard_name: Sa_wspd10m + alias: inst_wind_speed_height10m + canonical_units: m s-1 + description: atmosphere export - wind speed height 10m + # + - standard_name: Sa_t2m + alias: inst_temp_height2m + canonical_units: K + description: atmosphere export - temperature height 2m + # + - standard_name: Sa_q2m + alias: inst_spec_humid_height2m + canonical_units: kg kg -1 + description: atmosphere export - specifc humidity height 2m + # + - standard_name: canopy_moisture_storage + canonical_units: m + description: canopy moisture content + # + - standard_name: inst_aerodynamic_conductance + canonical_units: m + description: aerodynamic conductance + # + - standard_name: inst_canopy_resistance + canonical_units: s m-1 + description: canopy aerodynamic resistance + # + - standard_name: leaf_area_index + canonical_units: 1 + description: leaf area index + # + - standard_name: temperature_of_soil_layer + canonical_units: K + description: temperature in soil layer + # + - standard_name: height + canonical_units: m + description: orography + # + - standard_name: Sa_exner + alias: inst_exner_function_height_lowest + canonical_units: 1 + description: dimensionless exner function at surface adjacent layer + # + - standard_name: Sa_ustar + alias: surface_friction_velocity + canonical_units: m s-1 + description: surface friction velocity + # + #----------------------------------- + # section: sea-ice export + #----------------------------------- + # + - standard_name: Faii_evap + alias: evap_rate_atm_into_ice + canonical_units: kg m-2 s-1 + description: sea-ice export + # + - standard_name: Faii_lat + alias: laten_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice latent heat flux + # + - standard_name: Faii_sen + alias: sensi_heat_flx_atm_into_ice + canonical_units: W m-2 + description: sea-ice export to atm - atm/ice sensible heat flux + # + - standard_name: Faii_lwup + alias: lwup_flx_ice + canonical_units: W m-2 + description: sea-ice export - outgoing logwave radiation + # + - standard_name: Faii_swnet + canonical_units: W m-2 + description: sea-ice export to atm + # + - standard_name: Faii_taux + alias: stress_on_air_ice_zonal + canonical_units: N m-2 + description: sea-ice export to atm - air ice zonal stress + # + - standard_name: Faii_tauy + alias: stress_on_air_ice_merid + canonical_units: N m-2 + description: sea-ice export - air ice meridional stress + # + - standard_name: Fioi_bcphi + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophilic black carbon flux to ocean + # + - standard_name: Fioi_bcpho + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - hydrophobic black carbon flux to ocean + # + - standard_name: Fioi_flxdst + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - dust aerosol flux to ocean + # + - standard_name: Fioi_melth + alias: net_heat_flx_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - net heat flux to ocean + # + - standard_name: Fioi_meltw + alias: mean_fresh_water_to_ocean_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) + # + - standard_name: Fioi_meltw_wiso + alias: mean_fresh_water_to_ocean_rate_wiso + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - fresh water to ocean (h2o flux from melting) for 16O, 18O, HDO + # + - standard_name: Fioi_salt + alias: mean_salt_rate + canonical_units: kg m-2 s-1 + description: sea-ice export to ocean - salt to ocean (salt flux from melting) + # + - standard_name: Fioi_swpen + alias: mean_sw_pen_to_ocn + canonical_units: W m-2 + description: sea-ice export to ocean - flux of shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdr + alias: mean_sw_pen_to_ocn_vis_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vis dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_vdf + alias: mean_sw_pen_to_ocn_vis_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of vif dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idr + alias: mean_sw_pen_to_ocn_ir_dir_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dir shortwave through ice to ocean + # + - standard_name: Fioi_swpen_idf + alias: mean_sw_pen_to_ocn_ir_dif_flx + canonical_units: W m-2 + description: sea-ice export to ocean - flux of ir dif shortwave through ice to ocean + # + - standard_name: Fioi_taux + alias: stress_on_ocn_ice_zonal + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean zonal stress + # + - standard_name: Fioi_tauy + alias: stress_on_ocn_ice_merid + canonical_units: N m-2 + description: sea-ice export to ocean - ice ocean meridional stress + # + - standard_name: Si_anidf + alias: inst_ice_ir_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_anidr + alias: inst_ice_ir_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdf + alias: inst_ice_vis_dif_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_avsdr + alias: inst_ice_vis_dir_albedo + canonical_units: 1 + description: sea-ice export to atm + # + - standard_name: Si_ifrac + alias: ice_fraction + canonical_units: 1 + description: sea-ice export to atm - ice fraction (varies with time) + # + - standard_name: Si_imask + alias: ice_mask + canonical_units: 1 + description: sea-ice export - ice mask + # + - standard_name: Si_qref + canonical_units: kg kg-1 + description: sea-ice export to atm + # + - standard_name: Si_t + alias: sea_ice_surface_temperature + canonical_units: K + description: sea-ice export + # + - standard_name: Si_tref + canonical_units: K + description: sea-ice export + # + - standard_name: Si_u10 + canonical_units: m/s + description: sea-ice export + # + - standard_name: Si_vice + alias: sea_ice_volume + canonical_units: m + description: sea-ice export - volume of ice per unit area + # + - standard_name: Si_snowh + canonical_units: m + description: sea-ice export - surface_snow_water_equivalent + # + - standard_name: Si_vsno + alias: snow_volume_on_sea_ice + canonical_units: m + description: sea-ice export - volume of snow per unit area + # + - standard_name: Si_thick + canonical_units: m + description: sea-ice export - ice thickness + # + - standard_name: Si_floediam + canonical_units: m + description: sea-ice export - ice floe diameter + # + #----------------------------------- + # section: ocean export to mediator + #----------------------------------- + # + - standard_name: Fioo_q + alias: freezing_melting_potential + canonical_units: W m-2 + description: ocean export + # + - standard_name: So_bldepth + alias: mixed_layer_depth + canonical_units: m + description: ocean export + # + - standard_name: So_h + alias: sea_surface_height_above_sea_level + canonical_units: m + description: ocean export + - standard_name: So_h + alias: seahgt + # + - standard_name: So_dhdx + alias: sea_surface_slope_zonal + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_dhdy + alias: sea_surface_slope_merid + canonical_units: m m-1 + description: ocean export + # + - standard_name: So_duu10n + canonical_units: m2 s-2 + description: ocean export + # + - standard_name: So_fswpen + canonical_units: 1 + description: ocean export + # + - standard_name: So_ofrac + canonical_units: 1 + description: ocean export + # + - standard_name: So_omask + alias: ocean_mask + canonical_units: 1 + description: ocean export + # + - standard_name: So_qref + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_re + canonical_units: 1 + description: ocean export + # + - standard_name: So_s + alias: s_surf + canonical_units: g kg-1 + description: ocean export + # + - standard_name: So_ssq + canonical_units: kg kg-1 + description: ocean export + # + - standard_name: So_t + alias: sea_surface_temperature + canonical_units: K + description: ocean export + # + - standard_name: So_tref + canonical_units: K + description: ocean export + # + - standard_name: So_u + alias: ocn_current_zonal + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_u10 + canonical_units: m + description: ocean export + # + - standard_name: So_ustar + canonical_units: m s-1 + description: ocean export + # + - standard_name: So_v + alias: ocn_current_merid + canonical_units: m s-1 + description: ocean export + # + #----------------------------------- + # section: ocean import + #----------------------------------- + # + - standard_name: Foxx_hrain + canonical_units: W m-2 + description: to ocn heat content of rain + # + - standard_name: Foxx_hsnow + canonical_units: W m-2 + description: to ocn heat content of snow + # + - standard_name: Foxx_hevap + canonical_units: W m-2 + description: to ocn heat content of evaporation + # + - standard_name: Foxx_hcond + canonical_units: W m-2 + description: to ocn heat content of condensation + # + - standard_name: Foxx_hrofl + canonical_units: W m-2 + description: to ocn heat content of liquid runoff + # + - standard_name: Foxx_hrofi + canonical_units: W m-2 + description: to ocn heat content of ice runoff + # + - standard_name: Foxx_rofi + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (frozen) + # + - standard_name: Foxx_rofl + canonical_units: kg m-2 s-1 + description: ocean import - water flux due to runoff (liquid) + # + - standard_name: Foxx_swnet + alias: mean_net_sw_flx + canonical_units: W m-2 + description: ocean import - net shortwave radiation to ocean + # + - standard_name: Foxx_swnet_vdr + alias: mean_net_sw_vis_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible direct radiation to ocean + # + - standard_name: Foxx_swnet_vdf + alias: mean_net_sw_vis_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave visible diffuse radiation to ocean + # + - standard_name: Foxx_swnet_idr + alias: mean_net_sw_ir_dir_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir direct radiation to ocean + # + - standard_name: Foxx_swnet_idf + alias: mean_net_sw_ir_dif_flx + canonical_units: W m-2 + description: ocean import - net shortwave ir diffuse radiation to ocean + # + - standard_name: Foxx_sen + alias: mean_sensi_heat_flx + canonical_units: W m-2 + description: ocean import - sensible heat flux into ocean + # + - standard_name: Foxx_lat + canonical_units: W m-2 + description: ocean import - latent heat flux into ocean + # + - standard_name: Foxx_taux + alias: mean_zonal_moment_flx + canonical_units: N m-2 + description: ocean import - zonal surface stress to ocean + # + - standard_name: Foxx_tauy + alias: mean_merid_moment_flx + canonical_units: N m-2 + description: ocean import - meridional surface stress to ocean + # + #----------------------------------- + # mediator fields + #----------------------------------- + # + - standard_name: cpl_scalars + canonical_units: unitless + # + - standard_name: frac + canonical_units: 1 + # + - standard_name: mask + canonical_units: 1 + # + #----------------------------------- + # fields to use fluxes from mediator + #----------------------------------- + # + - standard_name: Faox_lat + alias: laten_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface latent heat flux + # + - standard_name: Faox_sen + alias: sensi_heat_flx_atm_into_ocn + canonical_units: W m-2 + description: mediator export - atm/ocn surface sensible heat flux + # + - standard_name: Faox_lwup + alias: lwup_flx_ocn + canonical_units: W m-2 + description: mediator export - long wave radiation flux over the ocean + # + - standard_name: Faox_taux + alias: stress_on_air_ocn_zonal + canonical_units: N m-2 + description: mediator export + # + - standard_name: Faox_tauy + alias: stress_on_air_ocn_merid + canonical_units: N m-2 + description: mediator export + # + #----------------------------------- + # section: atmosphere fields that need to be defined but are not used + #----------------------------------- + # + - standard_name: mean_prec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_fprec_rate + canonical_units: kg m-2 s-1 + - standard_name: mean_prec_rate_conv + canonical_units: kg m-2 s-1 + - standard_name: mean_down_lw_flx + canonical_units: W m-2 + - standard_name: inst_net_lw_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_flx + canonical_units: W m-2 + - standard_name: mean_net_sw_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_net_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_ir_dir_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dif_flx + canonical_units: W m-2 + - standard_name: mean_down_sw_vis_dir_flx + canonical_units: W m-2 + - standard_name: inst_surface_height + canonical_units: m + - standard_name: mean_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: mean_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_zonal_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_merid_moment_flx_atm + canonical_units: N m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: N m-2 + - standard_name: inst_laten_heat_flx + canonical_units: N m-2 + - standard_name: inst_evap_rate + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_tracer_up_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_down_surface_flx + canonical_units: kg m-2 s-1 + - standard_name: inst_tracer_clmn_mass_dens + canonical_units: g m-2 + - standard_name: inst_tracer_anth_biom_flx + canonical_units: ug m-2 s-1 + description: atmosphere export + - standard_name: inst_pres_interface + canonical_units: Pa + - standard_name: inst_pres_levels + canonical_units: Pa + - standard_name: inst_geop_interface + canonical_units: tbd + - standard_name: inst_geop_levels + canonical_units: tbd + - standard_name: inst_temp_interface + canonical_units: K + - standard_name: inst_temp_levels + canonical_units: K + - standard_name: inst_zonal_wind_levels + canonical_units: m s-1 + - standard_name: inst_merid_wind_levels + canonical_units: m s-1 + - standard_name: inst_omega_levels + canonical_units: tbd + - standard_name: inst_tracer_mass_frac + canonical_units: 1 + - standard_name: inst_soil_moisture_content + canonical_units: tbd + - standard_name: soil_type + canonical_units: tbd + - standard_name: inst_pbl_height + canonical_units: tbd + - standard_name: surface_cell_area + canonical_units: tbd + - standard_name: inst_convective_rainfall_amount + canonical_units: tbd + - standard_name: inst_spec_humid_conv_tendency_levels + canonical_units: tbd + - standard_name: inst_exchange_coefficient_heat_levels + canonical_units: tbd + - standard_name: inst_friction_velocity + canonical_units: tbd + - standard_name: inst_rainfall_amount + canonical_units: tbd + - standard_name: inst_land_sea_mask + canonical_units: tbd + - standard_name: inst_temp_height_surface + canonical_units: tbd + - standard_name: inst_up_sensi_heat_flx + canonical_units: tbd + - standard_name: inst_lwe_snow_thickness + canonical_units: tbd + - standard_name: vegetation_type + canonical_units: tbd + - standard_name: inst_vegetation_area_frac + canonical_units: tbd + - standard_name: inst_surface_roughness + canonical_units: tbd + - standard_name: inst_laten_heat_flx + canonical_units: W m-2 + - standard_name: inst_sensi_heat_flx + canonical_units: W m-2 + - standard_name: land_mask + canonical_units: 1 + - standard_name: inst_cloud_frac_levels + canonical_units: 1 + - standard_name: inst_ice_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_liq_nonconv_tendency_levels + canonical_units: kg m-2 s-1 + - standard_name: inst_surface_soil_wetness + canonical_units: 1 + - standard_name: lake_fraction + canonical_units: 1 + - standard_name: ice_fraction_in_atm + alias: sea_ice_area_fraction + canonical_units: 1 + - standard_name: ocean_fraction + canonical_units: 1 + - standard_name: surface_snow_area_fraction + canonical_units: 1 + # + #----------------------------------- + # WW3 import + #----------------------------------- + # + - standard_name: sea_surface_height_above_sea_level + canonical_units: m + description: ww3 import + # + - standard_name: sea_surface_salinity + alias: s_surf + canonical_units: g kg-1 + description: ww3 import + # + - standard_name: surface_eastward_sea_water_velocity + alias: ocn_current_zonal + canonical_units: m s-1 + description: ww3 import + # + - standard_name: surface_northward_sea_water_velocity + alias: ocn_current_merid + canonical_units: m s-1 + description: ww3 import + # + - standard_name: eastward_wind_at_10m_height + alias: inst_zonal_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: northward_wind_at_10m_height + alias: inst_merid_wind_height10m + canonical_units: m s-1 + description: ww3 import + # + - standard_name: sea_ice_concentration + alias: ice_fraction + canonical_units: 1 + description: ww3 import + # + #----------------------------------- + # WW3 export + #----------------------------------- + # + - standard_name: Sw_z0 + alias: wave_z0_roughness_length + canonical_units: 1 + description: ww3 export + - standard_name: Sw_z0 + alias: z0rlen + # + - standard_name: Sw_pstokes_x + alias: eastward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_pstokes_y + alias: northward_partitioned_stokes_drift_current + canonical_units: m s-1 + description: ww3 export partitioned drift components using ungridded dimension + # + - standard_name: Sw_elevation_spectrum + alias: wave_elevation_spectrum + canonical_units: m2/s + description: wave elevation spectrum + # + # remaining fields are unused but required to be present + # + - standard_name: Sw_ch + alias: wave_induced_charnock_parameter + canonical_units: 1 + description: ww3 export + - standard_name: Sw_ch + alias: charno + # + - standard_name: eastward_stokes_drift_current + alias: uscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: northward_stokes_drift_current + alias: vscurr + canonical_units: m s-1 + description: ww3 export spectrum of drift components + # + - standard_name: Sw_ustokes + alias: eastward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export surface drift components + - standard_name: Sw_ustokes + alias: ussx + # + - standard_name: Sw_vstokes + alias: northward_surface_stokes_drift_current + canonical_units: m s-1 + description: ww3 export using surface drift components + - standard_name: Sw_vstokes + alias: ussy + # + - standard_name: Sw_wbcuru + alias: eastward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcuru + alias: wbcuru + # + - standard_name: Sw_wbcurv + alias: northward_wave_bottom_current + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_wbcurv + alias: wbcurv + # + - standard_name: Sw_wbcurp + alias: wave_bottom_current_period + canonical_units: s + description: ww3 export + - standard_name: Sw_wbcurp + alias: wbcurp + # + - standard_name: Sw_wavsuu + alias: eastward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuu + alias: wavsuu + # + - standard_name: Sw_wavsuv + alias: eastward_northward_wave_radiation_stress + canonical_units: N m-1 + description: ww3 export + - standard_name: Sw_wavsuv + alias: wavsuv + # + - standard_name: Sw_wavsvv + alias: northward_wave_radiation_stress + canonical_units: Pa + description: ww3 export + - standard_name: Sw_wavsvv + alias: wavsvv + # + - standard_name: Sw_ustokes1 + alias: eastward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes1 + alias: x1pstk + # + - standard_name: Sw_ustokes2 + alias: eastward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes2 + alias: x2pstk + # + - standard_name: Sw_ustokes3 + alias: eastward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_ustokes3 + alias: x3pstk + # + - standard_name: Sw_vstokes1 + alias: northward_partitioned_stokes_drift_1 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes1 + alias: y1pstk + # + - standard_name: Sw_vstokes2 + alias: northward_partitioned_stokes_drift_2 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes2 + alias: y2pstk + # + - standard_name: Sw_vstokes3 + alias: northward_partitioned_stokes_drift_3 + canonical_units: m s-1 + description: ww3 export + - standard_name: Sw_vstokes3 + alias: y3pstk + # + #----------------------------------- + # section: FV3 atm export/import to/from JEDI + #----------------------------------- + # + - standard_name: u + canonical_units: m s-1 + # + - standard_name: v + canonical_units: m s-1 + # + - standard_name: ua + canonical_units: m s-1 + # + - standard_name: va + canonical_units: m s-1 + # + - standard_name: t + canonical_units: K + # + - standard_name: delp + canonical_units: Pa + # + - standard_name: sphum + canonical_units: kg kg-1 + # + - standard_name: ice_wat + canonical_units: kg kg-1 + # + - standard_name: liq_wat + canonical_units: kg kg-1 + # + - standard_name: o3mr + canonical_units: kg kg-1 + # + - standard_name: phis + canonical_units: m2 s-2 + # + - standard_name: u_srf + canonical_units: m s-1 + # + - standard_name: v_srf + canonical_units: m s-1 + # + # + - standard_name: slmsk + canonical_units: flag + description: landmask sea/land/ice=0/1/2 + # + - standard_name: weasd + canonical_units: mm + description: water equiv of acc snow depth over land and sea ice + # + - standard_name: tsea + canonical_units: K + description: surface skin temperature + # + - standard_name: vtype + canonical_units: index + description: vegetation type + # + - standard_name: stype + canonical_units: index + description: soil type + # + - standard_name: Sa_vfrac + canonical_units: frac + description: areal fractional cover of green vegetation + - standard_name: Sa_vfrac + alias: vfrac + # + - standard_name: stc + canonical_units: K + description: soil temperature content + # + - standard_name: smc + canonical_units: m3 m-3 + description: soil moisture content + # + - standard_name: snwdph + canonical_units: mm + description: snow depth in mm + # + - standard_name: f10m + canonical_units: ratio + description: fm at 10m - Ratio of sigma level 1 wind and 10m wind + # + - standard_name: Sa_zorl + canonical_units: cm + description: composite surface roughness in cm + - standard_name: Sa_zorl + alias: zorl + # + - standard_name: t2m + canonical_units: K + description: two meter temperature + # + #----------------------------------- + # section: land export + #----------------------------------- + # + - standard_name: Sl_lfrac + alias: land_fraction + canonical_units: 1 + description: land export + # + - standard_name: Sl_lfrin + canonical_units: 1 + description: land export + # + - standard_name: Sl_t + canonical_units: K + description: land export + # + - standard_name: inst_tracer_diag_aod + canonical_units: 1 + description: AOD + # + - standard_name: Sl_sfrac + alias: inst_snow_area_fraction_lnd + canonical_units: 1 + description: land export + # + - standard_name: Sl_tref + alias: inst_temp_height2m_lnd + canonical_units: K + description: mediator export to glc - no levation classes + # + - standard_name: Sl_qref + alias: inst_spec_humid_height2m_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Sl_q + alias: inst_spec_humid_lnd + canonical_units: kg kg-1 + description: land export + # + - standard_name: Fall_lat + alias: inst_laten_heat_flx_lnd + canonical_units: kg kg-1 m s-1 + description: land export to atm - atm/lnd latent heat flux + # + - standard_name: Fall_sen + alias: inst_sensi_heat_flx_lnd + canonical_units: K m s-1 + description: land export to atm - atm/lnd sensible heat flux + # + - standard_name: Fall_evap + alias: inst_potential_laten_heat_flx_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_gflx + alias: inst_upward_heat_flux_lnd + canonical_units: W m-2 + description: land export + # + - standard_name: Fall_roff + alias: inst_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Fall_soff + alias: inst_subsurface_runoff_rate_lnd + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_cmm + alias: inst_drag_wind_speed_for_momentum + canonical_units: m s-1 + description: land export + # + - standard_name: Sl_chh + alias: inst_drag_mass_flux_for_heat_and_moisture + canonical_units: kg m-2 s-1 + description: land export + # + - standard_name: Sl_zvfun + alias: inst_func_of_roughness_length_and_vfrac + canonical_units: 1 + description: land export diff --git a/ush/sample_configs/config_c3/firewx/field_table b/ush/sample_configs/config_c3/firewx/field_table new file mode 100644 index 000000000..691a27f54 --- /dev/null +++ b/ush/sample_configs/config_c3/firewx/field_table @@ -0,0 +1,85 @@ +# added by FRE: sphum must be present in atmos +# specific humidity for moist runs + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e-6" / +# prognostic cloud water mixing ratio + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic ice water mixing ratio + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic rain water mixing ratio + "TRACER", "atmos_mod", "rainwat" + "longname", "rain water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic snow water mixing ratio + "TRACER", "atmos_mod", "snowwat" + "longname", "snow water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic graupel mixing ratio + "TRACER", "atmos_mod", "graupel" + "longname", "graupel mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water number concentration + "TRACER", "atmos_mod", "water_nc" + "longname", "cloud liquid water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic cloud ice number concentration + "TRACER", "atmos_mod", "ice_nc" + "longname", "cloud ice water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic rain number concentration + "TRACER", "atmos_mod", "rain_nc" + "longname", "rain number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic ozone mixing ratio tracer + "TRACER", "atmos_mod", "o3mr" + "longname", "ozone mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# water- and ice-friendly aerosols (Thompson) + "TRACER", "atmos_mod", "liq_aero" + "longname", "water-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "ice_aero" + "longname", "ice-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic subgrid scale turbulent kinetic energy + "TRACER", "atmos_mod", "sgs_tke" + "longname", "subgrid scale turbulent kinetic energy" + "units", "m2/s2" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic sigmab tracer + "TRACER", "atmos_mod", "sigmab" + "longname", "sigma fraction" + "units", "fraction" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic smoke mixing ratio tracer + "TRACER", "atmos_mod", "smoke" + "longname", "smoke mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic dust mixing ratio tracer + "TRACER", "atmos_mod", "dust" + "longname", "dust mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / +# prognostic coarsepm mixing ratio tracer + "TRACER", "atmos_mod", "coarsepm" + "longname", "coarsepm mixing ratio" + "units", "ug/kg" + "profile_type", "fixed", "surface_value=1.e-12" / diff --git a/ush/sample_configs/config_c3/firewx/input.nml b/ush/sample_configs/config_c3/firewx/input.nml new file mode 100644 index 000000000..c066bbeba --- /dev/null +++ b/ush/sample_configs/config_c3/firewx/input.nml @@ -0,0 +1,316 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = 'RRFS_sas_nogwd' + chksum_debug = .false. + dycore_only = .false. + ignore_rst_cksum = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 500 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 66 + nt_checker = 0 +/ + +&fms2_io_nml + netcdf_default_format = 'netcdf4' +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 3000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + bc_update_interval = 1 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = 0 + do_sat_adj = .false. + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2.0 + external_eta = .true. + external_ic = .true. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 7200 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = 14, 14 + make_nh = .true. + mountain = .false. + n_split = 5 + n_sponge = 65 + n_zs_filter = 0 + na_init = 1 + ncep_ic = .false. + nggps_ic = .true. + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = 351 + npy = 351 + npz = 65 + nrows_blend = 10 + ntiles = 1 + nudge_qv = .false. + nwat = 6 + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .true. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + sg_cutoff = -1 + stretch_fac = 0.999 + target_lat = 49.3 + target_lon = -123.0 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .false. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + betadcu = 1.0 + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + diag_log = .true. + do_deep = .true. + do_gsl_drag_ls_bl = .false. + do_gsl_drag_ss = .false. + do_gsl_drag_tofd = .false. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + dspheat = .true. + dt_inner = 20 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + gwd_opt = 0 + h2o_phys = .true. + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 2 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + pre_rad = .false. + print_diff_pgr = .false. + progsigma = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + rrfs_sd = .false. + satmedmf = .false. + sfclay_compute_flux = .true. + shal_cnv = .false. + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.maximum_snow_albedo.tileX.nc' + fnacna = '' + fnaisc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/CFSR.SEAICE.1982.2012.monthly.clim.grb' + fnalbc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.snowfree_albedo.tileX.nc' + fnalbc2 = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.facsf.tileX.nc' + fnglac = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/global_glacier.2x2.grb' + fnmskh = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/seaice_newland.grb' + fnmxic = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/global_maxice.2x2.grb' + fnslpc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.slope_type.tileX.nc' + fnsmcc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/global_soilmgldas.t1534.3072.1536.grb' + fnsnoa = '' + fnsnoc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/global_snoclim.1.875.grb' + fnsotc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.soil_type.tileX.nc' + fntg3c = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.substrate_temperature.tileX.nc' + fntsfa = '' + fntsfc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/v0.9.1/rrfs_firewx/fix_am/RTGSST.1982.2012.monthly.clim.grb' + fnvegc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.vegetation_greenness.tileX.nc' + fnvetc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.vegetation_type.tileX.nc' + fnvmnc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.vegetation_greenness.tileX.nc' + fnvmxc = '/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/rrfs.v1.0.0/parm/config/firewx/fix_lam/C6667.vegetation_greenness.tileX.nc' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/ush/set_FV3nml_sfc_climo_filenames.sh b/ush/set_FV3nml_sfc_climo_filenames.sh index 32a7ff30a..6a7d5f796 100644 --- a/ush/set_FV3nml_sfc_climo_filenames.sh +++ b/ush/set_FV3nml_sfc_climo_filenames.sh @@ -185,6 +185,7 @@ $settings" #----------------------------------------------------------------------- # fv3_nml_base_fp="${FV3_NML_FN}.base" +DATA="${EXPTDIR}" mv "${DATA}/${FV3_NML_FN}" "${DATA}/${fv3_nml_base_fp}" $USHrrfs/set_namelist.py -q \ diff --git a/ush/set_rrfs_config_general.sh b/ush/set_rrfs_config_general.sh index f5cd5d6ce..30199cef3 100644 --- a/ush/set_rrfs_config_general.sh +++ b/ush/set_rrfs_config_general.sh @@ -132,7 +132,7 @@ MAXTRIES_PRDGEN="2" WTIME_FORECAST="00:45:00" WTIME_FORECAST_LONG="03:45:00" -WTIME_MAKE_LBCS="02:00:00" +WTIME_MAKE_LBCS="00:30:00" WTIME_ANALYSIS_GSI="00:50:00" WTIME_PREP_CYC="00:20:00" @@ -140,7 +140,7 @@ START_TIME_SPINUP="01:30:00" START_TIME_PROD="01:40:00" START_TIME_LATE_ANALYSIS="01:40:00" START_TIME_CONVENTIONAL_SPINUP="00:40:00" -START_TIME_BLENDING="04:00:00" +START_TIME_BLENDING="02:00:00" START_TIME_CONVENTIONAL="00:50:00" START_TIME_NSSLMOSIAC="00:55:00" START_TIME_PROCESS_SMOKE="00:50:00" @@ -223,12 +223,12 @@ if [[ ${PREDEF_GRID_NAME} == "RRFS_CONUS_3km" ]] ; then NNODES_MAKE_ICS="2" NNODES_BLEND_ICS="1" NNODES_MAKE_LBCS="1" - PPN_ANALYSIS_GSI="32" - TPP_ANALYSIS_GSI="4" - NNODES_ANALYSIS_GSI="10" + PPN_ANALYSIS_GSI="64" + TPP_ANALYSIS_GSI="2" + NNODES_ANALYSIS_GSI="5" PPN_FORECAST="64" TPP_FORECAST="2" - NNODES_FORECAST="16" + NNODES_FORECAST="8" PPN_POST="128" NNODES_POST="1" TPP_POST="1" @@ -236,13 +236,13 @@ if [[ ${PREDEF_GRID_NAME} == "RRFS_CONUS_3km" ]] ; then NNODES_PROCESS_RADAR="1" PPN_ANALYSIS_ENKF="32" TPP_ANALYSIS_ENKF="4" - NNODES_ANALYSIS_ENKF="24" + NNODES_ANALYSIS_ENKF="5" MEMO_PRDGEN="80G" MEMO_PROCESS_BUFR="80G" PPN_ANALYSIS_NONVARCLD="128" - NNODES_ANALYSIS_NONVARCLD="2" + NNODES_ANALYSIS_NONVARCLD="1" PPN_ANALYSIS_GSIDIAG=128 - NNODES_RECENTER="10" + NNODES_RECENTER="5" PPN_RECENTER="128" MAXTRIES_GET_EXTRN_ICS="1" @@ -268,7 +268,7 @@ if [[ ${PREDEF_GRID_NAME} == "RRFS_CONUS_3km" ]] ; then WTIME_FORECAST_SPINUP="00:25:00" WTIME_MAKE_ICS="00:20:00" WTIME_BLEND_ICS="00:20:00" - WTIME_MAKE_LBCS="02:00:00" + WTIME_MAKE_LBCS="00:30:00" WTIME_ANALYSIS_GSI="00:50:00" WTIME_PREP_CYC="00:20:00" @@ -476,7 +476,7 @@ elif [[ ${PREDEF_GRID_NAME} == "RRFS_NA_3km" ]] ; then PPN_PROCESS_RADAR="64" NNODES_PROCESS_RADAR="1" PPN_ANALYSIS_ENKF="8" - NNODES_ANALYSIS_ENKF="10" + NNODES_ANALYSIS_ENKF="20" TPP_ANALYSIS_ENKF="16" PPN_ANALYSIS_NONVARCLD="128" NNODES_ANALYSIS_NONVARCLD="1" diff --git a/ush/setup_nco.sh b/ush/setup_nco.sh new file mode 100755 index 000000000..f62e3e9f8 --- /dev/null +++ b/ush/setup_nco.sh @@ -0,0 +1,2786 @@ +#!/bin/bash +# +#----------------------------------------------------------------------- +# +# This file defines and then calls a function that sets a secondary set +# of parameters needed by the various scripts that are called by the +# FV3-LAM rocoto community workflow. This secondary set of parameters is +# calculated using the primary set of user-defined parameters in the de- +# fault and custom experiment/workflow configuration scripts (whose file +# names are defined below). This script then saves both sets of parame- +# ters in a global variable definitions file (really a bash script) in +# the experiment directory. This file then gets sourced by the various +# scripts called by the tasks in the workflow. +# +#----------------------------------------------------------------------- +# +function setup() { +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +local scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +local scrfunc_fn=$( basename "${scrfunc_fp}" ) +local scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Get the name of this function. +# +#----------------------------------------------------------------------- +# +local func_name="${FUNCNAME[0]}" +# +#----------------------------------------------------------------------- +# +# +# +#----------------------------------------------------------------------- +# +USHrrfs="${scrfunc_dir}" +# +#----------------------------------------------------------------------- +# +# Source bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHrrfs/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Source other necessary files. +# +#----------------------------------------------------------------------- +# +. $USHrrfs/set_cycle_dates.sh +. $USHrrfs/set_gridparams_GFDLgrid.sh +. $USHrrfs/set_gridparams_ESGgrid.sh +. $USHrrfs/link_fix.sh +. $USHrrfs/set_ozone_param.sh +. $USHrrfs/set_thompson_mp_fix_files.sh +. $USHrrfs/check_ruc_lsm.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Set the name of the configuration file containing default values for +# the experiment/workflow variables. Then source the file. +# +#----------------------------------------------------------------------- +# +EXPT_DEFAULT_CONFIG_FN="config_defaults.sh" +. $USHrrfs/${EXPT_DEFAULT_CONFIG_FN} +# +#----------------------------------------------------------------------- +# +# If a user-specified configuration file exists, source it. This file +# contains user-specified values for a subset of the experiment/workflow +# variables that override their default values. Note that the user- +# specified configuration file is not tracked by the repository, whereas +# the default configuration file is tracked. +# +#----------------------------------------------------------------------- +# +if [ -f "${EXPT_CONFIG_FN}" ]; then +# +# We require that the variables being set in the user-specified configu- +# ration file have counterparts in the default configuration file. This +# is so that we do not introduce new variables in the user-specified +# configuration file without also officially introducing them in the de- +# fault configuration file. Thus, before sourcing the user-specified +# configuration file, we check that all variables in the user-specified +# configuration file are also assigned default values in the default +# configuration file. +# + . $USHrrfs/compare_config_scripts.sh +# +# Now source the user-specified configuration file. +# + . $USHrrfs/${EXPT_CONFIG_FN} +# +fi +# +#----------------------------------------------------------------------- +# +# Source the script defining the valid values of experiment variables. +# +#----------------------------------------------------------------------- +# +. $USHrrfs/valid_param_vals.sh +# +#----------------------------------------------------------------------- +# +# Make sure that VERBOSE is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "VERBOSE" "valid_vals_VERBOSE" +# +# Set VERBOSE to either "TRUE" or "FALSE" so we don't have to consider +# other valid values later on. +# +VERBOSE=${VERBOSE^^} +if [ "$VERBOSE" = "TRUE" ] || \ + [ "$VERBOSE" = "YES" ]; then + VERBOSE="TRUE" +elif [ "$VERBOSE" = "FALSE" ] || \ + [ "$VERBOSE" = "NO" ]; then + VERBOSE="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that USE_CRON_TO_RELAUNCH is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "USE_CRON_TO_RELAUNCH" "valid_vals_USE_CRON_TO_RELAUNCH" +# +# Set USE_CRON_TO_RELAUNCH to either "TRUE" or "FALSE" so we don't have to consider +# other valid values later on. +# +USE_CRON_TO_RELAUNCH=${USE_CRON_TO_RELAUNCH^^} +if [ "${USE_CRON_TO_RELAUNCH}" = "TRUE" ] || \ + [ "${USE_CRON_TO_RELAUNCH}" = "YES" ]; then + USE_CRON_TO_RELAUNCH="TRUE" +elif [ "${USE_CRON_TO_RELAUNCH}" = "FALSE" ] || \ + [ "${USE_CRON_TO_RELAUNCH}" = "NO" ]; then + USE_CRON_TO_RELAUNCH="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that RUN_TASK_MAKE_GRID is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "RUN_TASK_MAKE_GRID" "valid_vals_RUN_TASK_MAKE_GRID" +# +# Set RUN_TASK_MAKE_GRID to either "TRUE" or "FALSE" so we don't have to +# consider other valid values later on. +# +RUN_TASK_MAKE_GRID=${RUN_TASK_MAKE_GRID^^} +if [ "${RUN_TASK_MAKE_GRID}" = "TRUE" ] || \ + [ "${RUN_TASK_MAKE_GRID}" = "YES" ]; then + RUN_TASK_MAKE_GRID="TRUE" +elif [ "${RUN_TASK_MAKE_GRID}" = "FALSE" ] || \ + [ "${RUN_TASK_MAKE_GRID}" = "NO" ]; then + RUN_TASK_MAKE_GRID="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that RUN_TASK_MAKE_OROG is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "RUN_TASK_MAKE_OROG" "valid_vals_RUN_TASK_MAKE_OROG" +# +# Set RUN_TASK_MAKE_OROG to either "TRUE" or "FALSE" so we don't have to +# consider other valid values later on. +# +RUN_TASK_MAKE_OROG=${RUN_TASK_MAKE_OROG^^} +if [ "${RUN_TASK_MAKE_OROG}" = "TRUE" ] || \ + [ "${RUN_TASK_MAKE_OROG}" = "YES" ]; then + RUN_TASK_MAKE_OROG="TRUE" +elif [ "${RUN_TASK_MAKE_OROG}" = "FALSE" ] || \ + [ "${RUN_TASK_MAKE_OROG}" = "NO" ]; then + RUN_TASK_MAKE_OROG="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that RUN_TASK_MAKE_SFC_CLIMO is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value \ + "RUN_TASK_MAKE_SFC_CLIMO" "valid_vals_RUN_TASK_MAKE_SFC_CLIMO" +# +# Set RUN_TASK_MAKE_SFC_CLIMO to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +RUN_TASK_MAKE_SFC_CLIMO=${RUN_TASK_MAKE_SFC_CLIMO^^} +if [ "${RUN_TASK_MAKE_SFC_CLIMO}" = "TRUE" ] || \ + [ "${RUN_TASK_MAKE_SFC_CLIMO}" = "YES" ]; then + RUN_TASK_MAKE_SFC_CLIMO="TRUE" +elif [ "${RUN_TASK_MAKE_SFC_CLIMO}" = "FALSE" ] || \ + [ "${RUN_TASK_MAKE_SFC_CLIMO}" = "NO" ]; then + RUN_TASK_MAKE_SFC_CLIMO="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that RUN_TASK_PRDGEN is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value \ + "RUN_TASK_PRDGEN" "valid_vals_RUN_TASK_PRDGEN" +# +# Set RUN_TASK_PRDGEN to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +RUN_TASK_PRDGEN=${RUN_TASK_PRDGEN^^} +if [ "${RUN_TASK_PRDGEN}" = "TRUE" ] || \ + [ "${RUN_TASK_PRDGEN}" = "YES" ]; then + RUN_TASK_PRDGEN="TRUE" +elif [ "${RUN_TASK_PRDGEN}" = "FALSE" ] || \ + [ "${RUN_TASK_PRDGEN}" = "NO" ]; then + RUN_TASK_PRDGEN="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that DO_SHUM is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "DO_SHUM" "valid_vals_DO_SHUM" +# +# Set DO_SHUM to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +DO_SHUM=${DO_SHUM^^} +if [ "${DO_SHUM}" = "TRUE" ] || \ + [ "${DO_SHUM}" = "YES" ]; then + DO_SHUM="TRUE" +elif [ "${DO_SHUM}" = "FALSE" ] || \ + [ "${DO_SHUM}" = "NO" ]; then + DO_SHUM="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that DO_SPPT is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "DO_SPPT" "valid_vals_DO_SPPT" +# +# Set DO_SPPT to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +DO_SPPT=${DO_SPPT^^} +if [ "${DO_SPPT}" = "TRUE" ] || \ + [ "${DO_SPPT}" = "YES" ]; then + DO_SPPT="TRUE" +elif [ "${DO_SPPT}" = "FALSE" ] || \ + [ "${DO_SPPT}" = "NO" ]; then + DO_SPPT="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that DO_SPP is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "DO_SPP" "valid_vals_DO_SPP" +# +# Set DO_SPP to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +DO_SPP=${DO_SPP^^} +if [ "${DO_SPP}" = "TRUE" ] || \ + [ "${DO_SPP}" = "YES" ]; then + DO_SPP="TRUE" +elif [ "${DO_SPP}" = "FALSE" ] || \ + [ "${DO_SPP}" = "NO" ]; then + DO_SPP="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that DO_LSM_SPP is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "DO_LSM_SPP" "valid_vals_DO_LSM_SPP" +# +# Set DO_LSM_SPP to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +DO_LSM_SPP=${DO_LSM_SPP^^} +if [ "${DO_LSM_SPP}" = "TRUE" ] || \ + [ "${DO_LSM_SPP}" = "YES" ]; then + DO_LSM_SPP="TRUE" +elif [ "${DO_LSM_SPP}" = "FALSE" ] || \ + [ "${DO_LSM_SPP}" = "NO" ]; then + DO_LSM_SPP="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that DO_SKEB is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "DO_SKEB" "valid_vals_DO_SKEB" +# +# Set DO_SKEB to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +DO_SKEB=${DO_SKEB^^} +if [ "${DO_SKEB}" = "TRUE" ] || \ + [ "${DO_SKEB}" = "YES" ]; then + DO_SKEB="TRUE" +elif [ "${DO_SKEB}" = "FALSE" ] || \ + [ "${DO_SKEB}" = "NO" ]; then + DO_SKEB="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Set magnitude of stochastic ad-hoc schemes to -999.0 if they are not +# being used. This is required at the moment, since "do_shum/sppt/skeb" +# does not override the use of the scheme unless the magnitude is also +# specifically set to -999.0. If all "do_shum/sppt/skeb" are set to +# "false," then none will run, regardless of the magnitude values. +# +#----------------------------------------------------------------------- +# +if [ "${DO_SHUM}" = "FALSE" ]; then + SHUM_MAG=-999.0 +fi +if [ "${DO_SKEB}" = "FALSE" ]; then + SKEB_MAG=-999.0 +fi +if [ "${DO_SPPT}" = "FALSE" ]; then + SPPT_MAG=-999.0 +fi +# +#----------------------------------------------------------------------- +# +# If running with SPP in MYNN PBL, MYNN SFC, GSL GWD, Thompson MP, or +# RRTMG, count the number of entries in SPP_VAR_LIST to correctly set +# N_VAR_SPP, otherwise set it to zero. +# +#----------------------------------------------------------------------- +# +N_VAR_SPP=0 +if [ "${DO_SPP}" = "TRUE" ]; then + N_VAR_SPP=${#SPP_VAR_LIST[@]} +fi +# +#----------------------------------------------------------------------- +# +# If running with Noah or RUC-LSM SPP, count the number of entries in +# LSM_SPP_VAR_LIST to correctly set N_VAR_LNDP, otherwise set it to zero. +# Also set LNDP_TYPE to 2 for LSM SPP, otherwise set it to zero. Finally, +# initialize an "FHCYC_LSM_SPP" variable to 0 and set it to 999 if LSM SPP +# is turned on. This requirement is necessary since LSM SPP cannot run with +# FHCYC=0 at the moment, but FHCYC cannot be set to anything less than the +# length of the forecast either. A bug fix will be submitted to +# ufs-weather-model soon, at which point, this requirement can be removed +# from regional_workflow. +# +#----------------------------------------------------------------------- +# +N_VAR_LNDP=0 +LNDP_TYPE=0 +FHCYC_LSM_SPP_OR_NOT=0 +if [ "${DO_LSM_SPP}" = "TRUE" ]; then + N_VAR_LNDP=${#LSM_SPP_VAR_LIST[@]} + LNDP_TYPE=2 + FHCYC_LSM_SPP_OR_NOT=0 +fi +# +#----------------------------------------------------------------------- +# +# If running with SPP, confirm that each SPP-related namelist value +# contains the same number of entries as N_VAR_SPP (set above to be equal +# to the number of entries in SPP_VAR_LIST). +# +#----------------------------------------------------------------------- +# +if [ "${DO_SPP}" = "TRUE" ]; then + if [ "${#SPP_MAG_LIST[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_LSCALE[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_TSCALE[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_SIGTOP1[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_SIGTOP2[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_STDDEV_CUTOFF[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#ISEED_SPP[@]}" != "${N_VAR_SPP}" ]; then + print_err_msg_exit "\ +All MYNN PBL, MYNN SFC, GSL GWD, Thompson MP, or RRTMG SPP-related namelist +variables set in ${CONFIG_FN} must be equal in number of entries to what is +found in SPP_VAR_LIST: + Number of entries in SPP_VAR_LIST = \"${#SPP_VAR_LIST[@]}\"" + fi +fi +# +#----------------------------------------------------------------------- +# +# If running with LSM SPP, confirm that each LSM SPP-related namelist +# value contains the same number of entries as N_VAR_LNDP (set above to +# be equal to the number of entries in LSM_SPP_VAR_LIST). +# +#----------------------------------------------------------------------- +# +if [ "${DO_LSM_SPP}" = "TRUE" ]; then + if [ "${#LSM_SPP_MAG_LIST[@]}" != "${N_VAR_LNDP}" ]; then + print_err_msg_exit "\ +All Noah or RUC-LSM SPP-related namelist variables (except ISEED_LSM_SPP) +set in ${CONFIG_FN} must be equal in number of entries to what is found in +SPP_VAR_LIST: + Number of entries in SPP_VAR_LIST = \"${#LSM_SPP_VAR_LIST[@]}\"" + fi +fi + +# +#----------------------------------------------------------------------- +# +# Make sure that USE_FVCOM is set to a valid value and assign directory +# and file names. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "USE_FVCOM" "valid_vals_USE_FVCOM" +# +# Set USE_FVCOM to either "TRUE" or "FALSE" so we don't have to consider +# other valid values later on. +# +USE_FVCOM=${USE_FVCOM^^} +if [ "$USE_FVCOM" = "TRUE" ] || \ + [ "$USE_FVCOM" = "YES" ]; then + USE_FVCOM="TRUE" +elif [ "$USE_FVCOM" = "FALSE" ] || \ + [ "$USE_FVCOM" = "NO" ]; then + USE_FVCOM="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that DOT_OR_USCORE is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "DOT_OR_USCORE" "valid_vals_DOT_OR_USCORE" + +# +#----------------------------------------------------------------------- +# +# Make sure the following options are set to a valid value. +# Convert YES/yes/true to TRUE and NO/no/false to FALSE +# +#----------------------------------------------------------------------- +# +optionList[0]=DO_DACYCLE +optionList[1]=DO_SURFACE_CYCLE +optionList[2]=DO_RETRO +optionList[3]=LBCS_ICS_ONLY +optionList[4]=DO_ANALYSIS_NONVARCLD +optionList[5]=SAVE_CYCLE_LOG +optionList[6]=DO_SOIL_ADJUST +optionList[7]=DO_UPDATE_BC +optionList[8]=DO_RADDA +optionList[9]=DO_RECENTER +optionList[10]=DO_BUFRSND +optionList[11]=USE_RRFSE_ENS +optionList[12]=DO_SMOKE_DUST +optionList[13]=DO_POST_PROD +optionList[14]=DO_POST_SPINUP +optionList[15]=DO_PARALLEL_PRDGEN +optionList[16]=DO_ENSEMBLE +optionList[17]=DO_ENSINIT +optionList[18]=DO_ENSFCST +optionList[19]=DO_SAVE_INPUT +optionList[20]=DO_SAVE_DA_OUTPUT +optionList[21]=DO_ENS_RADDA +optionList[22]=DO_GSIDIAG_OFFLINE +optionList[23]=USE_CLM +optionList[24]=DO_ENSFCST_MULPHY +optionList[25]=DO_GLM_FED_DA +optionList[26]=GLMFED_DATA_MODE +optionList[27]=EBB_DCYCLE +optionList[28]=PREP_MODEL_FOR_FED + +obs_number=${#optionList[@]} +for (( i=0; i<${obs_number}; i++ )); +do + value2check=${optionList[$i]} + check_var_valid_value "$value2check" "valid_vals_$value2check" + eval value2change=\$$value2check + value2change=${value2change^^} + if [ "${value2change}" = "TRUE" ] || + [ "${value2change}" = "YES" ]; then + value2change="TRUE" + elif [ "${value2change}" = "FALSE" ] || + [ "${value2change}" = "NO" ]; then + value2change="FALSE" + fi + eval ${value2check}=${value2change} +done + +# +#----------------------------------------------------------------------- +# +# Convert machine name to upper case if necessary. Then make sure that +# MACHINE is set to a valid value. +# +#----------------------------------------------------------------------- +# +MACHINE=$( printf "%s" "$MACHINE" | sed -e 's/\(.*\)/\U\1/' ) +check_var_valid_value "MACHINE" "valid_vals_MACHINE" +# +#----------------------------------------------------------------------- +# +# Set the number of cores per node, the job scheduler, and the names of +# several queues. These queues are defined in the default and local +# workflow/experiment configuration script. +# +#----------------------------------------------------------------------- +# +case $MACHINE in + + "WCOSS2") + NCORES_PER_NODE=128 + SCHED="pbspro" + QUEUE_DEFAULT=${QUEUE_DEFAULT:-"dev"} + QUEUE_HPSS=${QUEUE_HPSS:-"dev_transfer"} + QUEUE_FORECAST=${QUEUE_FORECAST:-"dev"} + QUEUE_ANALYSIS=${QUEUE_ANALYSIS:-"dev"} + QUEUE_PRDGEN=${QUEUE_PRDGEN:-"dev"} + QUEUE_POST=${QUEUE_POST:-"dev"} + ;; + + "HERA") + NCORES_PER_NODE=40 + SCHED="${SCHED:-slurm}" + PARTITION_DEFAULT=${PARTITION_DEFAULT:-"hera"} + QUEUE_DEFAULT=${QUEUE_DEFAULT:-"batch"} + PARTITION_HPSS=${PARTITION_HPSS:-"service"} + QUEUE_HPSS=${QUEUE_HPSS:-"batch"} + PARTITION_FORECAST=${PARTITION_FORECAST:-"hera"} + QUEUE_FORECAST=${QUEUE_FORECAST:-"batch"} + QUEUE_PRDGEN=${QUEUE_PRDGEN:-"batch"} + QUEUE_POST=${QUEUE_POST:-"batch"} + ;; + + "ORION") + NCORES_PER_NODE=40 + SCHED="${SCHED:-slurm}" + PARTITION_DEFAULT=${PARTITION_DEFAULT:-"orion"} + QUEUE_DEFAULT=${QUEUE_DEFAULT:-"batch"} + PARTITION_HPSS=${PARTITION_HPSS:-"service"} + QUEUE_HPSS=${QUEUE_HPSS:-"batch"} + PARTITION_FORECAST=${PARTITION_FORECAST:-"orion"} + QUEUE_FORECAST=${QUEUE_FORECAST:-"batch"} + ;; + + "HERCULES") + NCORES_PER_NODE=40 + SCHED="${SCHED:-slurm}" + PARTITION_DEFAULT=${PARTITION_DEFAULT:-"hercules"} + QUEUE_DEFAULT=${QUEUE_DEFAULT:-"batch"} + PARTITION_HPSS=${PARTITION_HPSS:-"service"} + QUEUE_HPSS=${QUEUE_HPSS:-"batch"} + PARTITION_FORECAST=${PARTITION_FORECAST:-"hercules"} + QUEUE_FORECAST=${QUEUE_FORECAST:-"batch"} + ;; + + "JET") + NCORES_PER_NODE=${NCORES_PER_NODE} + SCHED="${SCHED:-slurm}" + PARTITION_DEFAULT=${PARTITION_DEFAULT:-"sjet,vjet,kjet,xjet"} + QUEUE_DEFAULT=${QUEUE_DEFAULT:-"batch"} + PARTITION_HPSS=${PARTITION_HPSS:-"service"} + QUEUE_HPSS=${QUEUE_HPSS:-"batch"} + PARTITION_FORECAST=${PARTITION_FORECAST:-"sjet,vjet,kjet,xjet"} + QUEUE_FORECAST=${QUEUE_FORECAST:-"batch"} + PARTITION_ANALYSIS=${PARTITION_ANALYSIS:-"vjet,kjet,xjet"} + QUEUE_ANALYSIS=${QUEUE_ANALYSIS:-"batch"} + PARTITION_PRDGEN=${PARTITION_PRDGEN:-"sjet,vjet,kjet,xjet"} + QUEUE_PRDGEN=${QUEUE_PRDGEN:-"batch"} + PARTITION_POST=${PARTITION_POST:-"sjet,vjet,kjet,xjet"} + QUEUE_POST=${QUEUE_POST:-"batch"} + ;; + +esac +# +#----------------------------------------------------------------------- +# +# Make sure that the job scheduler set above is valid. +# +#----------------------------------------------------------------------- +# +SCHED="${SCHED,,}" +check_var_valid_value "SCHED" "valid_vals_SCHED" +# +#----------------------------------------------------------------------- +# +# Verify that the ACCOUNT variable is not empty. If it is, print out an +# error message and exit. +# +#----------------------------------------------------------------------- +# +if [ -z "$ACCOUNT" ]; then + print_err_msg_exit "\ +The variable ACCOUNT cannot be empty: + ACCOUNT = \"$ACCOUNT\"" +fi +# +#----------------------------------------------------------------------- +# +# Set the grid type (GTYPE). In general, in the FV3 code, this can take +# on one of the following values: "global", "stretch", "nest", and "re- +# gional". The first three values are for various configurations of a +# global grid, while the last one is for a regional grid. Since here we +# are only interested in a regional grid, GTYPE must be set to "region- +# al". +# +#----------------------------------------------------------------------- +# +GTYPE="regional" +TILE_RGNL="7" +# +#----------------------------------------------------------------------- +# +# Make sure that GTYPE is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "GTYPE" "valid_vals_GTYPE" +# +#----------------------------------------------------------------------- +# +# Make sure PREDEF_GRID_NAME is set to a valid value. +# +#----------------------------------------------------------------------- +# +if [ ! -z ${PREDEF_GRID_NAME} ]; then + err_msg="\ +The predefined regional grid specified in PREDEF_GRID_NAME is not sup- +ported: + PREDEF_GRID_NAME = \"${PREDEF_GRID_NAME}\"" + check_var_valid_value \ + "PREDEF_GRID_NAME" "valid_vals_PREDEF_GRID_NAME" "${err_msg}" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that PREEXISTING_DIR_METHOD is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value \ + "PREEXISTING_DIR_METHOD" "valid_vals_PREEXISTING_DIR_METHOD" +# +#----------------------------------------------------------------------- +# +# Make sure CCPP_PHYS_SUITE is set to a valid value. +# +#----------------------------------------------------------------------- +# +err_msg="\ +The CCPP physics suite specified in CCPP_PHYS_SUITE is not supported: + CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\"" +check_var_valid_value \ + "CCPP_PHYS_SUITE" "valid_vals_CCPP_PHYS_SUITE" "${err_msg}" +# +#----------------------------------------------------------------------- +# +# Check that DATE_FIRST_CYCL and DATE_LAST_CYCL are strings consisting +# of exactly 8 digits. +# +#----------------------------------------------------------------------- +# +DATE_OR_NULL=$( printf "%s" "${DATE_FIRST_CYCL}" | \ + sed -n -r -e "s/^([0-9]{8})$/\1/p" ) +if [ -z "${DATE_OR_NULL}" ]; then + print_err_msg_exit "\ +DATE_FIRST_CYCL must be a string consisting of exactly 8 digits of the +form \"YYYYMMDD\", where YYYY is the 4-digit year, MM is the 2-digit +month, and DD is the 2-digit day-of-month. + DATE_FIRST_CYCL = \"${DATE_FIRST_CYCL}\"" +fi + +DATE_OR_NULL=$( printf "%s" "${DATE_LAST_CYCL}" | \ + sed -n -r -e "s/^([0-9]{8})$/\1/p" ) +if [ -z "${DATE_OR_NULL}" ]; then + print_err_msg_exit "\ +DATE_LAST_CYCL must be a string consisting of exactly 8 digits of the +form \"YYYYMMDD\", where YYYY is the 4-digit year, MM is the 2-digit +month, and DD is the 2-digit day-of-month. + DATE_LAST_CYCL = \"${DATE_LAST_CYCL}\"" +fi +# +#----------------------------------------------------------------------- +# +# Check that all elements of CYCL_HRS are strings consisting of exactly +# 2 digits that are between "00" and "23", inclusive. +# +#----------------------------------------------------------------------- +# +CYCL_HRS_str=$(printf "\"%s\" " "${CYCL_HRS[@]}") +CYCL_HRS_str="( $CYCL_HRS_str)" + +i=0 +for CYCL in "${CYCL_HRS[@]}"; do + + CYCL_OR_NULL=$( printf "%s" "$CYCL" | sed -n -r -e "s/^([0-9]{2})$/\1/p" ) + + if [ -z "${CYCL_OR_NULL}" ]; then + print_err_msg_exit "\ +Each element of CYCL_HRS must be a string consisting of exactly 2 digits +(including a leading \"0\", if necessary) specifying an hour-of-day. Ele- +ment #$i of CYCL_HRS (where the index of the first element is 0) does not +have this form: + CYCL_HRS = $CYCL_HRS_str + CYCL_HRS[$i] = \"${CYCL_HRS[$i]}\"" + fi + + if [ "${CYCL_OR_NULL}" -lt "0" ] || \ + [ "${CYCL_OR_NULL}" -gt "23" ]; then + print_err_msg_exit "\ +Each element of CYCL_HRS must be an integer between \"00\" and \"23\", in- +clusive (including a leading \"0\", if necessary), specifying an hour-of- +day. Element #$i of CYCL_HRS (where the index of the first element is 0) +does not have this form: + CYCL_HRS = $CYCL_HRS_str + CYCL_HRS[$i] = \"${CYCL_HRS[$i]}\"" + fi + + i=$(( $i+1 )) + +done +# +#----------------------------------------------------------------------- +# +# Call a function to generate the array ALL_CDATES containing the cycle +# dates/hours for which to run forecasts. The elements of this array +# will have the form YYYYMMDDHH. They are the starting dates/times of +# the forecasts that will be run in the experiment. Then set NUM_CYCLES +# to the number of elements in this array. +# +#----------------------------------------------------------------------- +# +set_cycle_dates \ + date_start="${DATE_FIRST_CYCL}" \ + date_end="${DATE_LAST_CYCL}" \ + cycle_hrs="${CYCL_HRS_str}" \ + output_varname_all_cdates="ALL_CDATES" + +NUM_CYCLES="${#ALL_CDATES[@]}" +# +#----------------------------------------------------------------------- +# +# Set various directories. +# +# HOMErrfs: +# Top directory of the clone of the RRFS workflow git repository. +# +# USHrrfs: +# Directory containing the shell scripts called by the workflow. +# +# SORCrrfs: +# Directory containing various source codes. +# +# PARMrrfs: +# Directory containing parameter files, template files, etc. +# +# LIB64dir: +# Directory containing various library files. +# +# UFS_WTHR_MDL_DIR: +# Directory in which the UFS Weather Model application is located. +# +#----------------------------------------------------------------------- +# +HOMErrfs=${scrfunc_dir%/*} +FIXrrfs="$HOMErrfs/fix" +USHrrfs="$HOMErrfs/ush" +SORCrrfs="$HOMErrfs/sorc" +PARMrrfs="$HOMErrfs/parm" +MODULES_DIR="$HOMErrfs/modulefiles" +LIB64dir="$HOMErrfs/sorc/build/lib64" + +FIXgsm=${FIXgsm:-"$HOMErrfs/fix/am"} +FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"$HOMErrfs/fix/lam"} +AIRCRAFT_REJECT=${AIRCRAFT_REJECT:-"${FIXrrfs/gsi}"} +SFCOBS_USELIST=${SFCOBS_USELIST:-"${FIXrrfs/gsi}"} + +case $MACHINE in + + "WCOSS2") + FIXgsm=${FIXgsm:-"/lfs/h2/emc/lam/noscrub/RRFS_input/fix/fix_am"} + TOPO_DIR=${TOPO_DIR:-"/lfs/h2/emc/lam/noscrub/RRFS_input/fix/fix_orog"} + SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/lfs/h2/emc/lam/noscrub/RRFS_input/fix/fix_sfc_climo"} + FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/lfs/h2/emc/lam/noscrub/RRFS_input/FV3LAM_pregen"} + ;; + + "HERA") + FIXgsm=${FIXgsm:-"/scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_am"} + TOPO_DIR=${TOPO_DIR:-"/scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_orog"} + SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_sfc_climo"} + FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/FV3LAM_pregen"} + ;; + + "ORION"|"HERCULES") + FIXgsm=${FIXgsm:-"/work/noaa/epic/role-epic/contrib/UFS_SRW_data/develop/fix/fix_am"} + TOPO_DIR=${TOPO_DIR:-"/work/noaa/epic/role-epic/contrib/UFS_SRW_data/develop/fix/fix_orog"} + SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/work/noaa/epic/role-epic/contrib/UFS_SRW_data/develop/fix/fix_sfc_climo"} + FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/work/noaa/epic/role-epic/contrib/UFS_SRW_data/develop/FV3LAM_pregen"} + ;; + + "JET") + FIXgsm=${FIXgsm:-"/mnt/lfs4/HFIP/hfv3gfs/role.epic/UFS_SRW_data/develop/fix/fix_am"} + TOPO_DIR=${TOPO_DIR:-"/mnt/lfs4/HFIP/hfv3gfs/role.epic/UFS_SRW_data/develop/fix/fix_orog"} + SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/mnt/lfs4/HFIP/hfv3gfs/role.epic/UFS_SRW_data/develop/fix/fix_sfc_climo"} + FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/mnt/lfs4/HFIP/hfv3gfs/role.epic/UFS_SRW_data/develop/FV3LAM_pregen"} + ;; + + *) + print_err_msg_exit "\ +One or more fix file directories have not been specified for this machine: + MACHINE = \"$MACHINE\" + FIXgsm = \"${FIXgsm:-\"\"} + TOPO_DIR = \"${TOPO_DIR:-\"\"} + SFC_CLIMO_INPUT_DIR = \"${SFC_CLIMO_INPUT_DIR:-\"\"} + FIXLAM_NCO_BASEDIR = \"${FIXLAM_NCO_BASEDIR:-\"\"} +You can specify the missing location(s) in config.sh" + ;; + +esac +# +# +# +FIX_ROOT="/lfs/h2/emc/lam/noscrub/emc.lam/rrfs/para/packages/fix_rrfs_20250623" +mkdir -p "${HOMErrfs}/fix" +ln -fsn ${FIX_ROOT}/acsnow $HOMErrfs/fix/acsnow +ln -fsn ${FIX_ROOT}/am $HOMErrfs/fix/am + +mkdir -p ${HOMErrfs}/fix/bufrsnd +ln -fsn ${FIX_ROOT}/bufrsnd/regional_bufr.tbl $HOMErrfs/fix/bufrsnd/. +ln -fsn ${FIX_ROOT}/bufrsnd/regional_sndp.parm.mono $HOMErrfs/fix/bufrsnd/regional_sndp.parm.mono +ln -fsn ${FIX_ROOT}/bufrsnd/${PREDEF_GRID_NAME} $HOMErrfs/fix/bufrsnd/. + +mkdir -p ${HOMErrfs}/fix/crtm +ln -fsn ${FIX_ROOT}/crtm/CRTM_v2.4.0 $HOMErrfs/fix/crtm/CRTM_v2.4.0 +ln -fsn ${FIX_ROOT}/fix_orog $HOMErrfs/fix/fix_orog +ln -fsn ${FIX_ROOT}/fix_sfc_climo $HOMErrfs/fix/fix_sfc_climo +ln -fsn ${FIX_ROOT}/gempak $HOMErrfs/fix/gempak + +mkdir -p ${HOMErrfs}/fix/gsi +cp -f ${FIX_ROOT}/gsi/* $HOMErrfs/fix/gsi/. +ln -fsn ${FIX_ROOT}/gsi/${PREDEF_GRID_NAME} $HOMErrfs/fix/gsi/. + +mkdir -p ${HOMErrfs}/fix/lam +ln -fsn ${FIX_ROOT}/lam/${PREDEF_GRID_NAME} $HOMErrfs/fix/lam/. + +ln -fsn ${FIX_ROOT}/prdgen $HOMErrfs/fix/prdgen + +mkdir -p ${HOMErrfs}/fix/smoke_dust +ln -fsn ${FIX_ROOT}/smoke_dust/${PREDEF_GRID_NAME} $HOMErrfs/fix/smoke_dust/${PREDEF_GRID_NAME} + +mkdir -p ${HOMErrfs}/fix/upp +cp -f ${FIX_ROOT}/upp/* $HOMErrfs/fix/upp/. +ln -fsn ${FIX_ROOT}/upp/${PREDEF_GRID_NAME} $HOMErrfs/fix/upp/. + +mkdir -p $HOMErrfs/fix/workflow/det +mkdir -p $HOMErrfs/fix/workflow/enkf +mkdir -p $HOMErrfs/fix/workflow/ensf +if [[ ${PREDEF_GRID_NAME} == "RRFS_CONUS_3km" ]] ; then + ln -fsn ${FIX_ROOT}/workflow/det/workflow.conf_c3 $HOMErrfs/fix/workflow/det/workflow.conf + ln -fsn ${FIX_ROOT}/workflow/enkf/workflow.conf_c3 $HOMErrfs/fix/workflow/enkf/workflow.conf + ln -fsn ${FIX_ROOT}/workflow/ensf/workflow.conf_c3 $HOMErrfs/fix/workflow/ensf/workflow.conf +else + ln -fsn ${FIX_ROOT}/workflow/det/workflow.conf $HOMErrfs/fix/workflow/det/workflow.conf + ln -fsn ${FIX_ROOT}/workflow/enkf/workflow.conf $HOMErrfs/fix/workflow/enkf/workflow.conf + ln -fsn ${FIX_ROOT}/workflow/ensf/workflow.conf $HOMErrfs/fix/workflow/ensf/workflow.conf +fi + +ln -fsn ${FIX_ROOT}/workflow/firewx $HOMErrfs/fix/workflow/firewx + + +# +if [[ ${PREDEF_GRID_NAME} == "RRFS_CONUS_3km" ]] ; then + if [ ! -d $HOMErrfs/parm/config_n3 ] ;then + mv $HOMErrfs/parm/config $HOMErrfs/parm/config_n3 + cp -r $HOMErrfs/ush/sample_configs/config_c3 $HOMErrfs/parm/config + fi +fi +if [[ ${PREDEF_GRID_NAME} == "RRFS_NA_3km" ]] ; then + if [ -d $HOMErrfs/parm/config_n3 ] ;then + mv $HOMErrfs/parm/config $HOMErrfs/parm/config_c3 + mv $HOMErrfs/parm/config_n3 $HOMErrfs/parm/config + fi +fi + + +# +#----------------------------------------------------------------------- +# +# Set the base directories in which codes obtained from external reposi- +# tories (using the manage_externals tool) are placed. Obtain the rela- +# tive paths to these directories by reading them in from the manage_ex- +# ternals configuration file. (Note that these are relative to the lo- +# cation of the configuration file.) Then form the full paths to these +# directories. Finally, make sure that each of these directories actu- +# ally exists. +# +#----------------------------------------------------------------------- +# +mng_extrns_cfg_fn=$( readlink -f "${HOMErrfs}/Externals.cfg" ) +property_name="local_path" +# +# Get the base directory of the FV3 forecast model code. +# +UFS_WTHR_MDL_DIR="${SORCrrfs}/ufs-weather-model" +#if [ ! -d "${UFS_WTHR_MDL_DIR}" ]; then +# print_err_msg_exit "\ +#The base directory in which the FV3 source code should be located +#(UFS_WTHR_MDL_DIR) does not exist: +# UFS_WTHR_MDL_DIR = \"${UFS_WTHR_MDL_DIR}\" +#Please clone the external repository containing the code in this directory, +#build the executable, and then rerun the workflow." +#fi +# +# Get the base directory of the UFS_UTILS codes. +# +#UFS_UTILS_DIR="${SORCrrfs}/UFS_UTILS" +#if [ ! -d "${UFS_UTILS_DIR}" ]; then +# print_err_msg_exit "\ +#The base directory in which the UFS utilities source codes should be lo- +#cated (UFS_UTILS_DIR) does not exist: +# UFS_UTILS_DIR = \"${UFS_UTILS_DIR}\" +#Please clone the external repository containing the code in this direct- +#ory, build the executables, and then rerun the workflow." +#fi +# +# Get the base directory of the UPP code. +# +#UPP_DIR="${SORCrrfs}/UPP" +#if [ ! -d "${UPP_DIR}" ]; then +# print_err_msg_exit "\ +#The base directory in which the UPP source code should be located +#(UPP_DIR) does not exist: +# UPP_DIR = \"${UPP_DIR}\" +#Please clone the external repository containing the code in this directory, +#build the executable, and then rerun the workflow." +#fi +# +# +#----------------------------------------------------------------------- +# +# Make sure that USE_CUSTOM_POST_CONFIG_FILE is set to a valid value. +# +#----------------------------------------------------------------------- +# +#check_var_valid_value \ +# "USE_CUSTOM_POST_CONFIG_FILE" "valid_vals_USE_CUSTOM_POST_CONFIG_FILE" +# +# Set USE_CUSTOM_POST_CONFIG_FILE to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +USE_CUSTOM_POST_CONFIG_FILE=${USE_CUSTOM_POST_CONFIG_FILE^^} +if [ "$USE_CUSTOM_POST_CONFIG_FILE" = "TRUE" ] || \ + [ "$USE_CUSTOM_POST_CONFIG_FILE" = "YES" ]; then + USE_CUSTOM_POST_CONFIG_FILE="TRUE" +elif [ "$USE_CUSTOM_POST_CONFIG_FILE" = "FALSE" ] || \ + [ "$USE_CUSTOM_POST_CONFIG_FILE" = "NO" ]; then + USE_CUSTOM_POST_CONFIG_FILE="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Add graphics for the additional post-processed domains +# +#----------------------------------------------------------------------- +# +if [ ${#ADDNL_OUTPUT_GRIDS[@]} -ne 0 ]; then + for grid in ${ADDNL_OUTPUT_GRIDS[@]} ; do + TILE_SETS="${TILE_SETS} ${grid}" + TILE_LABELS="${TILE_LABELS} ${grid}" + done +fi +# +#----------------------------------------------------------------------- +# +# If using a custom post configuration file, make sure that it exists. +# +#----------------------------------------------------------------------- +# +#if [ ${USE_CUSTOM_POST_CONFIG_FILE} = "TRUE" ]; then +# if [ ! -f "${CUSTOM_POST_CONFIG_FP}" ]; then +# print_err_msg_exit " +#The custom post configuration specified by CUSTOM_POST_CONFIG_FP does not +#exist: +# CUSTOM_POST_CONFIG_FP = \"${CUSTOM_POST_CONFIG_FP}\"" +# fi +#fi +# +#----------------------------------------------------------------------- +# +# The forecast length (in integer hours) cannot contain more than 3 cha- +# racters. Thus, its maximum value is 999. Check whether the specified +# forecast length exceeds this maximum value. If so, print out a warn- +# ing and exit this script. +# +#----------------------------------------------------------------------- +# +fcst_len_hrs_max="999" +if [ "${FCST_LEN_HRS}" -gt "${fcst_len_hrs_max}" ]; then + print_err_msg_exit "\ +Forecast length is greater than maximum allowed length: + FCST_LEN_HRS = ${FCST_LEN_HRS} + fcst_len_hrs_max = ${fcst_len_hrs_max}" +fi +# +#----------------------------------------------------------------------- +# +# Check whether the forecast length (FCST_LEN_HRS) is evenly divisible +# by the BC update interval (LBC_SPEC_INTVL_HRS). If not, print out a +# warning and exit this script. If so, generate an array of forecast +# hours at which the boundary values will be updated. +# +#----------------------------------------------------------------------- +# +rem=$(( ${FCST_LEN_HRS}%${LBC_SPEC_INTVL_HRS} )) + +if [ "$rem" -ne "0" ]; then + print_err_msg_exit "\ +The forecast length (FCST_LEN_HRS) is not evenly divisible by the lateral +boundary conditions update interval (LBC_SPEC_INTVL_HRS): + FCST_LEN_HRS = ${FCST_LEN_HRS} + LBC_SPEC_INTVL_HRS = ${LBC_SPEC_INTVL_HRS} + rem = FCST_LEN_HRS%%LBC_SPEC_INTVL_HRS = $rem" +fi +# +#----------------------------------------------------------------------- +# +# Set the array containing the forecast hours at which the lateral +# boundary conditions (LBCs) need to be updated. Note that this array +# does not include the 0-th hour (initial time). +# Need to include 0-th hour for data assimilation cycling. +# +#----------------------------------------------------------------------- +# +LBC_SPEC_FCST_HRS=($( seq 0 ${LBC_SPEC_INTVL_HRS} \ + ${BOUNDARY_LEN_HRS} )) +LBC_SPEC_FCST_LONG_HRS=($( seq 0 ${LBC_SPEC_INTVL_HRS} \ + ${BOUNDARY_LONG_LEN_HRS} )) +# +#----------------------------------------------------------------------- +# +# If PREDEF_GRID_NAME is set to a non-empty string, set or reset parameters +# according to the predefined domain specified. +# +#----------------------------------------------------------------------- +# +if [ ! -z "${PREDEF_GRID_NAME}" ]; then + . $USHrrfs/set_predef_grid_params.sh +fi +# +#----------------------------------------------------------------------- +# +# Make sure GRID_GEN_METHOD is set to a valid value. +# +#----------------------------------------------------------------------- +# +err_msg="\ +The horizontal grid generation method specified in GRID_GEN_METHOD is +not supported: + GRID_GEN_METHOD = \"${GRID_GEN_METHOD}\"" +check_var_valid_value \ + "GRID_GEN_METHOD" "valid_vals_GRID_GEN_METHOD" "${err_msg}" +# +#----------------------------------------------------------------------- +# +# For a "GFDLgrid" type of grid, make sure GFDLgrid_RES is set to a valid +# value. +# +#----------------------------------------------------------------------- +# +if [ "${GRID_GEN_METHOD}" = "GFDLgrid" ]; then + err_msg="\ +The number of grid cells per tile in each horizontal direction specified +in GFDLgrid_RES is not supported: + GFDLgrid_RES = \"${GFDLgrid_RES}\"" + check_var_valid_value "GFDLgrid_RES" "valid_vals_GFDLgrid_RES" "${err_msg}" +fi +# +#----------------------------------------------------------------------- +# +# Check to make sure that various computational parameters needed by the +# forecast model are set to non-empty values. At this point in the +# experiment generation, all of these should be set to valid (non-empty) +# values. +# +#----------------------------------------------------------------------- +# +if [ -z "${DT_ATMOS}" ]; then + print_err_msg_exit "\ +The forecast model main time step (DT_ATMOS) is set to a null string: + DT_ATMOS = ${DT_ATMOS} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi + +if [ -z "${LAYOUT_X}" ]; then + print_err_msg_exit "\ +The number of MPI processes to be used in the x direction (LAYOUT_X) by +the forecast job is set to a null string: + LAYOUT_X = ${LAYOUT_X} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi + +if [ -z "${LAYOUT_Y}" ]; then + print_err_msg_exit "\ +The number of MPI processes to be used in the y direction (LAYOUT_Y) by +the forecast job is set to a null string: + LAYOUT_Y = ${LAYOUT_Y} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi + +if [ -z "${BLOCKSIZE}" ]; then + print_err_msg_exit "\ +The cache size to use for each MPI task of the forecast (BLOCKSIZE) is +set to a null string: + BLOCKSIZE = ${BLOCKSIZE} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi +# +#----------------------------------------------------------------------- +# +# If using the FV3_HRRR or FV3_RAP physics suites, make sure that the directory +# from which certain fixed orography files will be copied to the experiment +# directory actually exists. Note that this is temporary code. It should +# be removed once there is a script or code available that will create +# these orography files for any grid. +# +#----------------------------------------------------------------------- +# +GWD_HRRRsuite_DIR="" +if [ "${CCPP_PHYS_SUITE}" = "FV3_HRRR" ] || \ + [ "${CCPP_PHYS_SUITE}" = "FV3_HRRR_gf" ] || \ + [ "${CCPP_PHYS_SUITE}" = "RRFS_sas" ] || \ + [ "${CCPP_PHYS_SUITE}" = "FV3_RAP" ] || \ + [ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15_thompson_mynn_lam3km" ]; then + # + # Make sure that GWD_HRRRsuite_BASEDIR is set equal to FIXLAM_NCO_BASEDIR + # + if [ "${GWD_HRRRsuite_BASEDIR}" != "${FIXLAM_NCO_BASEDIR}" ]; then + gwd_hrrrsuite_basedir_orig="${GWD_HRRRsuite_BASEDIR}" + GWD_HRRRsuite_BASEDIR="${FIXLAM_NCO_BASEDIR}" + fi +# +# Check that GWD_HRRRsuite_BASEDIR exists and is a directory. +# +# if [ ! -d "${GWD_HRRRsuite_BASEDIR}" ]; then +# print_err_msg_exit "\ +#The base directory (GWD_HRRRsuite_BASEDIR) under which the grid-specific +#subdirectories containing the gravity wave drag-related orography files +#for the FV3_HRRR/FV3_RAP suites should be located does not exist (or is +#not a directory): +# GWD_HRRRsuite_BASEDIR = \"${GWD_HRRRsuite_BASEDIR}\"" +# fi + GWD_HRRRsuite_DIR="${GWD_HRRRsuite_BASEDIR}/${PREDEF_GRID_NAME}" +# +# Ensure that PREDEF_GRID_NAME is not set to a null string. Currently, +# only predefined grids can be used with the FV3_HRRR/FV3_RAP suites because +# orography statistics files required by this suite are available only +# for (some of) the predefined grids. +# +# if [ -z "${PREDEF_GRID_NAME}" ]; then +# print_err_msg_exit "\ +#A predefined grid name (PREDEF_GRID_NAME) must be specified when using +#the FV3_HRRR/FV3_RAP physics suites: +# CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\" +# PREDEF_GRID_NAME = \"${PREDEF_GRID_NAME}\"" +# else +# +# Ensure that the directory GWD_HRRRsuite_DIR in which the orography +# statistics files required by the FV3_HRRR/FV3_RAP suites are located +# actually exists. +# +# if [ ! -d "${GWD_HRRRsuite_DIR}" ]; then +# print_err_msg_exit "\ +#The directory (GWD_HRRRsuite_DIR) that should contain the gravity wave +#drag-related orography files for the FV3_HRRR/FV3_RAP suites does not exist: +# GWD_HRRRsuite_DIR = \"${GWD_HRRRsuite_DIR}\"" +# elif [ ! "$( ls -A ${GWD_HRRRsuite_DIR} )" ]; then +# print_err_msg_exit "\ +#The directory (GWD_HRRRsuite_DIR) that should contain the gravity wave +#drag related orography files for the FV3_HRRR/FV3_RAP suites is empty: +# GWD_HRRRsuite_DIR = \"${GWD_HRRRsuite_DIR}\"" +# fi +# fi +# +fi +# +#----------------------------------------------------------------------- +# +# If the base directory (EXPT_BASEDIR) in which the experiment subdirectory +# (EXPT_SUBDIR) will be located does not start with a "/", then it is +# either set to a null string or contains a relative directory. In both +# cases, prepend to it the absolute path of the default directory under +# which the experiment directories are placed. If EXPT_BASEDIR was set +# to a null string, it will get reset to this default experiment directory, +# and if it was set to a relative directory, it will get reset to an +# absolute directory that points to the relative directory under the +# default experiment directory. Then create EXPT_BASEDIR if it doesn't +# already exist. +# +#----------------------------------------------------------------------- +# +if [ "${EXPT_BASEDIR:0:1}" != "/" ]; then + EXPT_BASEDIR="${HOMErrfs}/../expt_dirs/${EXPT_BASEDIR}" +fi +EXPT_BASEDIR="$( readlink -m ${EXPT_BASEDIR} )" +mkdir -p "${EXPT_BASEDIR}" +# +#----------------------------------------------------------------------- +# +# If the experiment subdirectory name (EXPT_SUBDIR) is set to an empty +# string, print out an error message and exit. +# +#----------------------------------------------------------------------- +# +if [ -z "${EXPT_SUBDIR}" ]; then + print_err_msg_exit "\ +The name of the experiment subdirectory (EXPT_SUBDIR) cannot be empty: + EXPT_SUBDIR = \"${EXPT_SUBDIR}\"" +fi +# +#----------------------------------------------------------------------- +# +# Set the full path to the experiment directory. Then check if it already +# exists and if so, deal with it as specified by PREEXISTING_DIR_METHOD. +# +#----------------------------------------------------------------------- +# +EXPTDIR="${EXPT_BASEDIR}/${EXPT_SUBDIR}" +check_for_preexist_dir_file "$EXPTDIR" "${PREEXISTING_DIR_METHOD}" +# +#----------------------------------------------------------------------- +# +# Set other directories, Definitions: +# +# LOG_BASEDIR: +# Base directory in which the log files from the workflow tasks will be placed. +# +# FIXam: +# This is the directory that will contain the fixed files or symlinks to +# the fixed files containing various fields on global grids (which are +# usually much coarser than the native FV3-LAM grid). +# +# FIXLAM: +# This is the directory that will contain the fixed files or symlinks to +# the fixed files containing the grid, orography, and surface climatology +# on the native FV3-LAM grid. +# +# FIXgsi: +# This is the directory that will contain the fixed files for GSI run +# +# FIXcrtm: +# This is the directory that will contain the coefficient files for CRTM +# +# DATAROOT: +# The directory containing the working directories. +# +# ENSCTRL_DATAROOT: +# The base directory of the control member for EnKF recentering. +# +# COMROOT: +# This is the full path to the "com" directory under which +# output from the POST_TN task will be placed. Note that this output +# is not placed directly under COMROOT but several directories further +# down. More specifically, for a cycle starting at yyyymmddhh, it is at +# +# $COMROOT/$NET/$envir/$RUN.$yyyymmdd/$hh +# +# Below, we set COMROOT in terms of PTMP as COMROOT="$PTMP/com". +# +# GESROOT: +# The beginning portion of the directory that will contain the output +# files from the forecast for a given cycle. For a cycle +# that starts on the date specified by yyyymmdd and hour specified by hh +# (where yyyymmdd and hh are as described above), the directory in which +# the forecast output files will be placed will be: +# $GESROOT/$RUN.$yyyymmdd/$hh +# +# Below, we set GESROOT in terms of PTMP as GESROOT="$PTMP/nwges". +# +#----------------------------------------------------------------------- +# + +FIXam="${EXPTDIR}/fix_am" +FIXLAM="${EXPTDIR}/fix_lam" +FIXgsi="${EXPTDIR}/fix_gsi" +FIXcrtm="${EXPTDIR}/fix_crtm" +FIXuppcrtm="${EXPTDIR}/fix_upp_crtm" +FIXsmokedust="${EXPTDIR}/fix_smoke_dust" +FIXbufrsnd="${EXPTDIR}/fix_bufrsnd" +SST_ROOT="${SST_ROOT}" + +DATAROOT="$STMP" +check_for_preexist_dir_file "${DATAROOT}" "${PREEXISTING_DIR_METHOD}" +ENSCTRL_DATAROOT="${ENSCTRL_STMP}" +COMROOT="${PTMP}/com" +DCOMROOT="${DCOM_ROOT}" +ENSCTRL_COMROOT="${ENSCTRL_PTMP}/com" +ENSCTRL_COMOUT="${ENSCTRL_COMROOT}/${NET}/${rrfs_ver}/${RUN_ensctrl}.@Y@m@d" +GESROOT="${GESROOT:-${PTMP}/nwges}" +LOG_BASEDIR="${PTMP}/logs" +# +#----------------------------------------------------------------------- +# +# The RRFS model needs the following input files in the run directory +# to start a forecast: +# +# (1) The data table file +# (2) The diagnostics table file +# (3) The field table file +# (4) The FV3 namelist file +# (5) The model configuration file +# (6) The UFS configuration file +# +# If using CCPP, it also needs: +# +# (7) The CCPP physics suite definition file +# +# The workflow contains templates for the first six of these files. +# Template files are versions of these files that contain placeholder +# (i.e. dummy) values for various parameters. The experiment/workflow +# generation scripts copy these templates to appropriate locations in +# the experiment directory (either the top of the experiment directory +# or one of the cycle subdirectories) and replace the placeholders in +# these copies by actual values specified in the experiment/workflow +# configuration file (or derived from such values). The scripts then +# use the resulting "actual" files as inputs to the forecast model. +# +# Note that the CCPP physics suite defintion file does not have a cor- +# responding template file because it does not contain any values that +# need to be replaced according to the experiment/workflow configura- +# tion. If using CCPP, this file simply needs to be copied over from +# its location in the forecast model's directory structure to the ex- +# periment directory. +# +# Below, we first set the names of the templates for the first six files +# listed above. We then set the full paths to these template files. +# Note that some of these file names depend on the physics suite while +# others do not. +# +#----------------------------------------------------------------------- +# +dot_ccpp_phys_suite_or_null=".${CCPP_PHYS_SUITE}" + +DATA_TABLE_TMPL_FN="${DATA_TABLE_FN}" +if [ "${USE_CLM}" = "TRUE" ]; then +DIAG_TABLE_TMPL_FN="${DIAG_TABLE_FN}${dot_ccpp_phys_suite_or_null}_clm" +else +DIAG_TABLE_TMPL_FN="${DIAG_TABLE_FN}${dot_ccpp_phys_suite_or_null}" +fi +FIELD_TABLE_TMPL_FN="${FIELD_TABLE_FN}${dot_ccpp_phys_suite_or_null}" +MODEL_CONFIG_TMPL_FN="${MODEL_CONFIG_FN}" +UFS_CONFIG_TMPL_FN="${UFS_CONFIG_FN}" + +DATA_TABLE_TMPL_FP="${PARMrrfs}/${DATA_TABLE_TMPL_FN}" +DIAG_TABLE_TMPL_FP="${PARMrrfs}/${DIAG_TABLE_TMPL_FN}" +FIELD_TABLE_TMPL_FP="${PARMrrfs}/${FIELD_TABLE_TMPL_FN}" +FV3_NML_BASE_SUITE_FP="${PARMrrfs}/${FV3_NML_BASE_SUITE_FN}" +FV3_NML_YAML_CONFIG_FP="${PARMrrfs}/${FV3_NML_YAML_CONFIG_FN}" +FV3_NML_BASE_ENS_FP="${EXPTDIR}/${FV3_NML_BASE_ENS_FN}" +MODEL_CONFIG_TMPL_FP="${PARMrrfs}/${MODEL_CONFIG_TMPL_FN}" +UFS_CONFIG_TMPL_FP="${PARMrrfs}/${UFS_CONFIG_TMPL_FN}" +# +#----------------------------------------------------------------------- +# +# Set: +# +# 1) the variable CCPP_PHYS_SUITE_FN to the name of the CCPP physics +# suite definition file. +# 2) the variable CCPP_PHYS_SUITE_IN_CCPP_FP to the full path of this +# file in the forecast model's directory structure. +# 3) the variable CCPP_PHYS_SUITE_FP to the full path of this file in +# the experiment directory. +# +# Note that the experiment/workflow generation scripts will copy this +# file from CCPP_PHYS_SUITE_IN_CCPP_FP to CCPP_PHYS_SUITE_FP. Then, for +# each cycle, the forecast launch script will create a link in the cycle +# run directory to the copy of this file at CCPP_PHYS_SUITE_FP. +# +#----------------------------------------------------------------------- +# +CCPP_PHYS_SUITE_FN="suite_${CCPP_PHYS_SUITE}.xml" +CCPP_PHYS_SUITE_IN_CCPP_FP="${UFS_WTHR_MDL_DIR}/FV3/ccpp/suites/${CCPP_PHYS_SUITE_FN}" +CCPP_PHYS_SUITE_FP="${EXPTDIR}/${CCPP_PHYS_SUITE_FN}" +#if [ ! -f "${CCPP_PHYS_SUITE_IN_CCPP_FP}" ]; then +# print_err_msg_exit "\ +#The CCPP suite definition file (CCPP_PHYS_SUITE_IN_CCPP_FP) does not exist +#in the local clone of the ufs-weather-model: +# CCPP_PHYS_SUITE_IN_CCPP_FP = \"${CCPP_PHYS_SUITE_IN_CCPP_FP}\"" +#fi + +# +#----------------------------------------------------------------------- +# +# Set: +# +# 1) the variable UFS_YAML_FN to the name of the fd_ufs.yaml +# 2) the variable UFS_YAML_IN_PARM_FP to the full path of this +# file in the forecast model's directory structure. +# 3) the variable UFS_YAML_FP to the full path of this file in +# the experiment directory. +# +#----------------------------------------------------------------------- +# +UFS_YAML_FN="fd_ufs.yaml" +UFS_YAML_IN_PARM_FP="${UFS_WTHR_MDL_DIR}/tests/parm/${UFS_YAML_FN}" +UFS_YAML_FP="${EXPTDIR}/${UFS_YAML_FN}" +#if [ ! -f "${UFS_YAML_IN_PARM_FP}" ]; then +# print_err_msg_exit "\ +#The (UFS_YAML_IN_PARM_FP) does not exist +#in the local clone of the ufs-weather-model: +# UFS_YAML_IN_PARM_FP= \"${UFS_YAML_IN_PARM_FP}\"" +#fi + +# +#----------------------------------------------------------------------- +# +# Call the function that sets the ozone parameterization being used and +# modifies associated parameters accordingly. +# +#----------------------------------------------------------------------- +# +set_ozone_param \ + ccpp_phys_suite_fp="${CCPP_PHYS_SUITE_IN_CCPP_FP}" \ + output_varname_ozone_param="OZONE_PARAM" +# +#----------------------------------------------------------------------- +# +# Set the full paths to those forecast model input files that are cycle- +# independent, i.e. they don't include information about the cycle's +# starting day/time. These are: +# +# * The data table file [(1) in the list above)] +# * The field table file [(3) in the list above)] +# * The FV3 namelist file [(4) in the list above)] +# * The UFS configuration file [(6) in the list above)] +# +# Since they are cycle-independent, the experiment/workflow generation +# scripts will place them in the main experiment directory (EXPTDIR). +# The script that runs each cycle will then create links to these files +# in the run directories of the individual cycles (which are subdirecto- +# ries under EXPTDIR). +# +# The remaining two input files to the forecast model, i.e. +# +# * The diagnostics table file [(2) in the list above)] +# * The model configuration file [(5) in the list above)] +# +# contain parameters that depend on the cycle start date. Thus, custom +# versions of these two files must be generated for each cycle and then +# placed directly in the run directories of the cycles (not EXPTDIR). +# For this reason, the full paths to their locations vary by cycle and +# cannot be set here (i.e. they can only be set in the loop over the +# cycles in the rocoto workflow XML file). +# +#----------------------------------------------------------------------- +# +DATA_TABLE_FP="${EXPTDIR}/${DATA_TABLE_FN}" +FIELD_TABLE_FP="${EXPTDIR}/${FIELD_TABLE_FN}" +FV3_NML_FN="${FV3_NML_BASE_SUITE_FN%.*}" +FV3_NML_FP="${EXPTDIR}/${FV3_NML_FN}" +FV3_NML_CYCSFC_FP="${EXPTDIR}/${FV3_NML_FN}_cycsfc" +FV3_NML_RESTART_FP="${EXPTDIR}/${FV3_NML_FN}_restart" +FV3_NML_RESTART_18H_FP="${EXPTDIR}/${FV3_NML_FN}_restart_18h" +FV3_NML_RESTART_LONG_FP="${EXPTDIR}/${FV3_NML_FN}_restart_long" +FV3_NML_RESTART_SPINUPCYC_FP="${EXPTDIR}/${FV3_NML_FN}_restart_spinupcyc" +FV3_NML_18H_FP="${EXPTDIR}/${FV3_NML_FN}_18h" +FV3_NML_LONG_FP="${EXPTDIR}/${FV3_NML_FN}_long" +FV3_NML_SPINUPCYC_FP="${EXPTDIR}/${FV3_NML_FN}_spinupcyc" +FV3_NML_STOCH_FP="${EXPTDIR}/${FV3_NML_FN}_stoch" +FV3_NML_RESTART_STOCH_FP="${EXPTDIR}/${FV3_NML_FN}_restart_stoch" +UFS_CONFIG_FP="${EXPTDIR}/${UFS_CONFIG_FN}" +# +#----------------------------------------------------------------------- +# +# Make sure that USE_USER_STAGED_EXTRN_FILES is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "USE_USER_STAGED_EXTRN_FILES" "valid_vals_USE_USER_STAGED_EXTRN_FILES" +# +# Set USE_USER_STAGED_EXTRN_FILES to either "TRUE" or "FALSE" so we don't +# have to consider other valid values later on. +# +USE_USER_STAGED_EXTRN_FILES=${USE_USER_STAGED_EXTRN_FILES^^} +if [ "${USE_USER_STAGED_EXTRN_FILES}" = "YES" ]; then + USE_USER_STAGED_EXTRN_FILES="TRUE" +elif [ "${USE_USER_STAGED_EXTRN_FILES}" = "NO" ]; then + USE_USER_STAGED_EXTRN_FILES="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# If USE_USER_STAGED_EXTRN_FILES is set to TRUE, make sure that the user- +# specified directories under which the external model files should be +# located actually exist. +# +#----------------------------------------------------------------------- +# +if [ "${USE_USER_STAGED_EXTRN_FILES}" = "TRUE" ]; then + + if [ ! -d "${EXTRN_MDL_SOURCE_BASEDIR_ICS}" ]; then + print_err_msg_exit "\ +The directory (EXTRN_MDL_SOURCE_BASEDIR_ICS) in which the user-staged +external model files for generating ICs should be located does not exist: + EXTRN_MDL_SOURCE_BASEDIR_ICS = \"${EXTRN_MDL_SOURCE_BASEDIR_ICS}\"" + fi + + if [ ! -d "${EXTRN_MDL_SOURCE_BASEDIR_LBCS}" ]; then + print_err_msg_exit "\ +The directory (EXTRN_MDL_SOURCE_BASEDIR_LBCS) in which the user-staged +external model files for generating LBCs should be located does not exist: + EXTRN_MDL_SOURCE_BASEDIR_LBCS = \"${EXTRN_MDL_SOURCE_BASEDIR_LBCS}\"" + fi + +fi + +NDIGITS_ENSMEM_NAMES="0" +ENSMEM_NAMES=("") +FV3_NML_ENSMEM_FPS=("") +if [ "${DO_ENSEMBLE}" = "TRUE" ]; then +# NDIGITS_ENSMEM_NAMES="${#NUM_ENS_MEMBERS}" + NDIGITS_ENSMEM_NAMES="3" +# Strip away all leading zeros in NUM_ENS_MEMBERS by converting it to a +# decimal (leading zeros will cause bash to interpret the number as an +# octal). Note that the variable definitions file will therefore contain +# the version of NUM_ENS_MEMBERS with any leading zeros stripped away. + NUM_ENS_MEMBERS="$((10#${NUM_ENS_MEMBERS}))" + fmt="%0${NDIGITS_ENSMEM_NAMES}d" + for (( i=0; i<${NUM_ENS_MEMBERS}; i++ )); do + ip1=$( printf "$fmt" $((i+1)) ) + ENSMEM_NAMES[$i]="mem${ip1}" + FV3_NML_ENSMEM_FPS[$i]="$EXPTDIR/${FV3_NML_FN}_${ENSMEM_NAMES[$i]}" + done +fi +# +#----------------------------------------------------------------------- +# +# Set the full path to the forecast model executable. +# +#----------------------------------------------------------------------- +# +FV3_EXEC_FP="${HOMErrfs}/exec/${FV3_EXEC_FN}" +# +#----------------------------------------------------------------------- +# +# Set the full path to the script that can be used to (re)launch the +# workflow. Also, if USE_CRON_TO_RELAUNCH is set to TRUE, set the line +# to add to the cron table to automatically relaunch the workflow every +# CRON_RELAUNCH_INTVL_MNTS minutes. Otherwise, set the variable con- +# taining this line to a null string. +# +#----------------------------------------------------------------------- +# +WFLOW_LAUNCH_SCRIPT_FP="$USHrrfs/${WFLOW_LAUNCH_SCRIPT_FN}" +WFLOW_LAUNCH_LOG_FP="$EXPTDIR/${WFLOW_LAUNCH_LOG_FN}" +if [ "${USE_CRON_TO_RELAUNCH}" = "TRUE" ]; then + CRONTAB_LINE="*/${CRON_RELAUNCH_INTVL_MNTS} * * * * cd $EXPTDIR && \ +./${WFLOW_LAUNCH_SCRIPT_FN} >> ./${WFLOW_LAUNCH_LOG_FN} 2>&1" +else + CRONTAB_LINE="" +fi +# +#----------------------------------------------------------------------- +# +# Set the full path to the script that, for a given task, loads the +# necessary module files and runs the tasks. +# +#----------------------------------------------------------------------- +# +LOAD_MODULES_RUN_TASK_FP="$USHrrfs/load_modules_run_task.sh" +# +#----------------------------------------------------------------------- +# +# Define the various work subdirectories under the main work directory. +# Each of these corresponds to a different step/substep/task in the pre- +# processing, as follows: +# +# GRID_DIR: +# Directory in which the grid files will be placed (if RUN_TASK_MAKE_GRID +# is set to "TRUE") or searched for (if RUN_TASK_MAKE_GRID is set to +# "FALSE"). +# +# OROG_DIR: +# Directory in which the orography files will be placed (if RUN_TASK_MAKE_OROG +# is set to "TRUE") or searched for (if RUN_TASK_MAKE_OROG is set to +# "FALSE"). +# +# SFC_CLIMO_DIR: +# Directory in which the surface climatology files will be placed (if +# RUN_TASK_MAKE_SFC_CLIMO is set to "TRUE") or searched for (if +# RUN_TASK_MAKE_SFC_CLIMO is set to "FALSE"). +# +#---------------------------------------------------------------------- +# +nco_fix_dir="${FIXLAM_NCO_BASEDIR}/${PREDEF_GRID_NAME}" +# +# The grid, orography, and surface climatology files are not pregenerated +# for the fire weather grid. Do not produce an error when using this grid. +# +if [ "${PREDEF_GRID_NAME}" != "RRFS_FIREWX_1.5km" ]; then + if [ ! -d "${nco_fix_dir}" ]; then + print_err_msg_exit "\ + The directory (nco_fix_dir) that should contain the pregenerated grid, + orography, and surface climatology files does not exist: + nco_fix_dir = \"${nco_fix_dir}\"" + fi +fi + +# +# If RUN_TASK_MAKE_GRID is set to "FALSE", the workflow will look for +# the pregenerated grid files in GRID_DIR. +# +if [ "${RUN_TASK_MAKE_GRID}" = "FALSE" ]; then + # Set nco_fix_dir by default + GRID_DIR="${GRID_DIR:-${nco_fix_dir}}" + if [ ! -d "${GRID_DIR}" ]; then + print_err_msg_exit "\ +The directory (GRID_DIR) that should contain the pregenerated grid files +does not exist: + GRID_DIR = \"${GRID_DIR}\"" + fi +else + GRID_DIR="$EXPTDIR/grid" +fi +# +# If RUN_TASK_MAKE_OROG is set to "FALSE", the workflow will look for +# the pregenerated orography files in OROG_DIR. +# +if [ "${RUN_TASK_MAKE_OROG}" = "FALSE" ]; then + # Set nco_fix_dir by default + OROG_DIR="${OROG_DIR:-${nco_fix_dir}}" + if [ ! -d "${OROG_DIR}" ]; then + print_err_msg_exit "\ +The directory (OROG_DIR) that should contain the pregenerated orography +files does not exist: + OROG_DIR = \"${OROG_DIR}\"" + fi +else + OROG_DIR="$EXPTDIR/orog" +fi +# +# If RUN_TASK_MAKE_SFC_CLIMO is set to "FALSE", the workflow will look +# for the pregenerated surface climatology files in SFC_CLIMO_DIR. +# +if [ "${RUN_TASK_MAKE_SFC_CLIMO}" = "FALSE" ]; then + # Set nco_fix_dir by default + SFC_CLIMO_DIR="${SFC_CLIMO_DIR:-${nco_fix_dir}}" + if [ ! -d "${SFC_CLIMO_DIR}" ]; then + print_err_msg_exit "\ +The directory (SFC_CLIMO_DIR) that should contain the pregenerated surface +climatology files does not exist: + SFC_CLIMO_DIR = \"${SFC_CLIMO_DIR}\"" + fi +else + SFC_CLIMO_DIR="$EXPTDIR/sfc_climo" +fi +# +#----------------------------------------------------------------------- +# +# Make sure EXTRN_MDL_NAME_ICS is set to a valid value. +# +#----------------------------------------------------------------------- +# +err_msg="\ +The external model specified in EXTRN_MDL_NAME_ICS that provides initial +conditions (ICs) and surface fields to the FV3-LAM is not supported: + EXTRN_MDL_NAME_ICS = \"${EXTRN_MDL_NAME_ICS}\"" +check_var_valid_value \ + "EXTRN_MDL_NAME_ICS" "valid_vals_EXTRN_MDL_NAME_ICS" "${err_msg}" +# +#----------------------------------------------------------------------- +# +# Make sure EXTRN_MDL_NAME_LBCS is set to a valid value. +# +#----------------------------------------------------------------------- +# +err_msg="\ +The external model specified in EXTRN_MDL_NAME_ICS that provides lateral +boundary conditions (LBCs) to the FV3-LAM is not supported: + EXTRN_MDL_NAME_LBCS = \"${EXTRN_MDL_NAME_LBCS}\"" +check_var_valid_value \ + "EXTRN_MDL_NAME_LBCS" "valid_vals_EXTRN_MDL_NAME_LBCS" "${err_msg}" +# +#----------------------------------------------------------------------- +# +# Make sure GFS_FILE_FMT_ICS is set to a valid value. +# +#----------------------------------------------------------------------- +# +if [ "${EXTRN_MDL_NAME_ICS}" = "GFS" ]; then + err_msg="\ +The file format for GFS external model files specified in GFS_- +FILE_FMT_ICS is not supported: + GFS_FILE_FMT_ICS = \"${GFS_FILE_FMT_ICS}\"" + check_var_valid_value \ + "GFS_FILE_FMT_ICS" "valid_vals_GFS_FILE_FMT_ICS" "${err_msg}" +fi +# +#----------------------------------------------------------------------- +# +# Make sure GFS_FILE_FMT_LBCS is set to a valid value. +# +#----------------------------------------------------------------------- +# +if [ "${EXTRN_MDL_NAME_LBCS}" = "GFS" ]; then + err_msg="\ +The file format for GFS external model files specified in GFS_- +FILE_FMT_LBCS is not supported: + GFS_FILE_FMT_LBCS = \"${GFS_FILE_FMT_LBCS}\"" + check_var_valid_value \ + "GFS_FILE_FMT_LBCS" "valid_vals_GFS_FILE_FMT_LBCS" "${err_msg}" +fi +# +#----------------------------------------------------------------------- +# +# Set cycle-independent parameters associated with the external models +# from which we will obtain the ICs and LBCs. +# +#----------------------------------------------------------------------- +# +. $USHrrfs/set_extrn_mdl_params.sh + +# +#----------------------------------------------------------------------- +# +# Any regional model must be supplied lateral boundary conditions (in +# addition to initial conditions) to be able to perform a forecast. In +# the FV3-LAM model, these boundary conditions (BCs) are supplied using a +# "halo" of grid cells around the regional domain that extend beyond the +# boundary of the domain. The model is formulated such that along with +# files containing these BCs, it needs as input the following files (in +# NetCDF format): +# +# 1) A grid file that includes a halo of 3 cells beyond the boundary of +# the domain. +# 2) A grid file that includes a halo of 4 cells beyond the boundary of +# the domain. +# 3) A (filtered) orography file without a halo, i.e. a halo of width +# 0 cells. +# 4) A (filtered) orography file that includes a halo of 4 cells beyond +# the boundary of the domain. +# +# Note that the regional grid is referred to as "tile 7" in the code. +# We will let: +# +# * NH0 denote the width (in units of number of cells on tile 7) of +# the 0-cell-wide halo, i.e. NH0 = 0; +# +# * NH3 denote the width (in units of number of cells on tile 7) of +# the 3-cell-wide halo, i.e. NH3 = 3; and +# +# * NH4 denote the width (in units of number of cells on tile 7) of +# the 4-cell-wide halo, i.e. NH4 = 4. +# +# We define these variables next. +# +#----------------------------------------------------------------------- +# +NH0=0 +NH3=3 +NH4=4 +# +#----------------------------------------------------------------------- +# +# Set parameters according to the type of horizontal grid generation +# method specified. First consider GFDL's global-parent-grid based +# method. +# +#----------------------------------------------------------------------- +# +if [ "${GRID_GEN_METHOD}" = "GFDLgrid" ]; then + + set_gridparams_GFDLgrid \ + lon_of_t6_ctr="${GFDLgrid_LON_T6_CTR}" \ + lat_of_t6_ctr="${GFDLgrid_LAT_T6_CTR}" \ + res_of_t6g="${GFDLgrid_RES}" \ + stretch_factor="${GFDLgrid_STRETCH_FAC}" \ + refine_ratio_t6g_to_t7g="${GFDLgrid_REFINE_RATIO}" \ + istart_of_t7_on_t6g="${GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G}" \ + iend_of_t7_on_t6g="${GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G}" \ + jstart_of_t7_on_t6g="${GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G}" \ + jend_of_t7_on_t6g="${GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G}" \ + output_varname_lon_of_t7_ctr="LON_CTR" \ + output_varname_lat_of_t7_ctr="LAT_CTR" \ + output_varname_nx_of_t7_on_t7g="NX" \ + output_varname_ny_of_t7_on_t7g="NY" \ + output_varname_halo_width_on_t7g="NHW" \ + output_varname_stretch_factor="STRETCH_FAC" \ + output_varname_istart_of_t7_with_halo_on_t6sg="ISTART_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG" \ + output_varname_iend_of_t7_with_halo_on_t6sg="IEND_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG" \ + output_varname_jstart_of_t7_with_halo_on_t6sg="JSTART_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG" \ + output_varname_jend_of_t7_with_halo_on_t6sg="JEND_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG" +# +#----------------------------------------------------------------------- +# +# Now consider Jim Purser's map projection/grid generation method. +# +#----------------------------------------------------------------------- +# +elif [ "${GRID_GEN_METHOD}" = "ESGgrid" ]; then + + set_gridparams_ESGgrid \ + lon_ctr="${ESGgrid_LON_CTR}" \ + lat_ctr="${ESGgrid_LAT_CTR}" \ + nx="${ESGgrid_NX}" \ + ny="${ESGgrid_NY}" \ + halo_width="${ESGgrid_WIDE_HALO_WIDTH}" \ + delx="${ESGgrid_DELX}" \ + dely="${ESGgrid_DELY}" \ + pazi="${ESGgrid_PAZI}" \ + output_varname_lon_ctr="LON_CTR" \ + output_varname_lat_ctr="LAT_CTR" \ + output_varname_nx="NX" \ + output_varname_ny="NY" \ + output_varname_pazi="PAZI"\ + output_varname_halo_width="NHW" \ + output_varname_stretch_factor="STRETCH_FAC" \ + output_varname_del_angle_x_sg="DEL_ANGLE_X_SG" \ + output_varname_del_angle_y_sg="DEL_ANGLE_Y_SG" \ + output_varname_neg_nx_of_dom_with_wide_halo="NEG_NX_OF_DOM_WITH_WIDE_HALO" \ + output_varname_neg_ny_of_dom_with_wide_halo="NEG_NY_OF_DOM_WITH_WIDE_HALO" + +fi +# +#----------------------------------------------------------------------- +# +# Create a new experiment directory. Note that at this point we are +# guaranteed that there is no preexisting experiment directory. +# +#----------------------------------------------------------------------- +# +mkdir -p "$EXPTDIR" + + +# +#----------------------------------------------------------------------- +# +# If not running the MAKE_GRID_TN, MAKE_OROG_TN, and/or MAKE_SFC_CLIMO +# tasks, create symlinks under the FIXLAM directory to pregenerated grid, +# orography, and surface climatology files. In the process, also set +# RES_IN_FIXLAM_FILENAMES, which is the resolution of the grid (in units +# of number of grid points on an equivalent global uniform cubed-sphere +# grid) used in the names of the fixed files in the FIXLAM directory. +# +#----------------------------------------------------------------------- +# +#mkdir -p "$FIXLAM" +RES_IN_FIXLAM_FILENAMES="" +# +#----------------------------------------------------------------------- +# +# If the grid file generation task in the workflow is going to be skipped +# (because pregenerated files are available), create links in the FIXLAM +# directory to the pregenerated grid files. +# +#----------------------------------------------------------------------- +# +#res_in_grid_fns="" +#if [ "${RUN_TASK_MAKE_GRID}" = "FALSE" ]; then +# +# link_fix \ +# verbose="$VERBOSE" \ +# file_group="grid" \ +# output_varname_res_in_filenames="res_in_grid_fns" || \ +# print_err_msg_exit "\ +#Call to function to create links to grid files failed." +# +# RES_IN_FIXLAM_FILENAMES="${res_in_grid_fns}" +# +#fi +# +#----------------------------------------------------------------------- +# +# If the orography file generation task in the workflow is going to be +# skipped (because pregenerated files are available), create links in +# the FIXLAM directory to the pregenerated orography files. +# +#----------------------------------------------------------------------- +# +#res_in_orog_fns="" +#if [ "${RUN_TASK_MAKE_OROG}" = "FALSE" ]; then +# +# link_fix \ +# verbose="$VERBOSE" \ +# file_group="orog" \ +# output_varname_res_in_filenames="res_in_orog_fns" || \ +# print_err_msg_exit "\ +#Call to function to create links to orography files failed." +# +# if [ ! -z "${RES_IN_FIXLAM_FILENAMES}" ] && \ +# [ "${res_in_orog_fns}" -ne "${RES_IN_FIXLAM_FILENAMES}" ]; then +# print_err_msg_exit "\ +#The resolution extracted from the orography file names (res_in_orog_fns) +#does not match the resolution in other groups of files already consi- +#dered (RES_IN_FIXLAM_FILENAMES): +# res_in_orog_fns = ${res_in_orog_fns} +# RES_IN_FIXLAM_FILENAMES = ${RES_IN_FIXLAM_FILENAMES}" +# else +# RES_IN_FIXLAM_FILENAMES="${res_in_orog_fns}" +# fi +# +#fi +# +#----------------------------------------------------------------------- +# +# If the surface climatology file generation task in the workflow is +# going to be skipped (because pregenerated files are available), create +# links in the FIXLAM directory to the pregenerated surface climatology +# files. +# +#----------------------------------------------------------------------- +# +#res_in_sfc_climo_fns="" +#if [ "${RUN_TASK_MAKE_SFC_CLIMO}" = "FALSE" ]; then +# +# link_fix \ +# verbose="$VERBOSE" \ +# file_group="sfc_climo" \ +# output_varname_res_in_filenames="res_in_sfc_climo_fns" || \ +# print_err_msg_exit "\ +#Call to function to create links to surface climatology files failed." +# +# if [ ! -z "${RES_IN_FIXLAM_FILENAMES}" ] && \ +# [ "${res_in_sfc_climo_fns}" -ne "${RES_IN_FIXLAM_FILENAMES}" ]; then +# print_err_msg_exit "\ +#The resolution extracted from the surface climatology file names (res_- +#in_sfc_climo_fns) does not match the resolution in other groups of files +#already considered (RES_IN_FIXLAM_FILENAMES): +# res_in_sfc_climo_fns = ${res_in_sfc_climo_fns} +# RES_IN_FIXLAM_FILENAMES = ${RES_IN_FIXLAM_FILENAMES}" +# else +# RES_IN_FIXLAM_FILENAMES="${res_in_sfc_climo_fns}" +# fi +# +#fi +# +#----------------------------------------------------------------------- +# +# The variable CRES is needed in constructing various file names. If +# not running the make_grid task, we can set it here. Otherwise, it +# will get set to a valid value by that task. +# +#----------------------------------------------------------------------- +# +CRES="" +if [ "${RUN_TASK_MAKE_GRID}" = "FALSE" ]; then + CRES="C${RES_IN_FIXLAM_FILENAMES}" +fi + +# +#----------------------------------------------------------------------- +# +# Make sure that QUILTING is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "QUILTING" "valid_vals_QUILTING" +# +# Set QUILTING to either "TRUE" or "FALSE" so we don't have to consider +# other valid values later on. +# +QUILTING=${QUILTING^^} +if [ "$QUILTING" = "TRUE" ] || \ + [ "$QUILTING" = "YES" ]; then + QUILTING="TRUE" +elif [ "$QUILTING" = "FALSE" ] || \ + [ "$QUILTING" = "NO" ]; then + QUILTING="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Make sure that PRINT_ESMF is set to a valid value. +# +#----------------------------------------------------------------------- +# +check_var_valid_value "PRINT_ESMF" "valid_vals_PRINT_ESMF" +# +# Set PRINT_ESMF to either "TRUE" or "FALSE" so we don't have to consider +# other valid values later on. +# +PRINT_ESMF=${PRINT_ESMF^^} +if [ "${PRINT_ESMF}" = "TRUE" ] || \ + [ "${PRINT_ESMF}" = "YES" ]; then + PRINT_ESMF="TRUE" +elif [ "${PRINT_ESMF}" = "FALSE" ] || \ + [ "${PRINT_ESMF}" = "NO" ]; then + PRINT_ESMF="FALSE" +fi +# +#----------------------------------------------------------------------- +# +# Calculate PE_MEMBER01. This is the number of MPI tasks used for the +# forecast, including those for the write component if QUILTING is set +# to "TRUE". +# +#----------------------------------------------------------------------- +# +PE_MEMBER01=$(( LAYOUT_X*LAYOUT_Y )) +if [ "$QUILTING" = "TRUE" ]; then + PE_MEMBER01=$(( ${PE_MEMBER01} + ${WRTCMP_write_groups}*${WRTCMP_write_tasks_per_group} )) +fi + +print_info_msg "$VERBOSE" " +The number of MPI tasks for the forecast (including those for the write +component if it is being used) are: + PE_MEMBER01 = ${PE_MEMBER01}" +# +#----------------------------------------------------------------------- +# +# If the write-component is going to be used to write output files to +# disk (i.e. if QUILTING is set to "TRUE"), make sure that the grid type +# used by the write-component (WRTCMP_output_grid) is set to a valid value. +# +#----------------------------------------------------------------------- +# +if [ "$QUILTING" = "TRUE" ]; then + err_msg="\ +The coordinate system used by the write-component output grid specified +in WRTCMP_output_grid is not supported: + WRTCMP_output_grid = \"${WRTCMP_output_grid}\"" + check_var_valid_value \ + "WRTCMP_output_grid" "valid_vals_WRTCMP_output_grid" "${err_msg}" +fi +# +#----------------------------------------------------------------------- +# +# Calculate the number of nodes (NNODES_FORECAST) to request from the job +# scheduler for the forecast task (FORECAST_TN). This is just PE_MEMBER01 +# dividied by the number of processes per node we want to request for this +# task (PPN_FORECAST), then rounded up to the nearest integer, i.e. +# +# NNODES_FORECAST = ceil(PE_MEMBER01/PPN_FORECAST) +# +# where ceil(...) is the ceiling function, i.e. it rounds its floating +# point argument up to the next larger integer. Since in bash, division +# of two integers returns a truncated integer, and since bash has no +# built-in ceil(...) function, we perform the rounding-up operation by +# adding the denominator (of the argument of ceil(...) above) minus 1 to +# the original numerator, i.e. by redefining NNODES_FORECAST to be +# +# NNODES_FORECAST = (PE_MEMBER01 + PPN_FORECAST - 1)/PPN_FORECAST +# +#----------------------------------------------------------------------- +# +NNODES_FORECAST=${NNODES_FORECAST} +#NNODES_FORECAST=$(( (PE_MEMBER01 + PPN_FORECAST - 1)/PPN_FORECAST )) + +# +#----------------------------------------------------------------------- +# +# Call the function that checks whether the RUC land surface model (LSM) +# is being called by the physics suite and sets the workflow variable +# SDF_USES_RUC_LSM to "TRUE" or "FALSE" accordingly. +# +#----------------------------------------------------------------------- +# +check_ruc_lsm \ + ccpp_phys_suite_fp="${CCPP_PHYS_SUITE_IN_CCPP_FP}" \ + output_varname_sdf_uses_ruc_lsm="SDF_USES_RUC_LSM" +# +#----------------------------------------------------------------------- +# +# Set the name of the file containing aerosol climatology data that, if +# necessary, can be used to generate approximate versions of the aerosol +# fields needed by Thompson microphysics. This file will be used to +# generate such approximate aerosol fields in the ICs and LBCs if Thompson +# MP is included in the physics suite and if the exteranl model for ICs +# or LBCs does not already provide these fields. Also, set the full path +# to this file. +# +#----------------------------------------------------------------------- +# +THOMPSON_MP_CLIMO_FN="Thompson_MP_MONTHLY_CLIMO.nc" +THOMPSON_MP_CLIMO_FP="$FIXam/${THOMPSON_MP_CLIMO_FN}" +# +#----------------------------------------------------------------------- +# +# Call the function that, if the Thompson microphysics parameterization +# is being called by the physics suite, modifies certain workflow arrays +# to ensure that fixed files needed by this parameterization are copied +# to the FIXam directory and appropriate symlinks to them are created in +# the run directories. This function also sets the workflow variable +# SDF_USES_THOMPSON_MP that indicates whether Thompson MP is called by +# the physics suite. +# +#----------------------------------------------------------------------- +# +set_thompson_mp_fix_files \ + ccpp_phys_suite_fp="${CCPP_PHYS_SUITE_IN_CCPP_FP}" \ + thompson_mp_climo_fn="${THOMPSON_MP_CLIMO_FN}" \ + output_varname_sdf_uses_thompson_mp="SDF_USES_THOMPSON_MP" +# +#----------------------------------------------------------------------- +# +# Generate the shell script that will appear in the experiment directory +# (EXPTDIR) and will contain definitions of variables needed by the va- +# rious scripts in the workflow. We refer to this as the experiment/ +# workflow global variable definitions file. We will create this file +# by: +# +# 1) Copying the default workflow/experiment configuration file (speci- +# fied by EXPT_DEFAULT_CONFIG_FN and located in the shell script di- +# rectory specified by USHrrfs) to the experiment directory and rena- +# ming it to the name specified by GLOBAL_VAR_DEFNS_FN. +# +# 2) Resetting the default variable values in this file to their current +# values. This is necessary because these variables may have been +# reset by the user-specified configuration file (if one exists in +# USHrrfs) and/or by this setup script, e.g. because predef_domain is +# set to a valid non-empty value. +# +# 3) Appending to the variable definitions file any new variables intro- +# duced in this setup script that may be needed by the scripts that +# perform the various tasks in the workflow (and which source the va- +# riable defintions file). +# +# First, set the full path to the variable definitions file and copy the +# default configuration script into it. +# +#----------------------------------------------------------------------- +# +GLOBAL_VAR_DEFNS_FP="$EXPTDIR/$GLOBAL_VAR_DEFNS_FN" + +return + +cp $USHrrfs/${EXPT_DEFAULT_CONFIG_FN} ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# +# +#----------------------------------------------------------------------- +# + +# Read all lines of GLOBAL_VAR_DEFNS file into the variable line_list. +line_list=$( sed -r -e "s/(.*)/\1/g" ${GLOBAL_VAR_DEFNS_FP} ) +# +# Loop through the lines in line_list and concatenate lines ending with +# the line bash continuation character "\". +# +rm ${GLOBAL_VAR_DEFNS_FP} +while read crnt_line; do + printf "%s\n" "${crnt_line}" >> ${GLOBAL_VAR_DEFNS_FP} +done <<< "${line_list}" +# +#----------------------------------------------------------------------- +# +# The following comment block needs to be updated because now line_list +# may contain lines that are not assignment statements (e.g. it may con- +# tain if-statements). Such lines are ignored in the while-loop below. +# +# Reset each of the variables in the variable definitions file to its +# value in the current environment. To accomplish this, we: +# +# 1) Create a list of variable settings by stripping out comments, blank +# lines, extraneous leading whitespace, etc from the variable defini- +# tions file (which is currently identical to the default workflow/ +# experiment configuration script) and saving the result in the vari- +# able line_list. Each line of line_list will have the form +# +# VAR=... +# +# where the VAR is a variable name and ... is the value from the de- +# fault configuration script (which does not necessarily correspond +# to the current value of the variable). +# +# 2) Loop through each line of line_list. For each line, we extract the +# variable name (and save it in the variable var_name), get its value +# from the current environment (using bash indirection, i.e. +# ${!var_name}), and use the set_file_param() function to replace the +# value of the variable in the variable definitions script (denoted +# above by ...) with its current value. +# +#----------------------------------------------------------------------- +# +# Also should remove trailing whitespace... +line_list=$( sed -r \ + -e "s/^([ ]*)([^ ]+.*)/\2/g" \ + -e "/^#.*/d" \ + -e "/^$/d" \ + ${GLOBAL_VAR_DEFNS_FP} ) + +print_info_msg "$VERBOSE" " +The variable \"line_list\" contains: + +${line_list} +" + +# +#----------------------------------------------------------------------- +# +# Add a comment at the beginning of the variable definitions file that +# indicates that the first section of that file is (mostly) the same as +# the configuration file. +# +#----------------------------------------------------------------------- +# +#read -r -d '' str_to_insert << EOM +read -r str_to_insert << EOM +# +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# Section 1: +# This section is a copy of the default workflow/experiment configuration +# file config_defaults.sh in the shell scripts directory USHrrfs except +# that variable values have been updated to those set by the setup +# script (setup.sh). +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# +EOM +# +# Replace all occurrences of actual newlines in the variable str_to_insert +# with escaped backslash-n. This is needed for the sed command below to +# work properly (i.e. to avoid it failing with an "unterminated `s' command" +# message). +# +str_to_insert=${str_to_insert//$'\n'/\\n} +# +# Insert str_to_insert into GLOBAL_VAR_DEFNS_FP right after the line +# containing the name of the interpreter (i.e. the line that starts with +# the string "#!", e.g. "#!/bin/bash"). +# +regexp="(^#!.*)" +sed -i -r -e "s|$regexp|\1\n\n${str_to_insert}\n|g" ${GLOBAL_VAR_DEFNS_FP} + +# +# Loop through the lines in line_list. +# +while read crnt_line; do +# +# Try to obtain the name of the variable being set on the current line. +# This will be successful only if the line consists of one or more char- +# acters representing the name of a variable (recall that in generating +# the variable line_list, all leading spaces in the lines in the file +# have been stripped out), followed by an equal sign, followed by zero +# or more characters representing the value that the variable is being +# set to. +# + var_name=$( printf "%s" "${crnt_line}" | sed -n -r -e "s/^([^ ]*)=.*/\1/p" ) +#echo +#echo "============================" +#printf "%s\n" "var_name = \"${var_name}\"" +# +# If var_name is not empty, then a variable name was found in the cur- +# rent line in line_list. +# + if [ ! -z $var_name ]; then + + print_info_msg "$VERBOSE" " +var_name = \"${var_name}\"" +# +# If the variable specified in var_name is set in the current environ- +# ment (to either an empty or non-empty string), get its value and in- +# sert it in the variable definitions file on the line where that varia- +# ble is defined. Note that +# +# ${!var_name+x} +# +# will retrun the string "x" if the variable specified in var_name is +# set (to either an empty or non-empty string), and it will return an +# empty string if the variable specified in var_name is unset (i.e. un- +# defined). +# + if [ ! -z ${!var_name+x} ]; then +# +# The variable may be a scalar or an array. Thus, we first treat it as +# an array and obtain the number of elements that it contains. +# + array_name_at="${var_name}[@]" + array=("${!array_name_at}") + num_elems="${#array[@]}" +# +# We will now set the variable var_value to the string that needs to be +# placed on the right-hand side of the assignment operator (=) on the +# appropriate line in variable definitions file. How this is done de- +# pends on whether the variable is a scalar or an array. +# +# If the variable contains only one element, then it is a scalar. (It +# could be a 1-element array, but it is simpler to treat it as a sca- +# lar.) In this case, we enclose its value in double quotes and save +# the result in var_value. +# + if [ "$num_elems" -eq 1 ]; then + var_value="${!var_name}" + var_value="\"${var_value}\"" +# +# If the variable contains more than one element, then it is an array. +# In this case, we build var_value in two steps as follows: +# +# 1) Generate a string containing each element of the array in double +# quotes and followed by a space. +# +# 2) Place parentheses around the double-quoted list of array elements +# generated in the first step. Note that there is no need to put a +# space before the closing parenthesis because in step 1, we have al- +# ready placed a space after the last element. +# + else + + arrays_on_one_line="TRUE" + arrays_on_one_line="FALSE" + + if [ "${arrays_on_one_line}" = "TRUE" ]; then + var_value=$(printf "\"%s\" " "${!array_name_at}") +# var_value=$(printf "\"%s\" \\\\\\ \\\n" "${!array_name_at}") + else +# var_value=$(printf "%s" "\\\\\\n") + var_value="\\\\\n" + for (( i=0; i<${num_elems}; i++ )); do +# var_value=$(printf "%s\"%s\" %s" "${var_value}" "${array[$i]}" "\\\\\\n") + var_value="${var_value}\"${array[$i]}\" \\\\\n" +# var_value="${var_value}\"${array[$i]}\" " + done + fi + var_value="( $var_value)" + + fi +# +# If the variable specified in var_name is not set in the current envi- +# ronment (to either an empty or non-empty string), get its value and +# insert it in the variable definitions file on the line where that va- +# riable is defined. +# + else + + print_info_msg " +The variable specified by \"var_name\" is not set in the current envi- +ronment: + var_name = \"${var_name}\" +Setting its value in the variable definitions file to an empty string." + + var_value="\"\"" + + fi +# +# Now place var_value on the right-hand side of the assignment statement +# on the appropriate line in variable definitions file. +# + set_file_param "${GLOBAL_VAR_DEFNS_FP}" "${var_name}" "${var_value}" +# +# If var_name is empty, then a variable name was not found in the cur- +# rent line in line_list. In this case, print out a warning and move on +# to the next line. +# + else + + print_info_msg " +Could not extract a variable name from the current line in \"line_list\" +(probably because it does not contain an equal sign with no spaces on +either side): + crnt_line = \"${crnt_line}\" + var_name = \"${var_name}\" +Continuing to next line in \"line_list\"." + + fi + +done <<< "${line_list}" +# +#----------------------------------------------------------------------- +# +# Append additional variable definitions (and comments) to the variable +# definitions file. These variables have been set above using the vari- +# ables in the default and local configuration scripts. These variables +# are needed by various tasks/scripts in the workflow. +# +#----------------------------------------------------------------------- +# +{ cat << EOM >> ${GLOBAL_VAR_DEFNS_FP} + +# +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# Section 2: +# This section defines variables that have been derived from the ones +# above by the setup script (setup.sh) and which are needed by one or +# more of the scripts that perform the workflow tasks (those scripts +# source this variable definitions file). +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# + +# +#----------------------------------------------------------------------- +# +# Full path to workflow launcher script, its log file, and the line that +# gets added to the cron table to launch this script if USE_CRON_TO_RELAUNCH +# is set to TRUE. +# +#----------------------------------------------------------------------- +# +WFLOW_LAUNCH_SCRIPT_FP="${WFLOW_LAUNCH_SCRIPT_FP}" +WFLOW_LAUNCH_LOG_FP="${WFLOW_LAUNCH_LOG_FP}" +CRONTAB_LINE="${CRONTAB_LINE}" +# +#----------------------------------------------------------------------- +# +# Directories. +# +#----------------------------------------------------------------------- +# +HOMErrfs="$HOMErrfs" +USHrrfs="$USHrrfs" +SORCrrfs="$SORCrrfs" +PARMrrfs="$PARMrrfs" +MODULES_DIR="${MODULES_DIR}" +LIB64dir="$LIB64dir" +FIXam="$FIXam" +FIXLAM="$FIXLAM" +FIXgsm="$FIXgsm" +COMROOT="$COMROOT" +DCOMROOT="$DCOMROOT" +GESROOT="${GESROOT}" +UFS_WTHR_MDL_DIR="${UFS_WTHR_MDL_DIR}" +UFS_UTILS_DIR="${UFS_UTILS_DIR}" +SFC_CLIMO_INPUT_DIR="${SFC_CLIMO_INPUT_DIR}" +TOPO_DIR="${TOPO_DIR}" +UPP_DIR="${UPP_DIR}" + +MODEL="${MODEL}" + +EXPTDIR="$EXPTDIR" +LOG_BASEDIR="${LOG_BASEDIR}" +DATAROOT="${DATAROOT}" +GRID_DIR="${GRID_DIR}" +OROG_DIR="${OROG_DIR}" +SFC_CLIMO_DIR="${SFC_CLIMO_DIR}" +GWD_HRRRsuite_DIR="${GWD_HRRRsuite_DIR}" + +NDIGITS_ENSMEM_NAMES="${NDIGITS_ENSMEM_NAMES}" +ENSMEM_NAMES=( $( printf "\"%s\" " "${ENSMEM_NAMES[@]}" )) +FV3_NML_ENSMEM_FPS=( $( printf "\"%s\" " "${FV3_NML_ENSMEM_FPS[@]}" )) + +# for data assimilation +OBSPATH="${OBSPATH}" +OBSPATH_PM="${OBSPATH_PM}" +OBSPATH_NSSLMOSIAC="${OBSPATH_NSSLMOSIAC}" +LIGHTNING_ROOT="${LIGHTNING_ROOT}" +GLMFED_EAST_ROOT="${GLMFED_EAST_ROOT}" +GLMFED_WEST_ROOT="${GLMFED_WEST_ROOT}" +ENKF_FCST="${ENKF_FCST}" + +AIRCRAFT_REJECT="${AIRCRAFT_REJECT}" +SFCOBS_USELIST="${SFCOBS_USELIST}" + +RADARREFL_MINS=( $(printf "\"%s\" " "${RADARREFL_MINS[@]}" )) +RADARREFL_TIMELEVEL=( $(printf "\"%s\" " "${RADARREFL_TIMELEVEL[@]}" )) +ADDNL_OUTPUT_GRIDS=( $(printf "\"%s\" " "${ADDNL_OUTPUT_GRIDS[@]}" )) +# +#----------------------------------------------------------------------- +# +# Files. +# +#----------------------------------------------------------------------- +# +GLOBAL_VAR_DEFNS_FP="${GLOBAL_VAR_DEFNS_FP}" +# Try this at some point instead of hard-coding it as above; it's a more +# flexible approach (if it works). +#GLOBAL_VAR_DEFNS_FP=$( readlink -f "${BASH_SOURCE[0]}" ) + +DATA_TABLE_TMPL_FN="${DATA_TABLE_TMPL_FN}" +DIAG_TABLE_TMPL_FN="${DIAG_TABLE_TMPL_FN}" +FIELD_TABLE_TMPL_FN="${FIELD_TABLE_TMPL_FN}" +MODEL_CONFIG_TMPL_FN="${MODEL_CONFIG_TMPL_FN}" +UFS_CONFIG_TMPL_FN="${UFS_CONFIG_TMPL_FN}" + +DATA_TABLE_TMPL_FP="${DATA_TABLE_TMPL_FP}" +DIAG_TABLE_TMPL_FP="${DIAG_TABLE_TMPL_FP}" +FIELD_TABLE_TMPL_FP="${FIELD_TABLE_TMPL_FP}" +FV3_NML_BASE_SUITE_FP="${FV3_NML_BASE_SUITE_FP}" +FV3_NML_YAML_CONFIG_FP="${FV3_NML_YAML_CONFIG_FP}" +FV3_NML_BASE_ENS_FP="${FV3_NML_BASE_ENS_FP}" +MODEL_CONFIG_TMPL_FP="${MODEL_CONFIG_TMPL_FP}" +UFS_CONFIG_TMPL_FP="${UFS_CONFIG_TMPL_FP}" + +CCPP_PHYS_SUITE_FN="${CCPP_PHYS_SUITE_FN}" +CCPP_PHYS_SUITE_IN_CCPP_FP="${CCPP_PHYS_SUITE_IN_CCPP_FP}" +CCPP_PHYS_SUITE_FP="${CCPP_PHYS_SUITE_FP}" + +DATA_TABLE_FP="${DATA_TABLE_FP}" +FIELD_TABLE_FP="${FIELD_TABLE_FP}" +FV3_NML_FN="${FV3_NML_FN}" # This may not be necessary... +FV3_NML_FP="${FV3_NML_FP}" +FV3_NML_CYCSFC_FP="${FV3_NML_CYCSFC_FP}" +FV3_NML_RESTART_FP="${FV3_NML_RESTART_FP}" +FV3_NML_STOCH_FP="${FV3_NML_STOCH_FP}" +FV3_NML_RESTART_STOCH_FP="${FV3_NML_RESTART_STOCH_FP}" +UFS_CONFIG_FP="${UFS_CONFIG_FP}" +UFS_YAML_FP="${UFS_YAML_FP}" + +FV3_EXEC_FP="${FV3_EXEC_FP}" + +LOAD_MODULES_RUN_TASK_FP="${LOAD_MODULES_RUN_TASK_FP}" + +THOMPSON_MP_CLIMO_FN="${THOMPSON_MP_CLIMO_FN}" +THOMPSON_MP_CLIMO_FP="${THOMPSON_MP_CLIMO_FP}" +# +#----------------------------------------------------------------------- +# +# Parameters that indicate whether or not various parameterizations are +# included in and called by the phsics suite. +# +#----------------------------------------------------------------------- +# +SDF_USES_RUC_LSM="${SDF_USES_RUC_LSM}" +SDF_USES_THOMPSON_MP="${SDF_USES_THOMPSON_MP}" +# +#----------------------------------------------------------------------- +# +# Grid configuration parameters needed regardless of grid generation me- +# thod used. +# +#----------------------------------------------------------------------- +# +GTYPE="$GTYPE" +TILE_RGNL="${TILE_RGNL}" +NH0="${NH0}" +NH3="${NH3}" +NH4="${NH4}" + +LON_CTR="${LON_CTR}" +LAT_CTR="${LAT_CTR}" +NX="${NX}" +NY="${NY}" +PAZI="${PAZI}" +NHW="${NHW}" +STRETCH_FAC="${STRETCH_FAC}" + +RES_IN_FIXLAM_FILENAMES="${RES_IN_FIXLAM_FILENAMES}" +# +# If running the make_grid task, CRES will be set to a null string du- +# the grid generation step. It will later be set to an actual value af- +# ter the make_grid task is complete. +# +CRES="$CRES" +EOM +} || print_err_msg_exit "\ +Heredoc (cat) command to append new variable definitions to variable +definitions file returned with a nonzero status." +# +#----------------------------------------------------------------------- +# +# Append to the variable definitions file the defintions of grid parame- +# ters that are specific to the grid generation method used. +# +#----------------------------------------------------------------------- +# +if [ "${GRID_GEN_METHOD}" = "GFDLgrid" ]; then + + { cat << EOM >> ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Grid configuration parameters for a regional grid generated from a +# global parent cubed-sphere grid. This is the method originally sug- +# gested by GFDL since it allows GFDL's nested grid generator to be used +# to generate a regional grid. However, for large regional domains, it +# results in grids that have an unacceptably large range of cell sizes +# (i.e. ratio of maximum to minimum cell size is not sufficiently close +# to 1). +# +#----------------------------------------------------------------------- +# +ISTART_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG="${ISTART_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG}" +IEND_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG="${IEND_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG}" +JSTART_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG="${JSTART_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG}" +JEND_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG="${JEND_OF_RGNL_DOM_WITH_WIDE_HALO_ON_T6SG}" +EOM +} || print_err_msg_exit "\ +Heredoc (cat) command to append grid parameters to variable definitions +file returned with a nonzero status." + +elif [ "${GRID_GEN_METHOD}" = "ESGgrid" ]; then + + { cat << EOM >> ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Grid configuration parameters for a regional grid generated indepen- +# dently of a global parent grid. This method was developed by Jim Pur- +# ser of EMC and results in very uniform grids (i.e. ratio of maximum to +# minimum cell size is very close to 1). +# +#----------------------------------------------------------------------- +# +DEL_ANGLE_X_SG="${DEL_ANGLE_X_SG}" +DEL_ANGLE_Y_SG="${DEL_ANGLE_Y_SG}" +NEG_NX_OF_DOM_WITH_WIDE_HALO="${NEG_NX_OF_DOM_WITH_WIDE_HALO}" +NEG_NY_OF_DOM_WITH_WIDE_HALO="${NEG_NY_OF_DOM_WITH_WIDE_HALO}" +EOM +} || print_err_msg_exit "\ +Heredoc (cat) command to append grid parameters to variable definitions +file returned with a nonzero status." + +fi +# +#----------------------------------------------------------------------- +# +# Continue appending variable defintions to the variable definitions +# file. +# +#----------------------------------------------------------------------- +# +{ cat << EOM >> ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Name of the ozone parameterization. The value this gets set to depends +# on the CCPP physics suite being used. +# +#----------------------------------------------------------------------- +# +OZONE_PARAM="${OZONE_PARAM}" +# +#----------------------------------------------------------------------- +# +# If USE_USER_STAGED_EXTRN_FILES is set to "FALSE", this is the system +# directory in which the workflow scripts will look for the files generated +# by the external model specified in EXTRN_MDL_NAME_ICS. These files will +# be used to generate the input initial condition and surface files for +# the FV3-LAM. +# +#----------------------------------------------------------------------- +# +EXTRN_MDL_SYSBASEDIR_ICS="${EXTRN_MDL_SYSBASEDIR_ICS}" +# +#----------------------------------------------------------------------- +# +# Shift back in time (in units of hours) of the starting time of the ex- +# ternal model specified in EXTRN_MDL_NAME_LBCS. +# +#----------------------------------------------------------------------- +# +EXTRN_MDL_ICS_OFFSET_HRS="${EXTRN_MDL_ICS_OFFSET_HRS}" +# +#----------------------------------------------------------------------- +# +# If USE_USER_STAGED_EXTRN_FILES is set to "FALSE", this is the system +# directory in which the workflow scripts will look for the files generated +# by the external model specified in EXTRN_MDL_NAME_LBCS. These files +# will be used to generate the input lateral boundary condition files for +# the FV3-LAM. +# +#----------------------------------------------------------------------- +# +EXTRN_MDL_SYSBASEDIR_LBCS="${EXTRN_MDL_SYSBASEDIR_LBCS}" +# +#----------------------------------------------------------------------- +# +# Shift back in time (in units of hours) of the starting time of the ex- +# ternal model specified in EXTRN_MDL_NAME_LBCS. +# +#----------------------------------------------------------------------- +# +EXTRN_MDL_LBCS_OFFSET_HRS="${EXTRN_MDL_LBCS_OFFSET_HRS}" +EXTRN_MDL_LBCS_SEARCH_OFFSET_HRS="${EXTRN_MDL_LBCS_SEARCH_OFFSET_HRS}" +LBCS_SEARCH_HRS="${LBCS_SEARCH_HRS}" +# +#----------------------------------------------------------------------- +# +# Boundary condition update times (in units of forecast hours). Note that +# LBC_SPEC_FCST_HRS is an array, even if it has only one element. +# +#----------------------------------------------------------------------- +# +LBC_SPEC_FCST_HRS=(${LBC_SPEC_FCST_HRS[@]}) +LBC_SPEC_FCST_LONG_HRS=(${LBC_SPEC_FCST_LONG_HRS[@]}) +# +#----------------------------------------------------------------------- +# +# If USE_FVCOM is set to TRUE, then FVCOM data (located in FVCOM_DIR +# in FVCOM_FILE) will be used to update lower boundary conditions during +# make_ics. +# +#----------------------------------------------------------------------- +# +USE_FVCOM="${USE_FVCOM}" +FVCOM_DIR="${FVCOM_DIR}" +FVCOM_FILE="${FVCOM_FILE}" +# +#----------------------------------------------------------------------- +# +# Computational parameters. +# +#----------------------------------------------------------------------- +# +NCORES_PER_NODE="${NCORES_PER_NODE}" +PE_MEMBER01="${PE_MEMBER01}" +# +#----------------------------------------------------------------------- +# +# IF DO_SPP is set to "TRUE", N_VAR_SPP specifies the number of physics +# parameterizations that are perturbed with SPP. If DO_LSM_SPP is set to +# "TRUE", N_VAR_LNDP specifies the number of LSM parameters that are +# perturbed. LNDP_TYPE determines the way LSM perturbations are employed +# and FHCYC_LSM_SPP_OR_NOT sets FHCYC based on whether LSM perturbations +# are turned on or not. +# +#----------------------------------------------------------------------- +# +N_VAR_SPP='${N_VAR_SPP}' +N_VAR_LNDP='${N_VAR_LNDP}' +LNDP_TYPE='${LNDP_TYPE}' +FHCYC_LSM_SPP_OR_NOT='${FHCYC_LSM_SPP_OR_NOT}' +EOM +} || print_err_msg_exit "\ +Heredoc (cat) command to append new variable definitions to variable +definitions file returned with a nonzero status." +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Setup script completed successfully!!! +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the start of this script/function. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + +} +# +#----------------------------------------------------------------------- +# +# Call the function defined above. +# +#----------------------------------------------------------------------- +# +setup +