[MITgcm-devel] iMin, iMax, jMin, and jMax in EXTERNAL_FORCING_T

Jean-Michel Campin jmc at ocean.mit.edu
Fri Jan 29 12:57:45 EST 2010


Hi Dimitris,

On Fri, Jan 29, 2010 at 08:07:29AM -0800, Dimitris Menemenlis wrote:
> Jean-Michel thanks for getting back.
> 
> Can I rephrase my question a little differently then:
> What is the correct range for EXTERNAL_FORCING_T computations?
> 
> The i-j-Min-Max range going in EXTERNAL_FORCING_T is:
>           iMin = 1-OLx+2
>           iMax = sNx+OLx-1
>           jMin = 1-OLy+2
>           jMax = sNy+OLy-1
> 
> Yet most computations (except for OBCS_SPONGE_T) are carried out
> in a smaller domain:
>         iMin = 1
>         iMax = sNx
>         jMin = 1
>         jMax = sNy
> 

I think it's right to set the forcing (T & S) in the interior only,
and when it's needed in some part of the overlap (e.g.: fresh-water
flux when using real-fresh water form), there are exchanges.
For U & V forcing, this is different (see comment inside
external_forcing.F), but we know why.

So, the interesting comes later:
> As far as I can see there is no exchange on gT between
> EXTERNAL_FORCING_T and the application of diffusion terms that follow
> in THERMODYNAMICS.  Is this correct?
can you identify any horizontal diffusion acting on gt ?
There are some subtil stuff with implicit gravity waves, but I think
it's done carefully.
And when a scheme requires valid overlap, e.g. shapiro filter, 
the scheme take care of calling exchanges where needed.

> In adjoint cube-sphere computations, if I squint the right way, I can see
> lines at the tile edges.  I am wondering whether the above discrepancy
> in computation domain could be part of the cause?

All tile eges or only face eges ?
There are ways to check for "discrepancy in computation domain" 
and overlap update problem (e.g., #define DYNAMICS_GUGV_EXCH_CHECK
in dynamics.F, and some DEBUG_CS_CORNER_UV in gad_advection.F),
and you could check by adding an exchange on gT, it should not 
change the solution (with zero compiler optimisation).
The last time we turned-on DYNAMICS_GUGV_EXCH_CHECK was
because of piece of code that got removed under an
#ifndef ALLOW_AUTODIFF

Cheers,
Jean-Michel
> 
> Dimitris
> 
> On Jan 29, 2010, at 7:17 AM, Jean-Michel Campin wrote:
> 
> > Hi Dimitris,
> > 
> > Here is what I think (might not be completly true, but ...)
> > 1) Hard coded loop range can speed-up the compiler optimisation.
> > 2) removing those arguments from the EXTERNAL_FORCING_ S/R 
> > could embarasse people that have their own version of these S/R
> > and I think it's why Alistair was reluctant to change this.
> > 
> > Cheers,
> > Jean-Michel
> > 
> > On Thu, Jan 28, 2010 at 04:02:55PM -0800, Dimitris Menemenlis wrote:
> >> Jean-Michel or Martin, is there a reason why iMin, iMax, jMin, and jMax
> >> are passed to EXTERNAL_FORCING_T but then are ignored?
> >> 
> >> Most computations (with exception of OBCS_SPONGE_T) are carried out in a 1, sNx, 1, sNy domain.
> >> 
> >> In particular, SHELFICE_FORCING_T only applies forcing a 1, sNx, 1, sNy domain.
> >> 
> >> Is this the correct way to proceed?  Thanks, Dimitris
> >> 
> >> 
> >> _______________________________________________
> >> 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
> 
> 
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel



More information about the MITgcm-devel mailing list