[MITgcm-support] Temperature undershoots using scheme 77 and GM

Oliver Jahn jahn at MIT.EDU
Tue May 19 12:42:38 EDT 2009


Christopher,

David is right, this might help.  And, just to make this clear: the 
undershoots are not a bug in the code, but a property of OS7MP.  It does 
not preserve extrema (at least not in more than 1 dimension).

To enable the hack also for temperature, you will have to remove the test 
for GAD_TEMPERATURE from the lines

       IF (tracerIdentity.NE.GAD_TEMPERATURE .AND.
      &    tracerIdentity.NE.GAD_SALINITY) THEN

But you will have to make some changes to the following code too.  Right 
now, the hack ensures that the tracer does not go negative.  You'd have to 
change this to some other minimum value for temperature.  You'd probably 
have to pick some fixed value.  The hach does not generally avoid the 
generation of new extrema.

I am not sure, though, that this is the best thing to do in your case. 
The way the hack works is that it modifies the fluxes generated by 
isopycnal mixing: it reduces the outgoing fluxes as much as necessary to 
avoid undershoots (under zero or whatever value you change this to).  This 
will introduce some extra diffusion, which might ruin your study.

Cheers,
Oliver


On Mon, 18 May 2009, David Ferreira wrote:

> Christopher,
> Don't think anyone answered to you... In any case,  you should look at
> the option:
> #define  GAD_SMOLARKIEWICZ_HACK in GAD_OPTIONS.h
> (there a clear comment coming with it)
> I used it for a couple of passive tracers going negative, and it worked fine.
> You'll need to  edit gad_calc_rhs.F to change the tracer number to apply it 
> to
> temperature (and/or salinity).
> Cheers,
> david
>
>
>
> Christopher L. Wolfe wrote:
>> Hi all,
>> 
>> I'm running a low resolution (dx = 80 km) basin scale model and I'm finding 
>> that my abyss is getting filled with water that's colder than any surface 
>> water by .001 to .01 degrees. I'm using a linear equation of state, no 
>> salt, no sea-ice, nothing fancy. I'm using advection scheme 77 and GM in 
>> skew-flux form. Scheme 77 is not supposed to be able to generate local 
>> interior maxima and GM is not supposed to be able to create new water 
>> masses, so I'm at a loss as to what's causing the undershoots. The problem 
>> seems to get worse at low diffusivities. I use small (1e-5) isotropic 
>> Laplacian diffusivity, which would be unstable if I wasn't using a flux 
>> limiter ... but I am. I run a high-resolution version of the model with 
>> everything the same but no GM and don't get any undershoots, so I suspect 
>> GM.
>> 
>> Any thoughts as to what could be causing these undershoots?
>> 
>> I'm using the latest version of the OS7MP scheme. My data and data.gmredi 
>> files are included below.
>> 
>> Thanks,
>> Christopher
>> 
>> data:
>> # ====================
>> # | Model parameters |
>> # ====================
>> #
>> # Continuous equation parameters
>>  &PARM01
>>  tRef=-9.9, -9.9, -9.9, -9.9, -9.9, -9.9, -9.9
>>       -9.9, -9.9, -9.9, -9.9, -9.9, -9.9, -9.9
>>       -9.9, -9.9, -9.9, -9.9, -9.9, -9.9,
>>  viscAh=10E3,
>>  viscAz=0.25E-3,
>>  no_slip_sides=.TRUE.,
>>  no_slip_bottom=.FALSE.,
>>  diffK4T=0.E9,
>>  diffKhT=0.8E-4,
>>  diffKzT=0.8E-4,
>>  f0=-1.3683e-04,
>>  beta=3.4208e-11,
>>  tAlpha=2.E-4,
>>  sBeta =0.,
>>  gravity=10.,
>>  rhoConst=1000.,
>>  rhoNil=1000.,
>>  heatCapacity_Cp=3900.,
>>  rigidLid=.FALSE.,
>>  implicitFreeSurface=.TRUE.,
>>  saltAdvection=.FALSE.,
>>  saltForcing=.FALSE.,
>>  saltStepping=.FALSE.,
>>  eosType='LINEAR',
>>  nonHydrostatic=.FALSE.,
>>  momAdvection=.TRUE.,
>>  implicitViscosity=.TRUE.,
>>  implicitDiffusion=.TRUE.,
>>  ivdc_kappa=10.,
>>  readBinaryPrec=64,
>>  tempAdvScheme=7,
>>  staggerTimeStep=.TRUE.,
>>  bottomDragLinear=1.1135E-3,
>>  debugLevel=-1,
>>  useJamartWetPoints=.TRUE.,
>>  useSingleCpuIo=.TRUE.,
>>  &
>> 
>> # Elliptic solver parameters
>>  &PARM02
>>  cg2dMaxIters=400,
>>  cg2dTargetResidual=4.E-7,
>>  cg3dMaxIters=400,
>>  cg3dTargetResidual=4.E-7,
>>  &
>> 
>> # Time stepping parameters
>>  &PARM03
>>  nIter0=0,
>>  nTimeSteps=3155760,
>>  deltaT=4000,
>>  abEps=0.1,
>> # write out every 50 years
>>  pChkptFreq=1.57788e9,
>>  chkptFreq=1.57788e8,
>>  dumpFreq=1.57788e9,
>>  monitorFreq=1.57788e7,
>>  tauThetaClimRelax=764400.,
>>  cAdjFreq=0,
>>  pickupStrictlyMatch=.FALSE.,
>>  &
>> 
>> # Gridding parameters
>>  &PARM04
>>  usingCartesianGrid=.TRUE.,
>>  usingSphericalPolarGrid=.FALSE.,
>>  dXspacing=80.e3,
>>  dYspacing=80.e3
>>  delZ=  12.0505,  14.9159,  18.4328,  22.7337,  27.9692,
>>         34.3067,  41.9245,  51.0025,  61.7057,  74.1598,
>>         88.4181, 104.4189, 121.9376, 140.5412, 159.5568,
>>        178.0710, 194.9769, 209.0770, 219.2372, 224.5642
>>  &
>> 
>> # Input datasets
>>  &PARM05
>>  thetaClimFile='N85_SST.bin',
>>  bathyFile='topo_two_noeddy.bin',
>>  zonalWindFile='windx_two.weakeq',
>>  meridWindFile=,
>>  &
>> 
>> 
>> data.gmredi:
>>  &GM_PARM01
>>   GM_background_K    = 0.9e+3,
>>   GM_taper_scheme    = 'gkw91',
>>   GM_maxSlope        = 1.e-2,
>>   GM_Kmin_horiz      = 50.,
>>   GM_Scrit           = 4.e-3,
>>   GM_Sd              = 1.e-3,
>>  &
>> 
>> 
>> _______________________________________________
>> MITgcm-support mailing list
>> MITgcm-support at mitgcm.org
>> http://mitgcm.org/mailman/listinfo/mitgcm-support
>
>
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support
>



More information about the MITgcm-support mailing list