[MITgcm-devel] gmredi_check.F

Jean-Michel Campin jmc at ocean.mit.edu
Tue Feb 8 18:16:52 EST 2011


Hi Holly,

I looked at ALLOW_EDDYPSI + GMREDI code:

Without compiling gmredi pkg (#undef ALLOW_GMREDI),
things are fine (except that there is no run-time parameter to
decide, at runtime, to use or not taueddy):
with #define ALLOW_EDDYPSI, the model call the 2 S/R 
TAUEDDY_EXTERNAL_FORCING_U & _V to add 
    f*d.eddyPsiX/dz to gU
and f*d.eddyPsiY/dz to gV 
with eddyPsiX,eddyPsiY beeing read from file.

With #define ALLOW_GMREDI & GM_AdvForm=T, we compute GM_PsiX & GM_PsiY
and add eddyPsiX to GM_PsiX and eddyPsiY to GM_PsiY (I don't know
precisely what this means).

And I think that with GM_InMomAsStress=T, the U,V or psiX,psiY
component are switched and therefore wrong (+ may be a sign error in
or 1 of the 2):
since: (GM_PsiX,GM_PsiY) = K_gm * (Sx,Sy) (with Sx,Sy the 2 components
of the slope),
we should add to gU:
 -f*d.GM_psiY/dz
and to gV:
 +f*d.GM_psiX/dz
(since in the GM-advective form, U_bolus= -d.GM_psiX/dz and 
 V_bolus = -d.GM_psiY/dz, and in the limit of Geostrophic balance
the 2 should match)
but instead we do the same thing as for eddyPsiX,eddyPsiY 
(as written above). If we want to fix this, changing sign and switching
psiX <-> psiY is not enough since the locations on the grid don't match.

In conclusion: the GM_InMomAsStress code have some serious problems
but the stop in gmredi_check.F is not right (should be only if 
GM_InMomAsStress=T) and I am going to change this.

There are also few combinations that should have a stop, such as:
a) GM_AdvForm=T & GM_InMomAsStress=T but #undef ALLOW_EDDYPSI :
   in this case, GM is dropped (even if GM_background_K > 0).
b) #define ALLOW_EDDYPSI and #define ALLOW_GMREDI but useGMRedi=F
  In this case, if we are lucky, we don't get the contributions from 
  taueddy_external_forcing (eddyPsiX,eddyPsiY are ignored) whereas we do get
  them if ALLOW_GMREDI is undef ; and if the are not lucky, since 
  GM_InMomAsStress is not initialised, it might be =T 
  and then uninitialized GM_psiX,Y are added to gU,gV (might give random 
  results).

This might be a reason to keep #undef ALLOW_EDDYPSI if you are not
using it (again, since there is not runtime parameter to control this).

Cheers
Jean-Michel

On Tue, Feb 08, 2011 at 12:23:36PM -0500, Jean-Michel Campin wrote:
> Hi Holly,
> 
> I am going to check this (but I remember that there was a 
> serious problem related to this piece of code, but
> not sure which part is safe to use).
> 
> Cheers,
> Jean-Michel
> 
> On Tue, Feb 08, 2011 at 11:48:42AM -0500, Holly Dail wrote:
> > Jean-Michel -
> > 
> > I've just updated to checkpoint 62R, and my simple forward run now fails because I am using GMREDI and have ALLOW_EDDYPSI set in my CPP_OPTIONS.h.  The following code in gmredi_check.F causes a failure in this configuration; this code is a new checkin from you, and I'm wondering if you could explain why EDDYPSI should not be compatible with GMREDI and/or how I should proceed ... many other places in GMREDI assume the possibility of having EDDYPSI set.  
> > 
> > 161    #ifdef ALLOW_EDDYPSI 
> > 162           WRITE(msgBuf,'(A)') 
> > 163         &   ' GMREDI_CHECK: Bug in ALLOW_EDDYPSI + GM-Redi' 
> > 164           CALL PRINT_ERROR( msgBuf, myThid ) 
> > 165           STOP 'ABNORMAL END: S/R GMREDI_CHECK' 
> > 166    #endif
> > 
> > Thanks for the help!
> > Holly
> > _______________________________________________
> > MITgcm-devel mailing list
> > MITgcm-devel at mitgcm.org
> > http://mitgcm.org/mailman/listinfo/mitgcm-devel
> 
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel



More information about the MITgcm-devel mailing list