Skip to content

Commit

Permalink
SFS Runs at C96mx100 (NOAA-EMC#2960)
Browse files Browse the repository at this point in the history
Adds the ability to run C96mx100 with SFS options. Included in this PR
is the ability to use the interpolated/coarse grained 1 degree MOM6 ICs.
Staging the ATM and OCN perturbation files without using the +03 replay
ICs.

---------

Co-authored-by: Eric.Sinsky <[email protected]>
Co-authored-by: Walter Kolczynski - NOAA <[email protected]>
Co-authored-by: Rahul Mahajan <[email protected]>
  • Loading branch information
4 people committed Nov 22, 2024
1 parent 56fd7f6 commit e0857a9
Show file tree
Hide file tree
Showing 25 changed files with 803 additions and 30 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ parm/post/params_grib2_tbl_new
parm/post/post_tag_gfs128
parm/post/gfs
parm/post/gefs
parm/post/sfs
parm/post/ocean.csv
parm/post/ice.csv
parm/post/ocnicepost.nml.jinja2
Expand Down
19 changes: 19 additions & 0 deletions ci/cases/sfs/C96mx100_S2S.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
experiment:
system: gefs
mode: forecast-only

arguments:
idate: 1994050100
edate: 1994050100
pslot: {{ 'pslot' | getenv }}
app: S2S
resdetatmos: 96
resensatmos: 96
resdetocean: 1
start: 'cold'
nens: 10
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
icsdir: {{ 'TOPICDIR' | getenv }}/HR4/C96mx100
yaml: {{ HOMEgfs }}/ci/cases/yamls/sfs_defaults.yaml

8 changes: 8 additions & 0 deletions ci/cases/yamls/gefs_defaults_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,11 @@ defaults:
!INC {{ HOMEgfs }}/parm/config/gefs/yaml/defaults.yaml
base:
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
SFS_POST: "NO"
FHOUT_GFS: 6
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "NO"
USE_ATM_ENS_PERTURB_FILES: "NO"
ocn:
MOM6_INTERP_ICS: "NO"

4 changes: 4 additions & 0 deletions ci/cases/yamls/gefs_replay_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,8 @@ base:
FHOUT_OCN_GFS: 24
FHOUT_ICE_GFS: 24
HOMEDIR: {{ 'RUNTESTS' | getenv }}/GLOBAL
SFS_POST: "NO"
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "YES"
USE_ATM_ENS_PERTURB_FILES: "YES"

33 changes: 33 additions & 0 deletions ci/cases/yamls/sfs_defaults.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
base:
DO_JEDIATMVAR: "NO"
DO_JEDIATMENS: "NO"
DO_JEDIOCNVAR: "NO"
DO_JEDISNOWDA: "NO"
DO_MERGENSST: "NO"
DO_BUFRSND: "NO"
DO_GEMPAK: "NO"
DO_AWIPS: "NO"
KEEPDATA: "YES"
DO_EXTRACTVARS: "NO"
FHMAX_GFS: 2976
FHMAX_HF_GFS: 0
FHOUT_HF_GFS: 1
FHOUT_GFS: 24
FHOUT_OCN_GFS: 24
FHOUT_ICE_GFS: 24
FCST_BREAKPOINTS: ""
REPLAY_ICS: "NO"
HPSSARCH: "NO"
LOCALARCH: "NO"
SFS_POST: "YES"
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
fcst:
TYPE: "hydro"
MONO: "mono"
reforecast: "YES"
FHZER: 24
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "YES"
USE_ATM_ENS_PERTURB_FILES: "YES"
ocn:
MOM6_INTERP_ICS: "YES"
13 changes: 9 additions & 4 deletions parm/config/gefs/config.atmos_products
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,14 @@ fi
export FLXGF="NO" # Create interpolated sflux.1p00 file

# paramlist files for the different forecast hours and downsets
export paramlista="${PARMgfs}/product/gefs.0p25.fFFF.paramlist.a.txt"
export paramlista_anl="${PARMgfs}/product/gefs.0p25.anl.paramlist.a.txt"
export paramlista_f000="${PARMgfs}/product/gefs.0p25.f000.paramlist.a.txt"
export paramlistb="${PARMgfs}/product/gefs.0p25.fFFF.paramlist.b.txt"
if [[ ${SFS_POST} == "YES" ]]; then
export post_prefix='sfs'
else
export post_prefix='gefs'
fi
export paramlista="${PARMgfs}/product/${post_prefix}.0p25.fFFF.paramlist.a.txt"
export paramlista_anl="${PARMgfs}/product/${post_prefix}.0p25.anl.paramlist.a.txt"
export paramlista_f000="${PARMgfs}/product/${post_prefix}.0p25.f000.paramlist.a.txt"
export paramlistb="${PARMgfs}/product/${post_prefix}.0p25.fFFF.paramlist.b.txt"

echo "END: config.atmos_products"
5 changes: 3 additions & 2 deletions parm/config/gefs/config.base
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ export REALTIME="YES"

# Experiment mode (cycled or forecast-only)
export MODE="@MODE@" # cycled/forecast-only
export SFS_POST="@SFS_POST@" # TODO, place holder until RUN=SFS is developed

####################################################
# DO NOT ADD MACHINE DEPENDENT STUFF BELOW THIS LINE
Expand Down Expand Up @@ -237,15 +238,14 @@ else
export OFFSET_START_HOUR=0
fi


# GFS output and frequency
export FHMIN_GFS=0
export FHMAX_GFS="@FHMAX_GFS@"
# Intermediate times to stop forecast when running in segments
breakpnts="@FCST_BREAKPOINTS@"
export FCST_SEGMENTS="${FHMIN_GFS},${breakpnts:+${breakpnts},}${FHMAX_GFS}"

export FHOUT_GFS=6
export FHOUT_GFS=@FHOUT_GFS@
export FHMAX_HF_GFS=@FHMAX_HF_GFS@
export FHOUT_HF_GFS=@FHOUT_HF_GFS@
export FHOUT_OCN_GFS=@FHOUT_OCN_GFS@
Expand Down Expand Up @@ -295,6 +295,7 @@ export ENSMEM=${ENSMEM:-"000"}
export MEMDIR="mem${ENSMEM}"

export DOIAU="NO" # While we are not doing IAU, we may want to warm start w/ IAU in the future

# Check if cycle is warm starting with IAU
if [[ "${EXP_WARM_START}" = ".true." ]]; then
if [[ "${DOIAU}" = "YES" ]]; then
Expand Down
6 changes: 5 additions & 1 deletion parm/config/gefs/config.efcs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ source "${EXPDIR}/config.ufs" ${string}
source "${EXPDIR}/config.resources" efcs

# Stochastic physics parameters (only for ensemble forecasts)
export DO_SKEB="YES"
if [[ "${CASE}" == "C96" ]] ; then
export DO_SKEB="NO" # SKEB turned off for C96
else
export DO_SKEB="YES" # SKEB turned on for all other resolutions
fi
export SKEB="0.8,-999,-999,-999,-999"
export SKEB_TAU="2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7"
export SKEB_LSCALE="500.E3,1000.E3,2000.E3,2000.E3,2000.E3"
Expand Down
20 changes: 14 additions & 6 deletions parm/config/gefs/config.fcst
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export FHOUT=${FHOUT_GFS}
export FHOUT_HF=${FHOUT_HF_GFS}
export FHOUT_OCN=${FHOUT_OCN_GFS}
export FHOUT_ICE=${FHOUT_ICE_GFS}
export FHZER=@FHZER@

# Get task specific resources
source "${EXPDIR}/config.resources" fcst
Expand All @@ -66,8 +67,8 @@ export FCSTEXEC="ufs_model.x"

#######################################################################
# Model configuration
export TYPE="nh"
export MONO="non-mono"
export TYPE=@TYPE@
export MONO=@MONO@

# Use stratosphere h2o physics
export h2o_phys=".true."
Expand Down Expand Up @@ -201,6 +202,11 @@ case ${imp_physics} in
export hord_xx_nh_nonmono=5
export vtdm4_nh_nonmono=0.02
export nord=2
if [[ "${TYPE}" == "nh"* ]]; then
export dddmp=0.1
else
export dddmp=0.
fi
export dddmp=0.1
export d4_bg=0.12
;;
Expand All @@ -221,7 +227,11 @@ case ${imp_physics} in
export vtdm4_nh_nonmono=0.02
export nord=2
export d4_bg=0.12
export dddmp=0.1
if [[ "${TYPE}" == "nh"* ]]; then
export dddmp=0.1
else
export dddmp=0.
fi
;;
*) echo "Unknown microphysics option, ABORT!" ;;
esac
Expand Down Expand Up @@ -270,9 +280,7 @@ else
export io_layout="1,1"
fi

if (( OFFSET_START_HOUR != 0 )); then
export reforecast="YES"
fi
export reforecast=@reforecast@
# Remember config.efcs will over-ride these values for ensemble forecasts
# if these variables are re-defined there.
# Otherwise, the ensemble forecast will inherit from config.fcst
Expand Down
4 changes: 4 additions & 0 deletions parm/config/gefs/config.stage_ic
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@ if [[ -z "${ICSDIR}" ]] ; then

fi

#use of perturbations files for ensembles
export USE_OCN_ENS_PERTURB_FILES=@USE_OCN_ENS_PERTURB_FILES@
export USE_ATM_ENS_PERTURB_FILES=@USE_ATM_ENS_PERTURB_FILES@

echo "END: config.stage_ic"
11 changes: 6 additions & 5 deletions parm/config/gefs/config.ufs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ case "${fv3_res}" in
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 xr_cnvcld=".true." # Pass conv. clouds to Xu-Randall cloud fraction
export cdmbgwd="0.071,2.1,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling
export cdmbgwd_gsl="40.0,1.77,1.0,1.0" # settings for GSL drag suite
export k_split=1
Expand All @@ -98,13 +98,13 @@ case "${fv3_res}" in
export DELTIM=600
export layout_x=2
export layout_y=2
export layout_x_gfs=2
export layout_y_gfs=2
export layout_x_gfs=4
export layout_y_gfs=4
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 xr_cnvcld=".true." # 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
Expand All @@ -131,6 +131,7 @@ case "${fv3_res}" in
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 xr_cnvcld=".true." # Pass conv. clouds to Xu-Randall cloud fraction
export k_split=2
export n_split=4
export tau=6.0
Expand Down Expand Up @@ -337,7 +338,7 @@ if [[ "${skip_mom6}" == "false" ]]; then
DT_THERM_MOM6='3600'
FRUNOFF="runoff.daitren.clim.1deg.nc"
CHLCLIM="seawifs_1998-2006_smoothed_2X.nc"
MOM6_RESTART_SETTING='r'
MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-'r'}
MOM6_RIVER_RUNOFF='False'
eps_imesh="2.5e-1"
TOPOEDITS="ufs.topo_edits_011818.nc"
Expand Down
13 changes: 13 additions & 0 deletions parm/config/gefs/yaml/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,20 @@ base:
FCST_BREAKPOINTS: "48"
REPLAY_ICS: "NO"
USE_OCN_PERTURB_FILES: "false"
FHOUT_GFS: 6
FHOUT_OCN_GFS: 6
FHOUT_ICE_GFS: 6
HPSSARCH: "NO"
LOCALARCH: "NO"
SFS_POST: "NO"
fcst:
reforecast: "NO"
FHZER: 6
TYPE: "nh"
MONO: "non-mono"
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "NO"
USE_ATM_ENS_PERTURB_FILES: "NO"
ocn:
MOM6_INTERP_ICS: "NO"

9 changes: 7 additions & 2 deletions parm/config/gfs/config.ocn
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ else
export ODA_INCUPD_NHOURS="3.0"
fi



MOM6_INTERP_ICS=@MOM6_INTERP_ICS@
if [[ "${MOM6_INTERP_ICS}" == "YES" ]]; then
export MOM6_RESTART_SETTING='n'
export MOM6_WARMSTART_FILE="MOM.res.nc"
export MOM6_INIT_FROM_Z='False'
export MOM6_INIT_UV='file'
fi
echo "END: config.ocn"
4 changes: 4 additions & 0 deletions parm/config/gfs/config.stage_ic
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,8 @@ if [[ -z "${ICSDIR}" ]] ; then

fi

#use of perturbations files for ensembles
export USE_OCN_ENS_PERTURB_FILES="NO"
export USE_ATM_ENS_PERTURB_FILES="NO"

echo "END: config.stage_ic"
39 changes: 39 additions & 0 deletions parm/product/sfs.0p25.f000.paramlist.a.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
:HGT:surface:
:PRMSL:mean sea level:
:PRES:surface:
:TMP:2 m above ground:
:TMAX:2 m above ground:
:TMIN:2 m above ground:
:RH:2 m above ground:
:DPT:2 m above ground:
:UGRD:10 m above ground:
:VGRD:10 m above ground:
:APCP:surface:
:CRAIN:surface:
:CSNOW:surface:
:CFRZR:surface:
:CICEP:surface:
:PWAT:entire atmosphere (considered as a single layer):
:CAPE:180-0 mb above ground:
:CAPE:surface:
:CIN:180-0 mb above ground:
:CIN:surface:
:CPOFP:surface:
:HLCY:3000-0 m above ground:
:TCDC:entire atmosphere:
:WEASD:surface:
:SNOD:surface:
:ULWRF:top of atmosphere:
:DSWRF:surface:
:DLWRF:surface:
:USWRF:surface:
:ULWRF:surface:
:GUST:surface:
:SHTFL:surface:
:LHTFL:surface:
:ICETK:surface:
:TSOIL:0-0.1
:SOILW:0-0.1
:MSLET:mean sea level:
:VIS:surface:
:HGT:cloud ceiling:
52 changes: 52 additions & 0 deletions parm/product/sfs.0p25.fFFF.paramlist.a.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
:PRMSL:mean sea level:
:PRES:surface:
:TMP:surface:
:TMP:2 m above ground:
:TMP:850 mb:
:TMP:500 mb:
:TMP:200 mb:
:TMAX:2 m above ground:
:TMIN:2 m above ground:
:RH:2 m above ground:
:DPT:2 m above ground:
:UGRD:10 m above ground:
:UGRD:850 mb:
:UGRD:500 mb:
:UGRD:200 mb:
:VGRD:10 m above ground:
:VGRD:850 mb:
:VGRD:500 mb:
:VGRD:200 mb:
:HGT:850 mb:
:HGT:500 mb:
:HGT:200 mb:
:APCP:surface:
:CRAIN:surface:
:CSNOW:surface:
:CFRZR:surface:
:CICEP:surface:
:FDNSSTMP:surface:
:PWAT:entire atmosphere (considered as a single layer):
:CAPE:180-0 mb above ground:
:CAPE:surface:
:CIN:180-0 mb above ground:
:CIN:surface:
:HLCY:3000-0 m above ground:
:TCDC:entire atmosphere (considered as a single layer):
:WEASD:surface:
:SNOD:surface:
:ULWRF:top of atmosphere:
:DSWRF:surface:
:CPOFP:surface:
:DLWRF:surface:
:USWRF:surface:
:ULWRF:surface:
:GUST:surface:
:SHTFL:surface:
:LHTFL:surface:
:ICETK:surface:
:TSOIL:0-0.1
:SOILW:0-0.1
:MSLET:mean sea level:
:VIS:surface:
:HGT:cloud ceiling:
Loading

0 comments on commit e0857a9

Please sign in to comment.