-
Notifications
You must be signed in to change notification settings - Fork 376
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
Introduce isotropic surface stress to MPAS-Ocean #6917
base: master
Are you sure you want to change the base?
Introduce isotropic surface stress to MPAS-Ocean #6917
Conversation
... from cells to edges
…ress Mpas/isotropic interp normal wind stress
Introduces 4-point averaging to ocean surface stress (wind and sea ice stress) around each vector point in MPAS-Ocean, as per the right panel in the following figure: The left panel illustrates the default up to the V3 LR and NARRM configurations, the right panel is intended for the V3 SORRM, HR and BGC configurations, and subsequent configurations of E3SM. Two tests were conducted with this new code in B-cases, as documented here for the anisotropic and isotropic cases, respectively. Each case was run for at least 90 years with code stability for the changes introduced in this PR. A comparison of the results follows. |
Impact of Isotropic Surface Stress on the OceanOne of the largest impacts of introducing isotropic surface ocean stress is in sea ice extent and snow volume. In the lemnisc below, the difference between anisotropic (blue) and isotropic (red) 90-year PI spinups illustrates that both of these sea ice metrics are different at the 95% compatibility interval, where dotted red lines indicate no difference, and solid red lines illustrate a difference within each annual solar cycle. Even though the mean values appear identical, the sea ice climate is different due to variability. There appears is no sizable change to AMOC for the simulations described above, comparing here also against the LR V3 Spinup: However, it appears that the isotropic wind stress case may allow the model to spinup faster for key through-flow statistics: While the impact of this change is subtle, it offers more robust numerics in regions of heavily distorted grid cells, as illustrated in the mesh figure in the previous comment above. The change does not degrade the model, and E3SM runs stably with the improved coupling numerics when fully coupled, and it is therefore worth adopting. |
@mark-petersen, @vanroekel, @cbegeman - this is now ready for your review. |
@proteanplanet -- the code looks great to me by inspection. Do you want me to do any testing? |
Thanks @vanroekel, not unless you see a gap in what I've presented. It's already extensively tested in B-cases, so I don't think it needs more testing. |
I think your B-case testing is great. Two little questions.
|
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 looked carefully at your results and the code. I agree that a larger stencil to compute surface stress is more robust, and would have little impact on the computational cost since it is only the surface. Thanks for your lengthy simulations and analysis above.
As a rough comparison, cost of this code with the flag switched on for Chrysalis is 6204.43 pe-hrs/sim_year, 12.87 SYPD for a 25-year simulation, as compared to 6146.00 pe-hrs/sim_year at 13.00 SYPD for the anisotropic case, for an ocean model cost of 17.21 SYPD for the former and 17.43 SYPD for the latter. In other words, the numerical change is in the noise relative to the climate changes caused by the different approach across the system. |
The code passes the The code also passes this test suite when Therefore both active and stealth modes pass. |
@@ -332,6 +332,7 @@ | |||
<!-- forcing --> | |||
<config_use_variable_drag>.false.</config_use_variable_drag> | |||
<config_use_bulk_wind_stress>.true.</config_use_bulk_wind_stress> | |||
<config_bulk_wind_stress_interp_isotropic>.false.</config_bulk_wind_stress_interp_isotropic> |
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.
A question for @cbegeman and @vanroekel: Given the extensive testing in B-cases, should we immediately just switch on isotropic wind stress averaging as the default in master, thus changing, this to true
.
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 would support making isotropic default behavior based on your testing
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 would as well.
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 agree with changing the default to true
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.
Done! Just left for @cbegeman to approve.
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 by visual inspection of code and extensive testing from @proteanplanet
This non-BFB change to E3SM has been rigorously tested in an 1850 spinup B-case for more than 100 years, is stable, and produces a similar climate without the change, but offers more robust ocean numerics than the current default.
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 on the basis of code inspection and @proteanplanet's testing. Thanks for identifying and prioritizing this, @proteanplanet!
Tagging @xuezhengllnl, @darincomeau and @njeffery - this is ready for HR, SORRM, and HES configs. |
@proteanplanet : The icepack version on your branch is 8fad768] which is quite old and doesn't have the Icepack bgc. I'm planning on doing a coupled bgc run using the latest 22b8769 to compare against my baseline. Just want to confirm that that's correct. I'm also planning on using config_bulk_wind_stress_interp_isotropic = true . Are there any other changes I should be aware of? |
I'll take this discussion onto Slack as it isn't directly related to this PR. |
@proteanplanet -- do you consider this climate-changing? Or just non-BFB? |
Link to mpas-analysis page comparing runs is here: intercomparison |
Introduces 4-point averaging to ocean surface stress (wind and sea ice stress) around each vector point on the MPAS-Ocean C-grid, instead of averaging only across the two on-edge cell center surface stress points to the vector point. This affects coupling with both the atmosphere and sea ice models, which both couple surface stress through the scalar (cell center) grid point in MPAS-Ocean. In so doing, we ensure that surface stress is independent of the orientation of the mesh relative to the wind vectors or sea ice drift vector, thereby making this approach isotropic.
The code has been tested using both
config_bulk_wind_stress_interp_isotropic = true
(on) andconfig_bulk_wind_stress_interp_isotropic = false
(off) in fully coupled E3SM pre-industrial 100 and 80 year B-cases, respectively. The change conserves mass and energy and has minimal impact on the overall coupled simulation, but provides more robust forcing numerics for the ocean, with feedbacks to sea ice. Figures supporting this are provided in comments attached to this pull request.This pull request was authored by @xylar and @proteanplanet combined.
[NML]
[CC]