diff --git a/docs/TODO b/docs/TODO index aed2597c58fc0f29a8d55cb0455ee5bcf6f8fb06..20bd43915bf86048a8e6745ec9cb95268d33fb13 100644 --- a/docs/TODO +++ b/docs/TODO @@ -1,6 +1,5 @@ -LOCEAN: - La clé LOCEAN est dans un module spécifique à Méso-NH (MODD_DYNn). - Une solution serait de créer un module propre à PHYEX qui contiendrait des clés de contrôle de haut niveau +Module de clés namelists PHYEX +Une solution serait de créer un module propre à PHYEX qui contiendrait des clés de contrôle de haut niveau pour la physique (y en a-t-il d'autres?). Ce module serait initialisé dans Méso-NH à partir de la clé actuelle qui est sans doute utilisée ailleurs dans le code de Méso-NH diff --git a/src/arome/aux/mode_ll.F90 b/src/arome/aux/mode_ll.F90 index 58291ba77422036ecd9b200950125a028f023479..27ab8176073f3333edc5ddc7967af45d6fc7f0f2 100644 --- a/src/arome/aux/mode_ll.F90 +++ b/src/arome/aux/mode_ll.F90 @@ -21,6 +21,11 @@ CONTAINS CALL ABORT END SUBROUTINE UPDATE_HALO_ll + SUBROUTINE GET_DIM_EXT_ll(CBORD,IIU,IJU) + IMPLICIT NONE + CHARACTER(LEN=1), INTENT(IN) :: CBORD + INTEGER, INTENT(IN) :: IIU,IJU + END SUBROUTINE GET_DIM_EXT_ll LOGICAL FUNCTION LNORTH_ll() LNORTH_ll=.FALSE. END FUNCTION LNORTH_ll diff --git a/src/arome/ext/aro_turb_mnh.F90 b/src/arome/ext/aro_turb_mnh.F90 index 1125523b7a241cb0ee3597ba9fd9ef844e0e053b..a37f4064f3bb8d4ee7cba40c1d30872c35ce59d0 100644 --- a/src/arome/ext/aro_turb_mnh.F90 +++ b/src/arome/ext/aro_turb_mnh.F90 @@ -207,6 +207,7 @@ LOGICAL :: OTURB_FLX ! switch to write the LOGICAL :: OTURB_DIAG ! switch to write some ! diagnostic fields in the syncronous FM-file LOGICAL :: ORMC01 ! switch for RMC01 lengths in SBL +LOGICAL :: OOCEAN ! switch for OCEAN version of turbulence scheme CHARACTER(LEN=4) :: HTURBDIM ! dimensionality of the ! turbulence scheme @@ -283,6 +284,8 @@ HTURBLEN='BL89' ZIMPL=1. +!Version Ocean du schema de turbulence +OOCEAN=.FALSE. ! tableau a recalculer a chaque pas de temps ! attention, ZDZZ est l'altitude entre deux niveaux (et pas l'�paisseur de la couche) @@ -417,8 +420,8 @@ DO JRR=1, NBUDGET_RI ENDDO CALL TURB (KLEV+2,1,KKL,IMI, KRR, KRRL, KRRI, HLBCX, HLBCY, ISPLIT,IMI, & - & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, & - & HTURBDIM,HTURBLEN,'NONE','NONE',HCLOUD, & + & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,OOCEAN, & + & HTURBDIM,HTURBLEN,'NONE','NONE',HCLOUD, & & ZIMPL, & & 2*PTSTEP,ZTFILE, & & ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY,ZZZ, & diff --git a/src/arome/turb/mode_compute_updraft_rhcj10.F90 b/src/arome/turb/mode_compute_updraft_rhcj10.F90 index b88864cc20b2af9f5e0b26cf36ed004429c16e5c..33f032fb0171347c04c7849b9387751fbedaef69 100644 --- a/src/arome/turb/mode_compute_updraft_rhcj10.F90 +++ b/src/arome/turb/mode_compute_updraft_rhcj10.F90 @@ -254,7 +254,7 @@ ZTKEM_F(:,:) = MZM_MF(PTKEM(:,:), KKA, KKU, KKL) ! This updraft is not yet ready to use scalar variables !DO JSV=1,ISV ! IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) CYCLE -! *** SR merge AROME/Méso-nh: following two lines come from the AROME version +! *** SR merge AROME/Meso-nh: following two lines come from the AROME version ! ZSVM_F(:,KKB:IKU,JSV) = 0.5*(PSVM(:,KKB:IKU,JSV)+PSVM(:,1:IKU-1,JSV)) ! ZSVM_F(:,1,JSV) = ZSVM_F(:,KKB,JSV) ! *** the following single line comes from the Meso-NH version @@ -308,7 +308,7 @@ PRC_UP(:,KKB)=0. PRI_UP(:,KKB)=0. CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,KKB),ZPRES_F(:,KKB), & PTHL_UP(:,KKB),PRT_UP(:,KKB),ZTH_UP(:,KKB), & - PRV_UP(:,KKB),PRC_UP(:,KKB),PRI_UP(:,KKB),ZRSATW(:),ZRSATI(:)) + PRV_UP(:,KKB),PRC_UP(:,KKB),PRI_UP(:,KKB),ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) DO JI=1,IIJU ! compute updraft thevav and buoyancy term at KKB level @@ -417,7 +417,7 @@ DO JK=KKB,KKE-KKL,KKL ZRV_UP(:) =PRV_UP(:,JK) CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,JK),& PPABSM(:,JK),PTHL_UP(:,JK),PRT_UP(:,JK),& - ZTH_UP(:,JK),ZRV_UP,ZRC_UP,ZRI_UP,ZRSATW(:),ZRSATI(:)) + ZTH_UP(:,JK),ZRV_UP,ZRC_UP,ZRI_UP,ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) DO JI=1,IIJU IF (GTEST(JI)) THEN @@ -517,7 +517,7 @@ DO JK=KKB,KKE-KKL,KKL ZRV_UP(:)=PRV_UP(:,JK) CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,JK+KKL),ZPRES_F(:,JK+KKL), & PTHL_UP(:,JK+KKL),PRT_UP(:,JK+KKL),ZTH_UP(:,JK+KKL), & - ZRV_UP(:),ZRC_UP(:),ZRI_UP(:),ZRSATW(:),ZRSATI(:)) + ZRV_UP(:),ZRC_UP(:),ZRI_UP(:),ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) DO JI=1,IIJU IF(GTEST(JI)) THEN diff --git a/src/common/turb/mode_bl89.F90 b/src/common/turb/mode_bl89.F90 index 9208fcb6b61d59f60206b2fac7cbf4d40ba926e0..1a5506d6b4392d4f4d8e4b13fcb363f5b494379a 100644 --- a/src/common/turb/mode_bl89.F90 +++ b/src/common/turb/mode_bl89.F90 @@ -6,7 +6,7 @@ MODULE MODE_BL89 IMPLICIT NONE CONTAINS ! ######spl - SUBROUTINE BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,PTHLM,KRR,PRM,PTKEM,PSHEAR,PLM) + SUBROUTINE BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,PTHLM,KRR,PRM,PTKEM,PSHEAR,PLM,OOCEAN) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ######################################################### @@ -59,7 +59,6 @@ CONTAINS USE MODD_CONF, ONLY: CPROGRAM USE MODD_CST USE MODD_CTURB -USE MODD_DYN_n, ONLY: LOCEAN USE MODD_PARAMETERS USE MODD_PRECISION, ONLY: MNHREAL ! @@ -81,6 +80,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM ! water var. REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKEM ! TKE REAL, DIMENSION(:,:,:), INTENT(IN) :: PSHEAR REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLM ! Mixing length +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! thermodynamical variables PTHLM=Theta at the begining ! !* 0.2 Declaration of local variables @@ -160,7 +160,7 @@ ELSE ZSHEAR (:,JK) = RESHAPE(PSHEAR (:,:,JK),(/ IIU*IJU /) ) ZTKEM (:,JK) = RESHAPE(PTKEM (:,:,JK),(/ IIU*IJU /) ) ZG_O_THVREF(:,JK) = RESHAPE(XG/PTHVREF(:,:,JK),(/ IIU*IJU /) ) - IF (LOCEAN) ZG_O_THVREF(:,JK) = XG * XALPHAOC + IF (OOCEAN) ZG_O_THVREF(:,JK) = XG * XALPHAOC DO JRR=1,KRR ZRM (:,JK,JRR) = RESHAPE(PRM (:,:,JK,JRR),(/ IIU*IJU /) ) END DO diff --git a/src/common/turb/mode_compute_entr_detr.F90 b/src/common/turb/mode_compute_entr_detr.F90 index 7292dbb27978b79346bbe21927af6fac9d536992..beb77265bf68b4538191a2e7f5f47d6940aa96d8 100644 --- a/src/common/turb/mode_compute_entr_detr.F90 +++ b/src/common/turb/mode_compute_entr_detr.F90 @@ -283,7 +283,7 @@ ENDDO CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,ZFRAC_ICE,& PPRE_PLUS_HALF,PTHL_UP,PRT_UP,& ZTHMIX,ZRVMIX,ZRCMIX,ZRIMIX,& - ZRSATW, ZRSATI) + ZRSATW, ZRSATI,OOCEAN=.FALSE.) ZTHV_UP_F2(:) = ZTHMIX(:)*(1.+ZRVORD*ZRVMIX(:))/(1.+PRT_UP(:)) ! Integral buoyancy for cloudy part @@ -360,7 +360,7 @@ ENDDO CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,ZFRAC_ICE,& ZPRE,ZMIXTHL,ZMIXRT,& ZTHMIX,ZRVMIX,PRC_MIX,PRI_MIX,& - ZRSATW, ZRSATI) + ZRSATW, ZRSATI,OOCEAN=.FALSE.) ZTHVMIX(:) = ZTHMIX(:)*(1.+ZRVORD*ZRVMIX(:))/(1.+ZMIXRT(:)) ! Compute cons then non cons. var. of mixture at the flux level KK+KKL with initial ZKIC @@ -369,7 +369,7 @@ ENDDO CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,ZFRAC_ICE,& PPRE_PLUS_HALF,ZMIXTHL,ZMIXRT,& ZTHMIX,ZRVMIX,PRC_MIX,PRI_MIX,& - ZRSATW, ZRSATI) + ZRSATW, ZRSATI,OOCEAN=.FALSE.) ZTHVMIX_F2(:) = ZTHMIX(:)*(1.+ZRVORD*ZRVMIX(:))/(1.+ZMIXRT(:)) !Computation of mean ZKIC over the cloudy part diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90 index acf02a06f740b25605915b3f4dd1fd819cdd04e7..41414ea157c7fd1d5772da28eca198bb52ce4991 100644 --- a/src/common/turb/mode_compute_updraft_raha.F90 +++ b/src/common/turb/mode_compute_updraft_raha.F90 @@ -303,7 +303,7 @@ PRI_UP(:,KKB)=0. CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,KKB),ZPRES_F(:,KKB), & PTHL_UP(:,KKB),PRT_UP(:,KKB),ZTH_UP(:,KKB), & - PRV_UP(:,KKB),PRC_UP(:,KKB),PRI_UP(:,KKB),ZRSATW(:),ZRSATI(:)) + PRV_UP(:,KKB),PRC_UP(:,KKB),PRI_UP(:,KKB),ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) ! compute updraft thevav and buoyancy term at KKB level PTHV_UP(:,KKB) = ZTH_UP(:,KKB)*((1+ZRVORD*PRV_UP(:,KKB))/(1+PRT_UP(:,KKB))) @@ -482,7 +482,7 @@ DO JK=KKB,KKE-KKL,KKL ZRV_UP(:)=PRV_UP(:,JK) CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,JK+KKL),ZPRES_F(:,JK+KKL), & PTHL_UP(:,JK+KKL),PRT_UP(:,JK+KKL),ZTH_UP(:,JK+KKL), & - ZRV_UP(:),ZRC_UP(:),ZRI_UP(:),ZRSATW(:),ZRSATI(:)) + ZRV_UP(:),ZRC_UP(:),ZRI_UP(:),ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) WHERE(GTEST) ZT_UP(:) = ZTH_UP(:,JK+KKL)*PEXNM(:,JK+KKL) ZCP(:) = XCPD + XCL * ZRC_UP(:) diff --git a/src/common/turb/mode_emoist.F90 b/src/common/turb/mode_emoist.F90 index b06579b1f695af14ad4dc9232fcaab9e9b456bee..42e978ae689948613cd12df7360ea1febc2928b9 100644 --- a/src/common/turb/mode_emoist.F90 +++ b/src/common/turb/mode_emoist.F90 @@ -5,7 +5,7 @@ MODULE MODE_EMOIST IMPLICIT NONE CONTAINS -FUNCTION EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) RESULT(PEMOIST) +FUNCTION EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) RESULT(PEMOIST) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ############################################################################ @@ -58,7 +58,6 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK !* 0. DECLARATIONS ! ------------ USE MODD_CST -USE MODD_DYN_n, ONLY : LOCEAN ! IMPLICIT NONE ! @@ -67,6 +66,7 @@ IMPLICIT NONE ! INTEGER :: KRR ! number of moist var. INTEGER :: KRRI ! number of ice var. +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHLM ! Conservative pot. temperature REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM ! Mixing ratios, where @@ -95,7 +95,7 @@ INTEGER :: JRR ! moist loop counter REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('EMOIST',0,ZHOOK_HANDLE) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN IF ( KRR == 0 ) THEN ! Unsalted PEMOIST(:,:,:) = 0. ELSE diff --git a/src/common/turb/mode_etheta.F90 b/src/common/turb/mode_etheta.F90 index 4e3e91fad378230da49f3c590fc0784a50b16144..536133615c743dc04bd48eefeca355fa87992d60 100644 --- a/src/common/turb/mode_etheta.F90 +++ b/src/common/turb/mode_etheta.F90 @@ -5,7 +5,7 @@ MODULE MODE_ETHETA IMPLICIT NONE CONTAINS -FUNCTION ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) RESULT(PETHETA) +FUNCTION ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN) RESULT(PETHETA) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ############################################################################ @@ -57,7 +57,6 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK !* 0. DECLARATIONS ! ------------ USE MODD_CST -USE MODD_DYN_n, ONLY : LOCEAN ! IMPLICIT NONE ! @@ -66,6 +65,7 @@ IMPLICIT NONE ! INTEGER :: KRR ! number of moist var. INTEGER :: KRRI ! number of ice var. +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHLM ! Conservative pot. temperature REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM ! Mixing ratios, where @@ -97,7 +97,7 @@ INTEGER :: JRR ! moist loop counter ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ETHETA',0,ZHOOK_HANDLE) -IF (LOCEAN) THEN ! ocean case +IF (OOCEAN) THEN ! ocean case PETHETA(:,:,:) = 1. ELSE IF ( KRR == 0) THEN ! dry case diff --git a/src/common/turb/mode_prandtl.F90 b/src/common/turb/mode_prandtl.F90 index 41c5a48457292b7e534cbfee0c3a9034c674b971..ec71f8db23686f1b59281dd1ecb8ede1d799eaaa 100644 --- a/src/common/turb/mode_prandtl.F90 +++ b/src/common/turb/mode_prandtl.F90 @@ -22,7 +22,7 @@ IMPLICIT NONE CONTAINS !---------------------------------------------------------------------------- SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OTURB_DIAG, & - HTURBDIM, & + HTURBDIM,OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF,PLOCPEXNM,PATHETA,PAMOIST, & @@ -145,7 +145,6 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE MODD_CST USE MODD_CONF USE MODD_CTURB -USE MODD_DYN_n, ONLY: LOCEAN USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL USE MODD_IO, ONLY: TFILEDATA USE MODD_PARAMETERS @@ -170,6 +169,7 @@ INTEGER, INTENT(IN) :: KRRI ! number of ice var. ! LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some ! diagnostic fields in the syncronous FM-file +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! Kind of turbulence param. TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY @@ -251,8 +251,8 @@ IKE = KKU-JPVEXT_TURB*KKL ILENG=SIZE(PTHLM,1)*SIZE(PTHLM,2)*SIZE(PTHLM,3) ISV =SIZE(PSVM,4) ! -PETHETA(:,:,:) = MZM(ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM), KKA, KKU, KKL) -PEMOIST(:,:,:) = MZM(EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM), KKA, KKU, KKL) +PETHETA(:,:,:) = MZM(ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN), KKA, KKU, KKL) +PEMOIST(:,:,:) = MZM(EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN), KKA, KKU, KKL) PETHETA(:,:,KKA) = 2.*PETHETA(:,:,IKB) - PETHETA(:,:,IKB+KKL) PEMOIST(:,:,KKA) = 2.*PEMOIST(:,:,IKB) - PEMOIST(:,:,IKB+KKL) ! diff --git a/src/common/turb/mode_th_r_from_thl_rt_1d.F90 b/src/common/turb/mode_th_r_from_thl_rt_1d.F90 index e31f5264e61721a46dffe96259072450e047f245..dac94a08991f2b7230a74c267cf6d395a897a808 100644 --- a/src/common/turb/mode_th_r_from_thl_rt_1d.F90 +++ b/src/common/turb/mode_th_r_from_thl_rt_1d.F90 @@ -7,7 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE,PP, & PTHL, PRT, PTH, PRV, PRL, PRI, & - PRSATW, PRSATI, PRR, PRS, PRG, PRH ) + PRSATW, PRSATI, PRR, PRS, PRG, PRH,OOCEAN) ! ################################################################# ! ! @@ -51,7 +51,6 @@ CONTAINS USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE MODD_CST !, ONLY: XP00, XRD, XCPD, XCPV, XCL, XCI, XLVTT, XTT, XLSTT -USE MODD_DYN_n, ONLY : LOCEAN USE MODE_THERMO ! IMPLICIT NONE @@ -60,6 +59,7 @@ IMPLICIT NONE !* 0.1 declarations of arguments ! CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version REAL, DIMENSION(:), INTENT(INOUT) :: PFRAC_ICE REAL, DIMENSION(:), INTENT(IN) :: PP ! Pressure REAL, DIMENSION(:), INTENT(IN) :: PTHL ! thetal to transform into th @@ -126,7 +126,7 @@ ENDDO ! --------- DO II=1,JITER - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZT=PTH ELSE ZT(:)=PTH(:)*ZEXN(:) diff --git a/src/common/turb/mode_th_r_from_thl_rt_2d.F90 b/src/common/turb/mode_th_r_from_thl_rt_2d.F90 index e4292fa121fc7d17360a06e5e625b7630f978487..2ac0c85284102e0ce45d4fa88a97f9fa474e708d 100644 --- a/src/common/turb/mode_th_r_from_thl_rt_2d.F90 +++ b/src/common/turb/mode_th_r_from_thl_rt_2d.F90 @@ -7,7 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TH_R_FROM_THL_RT_2D(HFRAC_ICE,PFRAC_ICE,PP, & PTHL, PRT, PTH, PRV, PRL, PRI, & - PRSATW, PRSATI, PRR, PRS, PRG, PRH ) + PRSATW, PRSATI, PRR, PRS, PRG, PRH,OOCEAN) ! ################################################################# ! ! @@ -67,6 +67,7 @@ REAL, DIMENSION(:,:), INTENT(INOUT):: PRL ! cloud mixing ratio REAL, DIMENSION(:,:), INTENT(INOUT):: PRI ! ice mixing ratio REAL, DIMENSION(:,:), INTENT(OUT) :: PRSATW ! estimated mixing ration at saturation over water REAL, DIMENSION(:,:), INTENT(OUT) :: PRSATI ! estimated mixing ration at saturation over ice +LOGICAL, INTENT(IN) :: OOCEAN ! switch OCEAN version ! !------------------------------------------------------------------------------- @@ -101,7 +102,7 @@ DO JK=1, SIZE(PTHL,2) PTHL(:,JK), PRT(:,JK), PTH(:,JK), & PRV(:,JK), PRL(:,JK), PRI(:,JK), & PRSATW(:,JK), PRSATI(:,JK), & - ZRR(:,JK), ZRS(:,JK), ZRG(:,JK), ZRH(:,JK)) + ZRR(:,JK), ZRS(:,JK), ZRG(:,JK), ZRH(:,JK),OOCEAN) ENDDO IF (LHOOK) CALL DR_HOOK('TH_R_FROM_THL_RT_2D',1,ZHOOK_HANDLE) diff --git a/src/common/turb/mode_th_r_from_thl_rt_3d.F90 b/src/common/turb/mode_th_r_from_thl_rt_3d.F90 index fb42b71011f9b8c3029ad443ec2f3a036ec6caad..1e179b139debd6d2c8e7c57146ba47244e7442ac 100644 --- a/src/common/turb/mode_th_r_from_thl_rt_3d.F90 +++ b/src/common/turb/mode_th_r_from_thl_rt_3d.F90 @@ -7,7 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TH_R_FROM_THL_RT_3D(HFRAC_ICE,PFRAC_ICE,PP, & PTHL, PRT, PTH, PRV, PRL, PRI, & - PRSATW, PRSATI, PRR, PRS, PRG, PRH ) + PRSATW, PRSATI, PRR, PRS, PRG, PRH,OOCEAN) ! ################################################################# ! ! @@ -66,6 +66,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRL ! vapor mixing ratio REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRI ! vapor mixing ratio REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRSATW ! estimated mixing ration at saturation over water REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRSATI ! estimated mixing ration at saturation over ice +LOGICAL, INTENT(IN) :: OOCEAN ! switch OCEAN version ! !------------------------------------------------------------------------------- ! @@ -97,7 +98,7 @@ DO JK=1, SIZE(PTHL,3) PTHL(:,JJ,JK), PRT(:,JJ,JK), PTH(:,JJ,JK), & PRV(:,JJ,JK), PRL(:,JJ,JK), PRI(:,JJ,JK), & PRSATW(:,JJ,JK), PRSATI(:,JJ,JK), & - ZRR(:,JJ,JK), ZRS(:,JJ,JK), ZRG(:,JJ,JK), ZRH(:,JJ,JK)) + ZRR(:,JJ,JK), ZRS(:,JJ,JK), ZRG(:,JJ,JK), ZRH(:,JJ,JK),OOCEAN) ENDDO ENDDO diff --git a/src/common/turb/mode_turb_hor.F90 b/src/common/turb/mode_turb_hor.F90 index 993b60a5539e87e6b164f9d35a9b9e1f73858880..76973ab7a2621f81e5f8adaa901ebd3aa28deaf5 100644 --- a/src/common/turb/mode_turb_hor.F90 +++ b/src/common/turb/mode_turb_hor.F90 @@ -6,7 +6,7 @@ MODULE MODE_TURB_HOR IMPLICIT NONE CONTAINS SUBROUTINE TURB_HOR(KSPLT, KRR, KRRL, KRRI, PTSTEP, & - OTURB_FLX,OSUBG_COND, & + OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & @@ -166,6 +166,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation +LOGICAL, INTENT(IN) :: OOCEAN ! switch for ocean version TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY @@ -265,7 +266,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! IF (KSPLT==1) & CALL TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI, & - OTURB_FLX,OSUBG_COND, & + OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PINV_PDXX,PINV_PDYY, & PDXX,PDYY,PDZZ,PDZX,PDZY, & @@ -355,7 +356,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS PRSVS ) ! IF (KSPLT==1 .AND. LLES_CALL) & - CALL TURB_HOR_SV_CORR(KRR,KRRL,KRRI, & + CALL TURB_HOR_SV_CORR(KRR,KRRL,KRRI,OOCEAN, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PLM,PLEPS,PTKEM,PTHVREF, & PTHLM,PRM, & diff --git a/src/common/turb/mode_turb_hor_splt.F90 b/src/common/turb/mode_turb_hor_splt.F90 index 456abc075e74228bce42073ded8d1a332d760d44..ffdf167115a076217f87fa4455ee8f0cf45a4c30 100644 --- a/src/common/turb/mode_turb_hor_splt.F90 +++ b/src/common/turb/mode_turb_hor_splt.F90 @@ -6,7 +6,7 @@ MODULE MODE_TURB_HOR_SPLT IMPLICIT NONE CONTAINS SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP, & - HLBCX,HLBCY,OTURB_FLX,OSUBG_COND, & + HLBCX,HLBCY,OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & @@ -183,6 +183,7 @@ CHARACTER (LEN=*), DIMENSION(:), INTENT(IN) :: HLBCX,HLBCY LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! condensation TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! @@ -356,7 +357,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN ! ! compute the turbulent tendencies for the small time step CALL TURB_HOR(JSPLT, KRR, KRRL, KRRI, PTSTEP, & - OTURB_FLX,OSUBG_COND, & + OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & @@ -497,7 +498,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN ELSE ! CALL TURB_HOR(1, KRR, KRRL, KRRI, PTSTEP, & - OTURB_FLX,OSUBG_COND, & + OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & diff --git a/src/common/turb/mode_turb_hor_sv_corr.F90 b/src/common/turb/mode_turb_hor_sv_corr.F90 index ef090e0772dea9b5bf82be69c2d855dd9f2169c2..9f559aa8e3c5e4e6fe9b98db9a12c61a104c7def 100644 --- a/src/common/turb/mode_turb_hor_sv_corr.F90 +++ b/src/common/turb/mode_turb_hor_sv_corr.F90 @@ -5,7 +5,7 @@ MODULE MODE_TURB_HOR_SV_CORR IMPLICIT NONE CONTAINS - SUBROUTINE TURB_HOR_SV_CORR(KRR,KRRL,KRRI, & + SUBROUTINE TURB_HOR_SV_CORR(KRR,KRRL,KRRI,OOCEAN, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PLM,PLEPS,PTKEM,PTHVREF, & PTHLM,PRM, & @@ -76,6 +76,7 @@ IMPLICIT NONE INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid var. INTEGER, INTENT(IN) :: KRRI ! number of ice var. +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY ! Metric coefficients REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM ! mixing length @@ -144,7 +145,7 @@ DO JSV=1,NSV ! covariance SvThv ! IF (LLES_CALL) THEN - ZA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) + ZA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN) IF (.NOT. L2D) THEN ZFLX(:,:,:)= PLM(:,:,:) * PLEPS(:,:,:) & * ( GX_M_M(PTHLM,PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX) & @@ -159,7 +160,7 @@ DO JSV=1,NSV CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE. ) ! IF (KRR>=1) THEN - ZA(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) + ZA(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) IF (.NOT. L2D) THEN ZFLX(:,:,:)= PLM(:,:,:) * PLEPS(:,:,:) & * ( GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX) & diff --git a/src/common/turb/mode_turb_hor_thermo_corr.F90 b/src/common/turb/mode_turb_hor_thermo_corr.F90 index f844fbabd7fa660305f976c8797cbecc87c684ea..cd359059e6b87ecaf951a16f2ccc3888aac14db3 100644 --- a/src/common/turb/mode_turb_hor_thermo_corr.F90 +++ b/src/common/turb/mode_turb_hor_thermo_corr.F90 @@ -7,7 +7,7 @@ MODULE MODE_TURB_HOR_THERMO_CORR IMPLICIT NONE CONTAINS SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI, & - OTURB_FLX,OSUBG_COND, & + OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PINV_PDXX,PINV_PDYY, & PDXX,PDYY,PDZZ,PDZX,PDZY, & @@ -93,6 +93,7 @@ INTEGER, INTENT(IN) :: KRRI ! number of ice water var. LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! condensation TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! @@ -226,7 +227,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. TPFILE%LOPENED ) & CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Thl2, .TRUE. ) CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_Thl2, .TRUE. ) CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_Thl2, .TRUE. ) - ZA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) + ZA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN) CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz, .TRUE. ) CALL SECOND_MNH(ZTIME2) @@ -316,7 +317,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. TPFILE%LOPENED ) & CALL LES_MEAN_SUBGRID( -XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_ThlRt, .TRUE. ) CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_RtThv, .TRUE. ) CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_RtPz,.TRUE.) - ZA(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) + ZA(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz,.TRUE.) CALL SECOND_MNH(ZTIME2) diff --git a/src/common/turb/mode_turb_ver.F90 b/src/common/turb/mode_turb_ver.F90 index f58596abbb3a91f0e4c93e118ec3b1b8e3cb200a..6b6b3eb4237f662609ac7fb6ffbf6ea859f7c408 100644 --- a/src/common/turb/mode_turb_ver.F90 +++ b/src/common/turb/mode_turb_ver.F90 @@ -6,7 +6,7 @@ MODULE MODE_TURB_VER IMPLICIT NONE CONTAINS SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI, & - OTURB_FLX, & + OTURB_FLX, OOCEAN, & HTURBDIM,HTOM,PIMPL,PEXPL, & PTSTEP, TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & @@ -211,7 +211,6 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! USE MODD_CST USE MODD_CTURB -USE MODD_DYN_n, ONLY: LOCEAN USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL USE MODD_IO, ONLY: TFILEDATA USE MODD_PARAMETERS @@ -251,6 +250,7 @@ INTEGER, INTENT(IN) :: KRRL ! number of liquid water v INTEGER, INTENT(IN) :: KRRI ! number of ice water var. LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version CHARACTER(len=4), INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER(len=4), INTENT(IN) :: HTOM ! type of Third Order Moment @@ -419,7 +419,7 @@ IKE=KKU-JPVEXT_TURB*KKL ! ! CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OTURB_FLX, & - HTURBDIM, & + HTURBDIM, OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF,PLOCPEXNM,PATHETA,PAMOIST, & @@ -432,7 +432,7 @@ CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OTURB_FLX, & ! ! Buoyancy coefficient ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ZBETA = XG*XALPHAOC ELSE ZBETA = XG/PTHVREF @@ -502,7 +502,7 @@ ELSE ENDIF ! CALL TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI, & - OTURB_FLX,HTURBDIM,HTOM, & + OTURB_FLX,HTURBDIM,HTOM,OOCEAN, & PIMPL,PEXPL,PTSTEP, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & @@ -519,7 +519,7 @@ ENDIF PRTHLS,PRRS,ZTHLP,ZRP,PTP,PWTH,PWRC ) ! CALL TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & - OTURB_FLX,HTURBDIM,HTOM, & + OTURB_FLX,HTURBDIM,HTOM,OOCEAN, & PIMPL,PEXPL, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW, & @@ -551,7 +551,7 @@ ENDIF IF (LHARAT) ZLM=PLENGTHM ! CALL TURB_VER_DYN_FLUX(KKA,KKU,KKL, & - OTURB_FLX,KRR, & + OTURB_FLX,KRR, OOCEAN, & HTURBDIM,PIMPL,PEXPL,PTSTEP, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & @@ -585,7 +585,7 @@ CALL TURB_VER_SV_FLUX(KKA,KKU,KKL, & ! ! IF (SIZE(PSVM,4)>0 .AND. LLES_CALL) & -CALL TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & +CALL TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,OOCEAN, & PDZZ, & PTHLM,PRM,PTHVREF, & PLOCPEXNM,PATHETA,PAMOIST,PSRCM,ZPHI3,ZPSI3, & diff --git a/src/common/turb/mode_turb_ver_dyn_flux.F90 b/src/common/turb/mode_turb_ver_dyn_flux.F90 index 4e01503a65e016e8ac7803bfa589203e17fe550a..12915e63529d9791f97de93bbb1fe0f9cad3846b 100644 --- a/src/common/turb/mode_turb_ver_dyn_flux.F90 +++ b/src/common/turb/mode_turb_ver_dyn_flux.F90 @@ -6,7 +6,7 @@ MODULE MODE_TURB_VER_DYN_FLUX IMPLICIT NONE CONTAINS SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL, & - OTURB_FLX,KRR, & + OTURB_FLX,KRR, OOCEAN, & HTURBDIM,PIMPL,PEXPL, & PTSTEP, & TPFILE, & @@ -209,7 +209,6 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE MODD_CONF USE MODD_CST USE MODD_CTURB -USE MODD_DYN_n, ONLY: LOCEAN USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL USE MODD_IO, ONLY: TFILEDATA USE MODD_LES @@ -244,6 +243,7 @@ INTEGER, INTENT(IN) :: KKU !uppest atmosphere array i INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version INTEGER, INTENT(IN) :: KRR ! number of moist var. CHARACTER(len=4), INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme @@ -401,7 +401,7 @@ ZCOEFS(:,:,1:1)=MXM(ZCOEFS(:,:,1:1) / PDZZ(:,:,IKB:IKB) ) ! ! ! ZSOURCE= FLUX /DZ -IF (LOCEAN) THEN ! OCEAN MODEL ONLY +IF (OOCEAN) THEN ! OCEAN MODEL ONLY ! Sfx flux assumed to be in SI & at vorticity point IF (LCOUPLES) THEN ZSOURCE(:,:,IKE:IKE) = XSSUFL_C(:,:,1:1)/PDZZ(:,:,IKE:IKE) & @@ -467,7 +467,7 @@ ZFLXZ(:,:,IKB:IKB) = MXM(PDZZ(:,:,IKB:IKB)) * & ! ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) -IF (LOCEAN) THEN !ocean model at phys sfc (ocean domain top) +IF (OOCEAN) THEN !ocean model at phys sfc (ocean domain top) ZFLXZ(:,:,IKE:IKE) = MXM(PDZZ(:,:,IKE:IKE)) * & ZSOURCE(:,:,IKE:IKE) & / 0.5 / ( 1. + MXM(PRHODJ(:,:,KKU:KKU)) / MXM(PRHODJ(:,:,IKE:IKE)) ) @@ -504,7 +504,7 @@ PDP(:,:,IKB:IKB) = - MXF ( / MXM(PDZZ(:,:,IKB+KKL:IKB+KKL)) & ) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ! evaluate the dynamic production at w(IKE-KKL) in PDP(IKE) PDP(:,:,IKE:IKE) = - MXF ( & ZFLXZ(:,:,IKE-KKL:IKE-KKL) * (PUM(:,:,IKE:IKE)-PUM(:,:,IKE-KKL:IKE-KKL)) & @@ -531,7 +531,7 @@ IF(HTURBDIM=='3DIM') THEN ! Compute the source for the W wind component ! used to compute the W source at the ground ZFLXZ(:,:,KKA) = 2 * ZFLXZ(:,:,IKB) - ZFLXZ(:,:,IKB+KKL) ! extrapolation - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZFLXZ(:,:,KKU) = 2 * ZFLXZ(:,:,IKE) - ZFLXZ(:,:,IKE-KKL) ! extrapolation END IF @@ -564,7 +564,7 @@ IF(HTURBDIM=='3DIM') THEN ) / (0.5*(PDXX(:,:,IKB+KKL:IKB+KKL)+PDXX(:,:,IKB:IKB))) & ) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ! evaluate the dynamic production at w(IKE-KKL) in PDP(IKE) ZA(:,:,IKE:IKE) = - MXF ( & ZFLXZ(:,:,IKE-KKL:IKE-KKL) * & @@ -632,7 +632,7 @@ ZCOEFS(:,:,1)= ZCOEFFLXU(:,:,1) * PSINSLOPE(:,:) * PDIRCOSZW(:,:) & ! average this flux to be located at the V,W vorticity point ZCOEFS(:,:,1:1)=MYM(ZCOEFS(:,:,1:1) / PDZZ(:,:,IKB:IKB) ) ! -IF (LOCEAN) THEN ! Ocean case +IF (OOCEAN) THEN ! Ocean case IF (LCOUPLES) THEN ZSOURCE(:,:,IKE:IKE) = XSSVFL_C(:,:,1:1)/PDZZ(:,:,IKE:IKE) & *0.5 * ( 1. + MYM(PRHODJ(:,:,KKU:KKU)) / MYM(PRHODJ(:,:,IKE:IKE)) ) @@ -695,7 +695,7 @@ ZFLXZ(:,:,IKB:IKB) = MYM(PDZZ(:,:,IKB:IKB)) * & ! ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ZFLXZ(:,:,IKE:IKE) = MYM(PDZZ(:,:,IKE:IKE)) * & ZSOURCE(:,:,IKE:IKE) & / 0.5 / ( 1. + MYM(PRHODJ(:,:,KKU:KKU)) / MYM(PRHODJ(:,:,IKE:IKE)) ) @@ -733,7 +733,7 @@ ZFLXZ(:,:,IKB+KKL:IKB+KKL) * (PVM(:,:,IKB+KKL:IKB+KKL)-PVM(:,:,IKB:IKB)) & / MYM(PDZZ(:,:,IKB+KKL:IKB+KKL)) & ) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ! evaluate the dynamic production at w(IKE-KKL) in PDP(IKE) ZA(:,:,IKE:IKE) = - MYF ( & ZFLXZ(:,:,IKE-KKL:IKE-KKL) * (PVM(:,:,IKE:IKE)-PVM(:,:,IKE-KKL:IKE-KKL)) & @@ -760,7 +760,7 @@ END IF IF(HTURBDIM=='3DIM') THEN ! Compute the source for the W wind component ZFLXZ(:,:,KKA) = 2 * ZFLXZ(:,:,IKB) - ZFLXZ(:,:,IKB+KKL) ! extrapolation - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZFLXZ(:,:,KKU) = 2 * ZFLXZ(:,:,IKE) - ZFLXZ(:,:,IKE-KKL) ! extrapolation END IF ! @@ -793,7 +793,7 @@ IF(HTURBDIM=='3DIM') THEN ) / (0.5*(PDYY(:,:,IKB+KKL:IKB+KKL)+PDYY(:,:,IKB:IKB))) & ) ! - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZA(:,:,IKE:IKE) = - MYF ( & ZFLXZ(:,:,IKE-KKL:IKE-KKL) * & ( DYM( PWM(:,:,IKE-KKL:IKE-KKL) ) & diff --git a/src/common/turb/mode_turb_ver_sv_corr.F90 b/src/common/turb/mode_turb_ver_sv_corr.F90 index 4deb47ce7f0a66cff11aacf03717b547bbd5103f..9fb527829b7e3db91ac9bde036de9a18889a7bff 100644 --- a/src/common/turb/mode_turb_ver_sv_corr.F90 +++ b/src/common/turb/mode_turb_ver_sv_corr.F90 @@ -5,7 +5,7 @@ MODULE MODE_TURB_VER_SV_CORR IMPLICIT NONE CONTAINS -SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & +SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,OOCEAN, & PDZZ, & PTHLM,PRM,PTHVREF, & PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PPHI3,PPSI3, & @@ -83,6 +83,7 @@ IMPLICIT NONE ! INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid var. INTEGER, INTENT(IN) :: KRRI ! number of ice var. @@ -155,7 +156,7 @@ DO JSV=1,NSV ! IF (LLES_CALL) THEN ! approximation: diagnosed explicitely (without implicit term) - ZA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) + ZA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN) ZFLXZ(:,:,:)= ( XCSHF * PPHI3 + ZCSV * PPSI_SV(:,:,:,JSV) ) & * GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ) & * GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ) @@ -164,7 +165,7 @@ DO JSV=1,NSV CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLXZ, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE.) ! IF (KRR>=1) THEN - ZA(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) + ZA(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) ZFLXZ(:,:,:)= ( ZCSV * PPSI3 + ZCSV * PPSI_SV(:,:,:,JSV) ) & * GZ_M_W(KKA, KKU, KKL,PRM(:,:,:,1),PDZZ) & * GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ) diff --git a/src/common/turb/mode_turb_ver_thermo_corr.F90 b/src/common/turb/mode_turb_ver_thermo_corr.F90 index add00cbc36ffdcb7fe50b81251e624b90e01710c..a04c35ab90284997fcb3309dcf0a0c599c04d0e2 100644 --- a/src/common/turb/mode_turb_ver_thermo_corr.F90 +++ b/src/common/turb/mode_turb_ver_thermo_corr.F90 @@ -6,7 +6,7 @@ MODULE MODE_TURB_VER_THERMO_CORR IMPLICIT NONE CONTAINS SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & - OTURB_FLX,HTURBDIM,HTOM, & + OTURB_FLX,HTURBDIM,HTOM,OOCEAN, & PIMPL,PEXPL, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW, & @@ -238,6 +238,7 @@ INTEGER, INTENT(IN) :: KRRL ! number of liquid water v INTEGER, INTENT(IN) :: KRRI ! number of ice water var. LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version CHARACTER(len=4), INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER(len=4), INTENT(IN) :: HTOM ! type of Third Order Moment diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90 index ce4391f432da1184612f96732640611105498825..16c320423a0560bae32296ebfb4942442246c178 100644 --- a/src/common/turb/mode_turb_ver_thermo_flux.F90 +++ b/src/common/turb/mode_turb_ver_thermo_flux.F90 @@ -7,7 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI, & - OTURB_FLX,HTURBDIM,HTOM, & + OTURB_FLX,HTURBDIM,HTOM,OOCEAN, & PIMPL,PEXPL, & PTSTEP, & TPFILE, & @@ -239,7 +239,6 @@ USE MODD_TURB_n, ONLY: LHGRAD, XCOEFHGRADTHL, XCOEFHGRADRM, XALTHGRAD, X USE MODD_CONF USE MODD_LES USE MODD_DIM_n -USE MODD_DYN_n, ONLY: LOCEAN USE MODD_OCEANH USE MODD_REF, ONLY: LCOUPLES USE MODD_TURB_n @@ -276,6 +275,7 @@ INTEGER, INTENT(IN) :: KRRL ! number of liquid water v INTEGER, INTENT(IN) :: KRRI ! number of ice water var. LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version CHARACTER(len=4), INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER(len=4), INTENT(IN) :: HTOM ! type of Third Order Moment @@ -424,7 +424,7 @@ IJU=SIZE(PTHLM,2) ! !! Compute Shape of sfc flux for Oceanic Deep Conv Case ! -IF (LOCEAN .AND. LDEEPOC) THEN +IF (OOCEAN .AND. LDEEPOC) THEN !* COMPUTES THE PHYSICAL SUBDOMAIN BOUNDS ALLOCATE(ZXHAT_ll(NIMAX_ll+2*JPHEXT),ZYHAT_ll(NJMAX_ll+2*JPHEXT)) !compute ZXHAT_ll = position in the (0:Lx) domain 1 (Lx=Size of domain1 ) @@ -569,7 +569,7 @@ IF (GFTHR) THEN END IF ! compute interface flux IF (LCOUPLES) THEN ! Autocoupling O-A LES - IF (LOCEAN) THEN ! ocean model in coupled case + IF (OOCEAN) THEN ! ocean model in coupled case ZF(:,:,IKE) = (XSSTFL_C(:,:,1)+XSSRFL_C(:,:,1)) & *0.5* ( 1. + PRHODJ(:,:,KKU)/PRHODJ(:,:,IKE) ) ELSE ! atmosph model in coupled case @@ -592,7 +592,7 @@ ELSE ! No coupling O and A cases * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB)) END IF ! - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZF(:,:,IKE) = XSSTFL(:,:) *0.5*(1. + PRHODJ(:,:,KKU) / PRHODJ(:,:,IKE)) ELSE !end ocean case (in nocoupled case) ! atmos top @@ -637,7 +637,7 @@ IF (LHGRAD) THEN END IF ! ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) -IF (LOCEAN) THEN +IF (OOCEAN) THEN ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE) END IF ! @@ -647,7 +647,7 @@ END DO ! PWTH(:,:,IKB)=0.5*(ZFLXZ(:,:,IKB)+ZFLXZ(:,:,IKB+KKL)) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN PWTH(:,:,IKE)=0.5*(ZFLXZ(:,:,IKE)+ZFLXZ(:,:,IKE+KKL)) PWTH(:,:,KKA)=0. PWTH(:,:,KKU)=ZFLXZ(:,:,KKU) @@ -672,7 +672,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN END IF ! ! Contribution of the conservative temperature flux to the buoyancy flux -IF (LOCEAN) THEN +IF (OOCEAN) THEN PTP(:,:,:)= XG*XALPHAOC * MZF(ZFLXZ,KKA, KKU, KKL ) ELSE IF (KRR /= 0) THEN @@ -689,7 +689,7 @@ END IF PWTHV = MZM(PETHETA, KKA, KKU, KKL) * ZFLXZ PWTHV(:,:,IKB) = PETHETA(:,:,IKB) * ZFLXZ(:,:,IKB) ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ! temperature contribution to Buy flux PWTHV(:,:,IKE) = PETHETA(:,:,IKE) * ZFLXZ(:,:,IKE) END IF @@ -821,7 +821,7 @@ IF (KRR /= 0) THEN ! ! compute interface flux IF (LCOUPLES) THEN ! coupling NH O-A - IF (LOCEAN) THEN ! ocean model in coupled case + IF (OOCEAN) THEN ! ocean model in coupled case ! evap effect on salinity to be added later !!! ZF(:,:,IKE) = 0. ELSE ! atmosph model in coupled case @@ -846,7 +846,7 @@ IF (KRR /= 0) THEN * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB)) END IF ! - IF (LOCEAN) THEN + IF (OOCEAN) THEN ! General ocean case ! salinity/evap effect to be added later !!!!! ZF(:,:,IKE) = 0. @@ -918,7 +918,7 @@ IF (KRR /= 0) THEN END IF ! ! Contribution of the conservative water flux to the Buoyancy flux - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZA(:,:,:)= -XG*XBETAOC * MZF(ZFLXZ, KKA, KKU, KKL ) ELSE ZA(:,:,:) = PBETA * MZF( MZM(PEMOIST, KKA, KKU, KKL) * ZFLXZ,KKA,KKU,KKL ) @@ -931,7 +931,7 @@ IF (KRR /= 0) THEN ! PWTHV = PWTHV + MZM(PEMOIST, KKA, KKU, KKL) * ZFLXZ PWTHV(:,:,IKB) = PWTHV(:,:,IKB) + PEMOIST(:,:,IKB) * ZFLXZ(:,:,IKB) - IF (LOCEAN) THEN + IF (OOCEAN) THEN PWTHV(:,:,IKE) = PWTHV(:,:,IKE) + PEMOIST(:,:,IKE)* ZFLXZ(:,:,IKE) END IF ! @@ -1025,7 +1025,7 @@ IF ( ((OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN END IF ! END IF !end of <w Rc> -IF (LOCEAN .AND. LDEEPOC) THEN +IF (OOCEAN .AND. LDEEPOC) THEN DEALLOCATE(ZXHAT_ll,ZYHAT_ll) END IF ! diff --git a/src/common/turb/modi_turb.F90 b/src/common/turb/modi_turb.F90 index 4cfe208af8f41d37afafe49248e6049b9b9283f9..b2b57f334a08349e3a242d6428ddd63f5420922b 100644 --- a/src/common/turb/modi_turb.F90 +++ b/src/common/turb/modi_turb.F90 @@ -6,7 +6,7 @@ INTERFACE ! SUBROUTINE TURB(KKA, KKU, KKL, KMI,KRR,KRRL,KRRI,HLBCX,HLBCY, & & KSPLIT,KMODEL_CL, & - & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, & + & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,OOCEAN, & & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HCLOUD, & & PIMPL,PTSTEP,TPFILE, & & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & @@ -46,6 +46,7 @@ LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some LOGICAL, INTENT(IN) :: OSUBG_COND ! switch for SUBGrid ! CONDensation LOGICAL, INTENT(IN) :: ORMC01 ! switch for RMC01 lengths in SBL +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version CHARACTER(LEN=4) , INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER(LEN=4) , INTENT(IN) :: HTURBLEN ! kind of mixing length diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90 index 05c5350552d7be1eb9dc45fe2f6b6fe55071d441..5c0e60d3cf0f429bdaf89a8396f33f7c3eeb7379 100644 --- a/src/common/turb/turb.F90 +++ b/src/common/turb/turb.F90 @@ -5,7 +5,7 @@ !----------------------------------------------------------------- SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY, & & KSPLIT,KMODEL_CL, & - & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, & + & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,OOCEAN, & & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HCLOUD,PIMPL, & & PTSTEP,TPFILE,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE, & @@ -242,7 +242,6 @@ USE MODD_BUDGET, ONLY: LBUDGET_U, LBUDGET_V, LBUDGET_W, LBUDGET_TH, LBUDGET_R NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1, & TBUDGETDATA -USE MODD_DYN_n, ONLY : LOCEAN USE MODD_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODD_IO, ONLY: TFILEDATA USE MODD_LES @@ -299,6 +298,7 @@ LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some LOGICAL, INTENT(IN) :: OSUBG_COND ! switch for SUBGrid ! CONDensation LOGICAL, INTENT(IN) :: ORMC01 ! switch for RMC01 lengths in SBL +LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER(LEN=4), INTENT(IN) :: HTURBLEN ! kind of mixing length @@ -506,7 +506,7 @@ END DO ! !* 2.2 Exner function at t ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ZEXN(:,:,:) = 1. ELSE ZEXN(:,:,:) = (PPABST(:,:,:)/XP00) ** (XRD/XCPD) @@ -634,7 +634,7 @@ SELECT CASE (HTURBLEN) CASE ('BL89') ZSHEAR=0. - CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM) + CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM,OOCEAN) ! !* 3.2 RM17 mixing length ! ------------------ @@ -643,7 +643,7 @@ SELECT CASE (HTURBLEN) ZDUDZ = MXF(MZF(GZ_U_UW(PUT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL)) ZDVDZ = MYF(MZF(GZ_V_VW(PVT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL)) ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ) - CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM) + CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM,OOCEAN) ! !* 3.3 Grey-zone combined RM17 & Deardorff mixing lengths ! -------------------------------------------------- @@ -652,7 +652,7 @@ SELECT CASE (HTURBLEN) ZDUDZ = MXF(MZF(GZ_U_UW(PUT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL)) ZDVDZ = MYF(MZF(GZ_V_VW(PVT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL)) ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ) - CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM) + CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM,OOCEAN) CALL DELT(ZLMW,ODZ=.FALSE.) ! The minimum mixing length is chosen between Horizontal grid mesh (not taking into account the vertical grid mesh) and RM17. @@ -867,7 +867,7 @@ IF( LBUDGET_SV ) THEN END IF CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI, & - OTURB_FLX, & + OTURB_FLX, OOCEAN, & HTURBDIM,HTOM,PIMPL,ZEXPL, & PTSTEP,TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & @@ -960,7 +960,7 @@ IF( HTURBDIM == '3DIM' ) THEN #ifdef REPRO48 #else CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP, & - HLBCX,HLBCY,OTURB_FLX,OSUBG_COND, & + HLBCX,HLBCY,OTURB_FLX,OSUBG_COND,OOCEAN, & TPFILE, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & @@ -1455,7 +1455,7 @@ IF (.NOT. ORMC01) THEN ! DO JJ=1,SIZE(PUT,2) DO JI=1,SIZE(PUT,1) - IF (LOCEAN) THEN + IF (OOCEAN) THEN DO JK=IKTE,IKTB,-1 ZD=ZALPHA*(PZZ(JI,JJ,IKTE+1)-PZZ(JI,JJ,JK)) IF ( PLM(JI,JJ,JK)>ZD) THEN @@ -1541,8 +1541,8 @@ IF ( HTURBDIM /= '1DIM' ) THEN ! 3D turbulence scheme END IF ! compute a mixing length limited by the stability ! -ZETHETA(:,:,:) = ETHETA(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZATHETA,PSRCT) -ZEMOIST(:,:,:) = EMOIST(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZAMOIST,PSRCT) +ZETHETA(:,:,:) = ETHETA(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZATHETA,PSRCT,OOCEAN) +ZEMOIST(:,:,:) = EMOIST(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZAMOIST,PSRCT,OOCEAN) ! IF (KRR>0) THEN DO JK = IKTB+1,IKTE-1 @@ -1552,7 +1552,7 @@ IF (KRR>0) THEN (PTHLT(JI,JJ,JK )-PTHLT(JI,JJ,JK-KKL))/PDZZ(JI,JJ,JK )) ZDRTDZ(JI,JJ,JK) = 0.5*((PRT(JI,JJ,JK+KKL,1)-PRT(JI,JJ,JK ,1))/PDZZ(JI,JJ,JK+KKL)+ & (PRT(JI,JJ,JK ,1)-PRT(JI,JJ,JK-KKL,1))/PDZZ(JI,JJ,JK )) - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZVAR=XG*(XALPHAOC*ZDTHLDZ(JI,JJ,JK)-XBETAOC*ZDRTDZ(JI,JJ,JK)) ELSE ZVAR=XG/PTHVREF(JI,JJ,JK)* & @@ -1572,7 +1572,7 @@ ELSE! For dry atmos or unsalted ocean runs DO JI=1,SIZE(PUT,1) ZDTHLDZ(JI,JJ,JK)= 0.5*((PTHLT(JI,JJ,JK+KKL)-PTHLT(JI,JJ,JK ))/PDZZ(JI,JJ,JK+KKL)+ & (PTHLT(JI,JJ,JK )-PTHLT(JI,JJ,JK-KKL))/PDZZ(JI,JJ,JK )) - IF (LOCEAN) THEN + IF (OOCEAN) THEN ZVAR= XG*XALPHAOC*ZDTHLDZ(JI,JJ,JK) ELSE ZVAR= XG/PTHVREF(JI,JJ,JK)*ZETHETA(JI,JJ,JK)*ZDTHLDZ(JI,JJ,JK) @@ -1595,7 +1595,7 @@ ELSE ZDRTDZ(:,:,IKB)=0 ENDIF ! -IF (LOCEAN) THEN +IF (OOCEAN) THEN ZWORK2D(:,:)=XG*(XALPHAOC*ZDTHLDZ(:,:,IKB)-XBETAOC*ZDRTDZ(:,:,IKB)) ELSE ZWORK2D(:,:)=XG/PTHVREF(:,:,IKB)* & @@ -1613,7 +1613,7 @@ IF (.NOT. ORMC01) THEN ! DO JJ=1,SIZE(PUT,2) DO JI=1,SIZE(PUT,1) - IF (LOCEAN) THEN + IF (OOCEAN) THEN DO JK=IKTE,IKTB,-1 ZD=ZALPHA*(PZZ(JI,JJ,IKTE+1)-PZZ(JI,JJ,JK)) IF ( PLM(JI,JJ,JK)>ZD) THEN @@ -1743,7 +1743,7 @@ ELSE ! ------------------ CASE ('BL89','RM17','ADAP') ZSHEAR=0. - CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD) + CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD,OOCEAN) ! !* 3.2 Delta mixing length ! ------------------- diff --git a/src/mesonh/turb/mode_compute_updraft_rhcj10.f90 b/src/mesonh/turb/mode_compute_updraft_rhcj10.f90 index 47beda492d0d05ab07340e1e958a24613c79106e..d01976df7be18fa03cb5109b32ddddfb26a6ee3c 100644 --- a/src/mesonh/turb/mode_compute_updraft_rhcj10.f90 +++ b/src/mesonh/turb/mode_compute_updraft_rhcj10.f90 @@ -248,7 +248,7 @@ ZTKEM_F(:,:) = MZM_MF(PTKEM(:,:), KKA, KKU, KKL) ! This updraft is not yet ready to use scalar variables !DO JSV=1,ISV ! IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) CYCLE -! *** SR merge AROME/Méso-nh: following two lines come from the AROME version +! *** SR merge AROME/Meso-nh: following two lines come from the AROME version ! ZSVM_F(:,KKB:IKU,JSV) = 0.5*(PSVM(:,KKB:IKU,JSV)+PSVM(:,1:IKU-1,JSV)) ! ZSVM_F(:,1,JSV) = ZSVM_F(:,KKB,JSV) ! *** the following single line comes from the Meso-NH version @@ -301,7 +301,7 @@ PRC_UP(:,KKB)=0. PRI_UP(:,KKB)=0. CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,KKB),ZPRES_F(:,KKB), & PTHL_UP(:,KKB),PRT_UP(:,KKB),ZTH_UP(:,KKB), & - PRV_UP(:,KKB),PRC_UP(:,KKB),PRI_UP(:,KKB),ZRSATW(:),ZRSATI(:)) + PRV_UP(:,KKB),PRC_UP(:,KKB),PRI_UP(:,KKB),ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) DO JI=1,IIJU ! compute updraft thevav and buoyancy term at KKB level @@ -407,7 +407,7 @@ DO JK=KKB,KKE-KKL,KKL ZRV_UP(:) =PRV_UP(:,JK) CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,JK),& PPABSM(:,JK),PTHL_UP(:,JK),PRT_UP(:,JK),& - ZTH_UP(:,JK),ZRV_UP,ZRC_UP,ZRI_UP,ZRSATW(:),ZRSATI(:)) + ZTH_UP(:,JK),ZRV_UP,ZRC_UP,ZRI_UP,ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) DO JI=1,IIJU IF (GTEST(JI)) THEN @@ -502,7 +502,7 @@ DO JK=KKB,KKE-KKL,KKL ZRV_UP(:)=PRV_UP(:,JK) CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE_UP(:,JK+KKL),ZPRES_F(:,JK+KKL), & PTHL_UP(:,JK+KKL),PRT_UP(:,JK+KKL),ZTH_UP(:,JK+KKL), & - ZRV_UP(:),ZRC_UP(:),ZRI_UP(:),ZRSATW(:),ZRSATI(:)) + ZRV_UP(:),ZRC_UP(:),ZRI_UP(:),ZRSATW(:),ZRSATI(:),OOCEAN=.FALSE.) DO JI=1,IIJU IF(GTEST(JI)) THEN