Skip to content

Commit

Permalink
Quentin 12/09/2023: add LVERLIMUP vertical limitation of updraft corr…
Browse files Browse the repository at this point in the history
…ection (issue #38)
  • Loading branch information
QuentinRodier committed Dec 18, 2023
1 parent 71a5fad commit d2f9419
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
10 changes: 8 additions & 2 deletions src/common/turb/modd_param_mfshalln.F90
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ MODULE MODD_PARAM_MFSHALL_n
!
LOGICAL :: LTHETAS_MF !< .TRUE. to use ThetaS1 instead of ThetaL
REAL :: XLAMBDA_MF !< Thermodynamic parameter: Lambda to compute ThetaS1 from ThetaL
LOGICAL :: LVERLIMUP !< .TRUE. to use correction on vertical limitation of updraft (issue #38 PHYEX)

END TYPE PARAM_MFSHALL_t

Expand Down Expand Up @@ -119,13 +120,15 @@ MODULE MODD_PARAM_MFSHALL_n
LOGICAL, POINTER :: LTHETAS_MF=>NULL()
REAL, POINTER :: XLAMBDA_MF=>NULL()
LOGICAL, POINTER :: LGZ=>NULL()
REAL, POINTER :: XGZ=>NULL()
REAL, POINTER :: XGZ=>NULL()
LOGICAL, POINTER :: LVERLIMUP=>NULL()
!
NAMELIST/NAM_PARAM_MFSHALLn/XIMPL_MF,CMF_UPDRAFT,CMF_CLOUD,LMIXUV,LMF_FLX,&
XALP_PERT,XABUO,XBENTR,XBDETR,XCMF,XENTR_MF,&
XCRAD_MF,XENTR_DRY,XDETR_DRY,XDETR_LUP,XKCF_MF,&
XKRC_MF,XTAUSIGMF,XPRES_UV,XALPHA_MF,XSIGMA_MF,&
XFRAC_UP_MAX,XA1,XB,XC,XBETA1,XR,LTHETAS_MF,LGZ,XGZ
XFRAC_UP_MAX,XA1,XB,XC,XBETA1,XR,LTHETAS_MF,LGZ,XGZ,&
LVERLIMUP
!
!-------------------------------------------------------------------------------
!
Expand Down Expand Up @@ -176,6 +179,7 @@ SUBROUTINE PARAM_MFSHALL_GOTO_MODEL(KFROM, KTO)
XLAMBDA_MF=>PARAM_MFSHALL_MODEL(KTO)%XLAMBDA_MF
LGZ=>PARAM_MFSHALL_MODEL(KTO)%LGZ
XGZ=>PARAM_MFSHALL_MODEL(KTO)%XGZ
LVERLIMUP=>PARAM_MFSHALL_MODEL(KTO)%LVERLIMUP
!
ENDIF
!
Expand Down Expand Up @@ -285,6 +289,8 @@ SUBROUTINE PARAM_MFSHALLN_INIT(HPROGRAM, TFILENAM, LDNEEDNAM, KLUOUT, &
XLAMBDA_MF=0.
LGZ=.FALSE.
XGZ=1.83 ! between 1.83 and 1.33
LVERLIMUP=.FALSE.
IF(HPROGRAM=='MESONH') LVERLIMUP=.TRUE.
ENDIF
!
!* 2. NAMELIST
Expand Down
16 changes: 13 additions & 3 deletions src/common/turb/mode_compute_updraft.F90
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ SUBROUTINE COMPUTE_UPDRAFT(D,CST,NEBN,PARAMMF,TURBN,CSTURB, &
REAL, DIMENSION(D%NIJT) :: ZSURF
REAL, DIMENSION(D%NIJT,D%NKT) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear
!
REAL, DIMENSION(D%NIJT,D%NKT) :: ZWK
REAL, DIMENSION(D%NIJT,D%NKT) :: ZWK, KDEPTH
REAL, DIMENSION(D%NIJT,16) :: ZBUF
!
REAL(KIND=JPHOOK) :: ZHOOK_HANDLE
Expand Down Expand Up @@ -672,14 +672,24 @@ SUBROUTINE COMPUTE_UPDRAFT(D,CST,NEBN,PARAMMF,TURBN,CSTURB, &
DO JIJ=IIJB,IIJE
PDEPTH(JIJ) = MAX(0., PZZ(JIJ,KKCTL(JIJ)) - PZZ(JIJ,KKLCL(JIJ)) )
END DO

IF(PARAMMF%LVERLIMUP) THEN
DO JK=1,IKT
DO JIJ=IIJB,IIJE
KDEPTH(JIJ,JK) = MIN(MAX(0., PZZ(JIJ,JK) - PZZ(JIJ,KKLCL(JIJ)) ), PDEPTH(JIJ))
END DO
END DO
END IF
!$mnh_expand_array(JIJ=IIJB:IIJE)
GWORK1(IIJB:IIJE)= (GTESTLCL(IIJB:IIJE) .AND. (PDEPTH(IIJB:IIJE) > ZDEPTH_MAX1) )
!$mnh_end_expand_array(JIJ=IIJB:IIJE)
DO JK=1,IKT
!$mnh_expand_array(JIJ=IIJB:IIJE)
GWORK2(IIJB:IIJE,JK) = GWORK1(IIJB:IIJE)
ZCOEF(IIJB:IIJE,JK) = (1.-(PDEPTH(IIJB:IIJE)-ZDEPTH_MAX1)/(ZDEPTH_MAX2-ZDEPTH_MAX1))
IF(PARAMMF%LVERLIMUP) THEN
ZCOEF(IIJB:IIJE,JK) = (1.-(KDEPTH(IIJB:IIJE,JK)-ZDEPTH_MAX1)/(ZDEPTH_MAX2-ZDEPTH_MAX1))
ELSE
ZCOEF(IIJB:IIJE,JK) = (1.-(PDEPTH(IIJB:IIJE)-ZDEPTH_MAX1)/(ZDEPTH_MAX2-ZDEPTH_MAX1))
END IF
ZCOEF(IIJB:IIJE,JK)=MIN(MAX(ZCOEF(IIJB:IIJE,JK),0.),1.)
!$mnh_end_expand_array(JIJ=IIJB:IIJE)
ENDDO
Expand Down

0 comments on commit d2f9419

Please sign in to comment.