[MITgcm-support] Bryan-Lewis vertical diffusivity for passive tracers

Martin Losch Martin.Losch at awi.de
Mon Sep 14 03:15:45 EDT 2009

Hi David,

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,
>      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  
> latter,
>      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!
> David
> -- 
> turn and live.
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support

More information about the MITgcm-support mailing list