Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
5ecde97
Add era5 as an option to parser in site_fullrun
rfiorella Jul 18, 2023
4688ef2
wip-add era5 and era5 land
rfiorella Jul 18, 2023
de579f6
wip-add era5 as an option for olmt
rfiorella Jul 19, 2023
dad05fe
wip - updates to add ees machine
rfiorella Jul 24, 2023
0c1c0d4
fix typos in module load for ees machines
rfiorella Jul 26, 2023
dd1c20f
wip
rfiorella Jul 26, 2023
780d6a7
more machine updates for ees servers
rfiorella Jul 31, 2023
85d7224
Fix case where metdir specified with GSWP3 and cpl_bypass.
rfiorella Jul 31, 2023
0dd6f1f
allow to run on ees with not batch scheduler
rfiorella Aug 1, 2023
895d7ad
fix notrans failure
rfiorella Aug 1, 2023
e8e8ae1
Merge branch 'rfiorella/era5' of github.com:rfiorella/OLMT into rfior…
rfiorella Aug 1, 2023
22c5f58
Create olmt-ci.yml
rfiorella Aug 1, 2023
ce0c9d3
Update olmt-ci.yml
rfiorella Aug 1, 2023
0d30686
Add era5 as an option to parser in site_fullrun
rfiorella Jul 18, 2023
15bb51b
wip-add era5 and era5 land
rfiorella Jul 18, 2023
eaae822
wip-add era5 as an option for olmt
rfiorella Jul 19, 2023
41b6280
wip - updates to add ees machine
rfiorella Jul 24, 2023
d7d124a
fix typos in module load for ees machines
rfiorella Jul 26, 2023
2ae2acb
wip
rfiorella Jul 26, 2023
751a731
more machine updates for ees servers
rfiorella Jul 31, 2023
64835b5
Fix case where metdir specified with GSWP3 and cpl_bypass.
rfiorella Jul 31, 2023
f428d83
fix notrans failure
rfiorella Aug 1, 2023
7cc6ce8
allow to run on ees with not batch scheduler
rfiorella Aug 1, 2023
ac7d7c3
topounits - wip
rfiorella Aug 1, 2023
3aaa5df
add gswp3 no cplbypass as option to runcase.py
rfiorella Aug 1, 2023
44b78f6
Add Docker folder to build CI
rfiorella Aug 1, 2023
5750c2f
add snow options to site_fullrun/runcase
rfiorella Aug 1, 2023
e867d4e
update base image for ci
rfiorella Aug 1, 2023
dc5aec1
updates for lanl global cpl_bypass
rfiorella Aug 1, 2023
f1d7a40
fix merge conflicts
rfiorella Aug 1, 2023
a3477f1
wip - remove gswp3 from 2 phase transient lists
rfiorella Aug 2, 2023
0a90433
fix single hyphen deprecation warning in global_fullrun
rfiorella Aug 2, 2023
0670ca8
fix deprecation warnings from single dash
rfiorella Aug 23, 2023
b3b9305
move parse_args() to end of args
rfiorella Aug 23, 2023
5199999
add testing script
rfiorella Aug 24, 2023
7635e7c
Update olmt-ci.yml
rfiorella Aug 25, 2023
87e282c
wip - fix user issue in docker image
rfiorella Aug 26, 2023
8e8e15b
add test flag and update Dockerfile
rfiorella Aug 26, 2023
4e18b5e
fix type
rfiorella Aug 26, 2023
f824444
switch images
rfiorella Aug 26, 2023
834a348
temporarily escalate
rfiorella Aug 26, 2023
2531248
wip -cix
rfiorella Aug 26, 2023
ff966ed
wip -revert
rfiorella Aug 26, 2023
c67dcc4
initial addition of era5 datm files
rfiorella Aug 28, 2023
71fa141
wip - try ci
rfiorella Aug 28, 2023
90c5029
wip - try ci again
rfiorella Aug 28, 2023
eb1c176
wip - try ci again2
rfiorella Aug 28, 2023
6219c3e
wip - update container address
rfiorella Aug 28, 2023
c01fe78
Update olmt-ci.yml
rfiorella Aug 28, 2023
7a928b3
wip - updates to add ees machine
rfiorella Jul 24, 2023
6c53457
add gswp3 no cplbypass as option to runcase.py
rfiorella Aug 1, 2023
2fb6758
add sp mode to global fullrun
rfiorella Aug 29, 2023
e4ef8dd
various updates
rfiorella Aug 29, 2023
96fb355
add case tracker markdown table to README
rfiorella Aug 29, 2023
a8a0ce5
wip - era5 updates
rfiorella Aug 30, 2023
bb8b59e
add source mod modules
rfiorella Aug 30, 2023
f483039
update workflow testing script
rfiorella Aug 30, 2023
a5c2edb
Merge branch 'rfiorella/era5' of github.com:rfiorella/OLMT into rfior…
rfiorella Aug 30, 2023
b833258
bux fixes for era5
rfiorella Aug 30, 2023
f4a153c
move changes for GSWP3v1 to its own srcmods folder
rfiorella Sep 6, 2023
2a1a824
add new cases (7,8) testing topounits
rfiorella Sep 7, 2023
c25b04a
add cases 9,10 - topounits on single cell
rfiorella Sep 7, 2023
c845423
add more options for snow
rfiorella Sep 7, 2023
5ab3fc5
fix version control issue aroudn topounits, snow opts
rfiorella Sep 14, 2023
cee2944
typo fix
rfiorella Sep 14, 2023
f86c0b6
fix optparse logic for topounits
rfiorella Sep 14, 2023
92d20fc
Add era5 as an option to parser in site_fullrun
rfiorella Jul 18, 2023
816eb8f
wip-add era5 and era5 land
rfiorella Jul 18, 2023
5c0ba7f
wip-add era5 as an option for olmt
rfiorella Jul 19, 2023
ae249ee
wip - updates to add ees machine
rfiorella Jul 24, 2023
3fdac6b
more machine updates for ees servers
rfiorella Jul 31, 2023
00e18f6
Fix case where metdir specified with GSWP3 and cpl_bypass.
rfiorella Jul 31, 2023
3a65e46
fix notrans failure
rfiorella Aug 1, 2023
dad4801
allow to run on ees with not batch scheduler
rfiorella Aug 1, 2023
7511aa3
updates for lanl global cpl_bypass
rfiorella Aug 1, 2023
a683837
wip
rfiorella Jul 26, 2023
332430c
more machine updates for ees servers
rfiorella Jul 31, 2023
8ba0f06
topounits - wip
rfiorella Aug 1, 2023
9d84737
add gswp3 no cplbypass as option to runcase.py
rfiorella Aug 1, 2023
59af52f
add snow options to site_fullrun/runcase
rfiorella Aug 1, 2023
2d8e214
wip - remove gswp3 from 2 phase transient lists
rfiorella Aug 2, 2023
aa8cdc4
fix single hyphen deprecation warning in global_fullrun
rfiorella Aug 2, 2023
f541006
fix deprecation warnings from single dash
rfiorella Aug 23, 2023
fe7f471
move parse_args() to end of args
rfiorella Aug 23, 2023
7bfb4aa
add testing script
rfiorella Aug 24, 2023
ec5fc9b
initial addition of era5 datm files
rfiorella Aug 28, 2023
1051a3b
wip - updates to add ees machine
rfiorella Jul 24, 2023
6f0ce09
add gswp3 no cplbypass as option to runcase.py
rfiorella Aug 1, 2023
6d443d8
add sp mode to global fullrun
rfiorella Aug 29, 2023
af482ca
update workflow testing script
rfiorella Aug 30, 2023
4f88bdf
wip - era5 updates
rfiorella Aug 30, 2023
127d138
add source mod modules
rfiorella Aug 30, 2023
1574a8d
bux fixes for era5
rfiorella Aug 30, 2023
42d1dfa
move changes for GSWP3v1 to its own srcmods folder
rfiorella Sep 6, 2023
a59bc7a
add new cases (7,8) testing topounits
rfiorella Sep 7, 2023
4d33902
add cases 9,10 - topounits on single cell
rfiorella Sep 7, 2023
bdb456b
add more options for snow
rfiorella Sep 7, 2023
2b619cf
fix version control issue around topounits, snow opts
rfiorella Sep 14, 2023
2e640ea
typo fix
rfiorella Sep 14, 2023
3e9027d
fix optparse logic for topounits
rfiorella Sep 14, 2023
b8041db
add docker example to workflow-testing
rfiorella Feb 6, 2024
2690db9
Merge diverged remote with ees version
rfiorella Feb 27, 2024
80a89d8
remove topounit flags, not working
rfiorella Feb 28, 2024
a6a0908
update clm->elm
rfiorella Mar 4, 2024
6ca728e
more clm->elm updates
rfiorella Mar 4, 2024
3b292e6
Updates to topounit logic in site_fullrun and runcase
rfiorella Apr 1, 2024
8fac825
Add polygonal tundra options to OLMT
rfiorella Jun 10, 2024
2361e8f
Updates for IM1
rfiorella Jun 17, 2024
efe0f31
Update IM1 testing script with notes
rfiorella Jun 17, 2024
2b887ae
Update IM1_testing.x
rfiorella Jun 17, 2024
a03661f
Update IM1_testing.x
rfiorella Jun 17, 2024
638dc0a
update end year for polygon tests
rfiorella Jun 17, 2024
96f856c
wip - im3 ens
rfiorella Jul 17, 2024
a04c1c9
wip - im3 ens
rfiorella Jul 17, 2024
5e24944
update lnd_import_export in elm5cb srcmods option
rfiorella Jul 28, 2024
0bec0a7
add use_arctic_init option for cold/wet start
rfiorella Aug 7, 2024
c503f36
Add variables to daily runoff output
rfiorella Aug 14, 2024
a346449
add excess ice to dailyrunoff vars
rfiorella Aug 15, 2024
c25ae55
fix issue where mod_parm_file does not exist but script still runs
rfiorella Mar 19, 2025
c31445c
Add IM2 options to site_fullrun and runcase.py
rfiorella Apr 3, 2025
9f76393
add additional info to OLMT output
rfiorella Apr 3, 2025
07520cb
add firn_percolation_and_compaction option
rfiorella Apr 14, 2025
c2d548f
add control run script
rfiorella Apr 22, 2025
0597784
add Bayelva to controls, fix typos
rfiorella May 23, 2025
7b17149
update .gitignore for .DS_Store
rfiorella Jun 27, 2025
18f573c
Add logic to extend topounit-level output
rfiorella Jun 27, 2025
82adac3
cleanup for PR to ORNL
rfiorella Jun 30, 2025
bc5672c
continue cleanup for PR to ORNL
rfiorella Jun 30, 2025
1810046
Merge branch 'master' into rfiorella/era5-cleanup
rfiorella Jul 1, 2025
628dda4
output->option typo
rfiorella Jul 8, 2025
c7f8a06
output->option typo
rfiorella Jul 8, 2025
4a41445
output->option typo
rfiorella Jul 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ slurm-*.out
mcsamples*.txt

