-
Notifications
You must be signed in to change notification settings - Fork 1
ELM Example Case IV. One Single Step to Setup Build Run ELM, using OLMT
NOTE:
-
In these examples, there are 4 user-defined ENVs variables of directories: $E3SM_INPUTDATA, $E3SM_ROOT, $PROJECT_E3SM, for inputdata, e3sm model source codes, and root directory for cases and runs, respectively. USERS must have created these, and cloned both data and e3sm codes.
-
$E3SM_INPUTDATA is cloned repository of a few site-level full datasets to run offline ELM, from pt-e3sm-inputdata
-
Upon user's machine, $MACH_NAME is needed for E3SM. In these examples, 'mymac' for MacOS/linux, 'wsl' for Windows Subsystem for Linux, OR, 'cades' for a cluster in ORNL, may be directly used.
HERE we demonstrate OLMT, developed by Dr. Daniel Ricciuto at ORNL, usage on Setting-up/Building/Running point-mode ELM. The example is for NGEE-Artic Site - Kougarok Road Mileage 64 (K64), Seward Penisula, AK.
OLMT cloning:
git clone https://github.com/dmricciuto/OLMT.git
For this example to work, please check out a branch:
git checkout Arctic-userpft
NOTE: OLMT essentially are a package of python scripts. Users don't need too much knowledge of python, but it would be very helpful if have. A simple command to get help is, e.g.:
python site_fullrun.py --help
Here it's an example bash script to run OLMT, similar to OLMT NGEE example, except for forcing data:
python ./site_fullrun.py \
--site AK-K64G --sitegroup NGEEArctic --caseidprefix TestOMLT \
--nyears_ad_spinup 200 --nyears_final_spinup 600 --tstep 1 \
--machine $MACH_NAME --compiler gnu --mpilib mpich \
--cpl_bypass --gswp3 \
--model_root $E3SM_ROOT \
--caseroot $PROJECT_E3SM/cases \
--ccsm_input $E3SM_INPUTDATA \
--runroot $PROJECT_E3SM/scratch \
--spinup_vars \
--nopointdata \
--metdir $E3SM_INPUTDATA/atm/datm7/atm_forcing.datm7.GSWP3.0.5d.v2.c180716_kougarok-Grid/cpl_bypass_full \
--domainfile $E3SM_INPUTDATA/share/domains/domain.clm/domain.lnd.1x1pt_kougarok-GRID_navy.nc \
--surffile $E3SM_INPUTDATA/lnd/clm2/surfdata_map/surfdata_1x1pt_kougarok-GRID_simyr1850_c360x720_171002.nc \
--landusefile $E3SM_INPUTDATA/lnd/clm2/surfdata_map/landuse.timeseries_1x1pt_kougarok-GRID_simyr1850-2015_c180423.nc
For ELM after commit CNP Budgetting, better to add the following to turn it off when using OLMT:
--not_dobudgets \
** NOTE**: E3SM model is from: https://github.com/E3SM-Project/E3SM.git, one of 3 branches:
Additionally,
-
with -DCPL_BYPASS in makefile, need to
git cherry-pick 60ee663282to fix a bug. Otherwise, scripts will crash afterad_spinup(which actually successfully run). -
with
do_budgets = .true.(i.e. CNP Budgetting option is on), need togit cherry-pick d18a39ad66to fix a bug.
HERE:
python ./site_fullrun.py \ # calls OLMT python script site_fullrun.py ( \ is line continue, FYI)
--site AK-K64G --sitegroup NGEEArctic --caseidprefix TestOMLT \ # setup a case for site 'AK-K64G' defined in sitegroup 'NGEEArctic' (checking how it defined in $E3SM_INPUTDATA/lnd/clm2/PTCLM/NGEEArctic_*.txt)
--nyears_ad_spinup 200 --nyears_final_spinup 600 --tstep 1 \ # to run ELM at accelerated_spinup stage for 200 yrs, then spinup for 600 years, and then transient (from 1985~) for 165 years (upon met. data), with timestep of 1 hour.
--machine $MACH_NAME --compiler gnu --mpilib mpich \ # machine settings: name, compiler name, mpi wrapper name.
--cpl_bypass --gswp3 \ # turning on option 'CPL_BYPASS' with met. forcing of GSWP3 (v2)
--model_root $E3SM_ROOT \ # where to find E3SM model
--caseroot $PROJECT_E3SM/cases \ # where to put case directories - will have 3 directories
--ccsm_input $E3SM_INPUTDATA \ # where to read input data, unless specified for user-defined ones.
--runroot $PROJECT_E3SM/scratch \ # where to put model build (and e3sm.exe) - will have bld/ and run/ under 3 directories
--spinup_vars \ # NOT output in default settings, but much less frequent and short lists of variables
--nopointdata \ # don't extract data from global datasets on-fly, rather using already prepared as following 4.
--metdir $E3SM_INPUTDATA/atm/datm7/atm_forcing.datm7.GSWP3.0.5d.v2.c180716_kougarok-Grid/cpl_bypass_full \ # CPL_BYPASS data directory
--domainfile $E3SM_INPUTDATA/share/domains/domain.clm/domain.lnd.1x1pt_kougarok-GRID_navy.nc \ # domain file (or mesh)
--surffile $E3SM_INPUTDATA/lnd/clm2/surfdata_map/surfdata_1x1pt_kougarok-GRID_simyr1850_c360x720_171002.nc \ # surface data
--landusefile $E3SM_INPUTDATA/lnd/clm2/surfdata_map/landuse.timeseries_1x1pt_kougarok-GRID_simyr1850-2015_c180423.nc # LULC file for transient period
*It uses point-extracted met. forcing from global half-degree datasets.
Updated @ 2025-07-02