Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge b4bdev 20250220 #2971

Merged
merged 38 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
ff3448b
run_neon: Print case path.
samsrabin Nov 18, 2024
535bec1
run_neon: Fix bug where --overwrite is ignored.
samsrabin Nov 18, 2024
e74a63e
run_neon: Improve help text for --base-case.
samsrabin Nov 18, 2024
49f4435
run_neon: Fix issue where --setup-only was ignored.
samsrabin Nov 18, 2024
1caa2c9
run_neon: Add --no-input-data-check option.
samsrabin Nov 18, 2024
3e63547
run_neon: Add --xmlchange option.
samsrabin Nov 18, 2024
daebec2
Remove "leaving fates model" message.
samsrabin Jan 8, 2025
b816f11
Remove "CN Soil matrix solution is off" message.
samsrabin Jan 8, 2025
d9fb22d
"CN Soil matrix solution is on" msg now only on masterproc.
samsrabin Jan 8, 2025
a24c8f0
Remove "calling FireInit" message.
samsrabin Jan 8, 2025
871cfa9
Restrict "for_testing_allow_interp_non_ciso_to_ciso is .true." msg to…
samsrabin Jan 8, 2025
75c423b
Merge branch 'b4b-dev' into reduce-log-noise-2736
samsrabin Jan 15, 2025
5190ee0
Merge branch 'b4b-dev' into reduce-log-noise-2736
samsrabin Jan 27, 2025
3b06b0f
Merge branch 'b4b-dev' into reduce-log-noise-2736
samsrabin Jan 31, 2025
47f452e
Merge tag 'ctsm5.3.023' into merge-master-20250208
Feb 8, 2025
f52463a
Merge pull request #2958 from adrifoster/merge-master-20250208
adrifoster Feb 8, 2025
559b9e3
Merge branch 'b4b-dev' into reduce-log-noise-2736
samsrabin Feb 10, 2025
c0e9859
Merge pull request #2927 from samsrabin/reduce-log-noise-2736
samsrabin Feb 11, 2025
ab5cf88
Merge branch 'b4b-dev' into anping-lecture-2024
samsrabin Feb 13, 2025
e386a21
Use no_input_data_check and xmlchange in Plumber2Site.
samsrabin Feb 13, 2025
e8fc526
Reformat with black.
samsrabin Feb 13, 2025
7cecdf3
Add previous commit to .git-blame-ignore-revs.
samsrabin Feb 13, 2025
f0d56c4
Use --no-input-data-check in run_tower testing.
samsrabin Feb 13, 2025
d7c058b
Add run_tower system tests of --xmlchange.
samsrabin Feb 13, 2025
1a95351
Add run_tower system tests of --setup-only.
samsrabin Feb 14, 2025
6fd238f
Add run_tower system tests of --overwrite.
samsrabin Feb 14, 2025
bf4e6cf
Satisfy pylint.
samsrabin Feb 14, 2025
10c9270
Remove build_base_case method from tower child types.
samsrabin Feb 15, 2025
196bdc0
Remove run_case method from tower child types.
samsrabin Feb 15, 2025
4051ee0
Undo a change to a help message.
samsrabin Feb 15, 2025
c7f70ae
Add simple __init__() method to tower child types.
samsrabin Feb 15, 2025
491507a
Remove some unneeded print statements.
samsrabin Feb 18, 2025
0d44388
Merge pull request #2963 from samsrabin/run-neon-fixes-improvements
samsrabin Feb 18, 2025
1567d29
Merge branch 'b4b-dev' into simplify-tower-types
samsrabin Feb 18, 2025
a91c855
Remove check for allowed site types.
samsrabin Feb 18, 2025
7a4365d
Merge pull request #2969 from samsrabin/simplify-tower-types
samsrabin Feb 20, 2025
40a1b91
Merge tag 'ctsm5.3.025' into merge-b4bdev-20250220
ekluzek Feb 20, 2025
95f2da3
Add change files
ekluzek Feb 26, 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 .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,4 @@ bd535c710db78420b8e8b9d71d88d8339e899c59
4b20bbd7003e6f77dab4e3268cc4a43f9b5a3b5d
cf433215b58ba8776ec5edfb0b0d80c0836ed3a0
16d57ff37859b34dab005693e3085d64e2bcd95a
e8fc526e0d7818d45f171488c78392c4ff63902a
79 changes: 2 additions & 77 deletions python/ctsm/site_and_regional/neon_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,83 +34,8 @@ class NeonSite(TowerSite):
A class for encapsulating neon sites.
"""

def build_base_case(
self,
cesmroot,
output_root,
res,
compset,
user_mods_dirs=None,
overwrite=False,
setup_only=False,
):
if user_mods_dirs is None:
user_mods_dirs = [
os.path.join(
self.cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", self.name
)
]
case_path = super().build_base_case(cesmroot, output_root, res, compset, user_mods_dirs)

return case_path

# pylint: disable=too-many-statements
def run_case(
self,
base_case_root,
run_type,
prism,
user_version,
tower_type=None,
user_mods_dirs=None,
overwrite=False,
setup_only=False,
no_batch=False,
rerun=False,
experiment=False,
):
"""
Run case.
Args:
self
base_case_root: str, opt
file path of base case
run_type: str, opt
transient, post_ad, or ad case, default transient
prism: bool, opt
if True, use PRISM precipitation, default False
user_version: str, opt
default 'latest'
overwrite: bool, opt
default False
setup_only: bool, opt
default False; if True, set up but do not run case
no_batch: bool, opt
default False
rerun: bool, opt
default False
experiment: str, opt
name of experiment, default False
"""
user_mods_dirs = [
os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", self.name)
]
tower_type = "NEON"

super().run_case(
base_case_root,
run_type,
prism,
user_version,
tower_type,
user_mods_dirs,
overwrite,
setup_only,
no_batch,
rerun,
experiment,
)
def __init__(self, *args, **kwargs):
super().__init__("NEON", *args, **kwargs)

def modify_user_nl(self, case_root, run_type, rundir, site_lines=None):
# TODO: include neon-specific user namelist lines, using this as just an example currently
Expand Down
83 changes: 2 additions & 81 deletions python/ctsm/site_and_regional/plumber_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,87 +33,8 @@ class Plumber2Site(TowerSite):
A class for encapsulating plumber sites.
"""

def build_base_case(
self,
cesmroot,
output_root,
res,
compset,
user_mods_dirs=None,
overwrite=False,
setup_only=False,
):
if user_mods_dirs is None:
user_mods_dirs = [
os.path.join(
self.cesmroot, "cime_config", "usermods_dirs", "clm", "PLUMBER2", self.name
)
]
case_path = super().build_base_case(cesmroot, output_root, res, compset, user_mods_dirs)

return case_path

# pylint: disable=too-many-statements
def run_case(
self,
base_case_root,
run_type,
prism,
user_version,
tower_type=None,
user_mods_dirs=None,
overwrite=False,
setup_only=False,
no_batch=False,
rerun=False,
experiment=False,
):
"""
Run case.
Args:
self
base_case_root: str, opt
file path of base case
run_type: str, opt
transient, post_ad, or ad case, default ad
(ad case is default because PLUMBER requires spinup)
prism: bool, opt
if True, use PRISM precipitation, default False
Note: only supported for NEON sites
user_version: str, opt
default 'latest'; this could be useful later
This is currently only implemented with neon (not plumber) sites
overwrite: bool, opt
default False
setup_only: bool, opt
default False; if True, set up but do not run case
no_batch: bool, opt
default False
rerun: bool, opt
default False
experiment: str, opt
name of experiment, default False
"""
user_mods_dirs = [
os.path.join(
self.cesmroot, "cime_config", "usermods_dirs", "clm", "PLUMBER2", self.name
)
]
tower_type = "PLUMBER"
super().run_case(
base_case_root,
run_type,
prism,
user_version,
tower_type,
user_mods_dirs,
overwrite,
setup_only,
no_batch,
rerun,
experiment,
)
def __init__(self, *args, **kwargs):
super().__init__("PLUMBER2", *args, **kwargs)

