[MITgcm-support] Re: viscosity questions
Baylor Fox-Kemper
baylor at MIT.EDU
Thu Jul 6 16:24:53 EDT 2006
Hi Van Thinh,
4 should be OK. The magnitude of the viscC2Leith is supposed to
set the typical lengthscale of viscous dissipation of relative
vorticity versus the gridscale. A value of 4 should (in theory) mean
that there is a substantial amount of viscous dissipation of
vorticity for lengthscales that are smaller than 4 grid lengths long.
So, 4 should be OK, but a bit on the high side. However,
considering the noise inherent in C-grids, etc., that may be the what
is needed.
There is the issue that the Leith scaling is really only
appropriate for lengthscales *within the inertial cascade of
enstrophy range*, that is, for scales smaller than the typical eddy
scale. Setting the Leith scale to be 1/2 a degree is pushing this
limit a bit, but is probably OK anyway, since the Leith scaling is
only a scaling, and there is potentially a nondimensional factor that
depends upon the discretization, etc. that isn't included. I am
working on clarifying this point, but haven't done all the
simulations necessary to show it yet.
You can check out the validity of the last point in your
particular simulation by comparing the momentum equation
diagnostics. You can check to see whether the viscous and advective
terms are of the same magnitude for only the smallest scale features
in your simulation. There should be 'big eddies' which have larger
advective fluxes than viscous fluxes, and 'gridscale eddies or
gridscale noise' where the viscous and advective terms are of the
same size.
If you really want to get quantitative, you can do a power
spectrum of the viscous tendency terms and of the advective tendency
terms in some subdomain of your simulation where the turbulence is
roughly homogeneous. The length scale at which the viscous flux
divergence spectral density equals the advective spectral density
should be what is tuned by the magnitude of viscC2Leith. Be careful
NOT to include boundary currents in the subdomain...
Cheers,
-Baylor
On Jul 6, 2006, at 3:45 PM, Van Thinh Nguyen wrote:
> Hi Baylor,
>
> In setup #2:
>
> Could you please check again if we can increase
> viscC2Leith=viscC2LeithD up to 4, because I just remembered (I read
> somewhere!) that it can be up to 1.
> By the way, thanks for your mail, it made me clearer to setup for
> Leith & Smagorinsky.
>
> Van Thinh -----------------------------------------------------
>
> On Mon, 26 Jun 2006, Baylor Fox-Kemper wrote:
>
>> 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
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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