[MITgcm-devel] stevens boundary conditions
Martin Losch
Martin.Losch at awi.de
Thu Dec 8 04:20:18 EST 2011
Hi Jean-Michel,
following up on my previous post: my initial tests show, that for option 2, adding a maskInC in gad_advection "works" in the sense that I does not affect the results, but masking the contribution from advection in gad_calc_rhs is problematic: I need to separate advective flux from the rest (in fZon/fMer), and this separation alone (naively, I added two new afZona,afMeri, but no further masking or anything) changes the results of exp4 by 4-6 digits for cg2d (reducing the agreement to 12, 11 and 10), so just the order of summation. Is this expected?
This would make option 2 not very attractive (for non-multidimAdvection), would it?
Martin
On Dec 7, 2011, at 4:59 PM, Martin Losch wrote:
> 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?
>
>
>
>
>
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel
More information about the MITgcm-devel
mailing list