[MITgcm-support] Bryan-Lewis vertical diffusivity for passive tracers
Martin.Losch at awi.de
Mon Sep 14 03:15:45 EDT 2009
I agree that it is a little confusing. To me it looks like the trick
is that calc_3d_diffusivity is called twice.
1. in kpp_calc, where is sets (let's stick with salinity) KPPdiffKzS
(the "background diffusivity", which includes BL79), in the next step
KPPdiffKzS is used to compute to compute vddiff (in kppmix).
vddiff(:,::,2) is the full kpp diffusivity for salinity (including the
background diffusivity, ie.also BL79) and is then copied to
KPPdiffKzS; again, below the actively mixed layer, KPPdiffKzS has not
changed (no contribution from KPP) and is the background diffiusivity.
2. in thermodynamics calc_3d_diffusivity is called to copy KPPdiffKzS
to the work array kappaKr, which accumulates all contributions to the
vertical diffusivity (also e.g. the GMredi contribution). implicity
diffusion is applied with kappaKr
for passive tracers it's the same, except that kpp does not compute
anything for ptracers, but just uses the salinity diffusivity (whether
that's correct is not clear to me, but it's plausible: why should, say
nitrate be mixed by turbulence any differently from salinity), so that
the non-BL79 part of the background diffusivity is removed (-diffKrS)
and replaced by the corresponding part for the ptracer
(+PTRACERS_diffKrNr). It appears a little inconsistent, that you can
have different background diffusivities for salinity and a passive
tracer (keep in mind that these are not the molecular diffusivities,
where it would be necessary), but that the BL79 diffusivities are the
same (they are of the same "quality" as diffKrS, ie, some prescribed
diffusivities based on sparse observations(?) and some plausibility
So in the end, as far as I can see, BL79 is already implemented for
ptracers; the BL79 contribution to vertical diffusivity is just
hardwired to the same values as for temperature and salinity.
On Sep 14, 2009, at 1:24 AM, David Wang wrote:
> Hi there,
> I have been using Bryan and Lewis (1979) type spatially varying
> vertical diffusivity together with pkg/kpp and pkg/gmredi for both
> potential temperature and salinity in my model runs. Now I need to
> put in some passive tracers (with pkg/ptracers) of the same vertical
> diffusivity. I wasn't sure if passive tracers simply inherit that
> from potential temperature and salinity or not. So I looked into the
> code, but was left confused even for the treatment of active tracers.
> The key routine to calculate vertical diffusivity with
> implicitDiffusion on, I believe, is calc_3d_diffusivity.F. In this
> routine, Bryan-Lewis diffusivity and pkg/kpp are apparently mutually
> exclusive, as Bryan-Lewis parameters contribute KappaRTr only when
> trUseKPP is false. This routine is called by both model/src/
> thermodynamics.F and pkg/kpp/kpp_calc.F. In the former,
> CALL CALC_3D_DIFFUSIVITY(
> I bi,bj,iMin,iMax,jMin,jMax,
> I GAD_TEMPERATURE, useGMredi, useKPP,
> O kappaRk,
> I myThid)
> which, since useKPP is true, ignores the Bryan-Lewis contribution,
> but take the kpp contribution (CALL KPP_CALC_DIFF_T); while in the
> CALL CALC_3D_DIFFUSIVITY(
> I bi,bj,1-Olx,sNx+OLx,1-Oly,sNy+OLy,
> I GAD_SALINITY, .FALSE., .FALSE.,
> O KPPdiffKzS(1-Olx,1-Oly,1,bi,bj),
> I myThid)
> which, since the flag is hard-coded false, takes the Bryan-Lewis
> contribution, but ignores the kpp contribution.
> Now it's unclear to me how different contributions to the total
> vertical diffusivity add up (even though for the kpp model output, I
> believe the model correctly adds the kpp contribution upon the Bryan-
> Lewis background values). Without this understanding, I'm not sure I
> can implement Bryan-Lewis diffusivity for passive tracers if it's
> not readily available.
> Any clarification and explanation appreciated!
> turn and live.
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
More information about the MITgcm-support