[MITgcm-support] Re: viscosity questions

Baylor Fox-Kemper baylor at MIT.EDU
Mon Jun 26 10:34:49 EDT 2006


Hi Gianmaria (and mitgcm_support for others who may be interested in  
how to set viscosities initially),
   The viscosity code has been very stable for the hydrostatic part  
of the code for a while now.  Unless you are intending to run the  
nonhydrostatic version (which will probably not do anything at 1/8th  
degree), then you should be OK with the month-old version.  I am  
pretty sure we had all the bugs out by checkpoint57x or later.  If  
you want to use the nonhydrostatic version, you will need to upgrade  
to the most recent CVS check-in.
   I have a few suggestions as to how to get started.  If you want to  
use KPP and GMREDI for diffusion and minimize across-isopycnal  
diffusion, I'd use the 30 advection scheme or the flux-limited 33  
advection scheme and eliminate all diffKhT and diffK4T.  That should  
be stable, and while there will be cross-ispycnal implicit mixing due  
to the advection scheme, it should be as small as possible.

With these schemes, you should be careful to turn on the diagnostics:
   86 |ADVx_TH | 40 |UU   087MR      |degC.m^3/s      |Zonal       
Advective Flux of Pot.Temperature
   87 |ADVy_TH | 40 |VV   086MR      |degC.m^3/s      |Meridional  
Advective Flux of Pot.Temperature

   (if you're using salt)
   93 |ADVx_SLT| 40 |UU   094MR      |psu.m^3/s       |Zonal       
Advective Flux of Salinity
   94 |ADVy_SLT| 40 |VV   093MR      |psu.m^3/s       |Meridional  
Advective Flux of Salinity

   89 |DIFx_TH | 40 |UU   090MR      |degC.m^3/s      |Zonal       
Diffusive Flux of Pot.Temperature
   90 |DIFy_TH | 40 |VV   089MR      |degC.m^3/s      |Meridional  
Diffusive Flux of Pot.Temperature

   96 |DIFx_SLT| 40 |UU   097MR      |psu.m^3/s       |Zonal       
Diffusive Flux of Salinity
   97 |DIFy_SLT| 40 |VV   096MR      |psu.m^3/s       |Meridional  
Diffusive Flux of Salinity
   And the equivalent ones for ptracers if you're using ptracers.   
You will not be able to easily reconstruct what the advection of the  
model was doing otherwise.

   As far as viscosity, you should probably be using a Leith  
viscosity at 1/8th degree, and you can experiment with whether using  
LeithD is an improvement (often it reduces noise in W and may make  
your time-steps able to be bigger).  You could also try Leith 
+Smagorinsky which is a bit more theoretically satisfying, but may  
not have the full numerical advantages of LeithD.  You may want to  
turn on the diagnostics:
  101 |VISCAHD | 40 |SM      MR      |m^2/s           |Harmonic  
Viscosity Coefficient (m2/s) (Div Pt)
Which will let you know what value of viscosity was being used.

Here'e the basic way of setting up the model.  These are testing  
runs, so you don't have to get everything else right to get these  
right.  Also, you don't have to spin up too long, since the  
barotropic flow will spin up quickly O(a year), and getting the rough  
tuning right should be ok without a spun-up baroclinic flow.

Setup #1:
Leith Only:
1) Set vishAhGridMax=1 (or maybe 0.5 to be safe, no real difference  
there.)
2) Set viscC2Leith=1.
3) All other viscosities will default to zero (or you could set them  
to a tiny value if you like).
4) Do a trial run and look at the output.  Pay particular attention  
to the boundary currents.  Is their width acceptable?  You may want  
to look at the diagnostics:
   132 |Um_Diss | 40 |UU   133MR      |m/s^2           |U momentum  
tendency from Dissipation
   133 |Vm_Diss | 40 |VV   132MR      |m/s^2           |V momentum  
tendency from Dissipation
   134 |Um_Advec| 40 |UU   135MR      |m/s^2           |U momentum  
tendency from Advection terms
   135 |Vm_Advec| 40 |VV   134MR      |m/s^2           |V momentum  
tendency from Advection terms
In theory, the advective part should dominate over most of the  
domain, but in a few regions the dissipation terms may be important.   
Also, look for regions where the field is checkerboard patterned.   
You may want to look at W (which will be the noisiest).
5) Change viscC2Leith up or down a bit to improve. Go to 4)

Setup #2:
Leith+LeithD (May be necessary if checkerboard noise in W doesn't go  
away with Leith above, may also make larger timesteps possible).
1) Set vishAhGridMax=1 (or maybe 0.5 to be safe, no real difference  
there.)
2) Set viscC2Leith=viscC2LeithD=1.
3) All other viscosities will default to zero (or you could set them  
to a tiny value if you like).
4) Do a trial run and look at the output.  You may want to check out  
the viscosities:
   113 |VAHDLTH | 40 |SM      MR      |m^2/s           |Leith Harm  
Visc Coefficient (m2/s) (Div Pt)
   117 |VAHDLTHD| 40 |SM      MR      |m^2/s           |LeithD Harm  
Visc Coefficient (m2/s) (Div Pt)
5) Change viscC2Leith and viscC2LeithD keeping them equal. Go to 4)

Setup #3:
Leith+Smagorinsky (Perhaps the most 'physical', but maybe overly  
complicated or computer-time consuming)
1) Set vishAhGridMax=1 (or maybe 0.5 to be safe, no real difference  
there.)
2) Set viscC2Leith=viscC2Smag=1.
3) All other viscosities will default to zero (or you could set them  
to a tiny value if you like).
4) Do a trial run and look at the output.  You may want to focus on  
the ratio of the viscosities from the diagnostic:
    113 |VAHDLTH | 40 |SM      MR      |m^2/s           |Leith Harm  
Visc Coefficient (m2/s) (Div Pt)
    121 |VAHDSMAG| 40 |SM      MR      |m^2/s           |Smagorinsky  
Harm Visc Coefficient (m2/s) (Div Pt)
Is either one doing most of the work?  Are regions that appear overly  
viscous dominated by one or the other?
5) Change viscC2Leith and viscC2Smag, but there is no reason to keep  
them equal. Go to 4)


Other considerations.
Biharmonic Viscosities:  You may prefer biharmonic viscosities (I  
personally don't).  Just do the same as above, except with  
ViscA4Gridmax and viscC4leith, etc.  If you are unable to eliminate  
checkerboard patterns with algorithms above, you can use biharmonic  
and harmonic simultaneously, e.g. viscC2leith=1, viscC4leith=0.1.   
This should add a bit of biharmonic at the gridscale.

Background constant:  You can also set a background constant  
viscosity (viscAh) or one that scales with resolution (viscAhgrid).   
These will get added to the above.  This might  be useful if you want  
to ensure that a particular boundary layer width (e.g., L_Munk= 
(viscAh/beta)^(1/3)) is resolved (approximately L_Munk=2*deltaX).

Boundary Conditions:  You can use either no_slip_sides=.true.  
or .false. with all of the above viscosities,  This will depend on  
you simulation, and what the results look like.  There are very  
important physical considerations as well (see, e.g., Fox-Kemper JPO  
2005).

Vertical Viscosities;  Currently, the vertical viscosities are  
independent of the considerations above.  Someday I hope to have a  
Smagorinsky-scaled vertical viscosity, but it's not done yet.  So,  
set you viscAr=1e-4 m^2/s or your favorite value, and carry on.  You  
will also need to decide on whether you will have no_slip_bottom and  
additional bottomDragLinear  or bottomDragQuadratic.  The latter can  
be useful in limiting the inverse cascade in models with flat bottoms.

I think that's pretty much it.
    Cheers,
      -Baylor










More information about the MITgcm-support mailing list