# user defined files
.DS_Store
82 changes: 75 additions & 7 deletions global_fullrun.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,32 @@
help = "desired walltime for each job (hours)")
parser.add_option("--no_submit",dest="no_submit",default=False,action="store_true",
help='Do not submit jobs')
# NGEE Arctic testing options
#Add topounits (NGEE-Arctic):
parser.add_option("--topounits", dest="topounits", default=False,
help="Turn on topounits > 1", action='store_true')
parser.add_option("--topounits_atmdownscale", dest = "topounits_atmdownscale", default=False,
help="Use atmospheric downscaling in topounits", action='store_true')
# snow options:
parser.add_option("--dust_snow_mixing", dest="dust_snow_mixing", default=False, \
help = "Use Hao et al. dust/snow mixing albedo parameterization", action="store_true")
parser.add_option("--no_snicar_ad", dest="no_snicar_ad", default=False, \
help = "Turn off SNICAR-AD snow microphysics model", action = "store_true")
parser.add_option("--use_extra_snow_layers", dest = "use_extra_snow_layers", default=False, \
help = "Turn on extra snow layers", action="store_true")
parser.add_option("--use_firn_percolation_and_compaction ", dest = "use_firn_percolation_and_compaction", default=False, \
help = "Turn on firn percolation and compaction", action="store_true")
# polygonal tundra:
parser.add_option("--use_polygonal_tundra", dest="use_polygonal_tundra", default=False, \
help= "Turn on the polygonal tundra parameterizations, NGEE Arctic Phase 3 IM1", action="store_true")
parser.add_option("--use_arctic_init", dest = "use_arctic_init", default = False, \
help = "Use colder and saturated initial conditions, NGEE Arctic IM2 and IM0", action="store_true")
# Arctic hillslope hydrology
parser.add_option("--use_IM2_hillslope_hydrology", dest="use_IM2_hillslope_hydrology", default=False, \
help="Use NGEE Arctic Hillslope Hydrology across topounits", action="store_true")
# adjust topounit/pft output:
parser.add_output("--arctic_topounit_output", dest="arctic_topounit_output",default=False, \
help="Activate topounit-level and pft-level outputs by turning on hist_dov2xy")

