[MITgcm-devel] stevens boundary conditions
Martin Losch
Martin.Losch at awi.de
Wed Dec 7 10:59:13 EST 2011
Jean-Michel,
it turns out that the Stevens BC story continues. So far, I implemented updating the tracer (T/S) value on the boundary only based on advection (modified model "mean" velocity and some kind of phase velocity that is similar to orlanski), and a restoring term.
Now it turns out that it is necessary to include surface forcing and vertical diffusion for the boundary values as well. Stepping back this means that basically all terms in the tracer advection/diffusion equation on the boundary should be used, except for the advection. The advection is added in a modified version, and the restoring term added. How can that be implemented technically? I see two options:
1. my quick fix is to add the desired terms to OB?t/s as required. In the case of surface forcing and vertical diffusion, I add these contributions at the end of do_oceanic_physics, and everything else remains the same.
2. Far more elegant: Do you think it's possible to have the model do all computations, except for advection, compute advection and restoring tendencies in obcs (_calc_stevens), and apply these as a correction in obcs_apply_ts (is useStevens)? As far as I can see, this requires a maskInC in gad_advection (at the very end) and gad_calc_rhs (advFac*maskInC) and that's it. Is my thinking too simple?
A related problem is that the surface forcing for salinity is incomplete on the open boundary for useRealFreshWaterFlux=.true., because EmPmR is masked by maskInC in this case. Do you see a way to add that back in?
Martin
PS. In Stevens (1990), the phase velocity to correct to model advection on the boundary is computed from time steps n-1 and n-2:
c=dy/dt * ( t(i,j+1,k,n-1) - t(i,j+1,k,n-2) )/( t(i,j+2,k,n-2)-t(i,j+1,k,n-2) )
I use
c=dy/dt * ( t(i,j+1,k,n-1) - t(i,j+1,k,n-2) )/( t(i,j+2,k,n-1)-t(i,j+1,k,n-1) )
to save me from storing t(i,j+2,k,n-2)-t(i,j+1,k,n-2). In orlanski_south, things are done "properly". I am not sure if this is an issue or not. For it does not cause any problems. One could think of merging the orlanski and the stevens code. What do you think?
More information about the MITgcm-devel
mailing list