Add pseudothickness to write_model_dataset for Omega#460
Conversation
TestingPolaris
|
cd69ef2 to
2f9231f
Compare
aa1e065 to
79baeb5
Compare
79baeb5 to
c32f147
Compare
|
Noting that this will need a rebase onto #489 |
c32f147 to
d0113fd
Compare
|
@xylar This is basically done so it would be good to get your review before you leave. I've tested the pr suite so all that's left on my list is rebase and clean up the docs. |
|
Great, I'll review this in an hour or so. |
d0113fd to
0a75bf2
Compare
|
@xylar I was wrong that this was ready because I think we still need some PR to actually call Eos to compute SpecVol. I think the soonest one to be merged would be E3SM-Project/Omega#353. I also realized we might want to assume SpecVol=1/RhoSw so that PseudoThickness = LayerThickness for initial conditions where T,S don't need to be defined. |
f21392d to
0ea9278
Compare
|
@hyungyukang I just rebased it and included a dependence on constant EOS for some tests. I'll retest now but this should be ready to build on for developing the baroclinic channel case. I would recommend first following this line for the baroclinc_channel case, addingconfig to the write_model_dataset call which will use the eos options in the config file to infer pseudothickness from the state. I would first try just running the default case with this polaris-generated IC and the eos options in the config set consistently with the Omega namelist and see if you can reproduce your results with the temporary code. And of course you should feel free to review the code changes in this PR and let me know if you spot anything that you think should be changed.
|
|
@cbegeman , Thanks for the guide. I've tested this PR with the time stepping PR (E3SM-Project/Omega#392) using the overflow test ( Here're a list of changes I made to support Omega:
Omega part
And then I ran three simulations:
So, main comparison should be This figure shows time series of the domain integrated kinetic energy. The domain integrated KE between Based on those simulations, I was able to confirm that this Polaris PR works as intended. It could serve as a long-term solution for generating Omega initial conditions from Polaris. As shown in the |
|
@hyungyukang Thank you so much for this testing! Just to clarify, this case used a linear EOS, correct? |
Yes, I used the linear EOS. I was also wondering if this PR supports |
|
@hyungyukang The pseudothickness conversion feature should support TEOS10. I don't see any reason why the overflow test case wouldn't support it but I haven't tested it. If you have time to try it out, that would be great! |
|
@xylar This is ready for your re-review. According to a comment above, you were interested in doing some testing. |
4edfa00 to
4fec9c2
Compare
|
I don't think I'm in a good position to test this on a truly layered case. I appreciate your testing, @hyungyukang! I'm just going to double check that |
xylar
left a comment
There was a problem hiding this comment.
My test is stuck in the queue on Frontier. It is late here and I don't think this test will add value beyond testing already done. I'm happy to approve. If the test shows any surprises tomorrow when I take a look, I'll be happy to investigate and follow up.
|
Thanks for seeing this through, @cbegeman. It's been in the works for a long time! |
|
For what it's worth, my tests did run. As expected in Looks great! |
|
Shoot, I spoke too soon. I'm seeing some analysis errors: Similar things are showing up in manufactured solution, rotation_2d and cosine_bell. |
|
Looking into these. I'll post and issue if I can't come up with a quick fix. |
|
Thanks. Did you confirm that the initial condition contains |
|
The initial condition has
|
|
I'm really sorry about this. I shouldn't have rushed the review. I'm too tired to figure out what's supposed to be happening here but I'll try to pick it up in the morning. |
|
@xylar I think I know how to fix it. I should be able to get the bugfix PR open this evening. |

Add the pseudo-thickness to model datasets for Omega initial conditions.
Surface pressure (constant value from config file), temperature, salinity and layer thickness are used to compute the pressure at layer interfaces. One iteration is currently used, pending testing of how many iterations is needed for convergence to desired accuracy.
The pressure at interfaces and a reference density (from config file) are then used to compute the pseudo-thickness.
The pseudo-thickness is automatically added to any
write_model_datasetcall when Omega is the ocean model AND the optional config argument is provided. (Note: checks for presence of config argument are still needed)Fixes #461
Depends on E3SM-Project/Omega#327 to renameLayerThicknesstoPseudoThicknessOR we can map variable name
PseudoThickness(added to MPAS-O dataset before variable mapping) toLayerThicknessChecklist
api.md) has any new or modified class, method and/or functions listedTestingcomment in the PR documents testing used to verify the changes