diff --git a/src/arome/aux/mode_ll.F90 b/src/arome/aux/mode_ll.F90 index 030d629310c1918c8b3f7779ff880b31324457cc..d3626160c78620753d32020d3f40b40a43bc238c 100644 --- a/src/arome/aux/mode_ll.F90 +++ b/src/arome/aux/mode_ll.F90 @@ -1,6 +1,6 @@ MODULE MODE_ll -use mode_argslist_ll - +USE MODE_ARGSLIST_ll +USE MODE_TOOLS IMPLICIT NONE CONTAINS SUBROUTINE GET_INDICE_ll(KXOR, KYOR, KXEND, KYEND, KSIZE1, KSIZE2) @@ -19,4 +19,20 @@ CONTAINS TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated INTEGER :: KINFO ! return status END SUBROUTINE UPDATE_HALO_ll + +LOGICAL FUNCTION LNORTH_ll() + LNORTH_ll=.FALSE. +END FUNCTION LNORTH_ll +! +LOGICAL FUNCTION LEAST_ll() + LEAST_ll=.FALSE. +END FUNCTION LEAST_ll +! +LOGICAL FUNCTION LWEST_ll() + LWEST_ll=.FALSE. +END FUNCTION LWEST_ll +! +LOGICAL FUNCTION LSOUTH_ll() + LSOUTH_ll=.FALSE. +END FUNCTION LSOUTH_ll END MODULE MODE_ll diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index 36cbe52459f70d29bcc03ac0f51a94cfa182b580..958afa751bc4a6c33fbc1e340431dadccb12c60e 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -109,3 +109,10 @@ phyex/turb/turb_ver_thermo_corr.F90 phyex/turb/turb_ver_dyn_flux.F90 phyex/turb/turb_ver_sv_flux.F90 phyex/turb/turb_ver_sv_corr.F90 +phyex/turb/tm06.F90 +phyex/turb/tm06_h.F90 +phyex/turb/tridiag.F90 +phyex/turb/tridiag_wind.F90 +phyex/turb/tridiag_thermo.F90 +phyex/turb/tridiag_tke.F90 +phyex/turb/tridiag_massflux.F90 diff --git a/src/arome/micro/modd_refaro.F90 b/src/arome/micro/modd_refaro.F90 index 5d04ef439413f81cd47282608b4d645c7bb96875..c616ef13dad178f46223127c4c1d187ebc5e9242 100644 --- a/src/arome/micro/modd_refaro.F90 +++ b/src/arome/micro/modd_refaro.F90 @@ -38,5 +38,6 @@ IMPLICIT NONE ! set to constant value 300k for AROME REAL,SAVE, DIMENSION(2) :: XTHVREFZ=300. ! Thetav(z) for reference ! state without orography +LOGICAL, SAVE ::LCOUPLES ! AUTOCOUPLED ATMS-OCEAN LES VERSION ! END MODULE MODD_REF diff --git a/src/arome/turb/mf_turb.F90 b/src/arome/turb/mf_turb.F90 index ee1e2cbf2b3be24d91653abc9987bbd08d6dfc50..3869d3bb0dd881143b0e750bf17f313fb003f7c2 100644 --- a/src/arome/turb/mf_turb.F90 +++ b/src/arome/turb/mf_turb.F90 @@ -59,7 +59,7 @@ USE MODD_CMFSHALL ! USE MODI_SHUMAN_MF, ONLY: MZM_MF -USE MODI_TRIDIAG_MASSFLUX +USE MODE_TRIDIAG_MASSFLUX, ONLY: TRIDIAG_MASSFLUX ! IMPLICIT NONE ! diff --git a/src/arome/turb/modi_tm06.F90 b/src/arome/turb/modi_tm06.F90 deleted file mode 100644 index 5914828c395aa3015357c77808cbda3fcdf54086..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tm06.F90 +++ /dev/null @@ -1,25 +0,0 @@ -! ######spl - MODULE MODI_TM06 -! ################ -! -INTERFACE -! - SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2) -! -INTEGER, INTENT(IN) :: KKA !near ground array index -INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF ! reference potential temperature -REAL, DIMENSION(:,:), INTENT(IN) :: PBL_DEPTH ! boundary layer height -REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitude of flux levels -REAL, DIMENSION(:,:), INTENT(IN) :: PSFTH ! surface heat flux -REAL, DIMENSION(:,:,:), INTENT(OUT):: PMWTH ! w'2th' -REAL, DIMENSION(:,:,:), INTENT(OUT):: PMTH2 ! w'th'2 -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE TM06 -! -END INTERFACE -! -END MODULE MODI_TM06 diff --git a/src/arome/turb/modi_tm06_h.F90 b/src/arome/turb/modi_tm06_h.F90 deleted file mode 100644 index c37f96f34073a05b18e3afe6f12245b9d6d4fd70..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tm06_h.F90 +++ /dev/null @@ -1,24 +0,0 @@ -! ######spl - MODULE MODI_TM06_H -! ################ -! -INTERFACE -! - SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH) -! -INTEGER, INTENT(IN) :: KKB ! index of 1st physical level - ! close to ground -INTEGER, INTENT(IN) :: KKTB ! first physical level in k -INTEGER, INTENT(IN) :: KKTE ! last physical level in k -REAL, INTENT(IN) :: PTSTEP ! Double time step -REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitude of flux levels -REAL, DIMENSION(:,:,:), INTENT(IN) :: PFLXZ ! heat flux -REAL, DIMENSION(:,:), INTENT(INOUT) :: PBL_DEPTH ! boundary layer height -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE TM06_H -! -END INTERFACE -! -END MODULE MODI_TM06_H diff --git a/src/arome/turb/modi_tridiag.F90 b/src/arome/turb/modi_tridiag.F90 deleted file mode 100644 index f04637f9f9dd2f8af39fe522c586a081addbc4ed..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tridiag.F90 +++ /dev/null @@ -1,25 +0,0 @@ -! ######spl - MODULE MODI_TRIDIAG -! ################### -INTERFACE -! - SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, & - PRHODJ,PSOURCE,PVARP ) -! -INTEGER, INTENT(IN) :: KKA !near ground array index -INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR -REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM ! variable at t-1 -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! upper diag. elements -REAL, INTENT(IN) :: PTSTEP ! Double time step -REAL, INTENT(IN) :: PEXPL,PIMPL ! weights of the temporal scheme -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (dry rho)*J -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSOURCE ! source term of PVAR -! -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PVARP ! variable at t+1 -! -END SUBROUTINE TRIDIAG -! -END INTERFACE -! -END MODULE MODI_TRIDIAG diff --git a/src/arome/turb/modi_tridiag_massflux.F90 b/src/arome/turb/modi_tridiag_massflux.F90 deleted file mode 100644 index 1e6a223e9419519a53a1c768b6825536ace5c4f0..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tridiag_massflux.F90 +++ /dev/null @@ -1,28 +0,0 @@ -! ######spl - MODULE MODI_TRIDIAG_MASSFLUX -! ################### -INTERFACE -! - SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL, & - PDZZ,PRHODJ,PVARP ) -! -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 -REAL, DIMENSION(:,:), INTENT(IN) :: PVARM ! variable at t-1 at mass point -REAL, DIMENSION(:,:), INTENT(IN) :: PF ! flux in dT/dt=-dF/dz at flux point -REAL, DIMENSION(:,:), INTENT(IN) :: PDFDT ! dF/dT at flux point -REAL, INTENT(IN) :: PTSTEP ! Double time step -REAL, INTENT(IN) :: PIMPL ! implicit weight -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! Dz at flux point -REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ ! (dry rho)*J at mass point -! -REAL, DIMENSION(:,:), INTENT(OUT):: PVARP ! variable at t+1 at mass point -! -END SUBROUTINE TRIDIAG_MASSFLUX -! -END INTERFACE -! -END MODULE MODI_TRIDIAG_MASSFLUX diff --git a/src/arome/turb/modi_tridiag_thermo.F90 b/src/arome/turb/modi_tridiag_thermo.F90 deleted file mode 100644 index e0b5240fb408773f0c03411f0c4ad72290354070..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tridiag_thermo.F90 +++ /dev/null @@ -1,26 +0,0 @@ -! ######spl - MODULE MODI_TRIDIAG_THERMO -! ################### -INTERFACE -! - SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL, & - PDZZ,PRHODJ,PVARP ) -! -INTEGER, INTENT(IN) :: KKA !near ground array index -INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR -REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM ! variable at t-1 at mass point -REAL, DIMENSION(:,:,:), INTENT(IN) :: PF ! flux in dT/dt=-dF/dz at flux point -REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDTDZ! dF/d(dT/dz) at flux point -REAL, INTENT(IN) :: PTSTEP ! Double time step -REAL, INTENT(IN) :: PIMPL ! implicit weight -REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! Dz at flux point -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (dry rho)*J at mass point -! -REAL, DIMENSION(:,:,:), INTENT(OUT):: PVARP ! variable at t+1 at mass point -! -END SUBROUTINE TRIDIAG_THERMO -! -END INTERFACE -! -END MODULE MODI_TRIDIAG_THERMO diff --git a/src/arome/turb/modi_tridiag_tke.F90 b/src/arome/turb/modi_tridiag_tke.F90 deleted file mode 100644 index 9398d9fb66015625cd42781b46a0ff95df26b0c0..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tridiag_tke.F90 +++ /dev/null @@ -1,27 +0,0 @@ -! ######spl - MODULE MODI_TRIDIAG_TKE -! ########################## -INTERFACE -! - SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, & - PRHODJ,PSOURCE,PDIAG,PVARP ) -! -INTEGER, INTENT(IN) :: KKA !near ground array index -INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO -REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM ! variable at t-1 -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! upper diag. elements -REAL, INTENT(IN) :: PTSTEP ! Double time step -REAL, INTENT(IN) :: PEXPL,PIMPL ! weights of the temporal scheme -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (dry rho)*J -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSOURCE ! source term of PVAR -REAL, DIMENSION(:,:,:), INTENT(IN) :: PDIAG ! diagonal term linked to - ! the implicit dissipation -! -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PVARP ! variable at t+1 -! -END SUBROUTINE TRIDIAG_TKE -! -END INTERFACE -! -END MODULE MODI_TRIDIAG_TKE diff --git a/src/arome/turb/modi_tridiag_wind.F90 b/src/arome/turb/modi_tridiag_wind.F90 deleted file mode 100644 index 87fb9c3e874a0606ece3d4aa2f439c3560033afa..0000000000000000000000000000000000000000 --- a/src/arome/turb/modi_tridiag_wind.F90 +++ /dev/null @@ -1,27 +0,0 @@ -! ######spl - MODULE MODI_TRIDIAG_WIND -! ######################## -INTERFACE -! - SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, & - PRHODJA,PSOURCE,PVARP ) -! -INTEGER, INTENT(IN) :: KKA !near ground array index -INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR -REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM ! variable at t-1 -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! upper diag. elements -REAL, DIMENSION(:,:), INTENT(IN) :: PCOEFS ! implicit coeff for the - ! surface flux -REAL, INTENT(IN) :: PTSTEP ! Double time step -REAL, INTENT(IN) :: PEXPL,PIMPL ! weights of the temporal scheme -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJA ! (dry rho)*J averaged -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSOURCE ! source term of PVAR -! -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PVARP ! variable at t+1 -! -END SUBROUTINE TRIDIAG_WIND -! -END INTERFACE -! -END MODULE MODI_TRIDIAG_WIND diff --git a/src/common/aux/modd_ref.F90 b/src/common/aux/modd_ref.F90 deleted file mode 100644 index 3d1e6025ba5ac880c2d388e7adfe3be615ad2099..0000000000000000000000000000000000000000 --- a/src/common/aux/modd_ref.F90 +++ /dev/null @@ -1,58 +0,0 @@ -!MNH_LIC Copyright 1994-2021 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 MODD_REF -! ############### -! -!!**** *MODD_REF* - declaration of reference state profile -!! -!! PURPOSE -!! ------- -! The purpose of this declarative module is to declare the vertical -! profile of the reference state, used for the anelastic -! approximation. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! None -!! -!! REFERENCE -!! --------- -!! Book2 of documentation of Meso-NH (module MODD_REF) -!! Technical Specifications Report of the Meso-NH (chapters 2 and 3) -!! -!! AUTHOR -!! ------ -!! V. Ducrocq *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 07/06/94 -!! 07/13 (C.Lac) Add LBOUSS -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -IMPLICIT NONE -! -REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XRHODREFZ ! rhod(z) for reference - ! state without orography -REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XTHVREFZ ! Thetav(z) for reference - ! state without orography -REAL,SAVE :: XEXNTOP ! Exner function at model top -! -! For coupled A-O case -REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XRHODREFZO! rhod(z) for ocean ref state in coupled mode -REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XTHVREFZO !Thetav(z) for ocean ref state in coupled mode -REAL,SAVE :: XEXNTOPO ! Exner function at ocean model top in coupled mode -! -LOGICAL, SAVE :: LBOUSS ! Boussinesq approximation -LOGICAL, SAVE ::LCOUPLES ! AUTOCOUPLED ATMS-OCEAN LES VERSION -! -END MODULE MODD_REF diff --git a/src/common/turb/mode_tke_eps_sources.F90 b/src/common/turb/mode_tke_eps_sources.F90 index d266707a42c52b45afcf2f04ddfca6fdf3c6e506..2f31473d774a9b4cb9aa380c8a67e63cd7405acd 100644 --- a/src/common/turb/mode_tke_eps_sources.F90 +++ b/src/common/turb/mode_tke_eps_sources.F90 @@ -150,7 +150,7 @@ USE MODI_GRADIENT_U USE MODI_GRADIENT_V USE MODI_GRADIENT_W USE MODI_LES_MEAN_SUBGRID -USE MODI_TRIDIAG_TKE +USE MODE_TRIDIAG_TKE, ONLY: TRIDIAG_TKE USE MODI_SHUMAN , ONLY : DZM, DZF, MZM, MZF ! ! diff --git a/src/common/turb/tm06.F90 b/src/common/turb/mode_tm06.F90 similarity index 96% rename from src/common/turb/tm06.F90 rename to src/common/turb/mode_tm06.F90 index 22bf99d25a03c27acd88ce1a3d9d0d649b6bcac8..903ea792e01c5f456289a0c283f6e24c76400a41 100644 --- a/src/common/turb/tm06.F90 +++ b/src/common/turb/mode_tm06.F90 @@ -2,8 +2,10 @@ !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. -! ######spl - SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2) +MODULE MODE_TM06 +IMPLICIT NONE +CONTAINS +SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ################################################################# @@ -136,3 +138,4 @@ PMWTH(:,:,KKU) = PMWTH(:,:,KKU) * ZWSTAR(:,:)**2*ZTSTAR(:,:) !---------------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('TM06',1,ZHOOK_HANDLE) END SUBROUTINE TM06 +END MODULE MODE_TM06 diff --git a/src/common/turb/tm06_h.F90 b/src/common/turb/mode_tm06_h.F90 similarity index 96% rename from src/common/turb/tm06_h.F90 rename to src/common/turb/mode_tm06_h.F90 index 3162f5149e9d44cfe2d0e8868995881c044f1210..7d32fdd62d070d1f0d9cc796b315490f32c8d4cd 100644 --- a/src/common/turb/tm06_h.F90 +++ b/src/common/turb/mode_tm06_h.F90 @@ -2,8 +2,10 @@ !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 -! ######spl - SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH) +MODULE MODE_TM06_H +IMPLICIT NONE +CONTAINS +SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ################################################################# @@ -96,3 +98,4 @@ WHERE(PBL_DEPTH(:,:)/=XUNDEF) PBL_DEPTH(:,:)=MIN(PBL_DEPTH(:,:),ZBL_DEPTH(:,:)+Z !---------------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('TM06_H',1,ZHOOK_HANDLE) END SUBROUTINE TM06_H +END MODULE MODE_TM06_H diff --git a/src/common/turb/tridiag.F90 b/src/common/turb/mode_tridiag.F90 similarity index 98% rename from src/common/turb/tridiag.F90 rename to src/common/turb/mode_tridiag.F90 index ee28bf7bb4be4dc87ca84be8d09bc696ca498496..82b2ec2b08172cb21bf53a27f11c9b12e1be6abe 100644 --- a/src/common/turb/tridiag.F90 +++ b/src/common/turb/mode_tridiag.F90 @@ -2,8 +2,10 @@ !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. -! ######spl - SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, & +MODULE MODE_TRIDIAG +IMPLICIT NONE +CONTAINS +SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, & PRHODJ,PSOURCE,PVARP ) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK @@ -230,3 +232,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE) ! IF (LHOOK) CALL DR_HOOK('TRIDIAG',1,ZHOOK_HANDLE) END SUBROUTINE TRIDIAG +END MODULE MODE_TRIDIAG diff --git a/src/common/turb/tridiag_massflux.F90 b/src/common/turb/mode_tridiag_massflux.F90 similarity index 98% rename from src/common/turb/tridiag_massflux.F90 rename to src/common/turb/mode_tridiag_massflux.F90 index 401018cc0fed6cac3161e06224461d7c1ea8ea99..915d75b936fd4131452da4cf5c7e41a9922390f5 100644 --- a/src/common/turb/tridiag_massflux.F90 +++ b/src/common/turb/mode_tridiag_massflux.F90 @@ -2,8 +2,10 @@ !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. -! ######spl - SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL, & +MODULE MODE_TRIDIAG_MASSFLUX +IMPLICIT NONE +CONTAINS +SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL, & PDZZ,PRHODJ,PVARP ) USE PARKIND1, ONLY : JPRB @@ -275,3 +277,4 @@ PVARP(:,KKU)=PVARP(:,KKE) ! IF (LHOOK) CALL DR_HOOK('TRIDIAG_MASSFLUX',1,ZHOOK_HANDLE) END SUBROUTINE TRIDIAG_MASSFLUX +END MODULE MODE_TRIDIAG_MASSFLUX diff --git a/src/common/turb/tridiag_thermo.F90 b/src/common/turb/mode_tridiag_thermo.F90 similarity index 98% rename from src/common/turb/tridiag_thermo.F90 rename to src/common/turb/mode_tridiag_thermo.F90 index 7d20b2fa1e633d84dafcb24479c3c46a808d575a..5488c69f08941147fe0cafded7870f16aac0e796 100644 --- a/src/common/turb/tridiag_thermo.F90 +++ b/src/common/turb/mode_tridiag_thermo.F90 @@ -2,8 +2,10 @@ !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. -! ######spl - SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL, & +MODULE MODE_TRIDIAG_THERMO +IMPLICIT NONE +CONTAINS +SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL, & PDZZ,PRHODJ,PVARP ) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK @@ -269,3 +271,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE) ! IF (LHOOK) CALL DR_HOOK('TRIDIAG_THERMO',1,ZHOOK_HANDLE) END SUBROUTINE TRIDIAG_THERMO +END MODULE MODE_TRIDIAG_THERMO diff --git a/src/common/turb/tridiag_tke.F90 b/src/common/turb/mode_tridiag_tke.F90 similarity index 98% rename from src/common/turb/tridiag_tke.F90 rename to src/common/turb/mode_tridiag_tke.F90 index aaba12157838120e2c95cc5fbb845e53f9185e55..52ec08bdfbcec157530255aa9593f16e2ee02383 100644 --- a/src/common/turb/tridiag_tke.F90 +++ b/src/common/turb/mode_tridiag_tke.F90 @@ -2,8 +2,10 @@ !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. -! ######spl - SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, & +MODULE MODE_TRIDIAG_TKE +IMPLICIT NONE +CONTAINS +SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, & PRHODJ,PSOURCE,PDIAG,PVARP ) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK @@ -233,3 +235,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE) ! IF (LHOOK) CALL DR_HOOK('TRIDIAG_TKE',1,ZHOOK_HANDLE) END SUBROUTINE TRIDIAG_TKE +END MODULE MODE_TRIDIAG_TKE diff --git a/src/common/turb/tridiag_wind.F90 b/src/common/turb/mode_tridiag_wind.F90 similarity index 98% rename from src/common/turb/tridiag_wind.F90 rename to src/common/turb/mode_tridiag_wind.F90 index 1f074af2b701023336eadeec436711fecb45f791..65fd7256e14f7cf242917b450ff723d4d9e942d9 100644 --- a/src/common/turb/tridiag_wind.F90 +++ b/src/common/turb/mode_tridiag_wind.F90 @@ -2,8 +2,10 @@ !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. -! ######spl - SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, & +MODULE MODE_TRIDIAG_WIND +IMPLICIT NONE +CONTAINS +SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, & PRHODJA,PSOURCE,PVARP ) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK @@ -234,3 +236,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE) ! IF (LHOOK) CALL DR_HOOK('TRIDIAG_WIND',1,ZHOOK_HANDLE) END SUBROUTINE TRIDIAG_WIND +END MODULE MODE_TRIDIAG_WIND diff --git a/src/common/turb/mode_turb_ver_dyn_flux.F90 b/src/common/turb/mode_turb_ver_dyn_flux.F90 index b4e25e766dc3d99a601f39c39bd2d1612e709bfc..26d1ba9138550bd50e618c1e5f85c148de67dc8c 100644 --- a/src/common/turb/mode_turb_ver_dyn_flux.F90 +++ b/src/common/turb/mode_turb_ver_dyn_flux.F90 @@ -115,9 +115,6 @@ SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL, & !! DXF,DYF,DZF,DZM !! : Shuman functions (difference operators) !! -!! SUBROUTINE TRIDIAG : to compute the split implicit evolution -!! of a variable located at a mass point -!! !! SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution !! of a variable located at a wind point !! @@ -230,8 +227,7 @@ USE MODI_GRADIENT_M USE MODI_SECOND_MNH USE MODI_SHUMAN , ONLY: MZM, MZF, MXM, MXF, MYM, MYF,& & DZM, DXF, DXM, DYF, DYM -USE MODI_TRIDIAG -USE MODI_TRIDIAG_WIND +USE MODE_TRIDIAG_WIND, ONLY: TRIDIAG_WIND USE MODI_LES_MEAN_SUBGRID ! USE MODE_IO_FIELD_WRITE, only: IO_Field_write @@ -335,12 +331,12 @@ TYPE(TFIELDDATA) :: TZFIELD ! !* 1. PRELIMINARIES ! ------------- -ZA=XUNDEF -PDP=XUNDEF -! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TURB_VER_DYN_FLUX',0,ZHOOK_HANDLE) ! +ZA=XUNDEF +PDP=XUNDEF +! IIU=SIZE(PUM,1) IJU=SIZE(PUM,2) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE,IIU,IJU) @@ -351,8 +347,6 @@ IKE=KKU-JPVEXT_TURB*KKL IKT=SIZE(PUM,3) IKTB=1+JPVEXT_TURB IKTE=IKT-JPVEXT_TURB - - ! ZSOURCE = 0. ZFLXZ = 0. diff --git a/src/common/turb/mode_turb_ver_sv_flux.F90 b/src/common/turb/mode_turb_ver_sv_flux.F90 index 41516708838d42b6a2bfd2851c00d66f6f17ebb7..6fdbba5c3f46700856f79ee23f60923d99b19c5e 100644 --- a/src/common/turb/mode_turb_ver_sv_flux.F90 +++ b/src/common/turb/mode_turb_ver_sv_flux.F90 @@ -226,8 +226,7 @@ USE MODI_GRADIENT_V USE MODI_GRADIENT_W USE MODI_GRADIENT_M USE MODI_SHUMAN , ONLY : DZM, MZM, MZF -USE MODI_TRIDIAG -USE MODI_TRIDIAG_WIND +USE MODE_TRIDIAG, ONLY: TRIDIAG USE MODI_EMOIST USE MODI_ETHETA USE MODI_LES_MEAN_SUBGRID diff --git a/src/common/turb/mode_turb_ver_thermo_corr.F90 b/src/common/turb/mode_turb_ver_thermo_corr.F90 index 3d420f3936d33e208d20b38c8e15974356c54d1d..add00cbc36ffdcb7fe50b81251e624b90e01710c 100644 --- a/src/common/turb/mode_turb_ver_thermo_corr.F90 +++ b/src/common/turb/mode_turb_ver_thermo_corr.F90 @@ -117,12 +117,6 @@ SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & !! DXF,DYF,DZF,DZM !! : Shuman functions (difference operators) !! -!! SUBROUTINE TRIDIAG : to compute the split implicit evolution -!! of a variable located at a mass point -!! -!! SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution -!! of a variable located at a wind point -!! !! FUNCTIONs ETHETA and EMOIST : !! allows to compute: !! - the coefficients for the turbulent correlation between @@ -223,9 +217,7 @@ USE MODI_GRADIENT_V USE MODI_GRADIENT_W USE MODI_GRADIENT_M USE MODI_SHUMAN , ONLY : DZM, MZM, MZF -USE MODI_TRIDIAG USE MODI_LES_MEAN_SUBGRID -USE MODI_TRIDIAG_THERMO ! USE MODE_IO_FIELD_WRITE, only: IO_Field_write USE MODE_PRANDTL diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90 index 7b7b6a4d42973c39fa4168a2f241554811658d93..ce4391f432da1184612f96732640611105498825 100644 --- a/src/common/turb/mode_turb_ver_thermo_flux.F90 +++ b/src/common/turb/mode_turb_ver_thermo_flux.F90 @@ -250,10 +250,10 @@ USE MODI_GRADIENT_V USE MODI_GRADIENT_W USE MODI_GRADIENT_M USE MODI_SHUMAN , ONLY : DZF, DZM, MZF, MZM, MYF, MXF -USE MODI_TRIDIAG +USE MODE_TRIDIAG, ONLY: TRIDIAG USE MODI_LES_MEAN_SUBGRID -USE MODI_TRIDIAG_THERMO -USE MODI_TM06_H +USE MODE_TRIDIAG_THERMO, ONLY: TRIDIAG_THERMO +USE MODE_TM06_H, ONLY: TM06_H ! USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE USE MODE_PRANDTL diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90 index 66b6b86f4804a50f8e00e76ba3c93a76b4b98989..9bfa00590f540579dc15c0df3400d9867f71ebc6 100644 --- a/src/common/turb/turb.F90 +++ b/src/common/turb/turb.F90 @@ -1,4 +1,8 @@ -! ######spl +!MNH_LIC Copyright 1994-2021 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. +!----------------------------------------------------------------- SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY, & & KSPLIT,KMODEL_CL, & & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, & @@ -21,10 +25,6 @@ & YDDDH,YDLDDH,YDMDDH, & & TBUDGETS, KBUDGETS, & & PTR,PDISS,PEDR ) - - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK - USE MODD_CTURB, ONLY : LHARAT ! ################################################################# ! ! @@ -127,7 +127,6 @@ !! Module MODD_BUDGET: !! NBUMOD !! CBUTYPE -!! NBUPROCCTR !! LBU_RU !! LBU_RV !! LBU_RW @@ -220,11 +219,15 @@ !* 0. DECLARATIONS ! ------------ ! +USE PARKIND1, ONLY : JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +! USE MODD_PARAMETERS USE MODD_CST USE MODD_CTURB USE MODD_CONF USE MODD_BUDGET +USE MODD_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODD_IO, ONLY: TFILEDATA USE MODD_LES USE MODD_NSV @@ -241,9 +244,10 @@ USE MODI_BUDGET_DDH USE MODI_LES_MEAN_SUBGRID USE MODI_RMC01 USE MODI_GRADIENT_W -USE MODI_TM06 +USE MODE_TM06, ONLY: TM06 USE MODI_UPDATE_LM ! +USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE USE MODE_SBL USE MODE_FMWRIT ! @@ -442,11 +446,6 @@ INTEGER :: IKT ! array size in k direction INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain INTEGER :: JRR,JK,JSV ! loop counters INTEGER :: JI,JJ ! loop counters -INTEGER :: IRESP ! Return code of FM routines -INTEGER :: IGRID ! C-grid indicator in LFIFM file -INTEGER :: ILENCH ! Length of comment string in LFIFM file -CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file -CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL :: ZL0 ! Max. Mixing Length in Blakadar formula REAL :: ZALPHA ! proportionnality constant between Dz/2 and ! ! BL89 mixing length near the surface @@ -456,6 +455,7 @@ TYPE(TFILEDATA) :: TPFILE ! File type to write fields for MesoNH ! REAL :: ZTIME1, ZTIME2 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZSHEAR, ZDUDZ, ZDVDZ +TYPE(TFIELDDATA) :: TZFIELD ! !* 1.PRELIMINARIES ! ------------- @@ -556,18 +556,30 @@ IF (KRRL >=1) THEN END IF ! ! - IF (OCLOSE_OUT .AND. OTURB_DIAG) THEN - YRECFM ='ATHETA' - YCOMMENT='X_Y_Z_ATHETA (M)' - IGRID = 1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP) + IF ( TPFILE%LOPENED .AND. OTURB_DIAG ) THEN + TZFIELD%CMNHNAME = 'ATHETA' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'ATHETA' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_ATHETA' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,ZATHETA) ! - YRECFM ='AMOIST' - YCOMMENT='X_Y_Z_AMOIST (M)' - IGRID = 1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'AMOIST' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'AMOIST' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_AMOIST' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,ZAMOIST) END IF ! ELSE @@ -655,11 +667,8 @@ END SELECT ! !* 3.5 Mixing length modification for cloud ! ----------------------- -IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE' ) CALL CLOUD_MODIF_LM -ENDIF ! - -! -! +IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE') CALL CLOUD_MODIF_LM +ENDIF ! end LHARRAT ! !* 3.6 Dissipative length @@ -946,35 +955,51 @@ ENDIF !* 7. STORES SOME INFORMATIONS RELATED TO THE TURBULENCE SCHEME ! --------------------------------------------------------- ! -IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN - YCOMMENT=' ' +IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN ! ! stores the mixing length ! - YRECFM ='LM' - YCOMMENT='X_Y_Z_LM (M)' - IGRID = 1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LM' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'LM' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'Mixing length' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,ZLM) ! IF (KRR /= 0) THEN ! ! stores the conservative potential temperature ! - YRECFM ='THLM' - YCOMMENT='X_Y_Z_THLM (KELVIN)' - IGRID = 1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLM,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'THLM' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'THLM' + TZFIELD%CUNITS = 'K' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'Conservative potential temperature' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,PTHLM) ! ! stores the conservative mixing ratio ! - YRECFM ='RNPM' - YCOMMENT='X_Y_Z_RNPM (KG/KG)' - IGRID = 1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRM(:,:,:,1),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'RNPM' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'RNPM' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'Conservative mixing ratio' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,PRM(:,:,:,1)) END IF END IF ! @@ -1093,13 +1118,14 @@ CONTAINS !! MODIFICATIONS !! ------------- !! Original 24/06/99 +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ -!USE MODE_ll -!USE MODD_ARGSLIST_ll, ONLY : LIST_ll +USE MODE_ll +USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODD_CONF ! IMPLICIT NONE @@ -1111,45 +1137,47 @@ REAL, DIMENSION(:,:), INTENT(INOUT) :: PUSLOPE,PVSLOPE ! !* 0.2 Declarations of local variables : ! -INTEGER :: IIB,IIE,IJB,IJE ! index values for the physical subdomain -!TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange -!INTEGER :: IINFO_ll ! return code of parallel routine +INTEGER :: IIB,IIE,IJB,IJE,IIU,IJU ! index values for the physical subdomain +TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange +INTEGER :: IINFO_ll ! return code of parallel routine REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TURB:UPDATE_ROTATE_WIND',0,ZHOOK_HANDLE) ! !* 1 PROLOGUE ! -!NULLIFY(TZFIELDS_ll) +NULLIFY(TZFIELDS_ll) ! -!CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) +IIU=SIZE(PUSLOPE,1) +IJU=SIZE(PUSLOPE,2) +CALL GET_INDICE_ll (IIB,IJB,IIE,IJE,IIU,IJU) ! ! 2 Update halo if necessary ! -!IF (NHALO == 1) THEN -! CALL ADD2DFIELD_ll(TZFIELDS_ll,PUSLOPE) -! CALL ADD2DFIELD_ll(TZFIELDS_ll,PVSLOPE) -! CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) -! CALL CLEANLIST_ll(TZFIELDS_ll) -!ENDIF +!!$IF (NHALO == 1) THEN + CALL ADD2DFIELD_ll( TZFIELDS_ll, PUSLOPE, 'UPDATE_ROTATE_WIND::PUSLOPE' ) + CALL ADD2DFIELD_ll( TZFIELDS_ll, PVSLOPE, 'UPDATE_ROTATE_WIND::PVSLOPE' ) + CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) + CALL CLEANLIST_ll(TZFIELDS_ll) +!!$ENDIF ! ! 3 Boundary conditions for non cyclic case ! -!IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN -! PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:) -! PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:) -!END IF -!IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN -! PUSLOPE(IIE+1,:)=PUSLOPE(IIE,:) -! PVSLOPE(IIE+1,:)=PVSLOPE(IIE,:) -!END IF -!IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN -! PUSLOPE(:,IJB-1)=PUSLOPE(:,IJB) -! PVSLOPE(:,IJB-1)=PVSLOPE(:,IJB) -!END IF -!IF( HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN -! PUSLOPE(:,IJE+1)=PUSLOPE(:,IJE) -! PVSLOPE(:,IJE+1)=PVSLOPE(:,IJE) -!END IF +IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN + PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:) + PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:) +END IF +IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN + PUSLOPE(IIE+1,:)=PUSLOPE(IIE,:) + PVSLOPE(IIE+1,:)=PVSLOPE(IIE,:) +END IF +IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN + PUSLOPE(:,IJB-1)=PUSLOPE(:,IJB) + PVSLOPE(:,IJB-1)=PVSLOPE(:,IJB) +END IF +IF( HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN + PUSLOPE(:,IJE+1)=PUSLOPE(:,IJE) + PVSLOPE(:,IJE+1)=PVSLOPE(:,IJE) +END IF ! IF (LHOOK) CALL DR_HOOK('TURB:UPDATE_ROTATE_WIND',1,ZHOOK_HANDLE) ! @@ -1545,12 +1573,18 @@ ENDIF ! ----------------------------------------------- ! ! Impression before modification of the mixing length -IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN - YRECFM ='LM_CLEAR_SKY' - YCOMMENT='X_Y_Z_LM CLEAR SKY (M)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP) +IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN + TZFIELD%CMNHNAME = 'LM_CLEAR_SKY' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'LM_CLEAR_SKY' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_LM CLEAR SKY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,ZLM) ENDIF ! ! Amplification of the mixing length when the criteria are verified @@ -1565,18 +1599,29 @@ WHERE (PCEI(:,:,:) == -1.) ZLM(:,:,:) = ZLM_CLOUD(:,:,:) !* 5. IMPRESSION ! ---------- ! -IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN - YRECFM ='COEF_AMPL' - YCOMMENT='X_Y_Z_COEF AMPL (-)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP) +IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN + TZFIELD%CMNHNAME = 'COEF_AMPL' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'COEF_AMPL' + TZFIELD%CUNITS = '1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_COEF AMPL' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + TZFIELD%LTIMEDEP = .TRUE. + CALL IO_Field_write(TPFILE,TZFIELD,ZCOEF_AMPL) ! - YRECFM ='LM_CLOUD' - YCOMMENT='X_Y_Z_LM CLOUD (M)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LM_CLOUD' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'LM_CLOUD' + TZFIELD%CUNITS = 'm' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_LM CLOUD' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_Field_write(TPFILE,TZFIELD,ZLM_CLOUD) ! ENDIF ! diff --git a/src/mesonh/turb/turb.f90 b/src/mesonh/turb/turb.f90 index e089edc8208eeb908585d9b8d67351b10e1811ba..c255d2dd58c5b41c5189751e4cedd16d121ccaf3 100644 --- a/src/mesonh/turb/turb.f90 +++ b/src/mesonh/turb/turb.f90 @@ -395,7 +395,7 @@ USE MODI_UPDATE_LM USE MODI_GET_HALO ! use mode_budget, only: Budget_store_init, Budget_store_end -USE MODE_IO_FIELD_WRITE, only: IO_Field_write +USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE USE MODE_SBL use mode_sources_neg_correct, only: Sources_neg_correct ! @@ -713,7 +713,7 @@ IF (KRRL >=1) THEN END IF ! ! - IF ( tpfile%lopened .AND. OTURB_DIAG ) THEN + IF ( TPFILE%LOPENED .AND. OTURB_DIAG ) THEN TZFIELD%CMNHNAME = 'ATHETA' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'ATHETA' @@ -1163,7 +1163,7 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,PLEM,ZLEPS,PDYP,ZTRH, & !* 7. STORES SOME INFORMATIONS RELATED TO THE TURBULENCE SCHEME ! --------------------------------------------------------- ! -IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN +IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN ! ! stores the mixing length ! @@ -1302,9 +1302,6 @@ IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME2) XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1 END IF - -! - ! !---------------------------------------------------------------------------- ! @@ -1834,7 +1831,7 @@ ENDIF ! ----------------------------------------------- ! ! Impression before modification of the mixing length -IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN +IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%CMNHNAME = 'LM_CLEAR_SKY' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'LM_CLEAR_SKY' @@ -1860,7 +1857,7 @@ WHERE (PCEI(:,:,:) == -1.) PLEM(:,:,:) = ZLM_CLOUD(:,:,:) !* 5. IMPRESSION ! ---------- ! -IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN +IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%CMNHNAME = 'COEF_AMPL' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'COEF_AMPL'