-
Notifications
You must be signed in to change notification settings - Fork 26
Add a user namelist for reduced output settings #498
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 a user namelist for reduced output settings #498
Conversation
|
Hi @JorgSchwinger , is there any good reason to provide this as a |
|
This was discussed here NorESMhub/noresm3_dev_simulations#88 and the conclusion was that it is easier to do it as user-mods_directory |
|
Hi @JorgSchwinger , apologize my ignorance, but are user-mods equivalent to the source-mods directory? - if so, I really feel that this is a step backward rather than forward and I would advocate for introducing ONE xml-switch name at the NorESM level for let say |
|
user-mods are activated with an option when you create the case. The corresponding namelist files are maintained in cime (we could have a copy in BLOM's cime_config, as suggested by this PR, but that's not strictly necessary). It is much easier, particularly for the other components that are not exclusively used for NorESM. If you don't agree with this solution, you should bring this up for the other components here NorESMhub/noresm3_dev_simulations#88 |
|
Hi @JorgSchwinger , in any case, many thanks for providing this - let's see, where NorESMhub/noresm3_dev_simulations#88 leads to. In the case that user-mods will be used, I would suggest i) to push this PR ONLY to NorESM (not to BLOM) and ii) potentially include your settings rather with a switch into the currently used |
|
Hi all, regardless what we do about this, it would be good to review the content of the user_nl file. Particularly, @matsbn could you review the physical output setting, and @jmaerz could you make sure you are ok with the outputs for the extended N-cycle (and M4AGO). @matsbn what do you think about using 2-byte compressed output also for BLOM as done for HAMOCC in this namelist? My experience is that the (compressed) files are significantly smaller. Please let me know any changes. |
|
@jmaerz I am also totally fine with having a switch in |
|
Hi @JorgSchwinger , thanks for picking up on this - I'll check this tmw. Other than that: if there is an easy possibility via usermods folder+script in BLOM/iHAMOCC, I would suggest to go that route and to put this eventually in the |
|
@jmaerz this would be possible, if cime would pick up user-mods-dirs on a component level (instead of or in addition to at the NorESM level), that is what you are saying, right? This would of course be a nice. |
|
Hi @JorgSchwinger , that's at least, how I understood Matvey this morning. Let's see - I asked for advice in NorESMhub/noresm3_dev_simulations#88 |
I will have a look at this and sorry I was not able to attend to it sooner. I would like to keep some of the daily output BLOM output and a minimal set of output in model layers (LYR). Using 2-byte output is not ideal for variables like salinity where the global value range is large, but the majority of values are within a narrow range (low accuracy for the bulk of the ocean volume). I felt that when we started to use the netCDF4 compression of output, the size benefit of 2-byte output was reduced (cannot recall numbers, though). Putting in automatic netCDF4 compression in the short term archiving process for NorESM3 (as we did it in NorESM2) was discussed at a recent NorESM tag team meeting. This gives a significant space saving and must be automatic, since experience show that users typically don't do this themselves afterwards. |
Files are about 20-30% smaller with the 2-byte option (after compression, recently tested) - so it is not a huge saving (but still something...) |
|
... maybe worth considering something like a spinup and a production run flag for output? |
|
| GLB_FILEFREQ@diabgc = 30,365 | ||
| GLB_COMPFLAG@diabgc = 0, 0 | ||
| GLB_NCFORMAT@diabgc = 1, 1 | ||
| GLB_INVENTORY = 1, 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we have inventory output as well on a yearly basis? And switch on the monitoring files!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, but what do you mean by "switch on the monitoring files"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good to have the netcdf-monitoring files - at least yearly - hence:
GLB_INVENTORY = 1,2
which should switch on the monitoring files for the yearly monitoring output (>1) - maybe I should just do so for the current master as well?
| LVL_PH = 0, 2 | ||
| LVL_OMEGAC = 0, 2 | ||
| LVL_OMEGAA = 0, 2 | ||
| LVL_PREFO2 = 0, 4 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any reasons to have this set to 4? (similar oxygen above).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For oxygen the 2-byte output does not provide enough resolution for oxygen minimum zones. Here 4-bytes are really needed, while for other tracers, it is less critical.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the info! (I guessed so, but wasn't sure - so thanks for confirmation).
| LYR_DP@diabgc = 0, 0 | ||
|
|
||
| ! Save level-fields only annually | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering, how much info we would need for the sinking. Maybe it would reasonable during spinup to at least write out the LVL_AGG_WS - to enable having a rough idea on e.g. remineralization length scales? - for production runs, I would clearly opt for some more information later.
| LYR_AGG_VRHOF = 0, 0 | ||
| LYR_AGG_WS = 0, 0 | ||
| LYR_ANH4 = 0, 0 | ||
| LYR_ANMX_N2_PROD = 0, 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we going to use this user_nml also for continued tuning purposes? If so, some layer information (annual) for the N-cycle would be appreciated - if, yes, I can provide a list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you mean by "continued tuning purposes"?
You would want layer output rather than level?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @JorgSchwinger , how to phrase it - for single years, I have build a routine that very well analyzes the budgets and flows inside the N-cycle based on annual layer data. In addition to the classical tracer fields and fluxes, it helped me a lot to understand, where the N-cycle stands and what to potentially tune. Hence, I feel it could be useful, when we would want to run some extended nitrogen cycle simulations to switch some layer output on. Does that make sense to you?
| LVL_EPS = 0, 0 | ||
| LVL_ASIZE = 0, 0 | ||
| LVL_BROMO = 0, 0 | ||
| LVL_SHELFAGE = 0, 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering, if we could/should add the shelfage tracer for spinup - to get information on it during pi and potentially, how that changes over hist+scenario.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But this is only the output setting. We will certainly switch on the output for the piControl and all subsequent simulations, but here the question is whether the output would be useful for spinup? IMO this would only be the case if this could provide information for tuning purposes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that we can keep shelfage off for the spinup. - would be nice to switch it on, when starting pi-simulations (that need to be long enough to reach steady state in age - which should be about 100yrs+).
|
Hi @JorgSchwinger, for the extended nitrogen cycle, we would need to write out the following variables:
For sediment dry-weight comparison: on a yearly basis. In terms of namelist flags, this translates to (considering some as monthly values as well): For sediment dry-weight: For the sinking (and just spinup): should suffice to understand potential issues (while for production it would nice to have more). |
|
Thank you @jmaerz. I am wondering, is there a scientific reason to write out lyr-fields for the N-cycle? I understand you have a script that uses the lyr-output, but in general I think it is unfortunate to write out parts of the model output on lvl-only and another part lyr-only... Also in view of diagnostics. |
|
Hi @JorgSchwinger , since these outputs are tendencies (and afterward integrated over the individual volumes during the post-processing step for budgeting - currently abusing the output in this way), the budgets are already now posing some error. When using lvl output, I fear this error to be increasing. Technically, it would be good to rewrite the output to "tendency*\DeltaV" and average over those... - for the purpose of closed budgeting. |
|
Hi @jmaerz - I think for this PR/issue we should just specify a reduced output from what we already have. I fear we open up a new lengthy process if we start to introduce changes to the output in the same setting. |
Not sure - the interpolation to z-levels is conservative, so any linear operation on the output should be conserved, too (for budgets on z-levels, one needs to take into account the bathymetry, though, in order for sums and averaged to be correct). |
|
The diagnostics need to be rewritten (*dz - changing units from mol/(m3 s) to mol/(m2 s)). #521 |
|
As discussed offline, the layer data are more precise for the budgeting, which is useful, when fluxes cover different orders of magnitudes (and when percentage-error margins aren't the same for the different fluxes, since the processes occur in different oceanic regions). |
My suggestion for reduced output for BLOM variables is below. Certainly more variables are kept than the original suggestion, but should still be a significant reduction. The variables kept are the ones I anticipate will be looked at during testing and spinup. This includes some fundamental monthly LYR state variables and diffusivities. I also tried to check that variables needed for the standard diagnostics are in place. |
|
With the merged PR #478, this PR could be closed now - I leave this to either @JorgSchwinger or @TomasTorsvik |
This PR add a file
user_nl_blom_outvol_reducedto the directorycime_config. The purpose of this file is to provide a namelist with reduced output settings for the NorESM3 spin-up simulations or test simulations. The following general rules are applied:For convenience, and since it increases the output volume only little, I have repeated the output of 2d fields also in annual files.
@matsbn, @TomasTorsvik, @jmaerz , @milicak , @AleksiNummelin please review these output settings and let me know if you see the need for changes (please put a comment at the corresponding line).
@matsbn, one could further reduce the BLOM output by using 2-byte compressed output. After my experience this results in in ~20-30% smaller files after compression to netCDF4 and the accuracy is still good enough for most applications.