2. Changing a Physics Scheme in the Suite Definition File (SDF)
2. Changing a Physics Scheme in the Suite Definition File (SDF)The following set of instructions will guide you through the process of changing the land surface model from Noah to NoahMP in the suite GFSv15p2.
- Go to the suite definition file directory:
The physics schemes for the GFSv15p2 suite are defined in the suite definition file suite_FV3_GFS_v15p2.xml under the directory: /glade/scratch/$USER/ufs-srweather-app/src/ufs_weather_model/FV3/ccpp/suites
Change to the suite directory and check the suite files:cd /glade/scratch/$USER/ufs-srweather-app/src/ufs_weather_model/FV3/ccpp/suites
ls -1suite_FV3_GFS_v15p2.xml
suite_FV3_RRFS_v1alpha.xml
suite.xsdThe suite definition file is a text file, and a modified suite can be constructed from the existing SDF. A modified suite can be constructed from an existing SDF through copying the existing suite file and changing other aspects of the file.
cp suite_FV3_GFS_v15p2.xml suite_FV3_GFS_v15p2_noahmp.xml - Modify the GFSv15p2_noahmp SDF file with a new land surface model(LSM):
- To change the Noah land surface model (lsm_noah) to noah_mp land surface model (noahmpdrv) in suite_FV3_GFS_v15p2_noahmp.xml, change:
<scheme>lsm_noah</scheme>to
<scheme>noahmpdrv</scheme> - Change the suite name in the file from:
<suite name="FV3_GFS_v15p2" lib="ccppphys" ver="5">to
<suite name="FV3_GFS_v15p2_noahmp" lib="ccppphys" ver="5">
- To change the Noah land surface model (lsm_noah) to noah_mp land surface model (noahmpdrv) in suite_FV3_GFS_v15p2_noahmp.xml, change:
- Add the new suite to the compiling command:
Edit the file /glade/scratch/$USER/ufs-srweather-app/src/CMakeLists.txt by changing:set(CCPP_SUITES "FV3_GFS_v15p2,FV3_RRFS_v1alpha")to
set(CCPP_SUITES "FV3_GFS_v15p2,FV3_GFS_v15p2_noahmp,FV3_RRFS_v1alpha")so the new suite is included in the compiling of the model.
- Modify the Workflow to include the new suite:
- Add suite FV3_GFS_v15p2_noahmp to the file FV3.input.yml under the directory /glade/scratch/$USER/ufs-srweather-app/regional_workflow/ush/templates. Insert the following part after line 272 in FV3.input.yml:
FV3_GFS_v15p2_noahmp:
atmos_model_nml:
fdiag: 1
fms_nml:
domains_stack_size: 1800200
fv_core_nml:
<<: *gfs_v15_fv_core
agrid_vel_rst: False
d2_bg_k1: 0.15
d2_bg_k2: 0.02
dnats: 1
do_sat_adj: True
fv_debug: False
fv_sg_adj: 600
k_split: 1
kord_mt: 9
kord_tm: -9
kord_tr: 9
kord_wz: 9
n_split: 8
n_sponge: 30
nord_zs_filter: !!python/none
nudge_qv: True
range_warn: False
rf_cutoff: 750.0
rf_fast: False
gfdl_cloud_microphysics_nml:
<<: *gfs_gfdl_cloud_mp
sedi_transport: True
tau_l2v: 225.0
tau_v2l: 150.0
gfs_physics_nml:
<<: *gfs_v15_gfs_physics
bl_mynn_edmf: !!python/none
bl_mynn_edmf_mom: !!python/none
bl_mynn_tkeadvect: !!python/none
cnvcld: True
cnvgwd: True
cplflx: !!python/none
do_myjpbl: False
do_myjsfc: False
do_mynnedmf: !!python/none
do_mynnsfclay: !!python/none
do_tofd: False
do_ugwp: False
do_ysu: False
fhcyc: 0.0
fhlwr: 3600.0
fhswr: 3600.0
fhzero: 6.0
hybedmf: True
iau_delthrs: !!python/none
iaufhrs: !!python/none
imfdeepcnv: 2
imfshalcnv: 2
imp_physics: 11
icloud_bl: !!python/none
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
ldiag_ugwp: False
lgfdlmprad: True
lradar: !!python/none
lsm: 2
lsoil: !!python/none
lsoil_lsm: !!python/none
ltaerosol: !!python/none
shal_cnv: True
shinhong: False
ttendlim: !!python/none
xkzm_h: 1.0
xkzm_m: 1.0
xkzminv: 0.3
namsfc:
landice: True
ldebug: False
surf_map_nml:It’s similar to the setting for suite FV3_GFS_v15p2 except the lsm=2.
- Prepare tables for noahmp:
cp field_table.FV3_GFS_v15p2 field_table.FV3_GFS_v15p2_noahmp
cp diag_table.FV3_GFS_v15p2 diag_table.FV3_GFS_v15p2_noahmp - Add suite FV3_GFS_v15p2_noahmp to valid_param_vals.sh under /glade/scratch/$USER/ufs-srweather-app/regional_workflow/ush, by changing:
valid_vals_CCPP_PHYS_SUITE=( \
"FV3_GFS_v15p2" \
"FV3_RRFS_v1alpha" \
)to
valid_vals_CCPP_PHYS_SUITE=( \
"FV3_GFS_v15p2" \
"FV3_GFS_v15p2_noahmp" \
"FV3_RRFS_v1alpha" \
) - Add suite FV3_GFS_v15p2_noahmp to files exregional_make_ics.sh, and exregional_make_lbcs.sh under the directory /glade/scratch/$USER/ufs-srweather-app/regional_workflow/scripts:
cd /glade/scratch/$USER/ufs-srweather-app/regional_workflow/scriptsEdit files exregional_make_ics.sh, and exregional_make_lbcs.sh, changing all
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \to
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \and changing
"FV3_GFS_v15p2" | "FV3_CPT_v0" )to
"FV3_GFS_v15p2_noahmp" | \
"FV3_GFS_v15p2" | "FV3_CPT_v0" )To confirm the changes, run:
less *.sh | grep v15to get the following messages to make sure the suite is added correctly:
"FV3_GFS_v15p2_noahmp" | \
"FV3_GFS_v15p2" | "FV3_CPT_v0" )
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
"FV3_GFS_v15p2_noahmp" | \
"FV3_GFS_v15p2" | "FV3_CPT_v0" )
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_v15p2_noahmp" ] || \
- Add suite FV3_GFS_v15p2_noahmp to the file FV3.input.yml under the directory /glade/scratch/$USER/ufs-srweather-app/regional_workflow/ush/templates. Insert the following part after line 272 in FV3.input.yml:
- Compile the model with the new suite:
Users can refer to Session 1 for additional information:cd /glade/scratch/$USER/ufs-srweather-app/
source env/build_cheyenne_intel.env -
mkdir build
cd buildRun cmake to set up the Makefile, then run make:
cmake .. -DCMAKE_INSTALL_PREFIX=..
make -j 4 >& build.out & - Set the config.sh file:
Go to the the ush directorycd /glade/scratch/$USER/ufs-srweather-app/regional_workflow/ush/Use the config.sh from Session 1 and edit the config.sh, making sure the machine and account are set correctly:
MACHINE="cheyenne"
ACCOUNT="NJNT0008"- Change the name of the experiment directory (which is also the name of the experiment) to something that properly represents the new settings:
EXPT_SUBDIR="test_CONUS_25km_GFSv15p2_noahmp" - Set the predefined grid to the CONUS grid with 25km resolution:
PREDEF_GRID_NAME="RRFS_CONUS_25km" - Change the forecast length to 6 hours:
FCST_LEN_HRS="6"Only a 6 hour forecast is used for practice purposes.
- Set the suite:
CCPP_PHYS_SUITE="FV3_GFS_v15p2_noahmp" - Make sure the LBCS and ICS directories are set correctly:
USE_USER_STAGED_EXTRN_FILES="TRUE"
EXTRN_MDL_SOURCE_BASEDIR_ICS="/glade/p/ral/jntp/UFS_SRW_app/staged_extrn_mdl_files/FV3GFS"
EXTRN_MDL_SOURCE_BASEDIR_LBCS="/glade/p/ral/jntp/UFS_SRW_app/staged_extrn_mdl_files/FV3GFS"
- Change the name of the experiment directory (which is also the name of the experiment) to something that properly represents the new settings:
- Generate the workflow with the modified suite file:
Load the appropriate Python environment for Cheyenne:source ../../env/wflow_cheyenne.envGenerate the workflow with the command:
./generate_FV3LAM_wflow.sh - Run the workflow:
- Run the model manually:
cd /glade/scratch/$USER/expt_dirs/test_CONUS_25km_GFSv15p2_noahmp
./launch_FV3LAM_wflow.shThis command needs to be repeated until all the jobs are finished.
- Run the model through the crontab:
For automatic resubmission of the workflow (e.g., every 3 minutes), the following line can be added to the user’s crontab:crontab -eand insert the line:
*/3 * * * * cd /glade/scratch/$USER/expt_dirs/test_CONUS_25km_GFSv15p2_noahmp && ./launch_FV3LAM_wflow.sh
- Run the model manually:
- Check the model running status:
rocotostat -w FV3LAM_wflow.xml -d FV3LAM_wflow.db -v 10The workflow run is completed when all tasks have “SUCCEEDED”
- Generate the plots:
- Change to the python script directory:
cd /glade/scratch/$USER/ufs-srweather-app/regional_workflow/ush/Python - Load the appropriate Python environment for Cheyenne:
module purge
module load ncarenv
ncar_pylib /glade/p/ral/jntp/UFS_SRW_app/ncar_pylib/python_graphicsIf you see something like:
Warning: library /glade/p/ral/jntp/UFS_SRW_app/ncar_pylib/regional_workflow is missing from NPL clone registry.
Do you wish to add it to the registry (y/N)?This will occur if this is the first time you have used the NCAR Python Library (NPL), type ‘y’, to get the following output:
Searching library for configuration info ...
Now using NPL virtual environment at path:
/glade/p/ral/jntp/UFS_SRW_app/ncar_pylib/regional_workflow
Use deactivate to remove NPL from environment - Run the python plotting script:
Note: The following is a one-line command:python plot_allvars.py 2019061500 6 6 6 /glade/scratch/$USER/expt_dirs/test_CONUS_25km_GFSv15p2_noahmp /glade/p/ral/jntp/UFS_SRW_app/tools/NaturalEarth - Display the output figures:
The output files (in .png format) can be found in the directory /glade/scratch/$USER/expt_dirs/test_CONUS_25km_GFSv15p2_noahmp/2019061500/postprdcd /glade/scratch/$USER/expt_dirs/test_CONUS_25km_GFSv15p2_noahmp/2019061500/postprd
display 10mwind_conus_f006.png
- Change to the python script directory: