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

Add ability to modify individual streams.xml settings with something like user_nl_datm or xmlchange #76

Closed
ekluzek opened this issue Apr 30, 2021 · 4 comments · Fixed by #117
Assignees
Labels
enhancement New feature or request

Comments

@ekluzek
Copy link
Collaborator

ekluzek commented Apr 30, 2021

Just talked to @mvertens and @jedwards4b about this. I'd like to see the ability to modify individual settings in datm.streams.xml with something like user_nl_datm or a xmlchange (or a new streamchange command). Whichever makes the most sense. This way the user can easily change just a few settings for an individual case without having to copy the entire streams file for just a few small changes. This makes those changes portable to other cases with different versions of the models. By encapsulating the changes into a small file only those specific settings get changed. If the entire streams file is copied to a different case with a different model version it will overwrite changes in defaults that were changed because of the model difference.

I say for datm.streams.xml because that's what I care about, but if added as a general capability this should be added for other data components that use streams.

This likely needs to be addressed both here in CDEPS and in cime. So I'll create an issue there as well.

@jedwards4b
Copy link
Contributor

although directly related to cdeps, i believe that the changes will be in cime.

@mvertens
Copy link
Collaborator

mvertens commented May 10, 2021

@erik - can you please give an example of what you would want to modify in the stream file that you are not able to modify via the current xmlchange command. That would really help us to understand what we are missing. Just to clarify - in the mct data models, you still have to edit the stream txt file - but its only for a target stream. My recollection is that you found that editing this for all streams was confusing.

@mvertens mvertens added the enhancement New feature or request label May 10, 2021
@ekluzek
Copy link
Collaborator Author

ekluzek commented May 10, 2021

Yes. We need to be able to use xmlchange to change the settings in the datm.streams.xml file. So for example I want to change "yearFirst" in the following stream labeled "CLM_USRDAT.1x1pt_US-UMB".

Here's what the xml stream file looks like...

  <stream_info name="CLM_USRDAT.1x1pt_US-UMB">
   <taxmode>cycle</taxmode>
   <tInterpAlgo>linear</tInterpAlgo>
   <readMode>single</readMode>
   <mapalgo>none</mapalgo>
   <dtlimit>1.5</dtlimit>
   <yearFirst>1999</yearFirst>
   <yearLast>2006</yearLast>
   <yearAlign>1999</yearAlign>

So I want to be able to do something like this...

./xmlchange --subgroup CLM_USRDAT.1x1pt_US-UMB --id yearFirst --val 1999 --file datm.stream.xml

Another alternative would be in a user_nl_datm file for something like...

yearFirst.CLM_USRDAT.1x1pt_US-UMB = 1999

Basically these are providing a mechanism to override the settings in

components/cdeps/datm/cime_config/stream_definition_datm.xml

with specific changes (just to specific settings) that the user wants to override for the case.

Note, that in the example of MCT I can change yearFirst for any stream by making changes to user_nl_datm. And yes the other advantage that MCT has (right now) is that if I want to change one of the streams -- I can change JUST that one stream rather than having to care around a file that contains information on all streams and not just the limited set of changes that I want to make.

If something like the above system can be implemented NUOPC becomes a much more flexible, understandable and robust system than current MCT.

@ekluzek
Copy link
Collaborator Author

ekluzek commented May 10, 2021

In order to implement it I picture you'll likely have to add a XML file for streams that appears in each case. Normally it would be nearly empty, but users can add specific settings to it (with xmlchange) that will override the settings in datm.streams.xml. So the case would read in the base xml file under cdeps and then modify it by any settings provided in the override file for the specific case. That's at least one way I see to do this....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants