-
Notifications
You must be signed in to change notification settings - Fork 6
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
First pass at adding POP namelist #476
base: CABLE-POP_TRENDY
Are you sure you want to change the base?
Conversation
Further discussions to come around exactly which variables should be changeable by the user.
@juergenknauer @AlisonBennett @Whyborn My general position is that we should only extract options/parameters etc. that we envisage that we will want to assess/vary - extracting everything creates a risk for unexperienced users/typos etc.. I'd follow @juergenknauer view on which bits should be in/out. We would have to check but I don't think there is much (if any) intersection between the POP-parameters and POPLUC and BLAZE from a technical sense. My other comment on this is that I think (and have never understood why this wasn't the case) that |
Fair enough. I personally like having more things configurable than not, with the very important caveat that the values have reasonable defaults to fall back to if they are not set by the user and documentation on what range of values is reasonable. I'm assuming that it's precisely because BLAZE will want to modify the |
BLAE/SIMFIRE was originally written developed as a stand-alone module (and has been implemented in other models). Our incarnation of BLAZE however is now so tied into POP that it should be viewed as an augmentation of POP (not of CABLE-CASA). I suspect that it was originally envisaged that the |
@Whyborn and I have discussed this via email and I have suggested a list of parameters that could be prioritised for the namelist. I agree that the two parameters currently in %veg (disturbance_interval and disturbance_intensity) would also be best located in the POP namelist. But we weren't entirely sure if they are used somewhere else in the POP = FALSE case. |
I can see mentions of I can't see any use of these |
I came to a similar conclusion- said disturbance variables are initialised (and more dangerously output) in various places, but don't seem to be used for anything meaningful outside |
This turns out to be a more significant piece of work than I expected- there are many operations in the code that only work because array sizes are known at compile time, which is no longer the case when the options become configurable. |
@har917 @juergenknauer @ccarouge On the issues mentioned at the meeting- there is an operation used in many, many places throughout the code that is only allowed when the array sizes are known at compile time. This is the action of retrieving attributes from a list of derived types. For context, the derived type structure is:
If the array size of these derived types is known at compile time, then the compiler can infer that when you ask for
The |
There's also the annoyance that everywhere assumes that |
I think I will need to test this in stages. Discussion with Juergen indicate that we are unlikely to ever use multiple layers in the POP setup, so we should change the I will make all the changes around looping through the |
Ben Smith suggested that |
CABLE
Thank you for submitting a pull request to the CABLE Project.
Description
@juergenknauer @har917
Making the POP parameters configurable via namelist. At the moment, I've made everything bar
PI
andEPS
changable via the namelist, but discussions with @juergenknauer suggest that this probably isn't wise. Opening this PR now to prompt discussions. Some things that have been discussed:Q
,N_EXTENT
,NAGE_MAX
,NPATCH1D
andTIMEBASE_FACTOR
. Will be removed unless good arguments can be made otherwise.NLAYERS
should be restricted to 1. Currently there is machinery for including multiple layers (although I can't find what these "layers" represent in Vanessa's original publication), but I think all layers will contain identical data. Will this be extended in future?POPLUC
andBLAZE
? What do we need to be careful of? It looks to me like it's quite self-contained, with the variables coming in from the "main" CABLE beingveg%disturbance_frequency
andveg%disturbance_intensity
, which I assume may also be set viaBLAZE
?Also, please ping anyone else that would have input on this that I haven't mentioned.
Type of change
Please delete options that are not relevant.