-
Notifications
You must be signed in to change notification settings - Fork 5
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
Adds a CF-compliant time dimension for Omega IO #169
Conversation
- adds support for an unlimited time dimension - adds the CF-compliant time field with appropriate units - adds additional Field properties to support time-dependent fields - extends the support for non-distributed field IO into IOStream - updates documentation This still only supports one time slice per file. A subsequent modification will add support for multiple slices in a file.
b75055c
to
ff91b18
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.
@philipwjones, this looks really excellent! I successfully ran CTests on Chrysalis with Intel and OpenMPI but I'm still working on some meaningful tests in Polaris.
In the meantime, I have some comments that I think will be easy to address.
I'm sorry for the delay in reviewing this. I wanted to test in Polaris, but needed to get E3SM-Project/polaris#231 updated based on recent changed to Omega's |
Beautiful!! I'm seeing:
This is correct: we wanted to write out data 10 hours = 36000 seconds into the simulation. @philipwjones, my only suggestion would be that I the meantime, I'll be working on making the manufactured solution analysis step in Polaris work with this update. |
components/omega/src/infra/Field.cpp
Outdated
std::string CalName = CalendarCFName[CalKind]; | ||
std::vector<std::string> DimNames; // empty dim names vector | ||
std::shared_ptr<Field> TimeField = | ||
create("time", "time", UnitString, "time", 0.0, 1.e20, 0.0, 0, DimNames); |
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.
create("time", "time", UnitString, "time", 0.0, 1.e20, 0.0, 0, DimNames); | |
create("time", "time", UnitString, "time", 0.0, 1.e20, -9.9e30, 0, DimNames); |
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 - done.
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 @philipwjones, this looks great!
Seems good to me. Successfully passed the unit tests on Chrysalis and Perlmutter CPU & GPU. If you all are happy, I approve. |
Adds a CF-compliant unlimited time dimension
This still only supports one time slice per file. A subsequent modification will add support for multiple slices in a file.
No additional unit tests were added, but I have manually confirmed the fields and dimensions appear correctly in the output files. Additional tests will be added as part of the upcoming multi-slice capability.
Checklist