(options, args) = parser.parse_args()

Expand Down Expand Up @@ -291,6 +317,8 @@ def get_regional_bounds(myregion):
options.compiler = 'gnu'
if (options.machine == 'compy'):
options.compiler = 'intel'
if (options.machine == 'ees'):
options.compiler = 'gnu'

#default MPIlibs
if (options.mpilib == ''):
Expand All @@ -302,6 +330,8 @@ def get_regional_bounds(myregion):
options.mpilib = 'mvapich'
elif ('compy' in options.machine):
options.mpilib = 'impi'
elif ('ees' in options.machine):
options.mpilib = 'openmpi'

#create ensemble file if requested (so that all cases use the same)
if (int(options.mc_ensemble) != -1):
Expand Down Expand Up @@ -435,6 +465,7 @@ def get_regional_bounds(myregion):
# fsplen = site_endyear-startyear+1

#get align_year
print(endyear)
year_align = (endyear-1850+1) % ncycle

#get regional information
Expand Down Expand Up @@ -549,6 +580,31 @@ def get_regional_bounds(myregion):
basecmd = basecmd+' --domainfile '+options.domainfile
if (options.pftdynfile != ''):
basecmd = basecmd + ' --landusefile '+options.pftdynfile
# snow opts
if (options.dust_snow_mixing):
basecmd = basecmd + ' --dust_snow_mixing'
if (options.use_extra_snow_layers):
basecmd = basecmd + ' --use_extra_snow_layers'
if (options.use_firn_percolation_and_compaction):
basecmd = basecmd + ' --use_firn_percolation_and_compaction'
if (options.no_snicar_ad):
basecmd = basecmd + ' --no_snicar_ad'
# topounits
if (options.topounits_atmdownscale):
basecmd = basecmd + ' --topounits_atmdownscale'
if (options.topounits_raddownscale):
basecmd = basecmd + ' --topounits_raddownscale'
# polygonal tundra
if (options.use_polygonal_tundra):
basecmd = basecmd + ' --use_polygonal_tundra'
if (options.use_arctic_init):
basecmd = basecmd + ' --use_arctic_init'
# Arctic hillslope hydrology
if (options.use_IM2_hillslope_hydrology):
basecmd = basecmd + ' --use_IM2_hillslope_hydrology'
# topounit-level output
if (options.arctic_topounit_output):
basecmd = basecmd + ' --arctic_topounit_output'
basecmd = basecmd + ' --np '+str(options.np)
basecmd = basecmd + ' --tstep '+str(options.tstep)
basecmd = basecmd + ' --co2_file '+options.co2_file
Expand All @@ -562,28 +618,37 @@ def get_regional_bounds(myregion):
basecmd = basecmd+' --lat_bounds '+str(lat_bounds[0])+','+str(lat_bounds[1])
basecmd = basecmd+' --lon_bounds '+str(lon_bounds[0])+','+str(lon_bounds[1])

