-
Notifications
You must be signed in to change notification settings - Fork 16
Bring in new RRTMPG suite via atmos_phys and mods to get it to work #439
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
Conversation
…eck and related unit tests.
…ciated unit test.
…ed to the correct size.
nusbaume
left a comment
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.
Looks good, but did have some (hopefully minor) change requests.
| <ic_file_input_names>QRL pbuf_QRL</ic_file_input_names> | ||
| </variable> | ||
| <variable local_name="two" | ||
| standard_name="ccpp_constant_two" |
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.
Not critical for this PR, but should we have a variable labeled ccpp_constant_X if it's not actually provided by the framework itself? If not then maybe it's worth "fixing" this standard name in the future GPU PR?
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.
good point - maybe constant_dimension_two ?
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, that name works for me!
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.
implemented in 9797761
src/control/runtime_obj.F90
Outdated
|
|
||
| end function update_thermodynamic_variables | ||
|
|
||
| subroutine set_cam_dycore(dycore_in) |
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.
Nit-pick, but can we make this subroutine a part of the runtime_options DDT, just like get_dycore? I feel like that better matches the OOP design of having both a "getter" and a "setter" within the object itself.
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 waffled on this!
I had it in there at first, but then I'd have to change the intents in the dynamics init routines to be inout to call the procedures, which meant I'd have to remove protected from cam_runtime_opts which did not seem ideal. But maybe that's fine?
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.
That's fair, but I personally think changing the intent to inout and removing the protected attribute would be better than what this is doing now, where we claim the variable should be read-only, but then are actually changing its internal values by calling the external set_cam_dycore subroutine.
So I think I am still fine with implementing this requested change, especially since the actual data inside the DDT can still be "private", and hopefully we can keep this DDT internal to CAM-SIMA itself as much as possible (even with the associated metadata file entry, which we could possibly remove).
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.
changed!
jimmielin
left a comment
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 @peverwhee! Looks good to me I just had a couple of comments, one for a potential minor comment change and another just for a brief discussion... nothing that holds up merging in the PR.
cime_config/testdefs/testmods_dirs/cam/outfrq_rrtmgp_derecho/user_nl_cpl
Outdated
Show resolved
Hide resolved
src/dynamics/none/dyn_comp.F90
Outdated
|
|
||
| ! Note: dynamical core energy formula is set in dyn_grid based on dynamical core | ||
| ! that provided the initial conditions file | ||
| call set_cam_dycore('null') |
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'm OK with this for now since this is only used in orbital_data, but I have some concerns about this versus just bringing in dycore_is as used in CAM which has 'more functionality'.
Hopefully this property won't be used in physics in the future - if so the 'null' dycore should instead report whatever dycore the snapshot came from (similar to what I made the dycore energy formula code do later in this file).
But maybe whatever physics code that needs to know the dycore name should probably not do it and use something more physical instead. Just wanted to hear your and @nusbaume's thoughts on this!
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 might be misunderstanding, but having the null dycore report the snapshot dycore wouldn't help my particular issue of not wanting to calculate solar zenith angle if we're reading it from the snapshot.
But maybe there's a way around that that I'm missing.
As for why we did this instead of bringing in dycore_is, I do not recall!
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 @peverwhee! Yup I understand why it has to report null for orbital_data. I am just slightly worried that once this is available we have to be careful about policing future attempts to use it in the physics code.
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.
ah ok. Yes, that is a valid worry.
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.
Just wanted to say that while this object and its methods are certainly useful for internal CAM-SIMA functionality, I too would like to see its use avoided in physics schemes. I am actually wondering if we should just remove the metadata entry for the DDT entirely, which would then force us to avoid its use in the physics, as I am not sure it is actually being used now. Thoughts?
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.
Sounds good! I agreed not having the ddt in metadata should help with discouraging use of it in physics.
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.
removed the metadata entry for the object!
nusbaume
left a comment
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.
Approving this under the assumption that the last two requests I have (excluding the units one which will be fixed in the GPU PR) will be implemented. Thanks again for getting this done @peverwhee!
Tag name (required for release branches): TBD
Originator(s): peverwhee
Description (include the issue title, and the keyword ['closes', 'fixes', 'resolves'] followed by the issue number):
Describe any changes made to build system:
Describe any changes made to the namelist:
List any changes to the defaults for the input datasets (e.g. boundary datasets):
List all files eliminated and why:
List all files added and what they do:
A cime_config/testdefs/testmods_dirs/cam/outfrq_rrtmgp_derecho/shell_commands
A cime_config/testdefs/testmods_dirs/cam/outfrq_rrtmgp_derecho/user_nl_cam
A cime_config/testdefs/testmods_dirs/cam/outfrq_rrtmgp_derecho/user_nl_cpl
List all existing files that have been modified, and describe the changes:
(Helpful git command:
git diff --name-status development...<your_branch_name>)M .gitmodules
M ccpp_framework
M src/physics/ncar_ccpp
M cime_config/namelist_definition_cam.xml
M src/control/runtime_opts.F90
M src/physics/utils/radiation_namelist.F90
M src/physics/utils/radiation_namelist.meta
M cime_config/testdefs/testlist_cam.xml
M src/control/cam_comp.F90
M src/control/cam_control_mod.F90
M src/control/runtime_obj.F90
M src/control/runtime_obj.meta
M src/dynamics/mpas/dyn_comp_impl.F90
M src/dynamics/none/dyn_comp.F90
M src/dynamics/se/dyn_comp.F90
M src/data/generate_registry_data.py
M src/data/registry.xml
M src/data/registry_v1_0.xsd
M src/physics/utils/orbital_data.F90
M test/unit/python/sample_files/*
If there are new failures (compared to the
test/existing-test-failures.txtfile),have them OK'd by the gatekeeper, note them here, and add them to the file.
If there are baseline differences, include the test and the reason for the
diff. What is the nature of the change? Roundoff?
derecho/intel/aux_sima:
All tests NLFAIL due to new radiation namelist fields
derecho/gnu/aux_sima:
SMS_Ln2.ne3pg3_ne3pg3_mg37.FPHYStest.derecho_gnu.cam-outfrq_rrtmgp_derecho (Overall: DIFF)
All other tests NLFAIL due to new radiation namelist fields
If this changes climate describe any run(s) done to evaluate the new
climate in enough detail that it(they) could be reproduced: n/a
CAM-SIMA date used for the baseline comparison tests if different than latest: