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: