Open simonbyrne opened 4 years ago
The key thin-shell approximation is replacing the Coriolis force source.ρu -= SVector(0, 0, 2 * _Omega) × state.ρu
by source.ρu -= f*vertical_unit_vector × state.ρu
, with Coriolis parameter f=2\Omega sin(latitude)
(\Omega
being the scalar angular velocity of planetary rotation). Just making this one-line change will suffice for testing, e.g., gravity waves.
To get a consistent angular momentum balance, additional small changes are necessary. The thin-shell approximation comes from approximating, in the definition of angular momentum, the distance from any point in the atmosphere to the barycenter of the planet by a constant (Earth's mean radius). To recover a consistent (approximate) angular momentum balance from the momentum equations, it is additionally necessary to approximate what people call metric terms (these really arise from differentiating the definition of angular momentum with the moment arm, r cos(latitude)
, multiplying the velocity). One easy way to implement this consistently is to use u r cos(latitude)
as a prognostic variable, and set r=a
in the thin-shell approximation. We discussed this early on. We can come back to it (and one day probably should, to offer a consistent shallow-atmosphere approximation). But I don't think we need it right now.
Changing the prognostic variables has the additional advantage that it would guarantee discrete global conservation of angular momentum, which right now we do not have.
Description
It would be useful to run the Atmosphere model using the Shallow Atmosphere assumption, especially for DCMIP comparisons (#1193)
Additional context
From what I can tell, the main changes we would need to make are:
computemetric!
function which assumes a Cartesian layout, which would no longer be the case.Useful references:
For CLIMA Developers