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

b4b-dev: Plumber2 Implementation #2406

Merged
merged 38 commits into from
Jan 31, 2025

Fix so plumber2 sites have the right directory and get the list

74b665b
Select commit
Loading
Failed to load commit list.
Merged

b4b-dev: Plumber2 Implementation #2406

Fix so plumber2 sites have the right directory and get the list
74b665b
Select commit
Loading
Failed to load commit list.
Task list completed / task-list-completed succeeded Feb 5, 2025 in 0s

28 / 28 tasks completed

All tasks have been completed

Details

Required Tasks

Task Status
Update branch / resolve merge conflicts Completed
Add new CDEPS tag to this PR once the CDEPS PR is merged. Completed
Bring in CTSM PLUMBER5.2 PR Completed
Check for any sort of equivalent of user_version for plumber Completed
Include any plumber-specific user namelist lines Completed
Update check_plumber_data Completed
Determine valid sites based on tower_type? Completed
Define available_plumber_list Completed
Be able to run NEON & PLUMBER simultaneously (if both are same run type) Completed
Provide option for None for both NEON and PLUMBER cases so they can be run indepdently Completed
Ensure that we don't use a NEON base case for PLUMBER or vice versa Completed
Update run_type defaults in arg parse Completed
Resolve unknown case.run error for PLUMBER given need for setup/build Completed
Test out various tower options/arguments Completed
Update tests Completed
Update documentation Completed
Users spin up their own AD & postAD cases and then can run a transient case (no restart files needed). This is somewhat contrary to the purpose of run_neon because it requires users to run case setup, build, submit, and archive. Incomplete
My vote would be that we provide (and update upon changes to model versions) restart files and allow users to run a transient case out of the box (this is how NEON tower sites work, and consistency with run_tower would be nice as well as ease of use, but there is more overhead to maintain the feature). This would be a slightly easier implementation given that run_tower currently expects a transient case (and automatically submits case.run, which is not automatically created for the ad run but is automatically created for transient cases). Incomplete
finidat file name updates for each site in user_nl_clm (expecting <SITE>.ad.clm2.r.YYYY-MM-DD-00000.nc files but we have for instance *50400.nc files) Completed
Update run_type defaults in run_case in both tower_site.py and plumber_site.py such that the AD case is the default (instead of the transient default that's set in neon_site.py). Completed
I don't know that we need to "automatically" run postAD and transient runs, as I think it's a good idea for users to have to check the status of their AD and postAD cases to check that they meet steady state criteria (e.g., Alaska NEON sites take significantly longer to spin up than CONUS NEON sites). Incomplete
What I like about the current run_neon implementation is that running a postAD cases automatically creates a branch that looks for an similarly names AD case and then using the --run from postAD flag also creates a transient case uses the off the postAD ref case and initial conditions. Both of these options just take the last restart files that are available (regardless of simulation date). Incomplete
Regarding SP vs. BGC cases, yes a flag that allows users to chose between these two options would be excellent. I'm not sure about the best way to implement this and don't want to introduce scope creep / complexity to this work but having the option to set up SP vs. BGC cases would be very useful for PLUMBER2 (and even NEON) cases. Incomplete
Tests for test_sys_run_tower.py are currently failing. Fix and then run all ctsm py tests. Completed
There seem to be some mixups when running with additional flags, eg plumber sites run with 'experiment' end up being run in a transient case instead of an ad case Completed
Need to test various argument options (note some neon options irrelevant for plumber) Completed
The Plumber2Site class is called in a somewhat clunky way with dummy years that get overwritten. I'm not sure of a better way to do this, and it works, but let me know if you have alternative suggestions? Completed
Running system tests takes a while. There are of course benefits to doing more testing (as I have done here), but the time the tests take may be on the excessive side. Your feedback on whether these tests are worth it would be helpful! Completed
run ./run_tower --plumber-sites with various options as a final check Completed
make all Completed
run ctsm system tests with ./python/run_ctsm_py_tests -s Completed
base_case_root: str, opt; file path of base case* Incomplete
run_type: str, opt; transient, post_ad, or ad case, default transient** Incomplete
prism: bool, opt; if True, use PRISM precipitation, default False Incomplete
user_version: str, opt; default 'latest' (could be useful later for PLUMBER, but not currently used) Incomplete
overwrite: bool, opt; default False* Incomplete
setup_only: bool, opt; default False; if True, set up but do not run case* Incomplete
no_batch: bool, opt; default False* Incomplete
rerun: bool, opt; default False* Incomplete
experiment: str, opt; name of experiment, default False* Incomplete
base_case_root: str, opt; file path of base case* Incomplete
(transient case is default because PLUMBER should be run in SP mode and could use usermods run for a longer period for initialization in SP mode) Incomplete
overwrite: bool, opt; default False* Incomplete
setup_only: bool, opt; default False; if True, set up but do not run case* Incomplete
no_batch: bool, opt; default False* Incomplete
rerun: bool, opt; default False* Incomplete
experiment: str, opt; name of experiment, default False* Incomplete
Make transient the default for PLUMBER2 as discussed earlier Completed
Make start/end years optional in the tower_site iniit base class. Set them to dummy values there. Completed
setup of a NEON site (BART) with a specified experiment and output root Incomplete
setup of a NEON site (ABBY) AD case and specified output root Incomplete
setup of a PLUMBER site (AR-SLu) with a specified experiment and output root Incomplete