print(basecmd)

#----------------------- build commands for runCLM.py -----------------------------

# define compsets
#ECA or CTC
if (options.cn_only):
nutrients = 'CN'
else:
nutrients = 'CNP'

# CENTURY or CTC
if (options.centbgc):
decomp_model = 'CNT'
else:
decomp_model = 'CTC'

# ECA or RD
if (options.eca):
mymodel = nutrients+'ECA'+decomp_model
else:
mymodel = nutrients+'RD'+decomp_model
#note - RD / ECA in FATES handled with namelist options, not compsets
if (options.cpl_bypass):
compset_type = 'ICB'
else:
compset_type = 'I'
mymodel_fnsp = compset_type+'1850'+mymodel+'BC'
mymodel_adsp = mymodel_fnsp.replace('CNP','CN')
mymodel_trns = mymodel_fnsp.replace('1850','20TR')

if (options.sp):
mymodel_fnsp = compset_type+'ELMBC'
options.noad = True
Expand Down Expand Up @@ -680,8 +745,11 @@ def get_regional_bounds(myregion):
if (options.dailyrunoff):
cmd_trns = cmd_trns+' --dailyrunoff'

print(cmd_trns)

#transient phase 2 (CRU-NCEP only, without coupler bypass)
if ((options.cruncep or options.gswp3 or options.cruncepv8) and not options.cpl_bypass):
if ((options.cruncep or options.cruncepv8) \
and not options.cpl_bypass and not options.notrans):
basecase=basecase.replace('1850','20TR')+'_phase1'
thistranslen = site_endyear - 1921 + 1
cmd_trns2 = basecmd+' --trans2 --finidat_case '+basecase+ \
Expand Down Expand Up @@ -709,7 +777,7 @@ def get_regional_bounds(myregion):
print('\nSetting up transient case\n')
ierror = os.system(cmd_trns)
if ierror != 0: sys.exit(-1)
if ((options.cruncep or options.gswp3 or options.cruncepv8) and not options.cpl_bypass):
if ((options.cruncep or options.cruncepv8) and not options.cpl_bypass and not options.notrans):
print('\nSetting up transient case phase 2\n')
ierror = os.system(cmd_trns2)
if ierror != 0: sys.exit(-1)
Expand Down Expand Up @@ -756,7 +824,7 @@ def get_regional_bounds(myregion):


mysubmit_type = 'sbatch'
if ('docker' in options.machine):
if ('docker' in options.machine or 'ees' in options.machine):
mysubmit_type=''
#if ('cades' in options.machine or 'anvil' in options.machine or 'compy' in options.machine or 'cori' in options.machine):
# mysubmit_type = 'sbatch'
Expand Down Expand Up @@ -849,12 +917,12 @@ def get_regional_bounds(myregion):


output.write("cd "+caseroot+'/'+c+"/\n")
output.write("./xmlchange -id STOP_N -val "+str(this_run_n)+'\n')
output.write("./xmlchange --id STOP_N --val "+str(this_run_n)+'\n')
if (options.cplhist):
output.write("./xmlchange -id REST_N -val 25\n")
output.write("./xmlchange --id REST_N --val 25\n")
else:
output.write("./xmlchange -id REST_N -val 20\n") #Restart every 20 years in global mode
output.write("./xmlchange -id RUN_STARTDATE -val "+(str(10000+model_startdate))[1:]+ \
output.write("./xmlchange --id REST_N --val 20\n") #Restart every 20 years in global mode
output.write("./xmlchange --id RUN_STARTDATE --val "+(str(10000+model_startdate))[1:]+ \
'-01-01\n')
if (n > 0):
#change finidat
Expand Down
Loading