-
Notifications
You must be signed in to change notification settings - Fork 371
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
EAMxx: Create IOPForcing ATM process #6787
EAMxx: Create IOPForcing ATM process #6787
Conversation
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Show resolved
Hide resolved
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 have one comment regarding using the Field utility, but other than that, looks good.
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Show resolved
Hide resolved
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Show resolved
Hide resolved
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Outdated
Show resolved
Hide resolved
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.
One thing comes to mind when looking at this PR ... is there a way we can extract more stuff out of this IOP process? For example, do we need to do nudging here or can we accommodate the IOP nudged cases in our already existing nudging process?
We can ofc defer/punt until later, just thinking out loud for code simplicity/readability/modularity
@mahf708 this is a good point and I think it's probably possible to eventually merge the IOP nudging routine to the EAMxx general one. However, I'd prefer to punt this to a different PR because I don't think it's trivial. For instance, the IOP nudging routine nudges the domain mean, not the individual column explicitly. Secondly, either the EAMxx nudging routine would need to be modified to support reading in the format of the IOP nudging OR the DPxx workflow and input files would need to be substantially revised. Just two things off the top of my head that come to mind. |
My vote would be to edit the eamxx nudging routine so that it can accommodate the specific needs of iop as opposed to the other way around. But I agree, we could/should wait until later. No rush to do anything now |
f1ef82b
to
b470097
Compare
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!
Two minor comments (though no action is strictly needed):
- I noticed a lot of barrier/fence usage that wasn't clear to me; just noting it here in case these were added for debugging only and left there accidentally
- One thing that can really help is adding some sort of standalone unit testing. For example, you can see the unit tests in rrtmgp or spa or nudging. These can be helpful in learning the code, debugging the code, and also profiling the code. So, while this is still hot in your mind and if and only if you have time, I think adding tests can be quite nice
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Show resolved
Hide resolved
components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp
Outdated
Show resolved
Hide resolved
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. Can you please ninja delete the IO cout line we discussed on slack, so it goes in with this?
@bogensch Can you test one more time before we merge? Particularly something that uses |
Moves IOP forcing from within HOMME interface to it's own physics process, called directly after dynamics process. Also, changes name of IntensiveObservationPeriod class to IOPDataManager.
if (iop_nudge_tq or iop_nudge_uv) { ... if (iop_nudge_tq or iop_nudge_uv) { ... } }
9004f23
to
efeca26
Compare
@tcclevenger I ran a case that nudges U & V winds by default. The run crashed about six hours in. I ran the case with nudging turned off and the case ran fine. For the case with nudging that crashed I noticed that the U and V being output were about four orders of magnitudes larger than expected. |
@bogensch Thanks, definitely relate to my last round of changes. I'll investigate. |
efeca26
to
8b76d0f
Compare
@bogensch Were you testing on CPU? I think this was an issue with how I was using (or not using) Packs. |
@tcclevenger yes, my testing was done on pm-cpu. I did not test on pm-gpu. |
Fixes a bug where real views were being used as if they were packed.
@bogensch Can you test again? |
@tcclevenger my tests on both pm-cpu and pm-gpu look good! Thus, this gets my seal of approval. |
Moves IOP forcing from within HOMME interface to it's own physics process, called directly after dynamics process. Also, changes name of IntensiveObservationPeriod class to IOPDataManager. [non-BFB]
Moves IOP forcing from within HOMME interface to it's own physics process, called directly after dynamics process. Also, changes name of
IntensiveObservationPeriod
class toIOPDataManager
.I expect this to be non-BFB, at the very least since we are changing the order in which IOP forcing is applied to FM fields.