diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index fe2dcb7f21c6212c90e7760ffdb4129e72b114d1..f351e3c8bc7e281c65ab8f2cb76085cec4813d4c 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -135,6 +135,8 @@ phyex/micro/ini_cst.F90 phyex/turb/modd_cmfshall.F90 phyex/turb/mf_turb_expl.F90 phyex/turb/modi_mf_turb_expl.F90 +phyex/turb/mf_turb.F90 +phyex/turb/modi_mf_turb.F90 phyex/turb/compute_mf_cloud.F90 phyex/turb/compute_mf_cloud_bigaus.F90 phyex/turb/compute_mf_cloud_direct.F90 diff --git a/src/arome/turb/modi_mf_turb.F90 b/src/arome/turb/modi_mf_turb.F90 deleted file mode 100644 index e3dbf894b10da9093764fa0f749d017638b0a402..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_mf_turb.F90 +++ /dev/null @@ -1,77 +0,0 @@ -! ######spl - MODULE MODI_MF_TURB -! ###################### -! -INTERFACE -! ################################################################# - SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV, & - ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL, PTSTEP, PTSTEP_MET, PTSTEP_SV, & - PDZZ, & - PRHODJ, & - PTHLM,PTHVM,PRTM,PUM,PVM,PSVM, & - PTHLDT,PRTDT,PUDT,PVDT,PSVDT, & - PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,PSV_UP, & - PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & - PFLXZSVMF ) - -! ################################################################# -! -! -!* 1.1 Declaration of Arguments -! -! -INTEGER, INTENT(IN) :: KKA ! near ground array index -INTEGER, INTENT(IN) :: KKB ! near ground physical index -INTEGER, INTENT(IN) :: KKE ! uppest atmosphere physical index -INTEGER, INTENT(IN) :: KKU ! uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise - -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum -LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer -INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer -INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer -REAL, INTENT(IN) :: PIMPL ! degree of implicitness -REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -REAL, INTENT(IN) :: PTSTEP_MET! Timestep for meteorological variables -REAL, INTENT(IN) :: PTSTEP_SV! Timestep for tracer variables -! -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! metric coefficients - -REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ ! dry density * Grid size - -! Conservative var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHLM ! conservative pot. temp. -REAL, DIMENSION(:,:), INTENT(IN) :: PRTM ! water var. where -! Virtual potential temperature at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHVM -! Momentum at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PUM -REAL, DIMENSION(:,:), INTENT(IN) :: PVM -! scalar variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSVM -! -! Tendencies of conservative variables -REAL, DIMENSION(:,:), INTENT(OUT) :: PTHLDT - -REAL, DIMENSION(:,:), INTENT(OUT) :: PRTDT -! Tendencies of momentum -REAL, DIMENSION(:,:), INTENT(OUT) :: PUDT -REAL, DIMENSION(:,:), INTENT(OUT) :: PVDT -! Tendencies of scalar variables -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSVDT - - -! Updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSV_UP -! Fluxes -REAL, DIMENSION(:,:), INTENT(OUT) :: PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF - -REAL, DIMENSION(:,:,:), INTENT(OUT):: PFLXZSVMF - -END SUBROUTINE MF_TURB - -END INTERFACE -! -END MODULE MODI_MF_TURB diff --git a/src/arome/turb/shallow_mf.F90 b/src/arome/turb/shallow_mf.F90 index b1cbd0e8192dcdae07d535d6a20e5f660567af75..0e2ceb3adea8159d0e29d4529c13e088dc217c80 100644 --- a/src/arome/turb/shallow_mf.F90 +++ b/src/arome/turb/shallow_mf.F90 @@ -67,8 +67,8 @@ USE MODE_THL_RT_FROM_TH_R_MF, ONLY: THL_RT_FROM_TH_R_MF USE MODI_COMPUTE_UPDRAFT USE MODI_COMPUTE_UPDRAFT_RHCJ10 USE MODI_COMPUTE_UPDRAFT_RAHA -USE MODI_MF_TURB -USE MODI_MF_TURB_EXPL +USE MODE_MF_TURB, ONLY: MF_TURB +USE MODE_MF_TURB_EXPL, ONLY: MF_TURB_EXPL USE MODE_COMPUTE_MF_CLOUD, ONLY: COMPUTE_MF_CLOUD ! IMPLICIT NONE @@ -264,9 +264,9 @@ CALL COMPUTE_MF_CLOUD(KKA,IKB,IKE,KKU,KKL,KRR,KRRL,KRRI,& ZEMF_O_RHODREF=PEMF/PRHODREF IF ( PIMPL_MF > 1.E-10 ) THEN -CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV, & + CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV, & + PIMPL_MF, PTSTEP, & PDZZ, & PRHODJ, & ZTHLM,ZTHVM,ZRTM,PUM,PVM,PSVM, & @@ -275,7 +275,7 @@ CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV, & PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & ZFLXZSVMF ) ELSE - CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV, & + CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV, & PRHODJ, & ZTHLM,ZTHVM,ZRTM,PUM,PVM, & PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF, & diff --git a/src/arome/turb/mf_turb.F90 b/src/common/turb/mode_mf_turb.F90 similarity index 91% rename from src/arome/turb/mf_turb.F90 rename to src/common/turb/mode_mf_turb.F90 index 32bcb4ac23c795ed326cd9d80990b03516a58714..3dc558e35e70494711e15e886faace1cbe413e08 100644 --- a/src/arome/turb/mf_turb.F90 +++ b/src/common/turb/mode_mf_turb.F90 @@ -1,7 +1,16 @@ -! ######spl +!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. +! ###################### + MODULE MODE_MF_TURB +! ###################### +! +IMPLICIT NONE +CONTAINS SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL, PTSTEP, PTSTEP_MET, PTSTEP_SV, & + PIMPL, PTSTEP, & PDZZ, & PRHODJ, & PTHLM,PTHVM,PRTM,PUM,PVM,PSVM, & @@ -10,9 +19,6 @@ PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & PFLXZSVMF ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK - ! ################################################################# ! ! @@ -56,11 +62,12 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAM_MFSHALL_n -! USE MODI_SHUMAN_MF, ONLY: MZM_MF USE MODE_TRIDIAG_MASSFLUX, ONLY: TRIDIAG_MASSFLUX ! +USE PARKIND1, ONLY : JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +! IMPLICIT NONE ! ! @@ -78,8 +85,6 @@ INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer REAL, INTENT(IN) :: PIMPL ! degree of implicitness REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -REAL, INTENT(IN) :: PTSTEP_MET! Timestep for meteorological variables -REAL, INTENT(IN) :: PTSTEP_SV! Timestep for tracer variables ! REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! metric coefficients @@ -123,19 +128,17 @@ REAL, DIMENSION(:,:,:), INTENT(OUT):: PFLXZSVMF ! REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) :: ZVARS - -! INTEGER :: ISV,JSV !number of scalar variables and Loop counter +REAL(KIND=JPRB) :: ZHOOK_HANDLE ! !---------------------------------------------------------------------------- ! !* 1.PRELIMINARIES ! ------------- ! +IF (LHOOK) CALL DR_HOOK('MF_TURB',0,ZHOOK_HANDLE) ! ! number of scalar var -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK('MF_TURB',0,ZHOOK_HANDLE) ISV=SIZE(PSVM,3) ! @@ -179,25 +182,25 @@ ENDIF ! 3.1 Compute the tendency for the conservative potential temperature ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) ! -CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP_MET,PIMPL, & +CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) ! compute new flux PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(ZVARS(:,:), KKA, KKU, KKL)) !!! compute THL tendency ! -PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP_MET +PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP ! ! 3.2 Compute the tendency for the conservative mixing ratio ! -CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP_MET,PIMPL, & +CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) ! compute new flux PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(ZVARS(:,:), KKA, KKU, KKL)) !!! compute RT tendency -PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP_MET +PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP ! IF (OMIXUV) THEN @@ -246,14 +249,15 @@ DO JSV=1,ISV ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) ! CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PSVM(:,:,JSV),PFLXZSVMF(:,:,JSV),& - -PEMF,PTSTEP_SV,PIMPL,PDZZ,PRHODJ,ZVARS ) + -PEMF,PTSTEP,PIMPL,PDZZ,PRHODJ,ZVARS ) ! compute new flux PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-MZM_MF(ZVARS, KKA, KKU, KKL)) ! compute Sv tendency - PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP_SV + PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP ENDDO ! IF (LHOOK) CALL DR_HOOK('MF_TURB',1,ZHOOK_HANDLE) END SUBROUTINE MF_TURB +END MODULE MODE_MF_TURB diff --git a/src/common/turb/mf_turb_expl.F90 b/src/common/turb/mode_mf_turb_expl.F90 similarity index 99% rename from src/common/turb/mf_turb_expl.F90 rename to src/common/turb/mode_mf_turb_expl.F90 index 304c5d3634af7ba1460689c19bd38609e3b84901..2bff78e0aa035c9bf2d1427e5c674ec844d2be80 100644 --- a/src/common/turb/mf_turb_expl.F90 +++ b/src/common/turb/mode_mf_turb_expl.F90 @@ -176,3 +176,4 @@ ENDIF IF (LHOOK) CALL DR_HOOK('MF_TURB_EXPL',1,ZHOOK_HANDLE) END SUBROUTINE MF_TURB_EXPL +END MODULE MODE_MF_TURB_EXPL diff --git a/src/mesonh/turb/shallow_mf.f90 b/src/mesonh/turb/shallow_mf.f90 index c1103a70b3b0fe2acd8b7de1959b3e6ee282669d..6d6942708c6d6d0cf3cd1841cb052b8c79a3fcb3 100644 --- a/src/mesonh/turb/shallow_mf.f90 +++ b/src/mesonh/turb/shallow_mf.f90 @@ -184,8 +184,8 @@ USE MODI_THL_RT_FROM_TH_R_MF USE MODI_COMPUTE_UPDRAFT USE MODI_COMPUTE_UPDRAFT_RHCJ10 USE MODI_COMPUTE_UPDRAFT_RAHA -USE MODI_MF_TURB -USE MODI_MF_TURB_EXPL +USE MODE_MF_TURB, ONLY: MF_TURB +USE MODE_MF_TURB_EXPL, ONLY: MF_TURB_EXPL USE MODI_MF_TURB_GREYZONE USE MODE_COMPUTE_MF_CLOUD, ONLY: COMPUTE_MF_CLOUD USE MODI_SHUMAN_MF