From 1ad2e6a188bef0dde836d67ad12de9d82b97009d Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Wed, 27 Jul 2022 12:06:33 +0200 Subject: [PATCH] Quentin 27/07/2022: bugfix LOCEAN non bit-repro : forgot to merge prandtl subroutine --- src/common/turb/mode_prandtl.F90 | 121 ++++++++++++++++++------------- 1 file changed, 72 insertions(+), 49 deletions(-) diff --git a/src/common/turb/mode_prandtl.F90 b/src/common/turb/mode_prandtl.F90 index d11181fbf..1ce0df91b 100644 --- a/src/common/turb/mode_prandtl.F90 +++ b/src/common/turb/mode_prandtl.F90 @@ -261,15 +261,22 @@ IF (.NOT. LHARAT) THEN ! ! 1.3 1D Redelsperger numbers ! -PBLL_O_E(:,:,:) = MZM(XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:), KKA, KKU, KKL) -IF (KRR /= 0) THEN ! moist case - PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * & - & GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ) - PREDR1(:,:,:) = XCTV*PBLL_O_E(:,:,:) * PEMOIST(:,:,:) * & - & GZ_M_W(KKA, KKU, KKL,PRM(:,:,:,1),PDZZ) -ELSE ! dry case - PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ) +IF (OOCEAN) THEN + PBLL_O_E(:,:,:) = MZM(XG *XALPHAOC* PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:),KKA, KKU, KKL ) + PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * GZ_M_W(KKA,KKU,KKL,PTHLM,PDZZ) PREDR1(:,:,:) = 0. +ELSE + PBLL_O_E(:,:,:) = MZM(XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:), KKA, KKU, KKL) + IF (KRR /= 0) THEN ! moist case + PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * & + & GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ) + PREDR1(:,:,:) = XCTV*PBLL_O_E(:,:,:) * PEMOIST(:,:,:) * & + & GZ_M_W(KKA, KKU, KKL,PRM(:,:,:,1),PDZZ) + ELSE ! dry case + PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ) + PREDR1(:,:,:) = 0. + END IF +! END IF ! ! 3. Limits on 1D Redelperger numbers @@ -422,52 +429,68 @@ DO JSV=1,ISV ! ELSE IF (L2D) THEN ! 3D case in a 2D model ! - IF (KRR /= 0) THEN - ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA - ELSE - ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) - END IF - PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1* & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & - GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL), & - KKA, KKU, KKL) -! - IF (KRR /= 0) THEN - PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1 * PEMOIST * & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & - GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL), & - KKA, KKU, KKL) + IF (OOCEAN) THEN + IF (KRR /= 0) THEN + ZW1 = MZM((XG *XALPHAOC * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA + ELSE + ZW1 = MZM((XG *XALPHAOC * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) + END IF ELSE - PRED2RS3(:,:,:,JSV) = 0. + IF (KRR /= 0) THEN + ZW1 = MZM( (XG / PTHVREF * PLM * PLEPS / PTKEM)**2 ) *PETHETA + ELSE + ZW1 = MZM( (XG / PTHVREF * PLM * PLEPS / PTKEM)**2) + END IF + PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & + ZW1* & + MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & + GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL), & + KKA, KKU, KKL) +! + IF (KRR /= 0) THEN + PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & + ZW1 * PEMOIST * & + MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & + GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL), & + KKA, KKU, KKL) + ELSE + PRED2RS3(:,:,:,JSV) = 0. + END IF END IF ! ELSE ! 3D case in a 3D model ! - IF (KRR /= 0) THEN - ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA - ELSE - ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) - END IF - PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1* & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & - GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL) & - +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)* & - GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL), & - KKA, KKU, KKL) -! - IF (KRR /= 0) THEN - PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1 * PEMOIST * & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & - GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL) & - +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)* & - GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL), & - KKA, KKU, KKL) - ELSE - PRED2RS3(:,:,:,JSV) = 0. + IF (OOCEAN) THEN + IF (KRR /= 0) THEN + ZW1 = MZM((XG *XALPHAOC * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA + ELSE + ZW1 = MZM((XG *XALPHAOC * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) + END IF + ELSE + IF (KRR /= 0) THEN + ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA + ELSE + ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) + END IF + PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & + ZW1* & + MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & + GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL) & + +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)* & + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL), & + KKA, KKU, KKL) +! + IF (KRR /= 0) THEN + PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & + ZW1 * PEMOIST * & + MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)* & + GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL) & + +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)* & + GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL), & + KKA, KKU, KKL) + ELSE + PRED2RS3(:,:,:,JSV) = 0. + END IF END IF ! END IF ! end of HTURBDIM if-block -- GitLab