-
Notifications
You must be signed in to change notification settings - Fork 12
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
Split run into phys_run1 and phys_run2 #253
Conversation
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 adding this functionality @peverwhee ! However I do wonder if now is a good time to cleanup some of the subroutines in phys_comp.F90
, given that we seem to not really need many of the arguments being passed around anymore.
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.
Super-close! Just curious why you kept dtime_phys
in the calling list for the various subroutines in phys_comp.F90
? It doesn't appear to actually be used in many of them.
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 tackling the extra clean-up! Everything looks good to me now.
I did find this about groups in the https://github.com/NCAR/ccpp-scm. In the file scm/doc/TechGuide/chap_ccpp.tex, there is a section (note this is .tex, so there are some special characters): The concept of grouping physics in the suite definition file (currently reflected in the \execout{<group name= This reassured me that what we are doing in this PR is what we should be doing. |
Basic question: Should the timestep_init and timestep_final be controlled at the group level as well? I could see that a scheme that is in the "after_coupling" section might need something from the coupling that just happened in the dycore. Also, a "before_coupling" scheme might need to do a timestep_final that prepares something for the dycore. |
@cacraigucar I've thought about this as well but couldn't think of a reason why whatever needs to be done before the dycore (or after) couldn't be done as part of the run phase of that scheme. If we added some sort of group-specific version of timestep_final and init, we'd also need to rethink the naming. |
Summary
This PR brings in the necessary changes (and the necessary framework tag) to split up the physics run into phys_run1 (which calls the "physics_before_coupler" group) and phys_run2 (which calls the "physics_after_coupler" group).
Modifications
phys_comp.F90:
cam_comp.F90:
atm_comp_nuopc.F90:
phys_comp.meta
write_init_files.py:
registry_v1_0.xsd
Testing
Confirmed no answer changes (via ncdata_check) for kessler or held suarez.