def set_ref_case(self, case):
super().set_ref_case(case)
Expand Down
14 changes: 10 additions & 4 deletions python/ctsm/site_and_regional/run_tower.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,9 @@ def main(description):
setup_only,
no_batch,
rerun,
no_input_data_check,
user_version,
xmlchange,
) = get_parser(sys.argv, description, valid_neon_sites, valid_plumber_sites)

if output_root:
Expand Down Expand Up @@ -261,9 +263,9 @@ def main(description):
if run_from_postad:
neon_site.finidat = None
if not base_case_root:
user_mods_dirs = None
neon_site.set_default_user_mods_dirs()
base_case_root = neon_site.build_base_case(
cesmroot, output_root, res, compset, user_mods_dirs, overwrite, setup_only
cesmroot, output_root, res, compset, overwrite, setup_only
)
logger.info("-----------------------------------")
logger.info("Running CTSM for neon site : %s", neon_site.name)
Expand All @@ -278,6 +280,8 @@ def main(description):
no_batch=no_batch,
rerun=rerun,
experiment=experiment,
no_input_data_check=no_input_data_check,
xmlchange=xmlchange,
)

# -- check for available plumber data:
Expand All @@ -290,9 +294,9 @@ def main(description):
if run_from_postad:
plumber_site.finidat = None
if not base_case_root:
user_mods_dirs = None
plumber_site.set_default_user_mods_dirs()
base_case_root = plumber_site.build_base_case(
cesmroot, output_root, res, compset, user_mods_dirs, overwrite, setup_only
cesmroot, output_root, res, compset, overwrite, setup_only
)
logger.info("-----------------------------------")
logger.info("Running CTSM for plumber site : %s", plumber_site.name)
Expand All @@ -306,4 +310,6 @@ def main(description):
no_batch=no_batch,
rerun=rerun,
experiment=experiment,
no_input_data_check=no_input_data_check,
xmlchange=xmlchange,
)
30 changes: 30 additions & 0 deletions python/ctsm/site_and_regional/tower_arg_parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,19 @@ def get_parser(args, description, valid_neon_sites, valid_plumber_sites):
default=False,
)

parser.add_argument(
"--no-input-data-check",
"--no-check-input-data",
help="""
Don't check for input data. Implies --setup-only.
[default: %(default)s]
""",
action="store_true",
dest="no_input_data_check",
required=False,
default=False,
)

parser.add_argument(
"--rerun",
help="""
Expand Down Expand Up @@ -185,6 +198,17 @@ def get_parser(args, description, valid_neon_sites, valid_plumber_sites):
choices=["v1", "v2", "v3"],
)

parser.add_argument(
"--xmlchange",
help="""
Any xmlchanges (e.g., CLM_CO2_TYPE=constant,CCSM_CO2_PPMV=500)
[default: %(default)s]
""",
required=False,
type=str,
default=None,
)

args = parse_args_and_handle_standard_logging_options(args, parser)

if args.neon_sites:
Expand Down Expand Up @@ -230,6 +254,10 @@ def get_parser(args, description, valid_neon_sites, valid_plumber_sites):
root_logger = logging.getLogger()
root_logger.setLevel(logging.WARN)

# --no-input-data-check implies --setup-only
if args.no_input_data_check and not args.setup_only:
args.setup_only = True

return (
neon_sites,
plumber_sites,
Expand All @@ -243,5 +271,7 @@ def get_parser(args, description, valid_neon_sites, valid_plumber_sites):
args.setup_only,
args.no_batch,
args.rerun,
args.no_input_data_check,
args.user_version,
args.xmlchange,
)
Loading