-
Notifications
You must be signed in to change notification settings - Fork 97
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
Redi diffusion taper bugs: spurious dianeutral mixing #399
Comments
Good catch @aekiss. I've looked through the code a bit and I can't see anything wrong with your argument. I don't recall seeing anything funny when looking at the Redi heat budget terms. It seems to me the model might be able to absorb this kind of sharp flux convergence issue without going unstable. It would be easy enough to remove the if statement and see if it makes a big difference. |
If I understand it correctly, the Danabasoglu and McWilliams (1995) version is also discontinuous, but in the oposite way, with the tanh function only applied to slopes smaller than a parameter |
The MOM5 implementation also calculates tapers for x and y diffusivities separately, in subroutines Can this anisotropy rotate the diffusive flux vector out of the local neutral surface, causing diapycnal fluxes? Seems to me it can, but I hope I'm wrong! |
The MOM5 implementation of Looks like the if-statement issue with |
Here are some comments, based on incomplete memory of the work I did with this scheme. Regions of neutral slopes larger than smax tend to be much much larger than smax. That is, in a coarse model the slopes tend to jump to a large value relatively quickly, so that there are few (if any) regions with slopes close to, but below, slopemax. This experience might be modified with finer grid spacing models, such as 0.25 degree. Relying on tanh without the slopemax: I recall we formerly did that, but perhaps introduced slopemax for safety. Memory fails me on that question. For the anisotropy point: I concur; we did do directions separately. We held numerical stability very central to the approach, so erred on the side of stability by checking each direction separately. This approach could be cleaned up, but it would require merging code since the triad scheme operates in each direction separately. Are you seeing any simulation feature that led you to look into the details of the MOM5 neutral diffusion scheme? |
Thanks for the background @StephenGriffies, it's good to know the slope doesn't linger near I'm not aware of any model misbehaviour resulting from the way this is implemented (though I also haven't specifically looked for it). It's just something I noticed when trying to work out how to calculate Redi diffusion offline. Re. the if-statement: the CFL linear stability condition for neutral diffusion suggests that applying tanh unconditionally should make the model a little more stable, because the diffusivity will be reduced for slopes near but below Re. anisotropy and resulting dianeutral flux, having looked at the code more closely I see your point that |
ACCESS-OM2 uses Redi tracer diffusion at 1° and 0.25°, with the default
dm_taper
Redi tapering scheme based on Danabasoglu and McWilliams (1995) Eqn A.7a.Fig 23.4 in sec 23.5.2.1 of Griffies (2012) shows the intended scaling of the Redi diffusivity using this tapering method in regions of large isopycnal slope (blue curve):

Griffies (2012) states that this tapering can be applied at all points, but the implementation in MOM5 has an if-statement that only applies the taper when the slope (
absslope
) exceedssmax
(see x-flux code here in subroutinefx_flux_ndiffuse
, and similar for y-flux in subroutinefy_flux_ndiffuse
). Consequently as the slope increases pastsmax
,taperA
abruptly changes from 1.0 to 0.5 (because the argument of tanh is zero at that point), as shown in the red curve above.where
In regions with slope close to
smax
, this abrupt change in diffusivity might produce sharp spatial discontinuities in Redi flux, and therefore very large, transient flux divergences.Have I misunderstood something here?
The text was updated successfully, but these errors were encountered: