<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hello,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I have coded a function to compute the vorticity on the G-point and a function to interpolate a tracer from G-point to C-point. Are you interested? Also I have a function to turn the orientation of tiles to plot velocities. If you are interested, can you check
 it works well and maybe add it to the ecco module?</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Cheers,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Fabien</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
def turn_tiles(oceX,oceY):
<div>&nbsp; &nbsp; oceE=oceX.copy()</div>
<div>&nbsp; &nbsp; oceE[6:13,:,:]=oceY[6:13,:,:]</div>
<div>&nbsp; &nbsp; oceE[6,:,:]=np.nan</div>
<div>&nbsp; &nbsp; oceN=oceY.copy()</div>
<div>&nbsp; &nbsp; oceN[6:13,:,:]=-oceX[6:13,:,:]</div>
<div>&nbsp; &nbsp; oceN[6,:,:]=np.nan</div>
<div>&nbsp; &nbsp; return oceE,oceN</div>
<div><br>
</div>
<div>def compute_curl(fieldU,fieldV,ds_grid):
<div>&nbsp; &nbsp; # compute the curl of a velocity field on the MITgcm grid. Result on the G-point.</div>
<div>&nbsp; &nbsp; </div>
<div>&nbsp; &nbsp; fieldU *= ds_grid.dxC</div>
<div>&nbsp; &nbsp; fieldV *= ds_grid.dyC</div>
<div>&nbsp; &nbsp; </div>
<div>&nbsp; &nbsp; dUdY = xr.zeros_like(ds_grid.XG)</div>
<div>&nbsp; &nbsp; dUdY.values[:,1:,:] = fieldU.values[:,1:,:] - fieldU.values[:,:-1,:]</div>
<div>&nbsp; &nbsp; dUdY.values[[1,2,4,5,6],0,:] = fieldU.values[[1,2,4,5,6],0,:] - fieldU.values[[0,1,3,4,5],-1,:]</div>
<div>&nbsp; &nbsp; dUdY.values[10:,0,:] = fieldU.values[10:,0,:] - fieldU.values[7:10,-1,:]</div>
<div>&nbsp; &nbsp; dUdY.values[7:10,0,1:] = fieldU.values[7:10,0,1:] + fieldV.values[[5,4,3],1:,-1][:,::-1]</div>
<div>&nbsp; &nbsp; dUdY.values[7:10,0,0] = fieldU.values[7:10,0,0] + fieldV.values[[6,5,4],0,-1]</div>
<div><br>
</div>
<div>&nbsp; &nbsp; dVdX = xr.zeros_like(ds_grid.XG)</div>
<div>&nbsp; &nbsp; dVdX.values[:,:,1:] = fieldV.values[:,:,1:] - fieldV.values[:,:,:-1]</div>
<div>&nbsp; &nbsp; dVdX.values[[3,4,5,7,8,9,11,12],:,0] = fieldV.values[[3,4,5,7,8,9,11,12],:,0] - fieldV.values[[0,1,2,6,7,8,10,11],:,-1]</div>
<div>&nbsp; &nbsp; dVdX.values[[0,1,2,6,10],1:,0] = fieldV.values[[0,1,2,6,10],1:,0] + fieldU.values[[12,11,10,2,6],-1,1:][:,::-1]</div>
<div>&nbsp; &nbsp; dVdX.values[[1,2,6,10],0,0] = fieldV.values[[1,2,6,10],0,0] + fieldU.values[[12,11,5,7],-1,0]</div>
<div>&nbsp; &nbsp; </div>
<div>&nbsp; &nbsp; zeta = (-dUdY + dVdX)/ecco_ds.rAz</div>
<div>&nbsp; &nbsp; </div>
<div>&nbsp; &nbsp; return zeta</div>
<div><br>
</div>
<div>def interp_G_to_C(fieldG,ds_grid):</div>
<div>&nbsp; &nbsp; # interpolate a tracer field from G-point to C-point</div>
<div><br>
</div>
<div>&nbsp; &nbsp; fieldU = grid.interp(fieldG,['Y'],boundary='fill')</div>
<div><br>
</div>
<div>&nbsp; &nbsp; fieldC = xr.zeros_like(ds_grid.XC)</div>
<div>&nbsp; &nbsp; fieldC.values[:,:,:-1] = (fieldU.values[:,:,:-1] + fieldU.values[:,:,1:]) / 2</div>
<div>&nbsp; &nbsp; fieldC.values[[0,1,2,6,7,8,10,11],:,-1] = (fieldU.values[[0,1,2,6,7,8,10,11],:,-1] + fieldU.values[[3,4,5,7,8,9,11,12],:,0]) / 2</div>
<div>&nbsp; &nbsp; fieldC.values[[5,4,3],1:,-1] = (fieldU.values[[5,4,3],1:,-1] + fieldU.values[7:10,0,1:][:,::-1] ) / 2</div>
<div>&nbsp; &nbsp; fieldC.values[[5,4],0,-1] = (fieldU.values[[5,4],0,-1] + fieldU.values[[8,9],0,0] ) / 2</div>
<div><br>
</div>
<span>&nbsp; &nbsp; return fieldC</span></div>
<div><br>
</div>
<div><br>
</div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
</body>
</html>