diff --git a/.gitignore b/.gitignore
index 9b38ce52f1..489a1dbcee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,7 @@ fix/ugwd
fix/ugwd_nest
fix/verif
fix/wave
+fix/nest
# Ignore parm file symlinks
#--------------------------
diff --git a/parm/config/gefs/config.base b/parm/config/gefs/config.base
index e1fb6e587a..f137080fbd 100644
--- a/parm/config/gefs/config.base
+++ b/parm/config/gefs/config.base
@@ -13,6 +13,7 @@ export RUN_ENVIR="emc"
# Account, queue, etc.
export ACCOUNT="@ACCOUNT@"
+export ACCOUNT_SERVICE="@ACCOUNT_SERVICE@"
export QUEUE="@QUEUE@"
export QUEUE_SERVICE="@QUEUE_SERVICE@"
export PARTITION_BATCH="@PARTITION_BATCH@"
diff --git a/parm/config/gfs/config.base b/parm/config/gfs/config.base
index 586029f785..dc0a2581f3 100644
--- a/parm/config/gfs/config.base
+++ b/parm/config/gfs/config.base
@@ -13,6 +13,7 @@ export RUN_ENVIR="emc"
# Account, queue, etc.
export ACCOUNT="@ACCOUNT@"
+export ACCOUNT_SERVICE="@ACCOUNT_SERVICE@"
export QUEUE="@QUEUE@"
export QUEUE_SERVICE="@QUEUE_SERVICE@"
export PARTITION_BATCH="@PARTITION_BATCH@"
@@ -192,6 +193,7 @@ if [[ "${DO_NEST:-NO}" == "YES" ]] ; then
export NEST_OUTPUT_GRID="regional_latlon"
export FIXugwd="${FIXgfs}/ugwd_nest"
export FIXorog="${FIXgfs}/orog_nest"
+ export FIXgfs="${HOMEgfs}/fix/nest"
else
export ntiles=6
export FIXugwd="${FIXgfs}/ugwd"
diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs
index 5f2b6675cf..d0a03a97bb 100644
--- a/parm/config/gfs/config.ufs
+++ b/parm/config/gfs/config.ufs
@@ -112,6 +112,19 @@ case "${fv3_res}" in
export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=1
;;
"C96")
+ export nthreads_fv3=1
+ export nthreads_fv3_gfs=1
+ export nthreads_ufs=1
+ export nthreads_ufs_gfs=1
+ export xr_cnvcld=.false. # Do not pass conv. clouds to Xu-Randall cloud fraction
+ export cdmbgwd="0.14,1.8,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling
+ export cdmbgwd_gsl="20.0,2.5,1.0,1.0" # settings for GSL drag suite
+ export knob_ugwp_tauamp=3.0e-3 # setting for UGWPv1 non-stationary GWD
+ export k_split=1
+ export n_split=4
+ export tau=8.0
+ export rf_cutoff=100.0
+ export fv_sg_adj=1800
if [[ "${DO_NEST:-NO}" == "YES" ]] ; then
export DELTIM=450
export layout_x_gfs=4
@@ -157,6 +170,18 @@ case "${fv3_res}" in
fi
;;
"C192")
+ export nthreads_fv3=1
+ export nthreads_fv3_gfs=2
+ export nthreads_ufs=1
+ export nthreads_ufs_gfs=2
+ export cdmbgwd="0.23,1.5,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling
+ export cdmbgwd_gsl="10.0,3.5,1.0,1.0" # settings for GSL drag suite
+ export knob_ugwp_tauamp=1.5e-3 # setting for UGWPv1 non-stationary GWD
+ export k_split=2
+ export n_split=4
+ export tau=6.0
+ export rf_cutoff=100.0
+ export fv_sg_adj=1800
if [[ "${DO_NEST:-NO}" == "YES" ]] ; then
export DELTIM=225
export layout_x_gfs=5
@@ -201,6 +226,18 @@ case "${fv3_res}" in
fi
;;
"C384")
+ export nthreads_fv3=2
+ export nthreads_fv3_gfs=2
+ export nthreads_ufs=2
+ export nthreads_ufs_gfs=2
+ export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling
+ export cdmbgwd_gsl="5.0,5.0,1.0,1.0" # settings for GSL drag suite
+ export knob_ugwp_tauamp=0.8e-3 # setting for UGWPv1 non-stationary GWD
+ export k_split=2
+ export n_split=4
+ export tau=4.0
+ export rf_cutoff=100.0
+ export fv_sg_adj=900
if [[ "${DO_NEST:-NO}" == "YES" ]] ; then
export DELTIM=150
export layout_x_gdas=8
@@ -220,7 +257,7 @@ case "${fv3_res}" in
export WRITE_GROUP_GDAS=2
export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GDAS=20
export WRITE_GROUP_GFS=2
- export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20
+ export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=30
else
export DELTIM=300
export layout_x_gdas=8
@@ -247,6 +284,16 @@ case "${fv3_res}" in
fi
;;
"C768")
+ export nthreads_ufs=4
+ export nthreads_ufs_gfs=4
+ export cdmbgwd="4.0,0.15,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling
+ export cdmbgwd_gsl="2.5,7.5,1.0,1.0" # settings for GSL drag suite
+ export knob_ugwp_tauamp=0.5e-3 # setting for UGWPv1 non-stationary GWD
+ export k_split=2
+ export n_split=4
+ export tau=3.0
+ export rf_cutoff=100.0
+ export fv_sg_adj=450
if [[ "${DO_NEST:-NO}" == "YES" ]] ; then
export DELTIM=75
export layout_x_gdas=16
diff --git a/parm/ufs/model_configure_nest.IN b/parm/ufs/model_configure_nest.IN
new file mode 100644
index 0000000000..19b16de737
--- /dev/null
+++ b/parm/ufs/model_configure_nest.IN
@@ -0,0 +1,53 @@
+start_year: @[SYEAR]
+start_month: @[SMONTH]
+start_day: @[SDAY]
+start_hour: @[SHOUR]
+start_minute: 0
+start_second: 0
+nhours_fcst: @[FHMAX]
+fhrot: @[FHROT]
+
+dt_atmos: @[DT_ATMOS]
+restart_interval: @[RESTART_INTERVAL]
+
+quilting: @[QUILTING]
+quilting_restart: @[QUILTING_RESTART]
+write_groups: @[WRITE_GROUP]
+write_tasks_per_group: @[WRTTASK_PER_GROUP]
+itasks: @[ITASKS]
+output_history: @[OUTPUT_HISTORY]
+history_file_on_native_grid: @[HISTORY_FILE_ON_NATIVE_GRID]
+write_dopost: @[WRITE_DOPOST]
+write_nsflip: @[WRITE_NSFLIP]
+num_files: @[NUM_FILES]
+filename_base: @[FILENAME_BASE]
+output_grid: @[OUTPUT_GRID]
+output_file: @[OUTPUT_FILE]
+zstandard_level: @[ZSTANDARD_LEVEL]
+ideflate: @[IDEFLATE]
+quantize_mode: 'quantize_bitround'
+quantize_nsd: @[QUANTIZE_NSD]
+ichunk2d: @[ICHUNK2D]
+jchunk2d: @[JCHUNK2D]
+ichunk3d: @[ICHUNK3D]
+jchunk3d: @[JCHUNK3D]
+kchunk3d: @[KCHUNK3D]
+imo: @[IMO]
+jmo: @[JMO]
+output_fh: @[OUTPUT_FH]
+iau_offset: @[IAU_OFFSET]
+
+# Output settings for the nest.
+
+output_grid: @[NEST_OUTPUT_GRID]
+imo: @[NEST_IMO]
+jmo: @[NEST_JMO]
+cen_lon: @[TARGET_LON]
+cen_lat: @[TARGET_LAT]
+lon1: @[NEST_LON1]
+lat1: @[NEST_LAT1]
+lon2: @[NEST_LON2]
+lat2: @[NEST_LAT2]
+dlon: @[NEST_DLON]
+dlat: @[NEST_DLAT]
+
diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh
index a57f5660cc..67b5775865 100755
--- a/sorc/link_workflow.sh
+++ b/sorc/link_workflow.sh
@@ -10,7 +10,7 @@ function usage() {
Builds all of the global-workflow components by calling the individual build
scripts in sequence.
-Usage: ${BASH_SOURCE[0]} [-h][-o][--nest]
+Usage: ${BASH_SOURCE[0]} [-h][-o]
-h:
Print this help message and exit
-o:
@@ -23,7 +23,7 @@ RUN_ENVIR="emc"
# Reset option counter in case this script is sourced
OPTIND=1
-while getopts ":ho-:" option; do
+while getopts ":ho" option; do
case "${option}" in
h) usage ;;
o)
@@ -99,6 +99,7 @@ done
# Link fix directories
if [[ -n "${FIX_DIR}" ]]; then
if [[ ! -d "${HOMEgfs}/fix" ]]; then mkdir "${HOMEgfs}/fix" || exit 1; fi
+ if [[ ! -d "${HOMEgfs}/fix/nest" ]]; then mkdir "${HOMEgfs}/fix/nest" || exit 1; fi
fi
cd "${HOMEgfs}/fix" || exit 1
for dir in aer \
diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh
index 50d26f14fa..62b1b26bb3 100755
--- a/ush/forecast_predet.sh
+++ b/ush/forecast_predet.sh
@@ -48,6 +48,10 @@ FV3_coldstarts(){
fv3_input_files+=("${tt}.tile${nn}.nc")
done
done
+ if [[ "${DO_NEST:-NO}" == "YES" ]] ; then
+ fv3_input_files+=("gfs_data.nest02.tile7.nc")
+ fv3_input_files+=("sfc_data.nest02.tile7.nc")
+ fi
# Create a comma separated string from array using IFS
IFS=, echo "${fv3_input_files[*]}"
}
diff --git a/ush/parsing_namelists_FV3_nest.sh b/ush/parsing_namelists_FV3_nest.sh
index 0080641275..3a39123263 100755
--- a/ush/parsing_namelists_FV3_nest.sh
+++ b/ush/parsing_namelists_FV3_nest.sh
@@ -136,7 +136,7 @@ cat > "${nml_file}" <