[MITgcm-devel] bolus velocites
Jean-Michel Campin
jmc at mit.edu
Tue Sep 15 18:43:17 EDT 2020
Hi Jeff,
I took a quick look at your matlab script, sign and factor of 1/5 seems good to me.
However, I would prefer to do things differently:
a) comute 3-D strean-function
b) from 3-D stream-function, compute bolus velosity.
The reason is that we know what Boundary Condition to put on stream-function,
(and (b) is traitforward), and this way we are sure that it's divergence free.
Whereas the way you propose, i.e., computing a V_bollus at grid-cell center and
then putting it back at vVel location, is more tricky regarding BC.
Also a little tricky on non-cartesian grid (for the same reasons).
So, I would suggest:
for k=1:Nr
psiY(i,j,k) = 0.25 * ( Kwy(i,j,k)*rAc(i,j) + Kwy(i,j-1,k)*rAc(i,j-1) )/rAw(i,j)
* maskS(i,j,k) <-- this applies BC
with PsiY(:,:,Nr+1) = 0 ;
then:
V_bolus(i,j,k) = ( psiY(i,j,k+1) - psiY(i,j,k) )/drF(k)/hFacS(i,j,k)
Cheers,
Jean-Michel
PS: I am cc MITgcm-devel so that we keep a record (and also if I am wrong other
will complain).
On Tue, Sep 15, 2020 at 08:55:20PM +0000, Jeffery R Scott wrote:
>
> Hi Jean-Michel,
>
> This is relevant for the global tutorial, but in the short term I???m using cfc_example and I need to compute bolus velocity and add to Eul velocity.
>
> I think below (from support list) is correct calculation, not completely straightforward how to get below but follows from what???s in manual.
> (better would be to give this explicitly in the manual, discuss skew vs. advective forms etc.)
>
> If I want to add to v_bol to VVEL I need to average v_bol from RF points to RC points, and then also to the velocity points in the horizontal plane.
> This is why we push people to use ADV form, as we discuss in SO tutorial.
>
> Confirm?
>
> Thanks,
> Jeff
>
>
>
> %Eddy MOC from skew flux formulation
> >>> clear all
> >>> % load data
> >>> DXG = rdmds('DXG');
> >>> hFacS = rdmds('hFacS');
> >>> YG = rdmds('YG');
> >>> DRF = rdmds('DRF');
> >>> DRF = squeeze(DRF);
> >>> KWY = rdmds('GM_Kwy-T.0000172800');
> >>>
> >>> % compute mer. bolus velocity
> >>> KWY(:,:,16)=0.0;
> >>> for i=1:90
> >>> for j=1:40
> >>> for k=1:15
> >>> Vb(i,j,k)=KWY(i,j,k+1)*0.5-KWY(i,j,k)*0.5;
> >>> end
> >>> end
> >>> end
> >>> DX=repmat(DXG,[1,1,15]);
> >>> ddz=repmat(DRF,[1, 40, 90]);
> >>> ddz=permute(ddz,[3 2 1]);
> >>> n=find(hFacS > 0);
> >>> Vb(n)=Vb(n)./(ddz(n).*hFacS(n));
> >>>
> >>> % integrate MOC
> >>> Xint=sum(Vb.*DX.*hFacS);
> >>> Xint=squeeze(Xint);
> >>> dz=repmat(DRF,[1,40]);
> >>> dz=permute(dz,[2 1]);
> >>> MOC=cumsum(Xint.*dz./1e6, 2);
> >>>
> >>> %Plotting
> >>> [hcl cl]=contourf(YG(1,:),cumsum(DRF),MOC',[-30:5:-10 -10:2:10 10:5:30 ]);
> >>> set(gca,'YDIR','reverse')
> >>> clabel(hcl,cl)
> >>> caxis([-30,30])
> >>> colorbar
> >>> title('Skew Flux MOC [Sv]');
>
>
More information about the MITgcm-devel
mailing list