[MITgcm-support] How to diagnose the diapycnal diffusivity?

Martin Losch Martin.Losch at awi.de
Mon Jul 16 12:34:47 EDT 2018


Hi David,

good suggestion. 

I have this comment: the beauty of the diagnostics package is, that you only need to define the diagnostic (as in diagnostics_main_init), but ***not*** new global fields. You can call S/R diagnostics_fill directly where you need it. In your example you could (instead of copying KappaRTr to diffKTr) do this:

CALL DIAGNOSTICS_FILL(kappaRTr,'KVDIFF  ',0,Nr,2,bi,bj,myThid)

This "indicates that the bi-bj loop is done OUTSIDE
C                     AND that we have been sent a local array (with overlap regions)
C                     (local array here means that it has no bi-bj dimensions)”
(copied from diagnostics_fill.F)

you could also save kappaRk after temp_integrate, or/and salt_integrate in thermodynamics.F. That’s maybe a little less confusing and you know exactly what you are getting (the temp-diffusivity and the salt-diffusivity).

Martin

> On 16. Jul 2018, at 16:26, David Trossman <david.s.trossman at gmail.com> wrote:
> 
> Hi Yang,
> This is not too bad.  I'll give explicit instructions.  First, declare a global variable, diffKTr, (along with diffKr, which is just the background, not total, vertical diffusivity, I believe) in DYNVARS.h:
> 
>       COMMON /DYNVARS_DIFFKR/
>      &                       diffKr, diffKTr
>       _RL  diffKr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
>       _RL  diffKTr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
> 
> Then add the following lines of code to calc_3d_diffusivity.F to fill that global array with the total vertical diffusivity:
> 
>       DO j = 1-OLy, sNy+OLy
>        DO i = 1-OLx, sNx+OLx
>         diffKTr(i,j,k,bi,bj) = KappaRTr(i,j,k)
>        ENDDO
>       ENDDO
> 
> Then add the following code to diagnostics_main_init.F to add the vertical diffusivity as a diagnostic:
> 
>       diagName  = 'KVDIFF  '
>       diagTitle = 'Vertical diffusivity for tracers  '
>       diagUnits = 'm^2/s           '
>       diagCode  = 'SM      LR      '
>         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
>      I          diagName, diagCode, diagUnits, diagTitle, 0, myThid )
> 
> Then add the following lines of code to diagnostics_fill_state.F to fill that diagnostic:
> 
>         IF ( DIAGNOSTICS_IS_ON('KVDIFF  ',myThid) ) THEN
>          DO bj = myByLo(myThid), myByHi(myThid)
>           DO bi = myBxLo(myThid), myBxHi(myThid)
>            DO k=1,Nr
>             DO j = 1,sNy
>              DO i = 1,sNx+1
>                tmpMk(i,j,k,bi,bj) = diffKTr(i,j,k,bi,bj)
>              ENDDO
>             ENDDO
>            ENDDO
>           ENDDO
>          ENDDO
>          CALL DIAGNOSTICS_FILL(tmpMk,'KVDIFF  ',0,Nr,0,1,1,myThid)
>         ENDIF
> 
> Finally, add the following lines to input/data.diagnostics (change the frequency or output file number if you need to):
> 
>   frequency(18) = 2635200.0,
>    fields(1:2,18) = 'KVDIFF  ','GM_Kwz  '
>    filename(18) = 'diags/kappa_3d_set1',
> 
> In the output files, diags/kappa_3d_set1*, you just need to subtract the second field (GM_Kwz) from the first (KVDIFF) to get the diapycnal diffusivity.  That's my understanding.
> -David
> 
> On Mon, Jul 16, 2018 at 7:39 AM, 钱钰坤 <qianyk at mail3.sysu.edu.cn> wrote:
> Hi Yang,
>  
> So far as I know, GM parameterization is an adiabatic scheme, which means that this parameterization do not change water properties (e.g., density).  You can read their paper in 1995 which showed that GM scheme is effectively an advection rather than diffuion.  So neither GM90 nor GM_VisbK (Visbeck et al. 1997) is diapycnal.
>  
> In MITgcm, diagnosing diapycnal diffusion is not straightforward as it is a z-coordinate model.  But you can use the resorting method by Griffies et al. (2000) to diagnose the 'effective' diapycnal diffusivity.  Effective means those processes act to homogenize water density, such as the explicit diapycnal diffusivity you set in the model (diffKr), spurious numerical diffusivity associated with advection scheme, those caused by other parameterizations (e.g., KPP, tidal mixing) etc.
>  
> You can refer to Griffies's paper for details.  Hope this helps.
>  
> References:
> Griffies, S. M., R. C. Pacanowski, and R. W. Hallberg, 2000: Spurious Diapycnal Mixing Associated with Advection in a z-Coordinate Ocean Model. Mon. Wea. Rev., 128, 538-564.
> Visbeck, M., J. Marshall, and T. Haine, 1997: Specification of Eddy Transfer Coefficients in Coarse-Resolution Ocean Circulation Models. J. Phys. Oceanogr., 27, 381-402.
>  
>  
> 
> ------------------
> Best regards 
> 
> Yu-Kun Qian (钱钰坤) 
> Center for Monsoon and Environment Research
> Department of Atmospheric Sciences
> School of Environmental Science and Engineering 
> Sun Yat-sen University 
> No. 135 Xingang West Road, Haizhu District 
> Guangzhou, 510275, P.R. China 
> Tel; 020-84115227 
> Email: qianyk at mail3.sysu.edu.cn
>  
>  
>  
>  
>  
> ------------------ 原始邮件 ------------------
> 发件人: "yzb"<853245241 at qq.com>;
> 发送时间: 2018年7月16日(星期一) 晚上8:23
> 收件人: "mitgcm-support"<mitgcm-support at mitgcm.org>;
> 主题: Re: [MITgcm-support] How to diagnose the diapycnal diffusivity?
>  
> Thank you. It really helps me. I will read the document carefully.
> 
> 
> ------------------ Original ------------------
> From:  "Martin Losch"<Martin.Losch at awi.de>;
> Date:  Mon, Jul 16, 2018 08:20 PM
> To:  "MITgcm Support"<mitgcm-support at mitgcm.org>;
> Subject:  Re: [MITgcm-support] How to diagnose the diapycnal diffusivity?
> 
> As far as I know, the parameters \kappa_{\rho} and \kappa_{GM} are constant parameters that you specify in data.gmredi (from GMREDI.h:
> C     GM_isopycK       :: Isopycnal diffusivity [m^2/s] (Redi-tensor)
> C     GM_background_K  :: Thickness diffusivity [m^2/s] (GM bolus transport)
> ). You  can have variable \kappa_{GM} (documentation: <https://mitgcm.readthedocs.io/en/latest/phys_pkgs/gmredi.html#variable> ), but you need to turn it on explicitly with the appropriate CPP- and runtime-flags, and then GM_VisbK is the approriate diagnostics for this particular version of variable \kappa_{GM}.
> In recent code, there are all sorts of other options that I am not familiar with, but they maybe worth exploring.
> 
> Martin
> 
> 
> > On 16. Jul 2018, at 13:57, yzb <853245241 at qq.com> wrote:
> > 
> > 
> > Thanks for you reply. Sorry for the confusion of my question. This is something I should have written more about the diapycnal diffusivity. The diffusivity I want to calculate is the diapycnal mixing ( ,unit is m^2/s), maybe can be regarded as eddy coefficient. I am not sure the  which is in the Gmredi pkg can be represented for it. There is a diagnostics option in Gmredi pkg which is called 'GM_VisbK' and this may be relate to my question.
> > 
> > ------------------ Original ------------------
> > From:  "Martin Losch"<Martin.Losch at awi.de>;
> > Date:  Mon, Jul 16, 2018 07:35 PM
> > To:  "MITgcm Support"<mitgcm-support at mitgcm.org>;
> > Subject:  Re: [MITgcm-support] How to diagnose the diapycnal diffusivity?
> > 
> > Yang,
> > 
> > when you run your model with a default debugLevel (=1), then you’ll a file called “available_diagnostics.log”, that will show you all diagnostics for your particular configuration. If you have turned on GM (useGMredi=.TRUE. in data.pkg), then you the GM-diagnostics should be part of that list. I am not sure if there is a diagnostic for diapycnal diffusivity (do you mean diffusive flux?) …
> > 
> > Martin
> > 
> > > On 16. Jul 2018, at 11:12, yzb <853245241 at qq.com> wrote:
> > > 
> > > Hello,
> > > 
> > >      I want to diagnose the diapycnal diffusivity directly from model. But I don't know the diagnostic name of it. Could anyone tell me the diagnostic name? Meanwhile, I found the package of Gmredi may contain this diagnosis. If so, what's the diagnostic name in that package? 
> > > 
> > >     Thanks,
> > >     Yang
> > > _______________________________________________
> > > MITgcm-support mailing list
> > > MITgcm-support at mitgcm.org
> > > http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> > 
> > _______________________________________________
> > MITgcm-support mailing list
> > MITgcm-support at mitgcm.org
> > http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> > _______________________________________________
> > MITgcm-support mailing list
> > MITgcm-support at mitgcm.org
> > http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> 
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> 
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> 
> 
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support



More information about the MITgcm-support mailing list