ESCOMP / ESCOMP/CTSM

Build-namelist logic to find the finidat file is fragile and needs to be redone

Open
#2,169 5 comments 0 reactions 1 assignee Claimed by @ekluzek View on GitHub
b4b code health enhancement priority: high
Dominant language
Fortran
Stars
352
Forks
361
Avg merge
6d 6h
Merged PRs (30d)
8

Description

In working on #2008 I'm finding that the logic to fine the finidat file is: complex, hard to understand, fragile, and will require a bunch of duplication. This is another reason for doing #585 which is the long term solution. Although there we should make sure the redesign in python has a better method of getting the finidat files.

This is similar to #549, but slightly different and focussed on just the namelist logic and the namelist default settings for: use_init_interp and init_interp_attributes. This is also related to #2149, as we need to have duplicated lnd_tuning_mode options for all the different clm physics options, as well as the cam options. Right now this is going to require a bunch of duplication.

Definition of Done:
- [x] Improve the error message so it at least gives you a clue on what's wrong...
- [ ] Add testing for finidat files to the build-namelist unit tester
- [ ] Add a python tester to validate that the namelist_defaults files synchronize: init_interp_sim_years, use_init_interp, init_interp_attributes, and finidat
- [ ] Fix case of finidat files with do_transient_pfts=.true. (example 1979 or 2000 files) so that use_init_interp doesn't need to be true
- [ ] Reduce the required attributes to specify each file (see below)
- [ ] Implement a better solution inside of the current buildnml or build-namelist?
- [ ] Long term: Reimplement build-namelist as in #585

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.