diff --git a/src/MNH/advecmet.f90 b/src/MNH/advecmet.f90 index 0297798cf2b673b7a3e69eabf973e45f6394cb59..f16414b4293bd0d32dd32859089d51afd0460c4a 100644 --- a/src/MNH/advecmet.f90 +++ b/src/MNH/advecmet.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/05/22 19:02:00 -!----------------------------------------------------------------- ! ####################### MODULE MODI_ADVECMET ! ####################### @@ -162,12 +157,10 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS !* 0.2 Declarations of local variables : ! INTEGER :: JRR ! Loop index for moist variables -INTEGER :: IKU ! ! !------------------------------------------------------------------------------- ! -IKU=SIZE(XZHAT) !* 1. COMPUTES THE ADVECTIVE TENDENCIES ! --------------------------------- ! @@ -181,7 +174,7 @@ PRTHS(:,:,:) = PRTHS(:,:,:) & IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVY_BU_RTH') ! PRTHS(:,:,:) = PRTHS(:,:,:) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1,PTHT(:,:,:)) ) + -DZF( PRWCT(:,:,:) * MZM (PTHT(:,:,:)) ) IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH') ! ! Case with KRR moist variables @@ -213,7 +206,7 @@ IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVY_BU_RRH') ! DO JRR=1,KRR PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1,PRT(:,:,:,JRR)) ) + -DZF( PRWCT(:,:,:) * MZM (PRT(:,:,:,JRR)) ) END DO ! IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV') @@ -235,7 +228,7 @@ IF (SIZE(PTKET,1) /= 0) THEN IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVY_BU_RTKE') ! PRTKES(:,:,:) = PRTKES(:,:,:) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1,PTKET(:,:,:)) ) + -DZF( PRWCT(:,:,:) * MZM (PTKET(:,:,:)) ) IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVZ_BU_RTKE') END IF ! diff --git a/src/MNH/advecmet_4th.f90 b/src/MNH/advecmet_4th.f90 index b708b8cf0c500a9a1709ed7c1815f20b7ba34bb9..a0bd62e1558285c84c566d92d73161dc5b1888d6 100644 --- a/src/MNH/advecmet_4th.f90 +++ b/src/MNH/advecmet_4th.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2005-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/05/22 19:00:38 -!----------------------------------------------------------------- ! ############################### MODULE MODI_ADVECMET_4TH ! ############################### @@ -199,7 +194,6 @@ TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list for diffusion INTEGER :: JRR ! Loop index for moist variables INTEGER:: IIB,IJB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE ! End useful area in x,y,z directions -INTEGER :: IKU ! LOGICAL :: GTKEALLOC ! true if TKE arrays are not zero-sized ! @@ -216,7 +210,6 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZMEANX, ZMEANY ! flux CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) ! GTKEALLOC = SIZE(PTKET,1) /= 0 -IKU=SIZE(XZHAT) ! !------------------------------------------------------------------------------- ! @@ -244,7 +237,7 @@ PRTHS(:,:,:) = PRTHS(:,:,:) & IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVY_BU_RTH') ! PRTHS(:,:,:) = PRTHS(:,:,:) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PTHT(:,:,:)) ) + -DZF( PRWCT(:,:,:) * MZM4(PTHT(:,:,:)) ) IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH') ! ! Turbulence variables @@ -267,7 +260,7 @@ IF ( GTKEALLOC ) THEN IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVY_BU_RTKE') ! PRTKES(:,:,:) = PRTKES(:,:,:) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PTKET(:,:,:)) ) + -DZF( PRWCT(:,:,:) * MZM4(PTKET(:,:,:)) ) IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVZ_BU_RTKE') ENDIF ! @@ -304,7 +297,7 @@ DO JRR=1, KRR IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVY_BU_RRH') ! PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PRT(:,:,:,JRR)) ) + -DZF( PRWCT(:,:,:) * MZM4(PRT(:,:,:,JRR)) ) IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV') IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC') IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVZ_BU_RRR') diff --git a/src/MNH/advecscalar.f90 b/src/MNH/advecscalar.f90 index 0377dc0dbb963dd4fe64f4ad2f23769a948ed2e2..44e315a3dd7a875ac3135a8bd00a0f62fe1ead87 100644 --- a/src/MNH/advecscalar.f90 +++ b/src/MNH/advecscalar.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ####################### MODULE MODI_ADVECSCALAR ! ####################### @@ -129,7 +124,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS !* 0.2 Declarations of local variables : ! INTEGER :: JSV ! Loop index for Scalar Variables -INTEGER :: IKU ! ! !------------------------------------------------------------------------------- @@ -137,8 +131,6 @@ INTEGER :: IKU !* 1. COMPUTES THE ADVECTIVE TENDENCIES ! --------------------------------- ! -IKU=SIZE(XZHAT) -! ! Case with KSV Scalar Variables DO JSV=1,KSV PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) & @@ -162,7 +154,7 @@ END IF ! DO JSV=1,KSV PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1, PSVT(:,:,:,JSV)) ) + -DZF( PRWCT(:,:,:) * MZM (PSVT(:,:,:,JSV)) ) END DO IF (LBUDGET_SV) THEN DO JSV=1,KSV diff --git a/src/MNH/advecscalar_4th.f90 b/src/MNH/advecscalar_4th.f90 index 1cf233594e2f27e4a1c1527b6e65998167c4b1f9..9fa8e7847713bf95c7a63f46a84f4018211238a3 100644 --- a/src/MNH/advecscalar_4th.f90 +++ b/src/MNH/advecscalar_4th.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2005-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ############################### MODULE MODI_ADVECSCALAR_4TH ! ############################### @@ -161,7 +156,6 @@ TYPE(HALO2LIST_ll), POINTER :: TZHALO2LIST ! INTEGER :: IGRID ! localisation on the model grid REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZMEANX, ZMEANY ! fluxes -INTEGER :: IKU ! !------------------------------------------------------------------------------- ! @@ -169,7 +163,6 @@ INTEGER :: IKU ! ------------------------------ ! CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) -IKU=SIZE(XZHAT) ! !------------------------------------------------------------------------------- ! @@ -200,7 +193,7 @@ DO JSV=1,KSV IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVY_BU_RSV') ! PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) & - -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PSVT(:,:,:,JSV)) ) + -DZF( PRWCT(:,:,:) * MZM4(PSVT(:,:,:,JSV)) ) IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVZ_BU_RSV') ENDDO ! diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index c1f96a8ef0263529bd48391b6810d0797613a5c8..cb088d7356359c68790720e7ebd0ba8c763bb853 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -184,7 +184,6 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZMZM_RHODJ INTEGER :: ISPLIT ! Number of splitting loops INTEGER :: JSPL ! Loop index REAL :: ZTSTEP ! Sub Time step -INTEGER :: IIU, IJU, IKU ! array sizes ! INTEGER :: IINFO_ll ! return code of parallel routine TYPE(LIST_ll), POINTER :: TZFIELD_ll ! list of fields to exchange @@ -301,15 +300,10 @@ CALL MNH_GET_ZT4D(ISPL, IZRWSB, IZRWSE) ! IKE = SIZE(PWT,3) - JPVEXT ! -IIU = SIZE(PWT,1) -IJU = SIZE(PWT,2) -IKU = SIZE(PWT,3) -! -! #ifndef MNH_OPENACC ZMXM_RHODJ = MXM(PRHODJ) ZMYM_RHODJ = MYM(PRHODJ) -ZMZM_RHODJ = MZM(1,IKU,1,PRHODJ) +ZMZM_RHODJ = MZM(PRHODJ) #else CALL MXM_DEVICE(PRHODJ,ZMXM_RHODJ) CALL MYM_DEVICE(PRHODJ,ZMYM_RHODJ) diff --git a/src/MNH/advection_uvw_cen.f90 b/src/MNH/advection_uvw_cen.f90 index fdc6cd0e28f9b796ae202d95effb97319760b1fa..31cdeeae716c3ab246577ab203467280886f714e 100644 --- a/src/MNH/advection_uvw_cen.f90 +++ b/src/MNH/advection_uvw_cen.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2020 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. @@ -180,8 +180,6 @@ REAL, DIMENSION(:,:,:), allocatable :: ZMZM_RHODJ ! INTEGER :: IINFO_ll ! return code of parallel routine TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange -INTEGER :: IKU -INTEGER :: IIB,IIE,IJB,IJE,IKB,IKE ! index values for the physical subdomain #ifdef MNH_OPENACC INTEGER :: IZ1, IZ2 #endif @@ -251,15 +249,10 @@ CALL INIT_ON_HOST_AND_DEVICE(ZMZM_RHODJ,-3e97,'ADVECTION_UVW_CEN::ZMZM_RHODJ') CALL MNH_GET_ZT3D(IZ1, IZ2) #endif ! -CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) -IKU = SIZE(XZHAT) -IKB=1+JPVEXT -IKE=IKU-JPVEXT -! #ifndef MNH_OPENACC ZMXM_RHODJ = MXM(PRHODJ) ZMYM_RHODJ = MYM(PRHODJ) -ZMZM_RHODJ = MZM(1,IKU,1,PRHODJ) +ZMZM_RHODJ = MZM(PRHODJ) #else CALL MXM_DEVICE(PRHODJ,ZMXM_RHODJ) CALL MYM_DEVICE(PRHODJ,ZMYM_RHODJ) diff --git a/src/MNH/advecuvw.f90 b/src/MNH/advecuvw.f90 index d0f32702bebfbc3090a8e438bd0242811be8f712..087ca0ecfbcaa4594dc2592cc07f4d7f7640a1c1 100644 --- a/src/MNH/advecuvw.f90 +++ b/src/MNH/advecuvw.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! #################### MODULE MODI_ADVECUVW ! #################### @@ -134,13 +129,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRWCT ! of momentum ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS ! Sources of Momentum ! -INTEGER :: IKU -! -! !------------------------------------------------------------------------------- ! -IKU=SIZE(XZHAT) -! !* 1. COMPUTES THE ADVECTIVE TENDANCIES ! --------------------------------- ! @@ -153,7 +143,7 @@ PRUS(:,:,:) = PRUS(:,:,:) & IF (LBUDGET_U) CALL BUDGET (PRUS,1,'ADVY_BU_RU') ! PRUS(:,:,:) = PRUS(:,:,:) & - -DZF(1,IKU,1, MXM(PRWCT(:,:,:))*MZM(1,IKU,1,PUT(:,:,:)) ) + -DZF( MXM(PRWCT(:,:,:))*MZM(PUT(:,:,:)) ) IF (LBUDGET_U) CALL BUDGET (PRUS,1,'ADVZ_BU_RU') ! ! @@ -166,20 +156,20 @@ PRVS(:,:,:) = PRVS(:,:,:) & IF (LBUDGET_V) CALL BUDGET (PRVS,2,'ADVY_BU_RV') ! PRVS(:,:,:) = PRVS(:,:,:) & - -DZF(1,IKU,1, MYM(PRWCT(:,:,:))*MZM(1,IKU,1,PVT(:,:,:)) ) + -DZF( MYM(PRWCT(:,:,:))*MZM(PVT(:,:,:)) ) IF (LBUDGET_V) CALL BUDGET (PRVS,2,'ADVZ_BU_RV') ! ! PRWS(:,:,:) = PRWS(:,:,:) & - -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*MXM(PWT(:,:,:)) ) + -DXF( MZM(PRUCT(:,:,:))*MXM(PWT(:,:,:)) ) IF (LBUDGET_W) CALL BUDGET (PRWS,3,'ADVX_BU_RW') ! PRWS(:,:,:) = PRWS(:,:,:) & - -DYF( MZM(1,IKU,1,PRVCT(:,:,:))*MYM(PWT(:,:,:)) ) + -DYF( MZM(PRVCT(:,:,:))*MYM(PWT(:,:,:)) ) IF (LBUDGET_W) CALL BUDGET (PRWS,3,'ADVY_BU_RW') ! PRWS(:,:,:) = PRWS(:,:,:) & - -DZM(1,IKU,1, MZF(1,IKU,1,PRWCT(:,:,:))*MZF(1,IKU,1,PWT(:,:,:)) ) + -DZM( MZF(PRWCT(:,:,:))*MZF(PWT(:,:,:)) ) IF (LBUDGET_W) CALL BUDGET (PRWS,3,'ADVZ_BU_RW') ! !------------------------------------------------------------------------------- diff --git a/src/MNH/advecuvw_2nd.f90 b/src/MNH/advecuvw_2nd.f90 index 9b0999450cbd6da96e0c9b934fb38d51e9a47bde..a8313c2f5e94de2a323694ca77fb9c364b3eab6f 100644 --- a/src/MNH/advecuvw_2nd.f90 +++ b/src/MNH/advecuvw_2nd.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! #################### MODULE MODI_ADVECUVW_2ND ! #################### @@ -117,13 +112,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRWCT ! of momentum ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS ! Sources of Momentum ! -INTEGER :: IKU -! -! !------------------------------------------------------------------------------- ! -IKU=SIZE(XZHAT) -! !* 1. COMPUTES THE ADVECTIVE TENDANCIES ! --------------------------------- ! @@ -134,7 +124,7 @@ PRUS(:,:,:) = PRUS(:,:,:) & -DYF( MXM(PRVCT(:,:,:))*MYM(PUT(:,:,:)) ) ! PRUS(:,:,:) = PRUS(:,:,:) & - -DZF(1,IKU,1, MXM(PRWCT(:,:,:))*MZM(1,IKU,1,PUT(:,:,:)) ) + -DZF( MXM(PRWCT(:,:,:))*MZM(PUT(:,:,:)) ) ! ! PRVS(:,:,:) = PRVS(:,:,:) & @@ -144,17 +134,17 @@ PRVS(:,:,:) = PRVS(:,:,:) & -DYM( MYF(PRVCT(:,:,:))*MYF(PVT(:,:,:)) ) ! PRVS(:,:,:) = PRVS(:,:,:) & - -DZF(1,IKU,1, MYM(PRWCT(:,:,:))*MZM(1,IKU,1,PVT(:,:,:)) ) + -DZF( MYM(PRWCT(:,:,:))*MZM(PVT(:,:,:)) ) ! ! PRWS(:,:,:) = PRWS(:,:,:) & - -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*MXM(PWT(:,:,:)) ) + -DXF( MZM(PRUCT(:,:,:))*MXM(PWT(:,:,:)) ) ! PRWS(:,:,:) = PRWS(:,:,:) & - -DYF( MZM(1,IKU,1,PRVCT(:,:,:))*MYM(PWT(:,:,:)) ) + -DYF( MZM(PRVCT(:,:,:))*MYM(PWT(:,:,:)) ) ! PRWS(:,:,:) = PRWS(:,:,:) & - -DZM(1,IKU,1, MZF(1,IKU,1,PRWCT(:,:,:))*MZF(1,IKU,1,PWT(:,:,:)) ) + -DZM( MZF(PRWCT(:,:,:))*MZF(PWT(:,:,:)) ) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/advecuvw_4th.f90 b/src/MNH/advecuvw_4th.f90 index c7dc02979b1e6b27f225c854ce57f7c04cc202d8..c2a340ffe8ab39817529e94173ae285102ac3eb8 100644 --- a/src/MNH/advecuvw_4th.f90 +++ b/src/MNH/advecuvw_4th.f90 @@ -208,12 +208,6 @@ TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list for diffusion ! !* 0.2 Declarations of local variables : ! -INTEGER:: IIB,IJB ! Begining useful area in x,y,z directions -INTEGER:: IIE,IJE ! End useful area in x,y,z directions -#ifndef MNH_OPENACC -INTEGER :: IKU -#endif -! TYPE(HALO2LIST_ll), POINTER :: TZHALO2LIST ! INTEGER :: IGRID ! localisation on the model grid @@ -265,16 +259,6 @@ IF (MPPDB_INITIALIZED) THEN END IF !------------------------------------------------------------------------------- ! -!* 1. COMPUTES THE DOMAIN DIMENSIONS -! ------------------------------ -! -CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) -! -#ifndef MNH_OPENACC -IKU=SIZE(XZHAT) -#endif -!------------------------------------------------------------------------------- -! !* 2. CALL THE ADVEC_4TH_ORDER_ALGO ROUTINE FOR MOMENTUM ! -------------------------------------------------- ! @@ -295,7 +279,7 @@ PRUS(:,:,:) = PRUS(:,:,:) & -DYF( MXM(PRVCT(:,:,:))*ZMEANY(:,:,:) ) ! PRUS(:,:,:) = PRUS(:,:,:) & - -DZF(1,IKU,1, MXM(PRWCT(:,:,:))*MZM4(PUT(:,:,:)) ) + -DZF( MXM(PRWCT(:,:,:))*MZM4(PUT(:,:,:)) ) #else call mxf_device(PRUCT,ZTEMP1) !$acc kernels @@ -344,7 +328,7 @@ PRVS(:,:,:) = PRVS(:,:,:) & -DYM( MYF(PRVCT(:,:,:))*ZMEANY(:,:,:) ) ! PRVS(:,:,:) = PRVS(:,:,:) & - -DZF(1,IKU,1, MYM(PRWCT(:,:,:))*MZM4(PVT(:,:,:)) ) + -DZF( MYM(PRWCT(:,:,:))*MZM4(PVT(:,:,:)) ) #else call mym_device(PRUCT,ZTEMP1) !$acc kernels @@ -389,13 +373,13 @@ IGRID = 4 ! #ifndef MNH_OPENACC PRWS(:,:,:) = PRWS(:,:,:) & - -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*ZMEANX(:,:,:) ) + -DXF( MZM(PRUCT(:,:,:))*ZMEANX(:,:,:) ) ! PRWS(:,:,:) = PRWS(:,:,:) & - -DYF( MZM(1,IKU,1,PRVCT(:,:,:))*ZMEANY(:,:,:) ) + -DYF( MZM(PRVCT(:,:,:))*ZMEANY(:,:,:) ) ! PRWS(:,:,:) = PRWS(:,:,:) & - -DZM(1,IKU,1, MZF(1,IKU,1,PRWCT(:,:,:))*MZF4(PWT(:,:,:)) ) + -DZM( MZF(PRWCT(:,:,:))*MZF4(PWT(:,:,:)) ) #else call mzm_device(PRUCT,ZTEMP1) !$acc kernels diff --git a/src/MNH/advecuvw_weno_k.f90 b/src/MNH/advecuvw_weno_k.f90 index d506dd3dfb9b7136bc9ea8c41f774564a59f7a99..96c6a85e5e6ea000a1a2508d7b2bc815c3fca85a 100644 --- a/src/MNH/advecuvw_weno_k.f90 +++ b/src/MNH/advecuvw_weno_k.f90 @@ -1,8 +1,8 @@ -!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2020 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 MODI_ADVECUVW_WENO_K ! ########################### @@ -127,9 +127,7 @@ REAL, DIMENSION(:,:,:), allocatable :: ZMEAN, ZWORK REAL, DIMENSION(:,:,:) :: ZMEAN, ZWORK #endif ! -INTEGER :: K_SCHEME INTEGER :: IKU -INTEGER :: IWORK #ifdef MNH_OPENACC INTEGER :: IZFPOS1, IZFPOS2, IZFPOS3 INTEGER :: IZFNEG1, IZFNEG2, IZFNEG3 @@ -186,7 +184,7 @@ CASE(1) ! WENO 1 ! PRUS = PRUS - DYF(UP_MY(PUT,MXM(PRVCT))) ! - PRUS = PRUS - DZF(1,IKU,1,UP_MZ(PUT,MXM(PRWCT))) + PRUS = PRUS - DZF(UP_MZ(PUT,MXM(PRWCT))) ! ! V component ! @@ -194,15 +192,15 @@ CASE(1) ! WENO 1 ! PRVS = PRVS - DYM(UP_VY(PVT,MYF(PRVCT))) ! - PRVS = PRVS - DZF(1,IKU,1,UP_MZ(PVT,MYM(PRWCT))) + PRVS = PRVS - DZF(UP_MZ(PVT,MYM(PRWCT))) ! ! W component ! - PRWS = PRWS - DXF(UP_MX(PWT,MZM(1,IKU,1,PRUCT))) + PRWS = PRWS - DXF(UP_MX(PWT,MZM(PRUCT))) ! - PRWS = PRWS - DYF(UP_MY(PWT,MZM(1,IKU,1,PRVCT))) + PRWS = PRWS - DYF(UP_MY(PWT,MZM(PRVCT))) ! - PRWS = PRWS - DZM(1,IKU,1,UP_WZ(PWT,MZF(1,IKU,1,PRWCT))) + PRWS = PRWS - DZM(UP_WZ(PWT,MZF(PRWCT))) #else ! ! U component @@ -301,7 +299,7 @@ CASE(3) ! WENO 3 PRUS = PRUS - DYF(ZMEAN) END IF ! - PRUS = PRUS - DZF(1,IKU,1,WENO_K_2_MZ(PUT, MXM(PRWCT))) + PRUS = PRUS - DZF(WENO_K_2_MZ(PUT, MXM(PRWCT))) ! ! V component ! @@ -314,22 +312,22 @@ CASE(3) ! WENO 3 CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2) PRVS = PRVS - DYM(ZMEAN) ! - PRVS = PRVS - DZF(1,IKU,1,WENO_K_2_MZ(PVT, MYM(PRWCT))) + PRVS = PRVS - DZF(WENO_K_2_MZ(PVT, MYM(PRWCT))) END IF ! ! W component ! - ZWORK = MZM(1,IKU,1,PRUCT) + ZWORK = MZM(PRUCT) CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2) PRWS = PRWS - DXF(ZMEAN) ! IF (.NOT.L2D) THEN - ZWORK = MZM(1,IKU,1,PRVCT) + ZWORK = MZM(PRVCT) CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2) PRWS = PRWS - DYF(ZMEAN) END IF ! - PRWS = PRWS - DZM(1,IKU,1,WENO_K_2_WZ(PWT,MZF(1,IKU,1,PRWCT))) + PRWS = PRWS - DZM(WENO_K_2_WZ(PWT,MZF(PRWCT))) #else CALL MNH_GET_ZT3D(IZFPOS1,IZFPOS2,IZFNEG1,IZFNEG2,IZBPOS1,IZBPOS2,IZBNEG1,IZBNEG2,IZOMP1,IZOMP2,IZOMN1,IZOMN2) ! @@ -463,7 +461,7 @@ CASE(5) ! WENO 5 ! ZMEAN = WENO_K_3_MZ(PUT, MXM(PRWCT)) CALL GET_HALO(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - PRUS = PRUS - DZF(1,IKU,1,ZMEAN) + PRUS = PRUS - DZF(ZMEAN) ! ! V component, only called in 3D case ! @@ -481,27 +479,27 @@ CASE(5) ! WENO 5 ! ZMEAN = WENO_K_3_MZ(PVT, MYM(PRWCT)) CALL GET_HALO(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - PRVS = PRVS - DZF(1,IKU,1,ZMEAN) + PRVS = PRVS - DZF(ZMEAN) ! END IF ! ! W component ! - ZWORK = MZM(1,IKU,1,PRUCT) + ZWORK = MZM(PRUCT) CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN) CALL GET_HALO(ZMEAN)! Update HALO PRWS = PRWS - DXF(ZMEAN) ! IF (.NOT.L2D) THEN! 3D Case - ZWORK = MZM(1,IKU,1,PRVCT) + ZWORK = MZM(PRVCT) CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN) CALL GET_HALO(ZMEAN)! Update HALO PRWS = PRWS - DYF(ZMEAN) END IF ! - ZMEAN = WENO_K_3_WZ(PWT,MZF(1,IKU,1,PRWCT)) + ZMEAN = WENO_K_3_WZ(PWT,MZF(PRWCT)) CALL GET_HALO(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - PRWS = PRWS - DZM(1,IKU,1,ZMEAN) + PRWS = PRWS - DZM(ZMEAN) #else CALL MNH_GET_ZT3D(IZFPOS1,IZFPOS2,IZFPOS3,IZFNEG1,IZFNEG2,IZFNEG3,IZBPOS1, & IZBPOS2,IZBPOS3,IZBNEG1,IZBNEG2,IZBNEG3,IZOMP1,IZOMP2,IZOMP3,IZOMN1,IZOMN2,IZOMN3) diff --git a/src/MNH/anel_balancen.f90 b/src/MNH/anel_balancen.f90 index 21c83f052591ee0cf8e0540429d0a661075c3a58..743c5b5c7f57048cb103e29372c2e9748c70dd21 100644 --- a/src/MNH/anel_balancen.f90 +++ b/src/MNH/anel_balancen.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -233,7 +233,7 @@ CALL MPPDB_CHECK3D(XWT,"anel_balancen3.1-after update halo::XWT",PRECISION) ! ZRU(:,:,:) = MXM(XRHODJ) * XUT(:,:,:) ZRV(:,:,:) = MYM(XRHODJ) * XVT(:,:,:) -ZRW(:,:,:) = MZM(1,IKU,1,XRHODJ) * XWT(:,:,:) +ZRW(:,:,:) = MZM(XRHODJ) * XWT(:,:,:) ZTH(:,:,:) = XTHT(:,:,:) ALLOCATE(ZRR(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),SIZE(XRT,4))) ZRR(:,:,:,:) = XRT(:,:,:,:) @@ -288,7 +288,7 @@ DEALLOCATE(ZBFY,ZTRIGSX,ZTRIGSY,ZRR,ZBF_SXP2_YP1_Z) !20131112 appli update_halo_ll and associated operations XUT(:,:,:) = ZRU(:,:,:) / MXM(XRHODJ) XVT(:,:,:) = ZRV(:,:,:) / MYM(XRHODJ) -XWT(:,:,:) = ZRW(:,:,:) / MZM(1,IKU,1,XRHODJ) +XWT(:,:,:) = ZRW(:,:,:) / MZM(XRHODJ) !20131112 appli update_halo_ll to XUT,XVT,XWT CALL ADD3DFIELD_ll( TZFIELDS_ll, XUT, 'ANEL_BALANCE_n::XUT' ) CALL ADD3DFIELD_ll( TZFIELDS_ll, XVT, 'ANEL_BALANCE_n::XVT' ) diff --git a/src/MNH/anti_diff.f90 b/src/MNH/anti_diff.f90 index d2dd37c190ac49f5609a93e584eaacb99e87d2ce..56372bfeccbfd1529118443c2bcef1ecc3f89675 100644 --- a/src/MNH/anti_diff.f90 +++ b/src/MNH/anti_diff.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/12/12 15:06:20 -!----------------------------------------------------------------- ! ########################## MODULE MODI_ANTI_DIFF ! ########################## @@ -156,44 +151,44 @@ IKE=IKU-JPVEXT (MXM(PAS(:,:,:))+ZEPSILON) ZB(:,:,:)=PRAVCT(:,:,:)*DYM(PAS(:,:,:)/PRHODJ(:,:,:))/ & (MYM(PAS(:,:,:))+ZEPSILON) - ZC(:,:,:)=PRAWCT(:,:,:)*DZM(1,IKU,1,PAS(:,:,:)/PRHODJ(:,:,:))/ & - (MZM(1,IKU,1,PAS(:,:,:))+ZEPSILON) + ZC(:,:,:)=PRAWCT(:,:,:)*DZM(PAS(:,:,:)/PRHODJ(:,:,:))/ & + (MZM(PAS(:,:,:))+ZEPSILON) ! ! 1.2 Calculation antidiffusion velocities ! ------------------------------------ ! ! u-component antidiffusive velocity ! - PRAUCT(:,:,:)=PTSTEP/2.* ( & + PRAUCT(:,:,:)=PTSTEP/2.* ( & ZA*( & MXM(PRHODJ)*SIGN(1.,PRAUCT) & /ZDBLTST- & PRAUCT & )- & - PRAUCT*MXM(MYF(ZB)+MZF(1,IKU,1,ZC)) & + PRAUCT*MXM(MYF(ZB)+MZF(ZC)) & ) ! ! v-component antidiffusive velocity ! - PRAVCT(:,:,:)=PTSTEP/2.* ( & + PRAVCT(:,:,:)=PTSTEP/2.* ( & ZB*( & MYM(PRHODJ)*SIGN(1.,PRAVCT) & /ZDBLTST- & PRAVCT & )- & - PRAVCT*MYM(MXF(ZA)+MZF(1,IKU,1,ZC)) & + PRAVCT*MYM(MXF(ZA)+MZF(ZC)) & ) ! ! ! w-component antidiffusive velocity ! - PRAWCT(:,:,:)=PTSTEP/2.* ( & + PRAWCT(:,:,:)=PTSTEP/2.* ( & ZC*( & - MZM(1,IKU,1,PRHODJ)*SIGN(1.,PRAWCT) & + MZM(PRHODJ)*SIGN(1.,PRAWCT) & /ZDBLTST- & PRAWCT & )- & - PRAWCT*MZM(1,IKU,1,MXF(ZA)+MYF(ZB)) & + PRAWCT*MZM(MXF(ZA)+MYF(ZB)) & ) ! ! 1.3 Limit of the antidiffusive velocities to satisfy CFL<1 diff --git a/src/MNH/compute_exner_from_ground.f90 b/src/MNH/compute_exner_from_ground.f90 index cbb64d0376d42b3af52447f12503b78531513f23..60225dbf11bd04c14b13258431b8ffbfcc084e8d 100644 --- a/src/MNH/compute_exner_from_ground.f90 +++ b/src/MNH/compute_exner_from_ground.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-2020 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. @@ -150,7 +150,7 @@ ZGSCPD = XG/XCPD !* 2. COMPUTATION OF THE EXNER FUNCTION AT FLUX POINTS ! ------------------------------------------------ ! -ZZM=MZF(1,IKU,1,PZFLUX) +ZZM=MZF(PZFLUX) PEXNFLUX(:,:,IKB)=PEXNSURF2D(:,:) IF (LCARTESIAN .OR. LTHINSHELL) THEN ZD1=0. diff --git a/src/MNH/compute_exner_from_top.f90 b/src/MNH/compute_exner_from_top.f90 index e195e725de1cf4e020487bbf3f2de6e052415b76..4048672a15b4470c3aa6d6987e61d26f8d219b36 100644 --- a/src/MNH/compute_exner_from_top.f90 +++ b/src/MNH/compute_exner_from_top.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-2020 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. @@ -149,7 +149,7 @@ ZGSCPD = XG/XCPD !* 2. COMPUTATION OF THE EXNER FUNCTION AT FLUX POINTS ! ------------------------------------------------ ! -ZZM=MZF(1,IKU,1,PZFLUX) +ZZM=MZF(PZFLUX) PEXNFLUX(:,:,IKE+1)=PEXNTOP2D(:,:) IF (LCARTESIAN .OR. LTHINSHELL) THEN ZD1=0. diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90 index 326ad848a66ed48e11a8d2e72c33669d74e77d53..f04fff457b412175924dfa7147d68667846ae4f9 100644 --- a/src/MNH/compute_r00.f90 +++ b/src/MNH/compute_r00.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -113,7 +113,6 @@ LOGICAL :: GSTART INTEGER :: INBR_START REAL :: ZXMAX,ZYMAX,ZZMAX ! domain extrema INTEGER, DIMENSION(100) :: NBRFILES -INTEGER :: IKU TYPE(TFIELDDATA) :: TZFIELD TYPE(TFILEDATA),POINTER :: TZTRACFILE ! @@ -124,7 +123,6 @@ TYPE(TFILEDATA),POINTER :: TZTRACFILE ! TZTRACFILE => NULL() ZSPVAL=-1.E+11 -IKU=SIZE(XZHAT) ! !------------------------------------------------------------------------------- ! @@ -193,7 +191,7 @@ ZXOR=0.5 * (XXHAT(2)+XXHAT(3)) ZYOR=0.5 * (XYHAT(2)+XYHAT(3)) ZDX= XXHAT(3)-XXHAT(2) ZDY= XYHAT(3)-XYHAT(2) -ZZL=MZF(1,IKU,1,XZZ) +ZZL=MZF(XZZ) ZZL(:,:,NKU)=2*XZZ(:,:,NKU)-ZZL(:,:,NKU-1) ZXMAX=ZXOR+(NIU-3)*ZDX ZYMAX=ZYOR+(NJU-3)*ZDY diff --git a/src/MNH/contrav.f90 b/src/MNH/contrav.f90 index 5c3162db80108722eabed6b7d328dac4523efe87..bcfab6069af65f513ca497c7095c97acb9e0ebed 100644 --- a/src/MNH/contrav.f90 +++ b/src/MNH/contrav.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -95,9 +95,6 @@ END MODULE MODI_CONTRAV !! !! EXTERNAL !! -------- -!! MXF, MYF, MZM : Shuman functions (mean operators) -!! -!! Module MODI_SHUMAN : Interface for Shuman functions !! !! !! IMPLICIT ARGUMENTS @@ -137,7 +134,6 @@ USE MODD_GRID_n, ONLY: XZZ USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll USE MODE_ll ! -USE MODI_SHUMAN USE MODI_GET_HALO ! USE MODE_MPPDB diff --git a/src/MNH/convection.f90 b/src/MNH/convection.f90 index 2738ac854fe50aabff8b02554b43b0c6f41b6c79..f80a0c0890a70519dac4d25e2daf92f70a644258 100644 --- a/src/MNH/convection.f90 +++ b/src/MNH/convection.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2020 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. @@ -396,9 +396,9 @@ END IF !* 1. Center all fields on thermo levels ! ---------------------------------- ! -ZWORK(:,:,:) = MZF(1,IKU,1, PZZ(:,:,:) ) +ZWORK(:,:,:) = MZF( PZZ(:,:,:) ) ZZZ(:,:,:) = ZWORK(:,:,:) -ZWORK(:,:,:) = MZF(1,IKU,1, PWT(:,:,:) ) +ZWORK(:,:,:) = MZF( PWT(:,:,:) ) ZWT(:,:,:) = ZWORK(:,:,:) ZWORK(:,:,:) = MXF( PUT(:,:,:) ) ZUT(:,:,:) = ZWORK(:,:,:) diff --git a/src/MNH/dflux_corr.f90 b/src/MNH/dflux_corr.f90 index 20b2b79cbce459f9f3a16947abb5d81c2246d97f..fec030ec7aa25c9434f803dea97a2853cf983a1d 100644 --- a/src/MNH/dflux_corr.f90 +++ b/src/MNH/dflux_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2020 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. @@ -204,7 +204,7 @@ PFY(:,:,:) = (0.5+SIGN(0.5,PRVCT(:,:,:)))*MIN( PFY(:,:,:),ZFOUT(:,:,:) ) & ZFOUT(:,:,2:IKU) = -ZBETAOUT(:,:,1:IKU-1) ! Second limiter ZFOUT(:,:,1) = 0.0 ! -PFZ(:,:,:) = PRWCT(:,:,:) * MZM (1,IKU,1,PAT(:,:,:)) +PFZ(:,:,:) = PRWCT(:,:,:) * MZM (PAT(:,:,:)) PFZ(:,:,:) = (0.5+SIGN(0.5,PRWCT(:,:,:)))*MIN( PFZ(:,:,:),ZFOUT(:,:,:) ) & +(0.5-SIGN(0.5,PRWCT(:,:,:)))*MAX( PFZ(:,:,:),ZBETAOUT(:,:,:) ) ! diff --git a/src/MNH/diagnos_les_mf.f90 b/src/MNH/diagnos_les_mf.f90 index 31fa13da74a1fc2c0444f1495a15a465801a4214..f537b04f36ac1617a2b8590e1deee9cdd8d0ed52 100644 --- a/src/MNH/diagnos_les_mf.f90 +++ b/src/MNH/diagnos_les_mf.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2009-2020 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. @@ -151,83 +151,83 @@ CALL SECOND_MNH2(ZTIME1) ZWORK(:,:,:)=RESHAPE(PWTHMF(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT(MZF(1,KKU,1,ZWORK) ,ZTHLMFFLX_LES ) + CALL LES_VER_INT(MZF(ZWORK) ,ZTHLMFFLX_LES ) CALL LES_MEAN_ll(ZTHLMFFLX_LES,LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_WTHLMF(:,NLES_CURRENT_TCOUNT,1)) ZWORK(:,:,:)=RESHAPE(PWRTMF(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZRTMFFLX_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZRTMFFLX_LES ) CALL LES_MEAN_ll (ZRTMFFLX_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_WRTMF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PWUMF(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZUMFFLX_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZUMFFLX_LES ) CALL LES_MEAN_ll (ZUMFFLX_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_WUMF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PWVMF(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZVMFFLX_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZVMFFLX_LES ) CALL LES_MEAN_ll (ZVMFFLX_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_WVMF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PWTHVMF(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZTHVMFFLX_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZTHVMFFLX_LES ) CALL LES_MEAN_ll (ZTHVMFFLX_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_WTHVMF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PTHL_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZTHLUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZTHLUP_MF_LES ) CALL LES_MEAN_ll (ZTHLUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_THLUP_MF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PRT_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZRTUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZRTUP_MF_LES ) CALL LES_MEAN_ll (ZRTUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_RTUP_MF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PRV_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZRVUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZRVUP_MF_LES ) CALL LES_MEAN_ll (ZRVUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_RVUP_MF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PRC_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZRCUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZRCUP_MF_LES ) CALL LES_MEAN_ll (ZRCUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_RCUP_MF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PRI_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZRIUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZRIUP_MF_LES ) CALL LES_MEAN_ll (ZRIUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_RIUP_MF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PEMF(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZEMF_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZEMF_MF_LES ) CALL LES_MEAN_ll (ZEMF_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_MASSFLUX(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PDETR(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZDETR_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZDETR_MF_LES ) CALL LES_MEAN_ll (ZDETR_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_DETR(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PENTR(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZENTR_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZENTR_MF_LES ) CALL LES_MEAN_ll (ZENTR_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_ENTR(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PW_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZWUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZWUP_MF_LES ) CALL LES_MEAN_ll (ZWUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_WUP_MF(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PFRAC_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZFRACUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZFRACUP_MF_LES ) CALL LES_MEAN_ll (ZFRACUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_FRACUP(:,NLES_CURRENT_TCOUNT,1) ) ZWORK(:,:,:)=RESHAPE(PTHV_UP(:,:),(/ KIU,KJU,KKU /) ) - CALL LES_VER_INT( MZF(1,KKU,1,ZWORK) ,ZTHVUP_MF_LES ) + CALL LES_VER_INT( MZF(ZWORK) ,ZTHVUP_MF_LES ) CALL LES_MEAN_ll (ZTHVUP_MF_LES , LLES_CURRENT_CART_MASK, & X_LES_SUBGRID_THVUP_MF(:,NLES_CURRENT_TCOUNT,1) ) diff --git a/src/MNH/dyn_sources.f90 b/src/MNH/dyn_sources.f90 index d832d614fbad8afb4075ff1fb6b456897dc14c00..3972eae3c41a1702aa2c2c30fae8978658d54933 100644 --- a/src/MNH/dyn_sources.f90 +++ b/src/MNH/dyn_sources.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -236,28 +236,28 @@ IF ((.NOT.L1D).AND.(.NOT.LCARTESIAN) ) THEN ! ELSE ! NO THINSHELL approximation ! - ZWORK3(:,:,:) = 1.0 / ( XRADIUS + MZF(1,IKU,1,PZZ(:,:,:)) ) + ZWORK3(:,:,:) = 1.0 / ( XRADIUS + MZF(PZZ(:,:,:)) ) ZWORK1(:,:,:) = SPREAD( PCURVX(:,:),DIM=3,NCOPIES=IKU ) ZWORK2(:,:,:) = SPREAD( PCURVY(:,:),DIM=3,NCOPIES=IKU ) CALL MPPDB_CHECK3DM("DYN_SOURCES:ZWORK3,ZWORK1,ZWORK2",PRECISION,& & ZWORK3,ZWORK1,ZWORK2,& & MXM( MYF(ZRVT*PVT) * ZWORK2 * ZWORK3 ) , & - & MXM( ( MYF(PVT) * ZWORK1 - MZF(1,IKU,1,PWT) ) * ZWORK3 ) ,& - & MYF(PVT) * ZWORK1 - MZF(1,IKU,1,PWT) , & - & MYF(PVT) , MZF(1,IKU,1,PWT) , MXM(PWT) , MYM(PWT) ) - CALL MPPDB_CHECK3DM("DYN_SOURCES:SUITE",PRECISION,& + & MXM( ( MYF(PVT) * ZWORK1 - MZF(PWT) ) * ZWORK3 ) ,& + & MYF(PVT) * ZWORK1 - MZF(PWT) , & + & MYF(PVT) , MZF(PWT) , MXM(PWT) , MYM(PWT) ) + CALL MPPDB_CHECK3DM("DYN_SOOURCES:SUITE",PRECISION,& & MXM(ZRVT),MXM(PVT),MXM(PWT),MXM(ZWORK1),MXM(ZWORK2),MXM(ZWORK3) ) ! PRUS(:,:,:) = PRUS & + MXM( MYF(ZRVT*PVT) * ZWORK2 * ZWORK3 ) & - + ZRUT * MXM( ( MYF(PVT) * ZWORK1 - MZF(1,IKU,1,PWT) ) * ZWORK3 ) + + ZRUT * MXM( ( MYF(PVT) * ZWORK1 - MZF(PWT) ) * ZWORK3 ) ! PRVS(:,:,:) = PRVS & - MYM( MXF(ZRUT*PUT) * ZWORK1 * ZWORK3 ) & - - ZRVT * MYM( (MXF(PUT) * ZWORK2 + MZF(1,IKU,1,PWT) ) * ZWORK3 ) + - ZRVT * MYM( (MXF(PUT) * ZWORK2 + MZF(PWT) ) * ZWORK3 ) ! PRWS(:,:,:) = PRWS & - +MZM(1,IKU,1, ( MXF(ZRUT*PUT) + MYF(ZRVT*PVT) ) * ZWORK3 ) + +MZM( ( MXF(ZRUT*PUT) + MYF(ZRVT*PVT) ) * ZWORK3 ) ! END IF ! @@ -284,11 +284,11 @@ IF (LCORIO) THEN ZWORK1(:,:,:) = SPREAD( PCORIOX(:,:),DIM=3,NCOPIES=IKU) * PRHODJ(:,:,:) ZWORK2(:,:,:) = SPREAD( PCORIOY(:,:),DIM=3,NCOPIES=IKU) * PRHODJ(:,:,:) ! - PRUS(:,:,:) = PRUS - MXM( ZWORK2 * MZF(1,IKU,1,PWT) ) + PRUS(:,:,:) = PRUS - MXM( ZWORK2 * MZF(PWT) ) ! - PRVS(:,:,:) = PRVS - MYM( ZWORK1 * MZF(1,IKU,1,PWT) ) + PRVS(:,:,:) = PRVS - MYM( ZWORK1 * MZF(PWT) ) ! - PRWS(:,:,:) = PRWS + MZM( 1,IKU,1,ZWORK2 * MXF(PUT) + ZWORK1 * MYF(PVT) ) + PRWS(:,:,:) = PRWS + MZM( ZWORK2 * MXF(PUT) + ZWORK1 * MYF(PVT) ) ! END IF ! @@ -330,8 +330,8 @@ IF( .NOT.L1D ) THEN ! PRTHS(:,:,:) = PRTHS(:,:,:) + PRHODJ(:,:,:) & * ( ( XRD + XRV * PRT(:,:,:,1) ) * ZCPD_OV_RD / ZWORK1(:,:,:) - 1. ) & - * PTHT(:,:,:)/PEXNREF(:,:,:)*MZF(1,IKU,1,PWT(:,:,:))*(ZG_OV_CPD/PTHVREF(:,:,:) & - -ZD1*4./7.*PEXNREF(:,:,:)/( XRADIUS+MZF(1,IKU,1,PZZ(:,:,:)) )) + * PTHT(:,:,:)/PEXNREF(:,:,:)*MZF(PWT(:,:,:))*(ZG_OV_CPD/PTHVREF(:,:,:) & + -ZD1*4./7.*PEXNREF(:,:,:)/( XRADIUS+MZF(PZZ(:,:,:)) )) ! END IF ! diff --git a/src/MNH/eddy_fluxn.f90 b/src/MNH/eddy_fluxn.f90 index e2b92e8a98420147be2a4c3807d0e875b003b1eb..9dab9b12ce76bfe752b4bc0609a2e8f4f2f28611 100644 --- a/src/MNH/eddy_fluxn.f90 +++ b/src/MNH/eddy_fluxn.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2004-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ####################### @@ -232,7 +232,7 @@ ZBETA(:,:,:) = GX_M_U(1,IKU,1,ZCORIOZ(:,:,:),XDXX,XDZZ,XDZX) ZCORIOZ(:,:,:)= MXM(ZCORIOZ(:,:,:)) ! Dry Brunt Vaisal frequency -ZWORK32(:,:,:)=DZM(1,IKU,1,PTHM(:,:,:))/ MZM(1,IKU,1,PTHM(:,:,:)) +ZWORK32(:,:,:)=DZM(PTHM(:,:,:))/ MZM(PTHM(:,:,:)) DO JK=1,(IKE+1) DO JJ=1,(IJE+1) DO JI=1,(IIE+1) diff --git a/src/MNH/endstep.f90 b/src/MNH/endstep.f90 index 9a3da2c5443fb7d07a7e43c62891df3b1d1e7ea9..2906923ac0435622452e3ca2cf5cf1d678e3e619 100644 --- a/src/MNH/endstep.f90 +++ b/src/MNH/endstep.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/endstep.f90,v $ $Revision: 1.2.2.2.2.2.16.1.2.5 $ $Date: 2014/04/22 14:31:38 $ -!----------------------------------------------------------------- ! ################### MODULE MODI_ENDSTEP ! ################### @@ -280,14 +276,12 @@ REAL, DIMENSION(:,:), INTENT(INOUT) :: PZWS ! significant w !* 0.2 DECLARATIONS OF LOCAL VARIABLES ! INTEGER:: JSV ! loop counters -INTEGER :: IKU INTEGER :: IIB, IIE ! index of first and last inner mass points along x INTEGER :: IJB, IJE ! index of first and last inner mass points along y ! !------------------------------------------------------------------------------ ! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) -IKU=SIZE(XZHAT) ! !* 1. ASSELIN FILTER ! @@ -544,7 +538,7 @@ IF (LBU_ENABLE) THEN ! IF (LBUDGET_U) CALL BUDGET (PUS*MXM(PRHODJ)/PTSTEP,1,'ENDF_BU_RU') IF (LBUDGET_V) CALL BUDGET (PVS*MYM(PRHODJ)/PTSTEP,2,'ENDF_BU_RV') - IF (LBUDGET_W) CALL BUDGET (PWS*MZM(1,IKU,1,PRHODJ)/PTSTEP,3,'ENDF_BU_RW') + IF (LBUDGET_W) CALL BUDGET (PWS*MZM(PRHODJ)/PTSTEP,3,'ENDF_BU_RW') IF (LBUDGET_TH) CALL BUDGET (PTHS*PRHODJ/PTSTEP,4,'ENDF_BU_RTH') IF (LBUDGET_TKE) CALL BUDGET (PTKES*PRHODJ/PTSTEP,5,'ENDF_BU_RTKE') IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1)*PRHODJ/PTSTEP,6,'ENDF_BU_RRV') diff --git a/src/MNH/exchange.f90 b/src/MNH/exchange.f90 index b6d8bb8b3a90378304d730c19fbdfeecb932cef2..2f606e359c72593604d6fca4d0a4af618391341d 100644 --- a/src/MNH/exchange.f90 +++ b/src/MNH/exchange.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2020 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. @@ -130,14 +130,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS,PRSVS ! INTEGER :: IINFO_ll ! return code of parallel routine INTEGER :: JRR,JSV ! loop counters ! -INTEGER :: IKU INTEGER :: ILUOUT ! logical unit numbers of output-listing INTEGER :: IRESP ! IRESP : return-code if a problem appears !in LFI subroutines at the open of the file REAL :: ZRATIO, ZMASSTOT, ZMASSPOS !------------------------------------------------------------------------------ ! -IKU=SIZE(XZHAT) ILUOUT = TLUOUT%NLU ! !* 1. TRANSFORMS THE SOURCE TERMS INTO PROGNOSTIC VARIABLES @@ -147,7 +145,7 @@ ILUOUT = TLUOUT%NLU ! PRUS(:,:,:) = PRUS(:,:,:)*PTSTEP / MXM(PRHODJ) PRVS(:,:,:) = PRVS(:,:,:)*PTSTEP / MYM(PRHODJ) -PRWS(:,:,:) = PRWS(:,:,:)*PTSTEP / MZM(1,IKU,1,PRHODJ) +PRWS(:,:,:) = PRWS(:,:,:)*PTSTEP / MZM(PRHODJ) ! ! 1.b Meteorological scalar variables ! diff --git a/src/MNH/fct_met.f90 b/src/MNH/fct_met.f90 index 653b238a2235d29b15a741ebfa791eb13b544a65..b484dc59300c87cdd2ab214e74ec5fc03daffcef 100644 --- a/src/MNH/fct_met.f90 +++ b/src/MNH/fct_met.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 newsrc 2006/06/06 12:00:47 -!----------------------------------------------------------------- ! ###################### MODULE MODI_FCT_MET ! ###################### @@ -153,10 +148,8 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: & REAL :: ZMINR,ZMINTKE ! Absolute minimum values of ! water substances, TKE -INTEGER :: IKU !------------------------------------------------------------------------------- ! -IKU=SIZE(XZHAT) !* 1. FLUX-CORRECTED TRANSPORT ADVECTION SCHEME for the HMET group ! ! @@ -175,7 +168,7 @@ IKU=SIZE(XZHAT) IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVY_BU_RTH') ! PRTHS(:,:,:) = PRTHS(:,:,:) & - - DZF(1,IKU,1,PRWCT(:,:,:)*MZM (1,IKU,1,PTHT(:,:,:))) + - DZF(PRWCT(:,:,:)*MZM (PTHT(:,:,:))) IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH') ! !* 1.2 No condensation case: Vapor ---> advected by a FCT scheme @@ -196,7 +189,7 @@ IKU=SIZE(XZHAT) IF (LBUDGET_RV) & CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV') ! - PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(1,IKU,1,ZFZ(:,:,:)) + PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(ZFZ(:,:,:)) IF (LBUDGET_RV) & CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV') END IF @@ -212,7 +205,7 @@ IKU=SIZE(XZHAT) ! ZFX(:,:,:) = PRUCT(:,:,:) * MXM (PRT(:,:,:,2)) ! ZFY(:,:,:) = PRVCT(:,:,:) * MYM (PRT(:,:,:,2)) ! CENtred scheme for rc - ZFZ(:,:,:) = PRWCT(:,:,:) * MZM (1,IKU,1,PRT(:,:,:,2)) ! + ZFZ(:,:,:) = PRWCT(:,:,:) * MZM (PRT(:,:,:,2)) ! ! ZRTFX(:,:,:) = ZRTFX(:,:,:) - ZFX(:,:,:) ! ZRTFY(:,:,:) = ZRTFY(:,:,:) - ZFY(:,:,:) ! rv fluxes deduction @@ -228,8 +221,8 @@ IKU=SIZE(XZHAT) IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV') IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVY_BU_RRC') ! - PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(1,IKU,1,ZRTFZ(:,:,:)) - PRRS(:,:,:,2) = PRRS(:,:,:,2) - DZF(1,IKU,1, ZFZ(:,:,:)) + PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(ZRTFZ(:,:,:)) + PRRS(:,:,:,2) = PRRS(:,:,:,2) - DZF( ZFZ(:,:,:)) IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV') IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC') ! @@ -248,7 +241,7 @@ IKU=SIZE(XZHAT) ! ZFX(:,:,:) = PRUCT(:,:,:) * MXM (PRT(:,:,:,2)) ! ZFY(:,:,:) = PRVCT(:,:,:) * MYM (PRT(:,:,:,2)) ! CENtred scheme for rc - ZFZ(:,:,:) = PRWCT(:,:,:) * MZM (1,IKU,1,PRT(:,:,:,2)) ! + ZFZ(:,:,:) = PRWCT(:,:,:) * MZM (PRT(:,:,:,2)) ! ! ZRTFX(:,:,:) = ZRTFX(:,:,:) - ZFX(:,:,:) ! ZRTFY(:,:,:) = ZRTFY(:,:,:) - ZFY(:,:,:) ! rv+ri fluxes deduction @@ -260,13 +253,13 @@ IKU=SIZE(XZHAT) PRRS(:,:,:,2) = PRRS(:,:,:,2) - DYF( ZFY(:,:,:)) IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVY_BU_RRC') ! - PRRS(:,:,:,2) = PRRS(:,:,:,2) - DZF(1,IKU,1, ZFZ(:,:,:)) + PRRS(:,:,:,2) = PRRS(:,:,:,2) - DZF( ZFZ(:,:,:)) IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC') ! ! ZFX(:,:,:) = PRUCT(:,:,:) * MXM (PRT(:,:,:,4)) ! ZFY(:,:,:) = PRVCT(:,:,:) * MYM (PRT(:,:,:,4)) ! CENtred scheme for ri - ZFZ(:,:,:) = PRWCT(:,:,:) * MZM (1,IKU,1,PRT(:,:,:,4)) ! + ZFZ(:,:,:) = PRWCT(:,:,:) * MZM (PRT(:,:,:,4)) ! ! ZRTFX(:,:,:) = ZRTFX(:,:,:) - ZFX(:,:,:) ! ZRTFY(:,:,:) = ZRTFY(:,:,:) - ZFY(:,:,:) ! rv fluxes deduction @@ -282,8 +275,8 @@ IKU=SIZE(XZHAT) IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV') IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVY_BU_RRI') ! - PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(1,IKU,1,ZRTFZ(:,:,:)) - PRRS(:,:,:,4) = PRRS(:,:,:,4) - DZF(1,IKU,1, ZFZ(:,:,:)) + PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(ZRTFZ(:,:,:)) + PRRS(:,:,:,4) = PRRS(:,:,:,4) - DZF( ZFZ(:,:,:)) IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV') IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVZ_BU_RRI') ! @@ -303,7 +296,7 @@ IKU=SIZE(XZHAT) PRRS(:,:,:,3) = PRRS(:,:,:,3) - DYF( ZFY(:,:,:)) IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVY_BU_RRR') ! - PRRS(:,:,:,3) = PRRS(:,:,:,3) - DZF(1,IKU,1, ZFZ(:,:,:)) + PRRS(:,:,:,3) = PRRS(:,:,:,3) - DZF( ZFZ(:,:,:)) IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVZ_BU_RRR') ! END IF @@ -332,7 +325,7 @@ IKU=SIZE(XZHAT) IF (JRR==7.AND.LBUDGET_RH) & CALL BUDGET (PRRS(:,:,:,7),12,'ADVY_BU_RRH') ! - PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) - DZF(1,IKU,1,ZFZ(:,:,:)) + PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) - DZF(ZFZ(:,:,:)) IF (JRR==5.AND.LBUDGET_RS) & CALL BUDGET (PRRS(:,:,:,5),10,'ADVZ_BU_RRS') IF (JRR==6.AND.LBUDGET_RG) & @@ -359,7 +352,7 @@ IKU=SIZE(XZHAT) PRTKES(:,:,:) = PRTKES(:,:,:) - DYF(ZFY(:,:,:)) IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVY_BU_RTKE') ! - PRTKES(:,:,:) = PRTKES(:,:,:) - DZF(1,IKU,1,ZFZ(:,:,:)) + PRTKES(:,:,:) = PRTKES(:,:,:) - DZF(ZFZ(:,:,:)) IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVZ_BU_RTKE') ! END IF diff --git a/src/MNH/fct_scalar.f90 b/src/MNH/fct_scalar.f90 index 75df108044a26b5c9eb00a7b39b305cb10b9268e..b37661bd07186a752728456cac52f6e92992c3f7 100644 --- a/src/MNH/fct_scalar.f90 +++ b/src/MNH/fct_scalar.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2006/06/06 12:01:31 -!----------------------------------------------------------------- ! ###################### MODULE MODI_FCT_SCALAR ! ###################### @@ -140,11 +135,9 @@ INTEGER :: JSV ! REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) & :: ZFX ,ZFY ,ZFZ ! Advective flux components for each -INTEGER :: IKU ! !------------------------------------------------------------------------------- ! -IKU=SIZE(XZHAT) !* 1. FLUX-CORRECTED TRANSPORT ADVECTION SCHEME for the HSV group ! ! @@ -163,7 +156,7 @@ IKU=SIZE(XZHAT) IF (LBUDGET_SV) & CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVY_BU_RSV') ! - PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - DZF(1,IKU,1,ZFZ(:,:,:)) + PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - DZF(ZFZ(:,:,:)) IF (LBUDGET_SV) & CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVZ_BU_RSV') END DO diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90 index 55b5db9c4bf12ca54f13e17b2b6cdec2357bd3db..3cd873895ccd911ef791e4700cda3fde6ded209a 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2020 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. @@ -181,7 +181,6 @@ REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Land-sea mask INTEGER :: IIB, IIE ! index values of the first and last inner mass points along x INTEGER :: IJB, IJE ! index values of the first and last inner mass points along y INTEGER :: IKB, IKE ! index values of the first and last inner mass points along z -INTEGER :: IKU INTEGER :: II, IJ, IK, IL, IM, IPOINT ! loop indexes INTEGER :: IX, IY, IZ INTEGER :: IXOR, IYOR ! origin of the extended subdomain @@ -336,7 +335,6 @@ CALL MYPROC_ELEC_ll(IPROC) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB = 1 + JPVEXT IKE = SIZE(PRT,3) - JPVEXT -IKU = SIZE(PRT,3) ! ! global indexes of the local subdomains origin CALL GET_GLOBALDIMS_ll (NIMAX_ll,NJMAX_ll) @@ -383,7 +381,7 @@ IF (GEFIRSTCALL) THEN ! ZXMASS(IIB:IIE) = 0.5 * (XXHAT(IIB:IIE) + XXHAT(IIB+1:IIE+1)) ZYMASS(IJB:IJE) = 0.5 * (XYHAT(IJB:IJE) + XYHAT(IJB+1:IJE+1)) - ZZMASS = MZF(1,IKU,1,PZZ) + ZZMASS = MZF(PZZ) ZPRES_COEF = EXP(ZZMASS/8400.) ZSCOORD_SEG(:,:,:) = 0.0 ISAVE_STATUS = 1 diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90 index e2cecf24f85cd243ddd7b10f06b5c875f2b40592..3163cb1ae95584c7e7a318bf245560f5d3229ab1 100644 --- a/src/MNH/forcing.f90 +++ b/src/MNH/forcing.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 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. @@ -474,7 +474,7 @@ ELSE ! ALLOCATE(ZZA(SIZE(PWT,1),SIZE(PWT,2),SIZE(PWT,3))) ALLOCATE(ZZF(SIZE(PWT,1),SIZE(PWT,2),SIZE(PWT,3))) - ZZA(:,:,:) = MZF(1,IKU,1, PZZ(:,:,:) ) + ZZA(:,:,:) = MZF( PZZ(:,:,:) ) ZZA(:,:,IKU) = 2.0*PZZ(:,:,IKU) - ZZA(:,:,IKU-1) ZDZHAT_INV_IKU = 1.0 / ( PZHAT(IKU)-PZHAT(IKU-1) ) ! @@ -544,7 +544,7 @@ ELSE END DO CALL GET_HALO(ZWF) ! - ZZF(:,:,:) = MZF(1,IKU,1, PZZ(:,:,:) ) + ZZF(:,:,:) = MZF( PZZ(:,:,:) ) ZZF(:,:,IKU) = 2.0*PZZ(:,:,IKU)-ZZF(:,:,IKU-1) ! DO JL=1,IKU-1 @@ -583,7 +583,7 @@ END IF !! !! Ligne to add if you want W in Pa/s in namelist instead of m/s (omega = - w/(rho*g)) !! -!ZWF(:,:,:) = - ZWF(:,:,:)/(XG*MZM(1,IKU,1,(PRHODJ(:,:,:)/PJ(:,:,:)))) +!ZWF(:,:,:) = - ZWF(:,:,:)/(XG*MZM((PRHODJ(:,:,:)/PJ(:,:,:)))) ! !!============================ ! @@ -634,49 +634,49 @@ ALLOCATE(ZRWCF(SIZE(PWT,1),SIZE(PWT,2),SIZE(PWT,3))) !* 4.1 integration of vertical motion (upstream scheme) ! IF (LVERT_MOTION_FRC) THEN - ZDZZ(:,:,:) = DZM(1,IKU,1,MZF(1,IKU,1,PZZ(:,:,:))) + ZDZZ(:,:,:) = DZM(MZF(PZZ(:,:,:))) ZDZZ(:,:,IKU) = PZZ(:,:,IKU) - PZZ(:,:,IKU-1) ! same delta z in IKU and IKU -1 ! - ZRWCF(:,:,:) = ZWF(:,:,:) * MZM(1,IKU,1,PRHODJ(:,:,:)) / ZDZZ(:,:,:) + ZRWCF(:,:,:) = ZWF(:,:,:) * MZM(PRHODJ(:,:,:)) / ZDZZ(:,:,:) ZRWCF(:,:,1) = - ZRWCF(:,:,3) ! Mirror hypothesis ! ! forced vertical transport of U and V ! - ZDZZ(:,:,:) = MXF(ZRWCF(:,:,:)) *DZM(1,IKU,1,PUT(:,:,:)) + ZDZZ(:,:,:) = MXF(ZRWCF(:,:,:)) *DZM(PUT(:,:,:)) PRUS(:,:,:) = PRUS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) - ZDZZ(:,:,:) = MYF(ZRWCF(:,:,:)) *DZM(1,IKU,1,PVT(:,:,:)) + ZDZZ(:,:,:) = MYF(ZRWCF(:,:,:)) *DZM(PVT(:,:,:)) PRVS(:,:,:) = PRVS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) ! ! forced vertical transport of W ! IF( .NOT.L1D ) THEN - ZDZZ(:,:,:) = MZF(1,IKU,1,ZRWCF(:,:,:)) *DZF(1,IKU,1,PWT(:,:,:)) + ZDZZ(:,:,:) = MZF(ZRWCF(:,:,:)) *DZF(PWT(:,:,:)) PRWS(:,:,:) = PRWS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) END IF ! ! forced vertical transport of THETA ! - ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PTHT(:,:,:)) + ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(PTHT(:,:,:)) PRTHS(:,:,:) = PRTHS(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) ! ! forced vertical transport of TKE (if allocated) ! IF( SIZE(PTKET) == SIZE(ZDZZ) ) THEN - ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PTKET(:,:,:)) + ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(PTKET(:,:,:)) PRTKES(:,:,:) = PRTKES(:,:,:) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) END IF ! ! forced vertical transport of water variables ! DO JL = 1 , SIZE(PRRS,4) - ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PRT(:,:,:,JL)) + ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(PRT(:,:,:,JL)) PRRS(:,:,:,JL) = PRRS(:,:,:,JL) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) END DO ! ! forced vertical transport of scalar variables ! DO JL = 1 , SIZE(PRSVS,4) - ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(1,IKU,1,PSVT(:,:,:,JL)) + ZDZZ(:,:,:) = ZRWCF(:,:,:) *DZM(PSVT(:,:,:,JL)) PRSVS(:,:,:,JL) = PRSVS(:,:,:,JL) - UPSTREAM_Z(ZDZZ(:,:,:),ZRWCF(:,:,:)) END DO ! @@ -757,7 +757,7 @@ PVFRC_PAST(:,:,:) = ZVF(:,:,:) ! IF( LRELAX_THRV_FRC .OR. LRELAX_UV_FRC ) THEN ! - ZDZZ(:,:,:) = DZM(1,IKU,1,MZF(1,IKU,1,PZZ(:,:,:))) + ZDZZ(:,:,:) = DZM(MZF(PZZ(:,:,:))) ZDZZ(:,:,IKU) = PZZ(:,:,IKU) - PZZ(:,:,IKU-1) ! ! define the mask where the relaxation is to be applied @@ -772,7 +772,7 @@ IF( LRELAX_THRV_FRC .OR. LRELAX_UV_FRC ) THEN !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','FORCING','wrong CRELAX_HEIGHT_TYPE option') END SELECT - WHERE ( MZF(1,IKU,1,PZZ(:,:,:)) .LE. XRELAX_HEIGHT_FRC ) + WHERE ( MZF(PZZ(:,:,:)) .LE. XRELAX_HEIGHT_FRC ) GRELAX_MASK_FRC = .FALSE. END WHERE ! diff --git a/src/MNH/gdiv.f90 b/src/MNH/gdiv.f90 index f11b44f7ce0296f6025e7e9de8cb0b7f39cb0438..b22065908c6e897d61706999fd1374582060f1d4 100644 --- a/src/MNH/gdiv.f90 +++ b/src/MNH/gdiv.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 operators 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ################ MODULE MODI_GDIV ! ################ @@ -71,13 +66,6 @@ END MODULE MODI_GDIV !! EXTERNAL !! -------- !! SUBROUTINE CONTRAV : compute the contavariant components -!! Shuman operators : -!! FUNCTION DXF : compute finite difference along x for a variable -!! localized at a flux side -!! FUNCTION DYF : compute finite difference along y for a variable -!! localized at a flux side -!! FUNCTION DZF : compute finite difference along z for a variable -!! localized at a flux side !! !! IMPLICIT ARGUMENTS !! ------------------ @@ -114,7 +102,6 @@ END MODULE MODI_GDIV ! USE MODD_PARAMETERS USE MODD_CONF -USE MODI_SHUMAN USE MODI_CONTRAV ! USE MODE_ll diff --git a/src/MNH/gradient_m.f90 b/src/MNH/gradient_m.f90 index 83e300c0e8478390c7fcea1c24609bf0d45f68a7..c89981bd1d1e7f8b8c803a9a2aa9199326454470 100644 --- a/src/MNH/gradient_m.f90 +++ b/src/MNH/gradient_m.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -270,7 +270,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_M_M ! result mass point ! IF (.NOT. LFLAT) THEN PGX_M_M(:,:,:)= (DXF(MXM(PA(:,:,:))) - & - MZF(KKA,KKU,KL,MXF(PDZX)*DZM(KKA,KKU,KL,PA(:,:,:)) & + MZF(MXF(PDZX)*DZM(PA(:,:,:)) & /PDZZ(:,:,:)) ) /MXF(PDXX(:,:,:)) ELSE PGX_M_M(:,:,:)=DXF(MXM(PA(:,:,:))) / MXF(PDXX(:,:,:)) @@ -442,7 +442,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_M_M ! result mass point ! ! IF (.NOT. LFLAT) THEN - PGY_M_M(:,:,:)= (DYF(MYM(PA))-MZF(KKA,KKU,KL,MYF(PDZY)*DZM(KKA,KKU,KL,PA)& + PGY_M_M(:,:,:)= (DYF(MYM(PA))-MZF(MYF(PDZY)*DZM(PA)& /PDZZ) ) /MYF(PDYY) ELSE PGY_M_M(:,:,:)= DYF(MYM(PA))/MYF(PDYY) @@ -604,7 +604,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_M_M ! result mass point !* 1. DEFINITION of GZ_M_M ! -------------------- ! -PGZ_M_M(:,:,:)= MZF(KKA,KKU,KL, DZM(KKA,KKU,KL,PA(:,:,:))/PDZZ(:,:,:) ) +PGZ_M_M(:,:,:)= MZF( DZM(PA(:,:,:))/PDZZ(:,:,:) ) ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/gradient_u.f90 b/src/MNH/gradient_u.f90 index 0adafdab8283d6d583010b20bb6ae06f3507ae23..75a2582602668aaaa94b2fd335a521805ebbf4bf 100644 --- a/src/MNH/gradient_u.f90 +++ b/src/MNH/gradient_u.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -186,7 +186,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_U_M ! result mass point ! IF (.NOT. LFLAT) THEN PGX_U_M(:,:,:)= ( DXF(PA) - & - MZF(KKA,KKU,KL,MXF(PDZX*DZM(KKA,KKU,KL,PA)) / PDZZ ) & + MZF(MXF(PDZX*DZM(PA)) / PDZZ ) & ) / MXF(PDXX) ELSE PGX_U_M(:,:,:)= DXF(PA) / MXF(PDXX) @@ -362,7 +362,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_U_UV ! result UV point ! --------------------- ! IF (.NOT. LFLAT) THEN - PGY_U_UV(:,:,:)= (DYM(PA)- MZF(KKA,KKU,KL, MYM( DZM(KKA,KKU,KL,PA)/& + PGY_U_UV(:,:,:)= (DYM(PA)- MZF( MYM( DZM(PA)/& MXM(PDZZ) ) *MXM(PDZY) ) ) / MXM(PDYY) ELSE PGY_U_UV(:,:,:)= DYM(PA) / MXM(PDYY) @@ -530,7 +530,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_U_UW ! result UW point !* 1. DEFINITION of GZ_U_UW ! --------------------- ! -PGZ_U_UW(:,:,:)= DZM(KKA,KKU,KL,PA) / MXM(PDZZ) +PGZ_U_UW(:,:,:)= DZM(PA) / MXM(PDZZ) ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/gradient_uv.f90 b/src/MNH/gradient_uv.f90 index b7c3e35fa1d9117c3c412ecc17cc77c32a5dd83a..c350c786fe23460f169175ced2d0a1872795d07d 100644 --- a/src/MNH/gradient_uv.f90 +++ b/src/MNH/gradient_uv.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 operators 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ####################### MODULE MODI_GRADIENT_UV ! ####################### @@ -133,7 +128,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_UV_V ! result V point ! IF (.NOT. LFLAT) THEN PGX_UV_V(:,:,:)= ( DXF(PA) - & - MZF(KKA,KKU,KL, MXF( MYM(PDZX)*DZM(KKA,KKU,KL,PA)/MYM(PDZZ) ) ) & + MZF( MXF( MYM(PDZX)*DZM(PA)/MYM(PDZZ) ) ) & ) / MXF(MYM(PDXX)) ELSE PGX_UV_V(:,:,:)= DXF(PA) / MXF(MYM(PDXX)) @@ -237,7 +232,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_UV_U ! result U point ! IF (.NOT. LFLAT) THEN PGY_UV_U(:,:,:)= ( DYF(PA) - & - MZF(KKA,KKU,KL, MYF( MXM(PDZY)*DZM(KKA,KKU,KL,PA)/MXM(PDZZ) ) ) & + MZF( MYF( MXM(PDZY)*DZM(PA)/MXM(PDZZ) ) ) & ) / MYF(MXM(PDYY)) ELSE PGY_UV_U(:,:,:)= DYF(PA) / MYF(MXM(PDYY)) diff --git a/src/MNH/gradient_uw.f90 b/src/MNH/gradient_uw.f90 index 5ef1c9622f649501ad3f610d1430d9c72c8e7a7a..d9ec4ec0ec7945d6ec8491da07dd7c6a19c8a733 100644 --- a/src/MNH/gradient_uw.f90 +++ b/src/MNH/gradient_uw.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 operators 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ####################### MODULE MODI_GRADIENT_UW ! ####################### @@ -132,10 +127,10 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_UW_W ! result W point ! IF (.NOT. LFLAT) THEN PGX_UW_W(:,:,:)= ( DXF(PA) - & - MZF(KKA,KKU,KL, MXF(MZF(KKA,KKU,KL, PDZX)*DZF(KKA,KKU,KL,PA)) / MZF(KKA,KKU,KL,PDZZ) ) & - ) / MXF(MZM(KKA,KKU,KL,PDXX)) + MZF( MXF(MZF( PDZX)*DZF(PA)) / MZF(PDZZ) ) & + ) / MXF(MZM(PDXX)) ELSE - PGX_UW_W(:,:,:)= DXF(PA) / MXF(MZM(KKA,KKU,KL,PDXX)) + PGX_UW_W(:,:,:)= DXF(PA) / MXF(MZM(PDXX)) END IF ! !---------------------------------------------------------------------------- @@ -222,7 +217,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_UW_U ! result U point !* 1. DEFINITION of GZ_UW_U ! --------------------- ! -PGZ_UW_U(:,:,:)= DZF(KKA,KKU,KL,PA) / MXM(MZF(KKA,KKU,KL,PDZZ)) +PGZ_UW_U(:,:,:)= DZF(PA) / MXM(MZF(PDZZ)) ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/gradient_v.f90 b/src/MNH/gradient_v.f90 index 40fefe5fe0879b3f03a19a1772ed70b02cea25fb..bedeb9ded157d38ff291658c202eaa30336ff280 100644 --- a/src/MNH/gradient_v.f90 +++ b/src/MNH/gradient_v.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -188,7 +188,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_V_M ! result mass point ! IF (.NOT. LFLAT) THEN PGY_V_M(:,:,:)= (DYF(PA) - & - MZF(KKA,KKU,KL, MYF(PDZY*DZM(KKA,KKU,KL,PA))/PDZZ ) & + MZF( MYF(PDZY*DZM(PA))/PDZZ ) & ) / MYF(PDYY) ELSE PGY_V_M(:,:,:)= DYF(PA) / MYF(PDYY) @@ -363,7 +363,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_V_UV ! result UV point ! --------------------- ! IF (.NOT. LFLAT) THEN - PGX_V_UV(:,:,:)= ( DXM(PA)- MZF(KKA,KKU,KL, MXM( DZM(KKA,KKU,KL,PA)/& + PGX_V_UV(:,:,:)= ( DXM(PA)- MZF( MXM( DZM(PA)/& MYM(PDZZ) ) *MYM(PDZX) ) ) / MYM(PDXX) ELSE PGX_V_UV(:,:,:)= DXM(PA) / MYM(PDXX) @@ -534,7 +534,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_V_VW ! result VW point !* 1. DEFINITION of GZ_V_VW ! --------------------- ! -PGZ_V_VW(:,:,:)= DZM(KKA,KKU,KL,PA) / MYM(PDZZ) +PGZ_V_VW(:,:,:)= DZM(PA) / MYM(PDZZ) ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/gradient_vw.f90 b/src/MNH/gradient_vw.f90 index 6d82cb972c21769d5c8ee2c1f63d7825b7598b37..c9016aa32b17fb2b3c4ed5841e62481a8afe3546 100644 --- a/src/MNH/gradient_vw.f90 +++ b/src/MNH/gradient_vw.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 operators 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ####################### MODULE MODI_GRADIENT_VW ! ####################### @@ -132,10 +127,10 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_VW_W ! result W point ! IF (.NOT. LFLAT) THEN PGY_VW_W(:,:,:)= ( DYF(PA) - & - MZF(KKA,KKU,KL, MYF(MZF(KKA,KKU,KL,PDZY)*DZF(KKA,KKU,KL,PA)) / MZF(KKA,KKU,KL,PDZZ) ) & - ) / MYF(MZM(KKA,KKU,KL,PDYY)) + MZF( MYF(MZF(PDZY)*DZF(PA)) / MZF(PDZZ) ) & + ) / MYF(MZM(PDYY)) ELSE - PGY_VW_W(:,:,:)= DYF(PA) / MYF(MZM(KKA,KKU,KL,PDYY)) + PGY_VW_W(:,:,:)= DYF(PA) / MYF(MZM(PDYY)) END IF ! !---------------------------------------------------------------------------- @@ -222,7 +217,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_VW_V ! result V point !* 1. DEFINITION of GZ_VW_V ! --------------------- ! -PGZ_VW_V(:,:,:)= DZF(KKA,KKU,KL,PA) / MYM(MZF(KKA,KKU,KL,PDZZ)) +PGZ_VW_V(:,:,:)= DZF(PA) / MYM(MZF(PDZZ)) ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/gradient_w.f90 b/src/MNH/gradient_w.f90 index c73b40743e5947a3f826881c45bf3c94c8da2abb..c90eec3a52d979e5ff6ecaf5a1cd64a7719aa672 100644 --- a/src/MNH/gradient_w.f90 +++ b/src/MNH/gradient_w.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -173,7 +173,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_W_M ! result mass point !* 1. DEFINITION of GZ_W_M ! -------------------- ! -PGZ_W_M(:,:,:)= DZF(KKA,KKU,KL,PA(:,:,:))/(MZF(KKA,KKU,KL,PDZZ(:,:,:))) +PGZ_W_M(:,:,:)= DZF(PA(:,:,:))/(MZF(PDZZ(:,:,:))) ! !---------------------------------------------------------------------------- ! @@ -311,11 +311,11 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_W_UW ! result UW point ! --------------------- ! IF (.NOT. LFLAT) THEN - PGX_W_UW(:,:,:)= DXM(PA(:,:,:))/(MZM(KKA,KKU,KL,PDXX(:,:,:))) & - -DZM(KKA,KKU,KL,MXM(MZF(KKA,KKU,KL,PA(:,:,:))))*PDZX(:,:,:) & - /( MZM(KKA,KKU,KL,PDXX(:,:,:))*MXM(PDZZ(:,:,:)) ) + PGX_W_UW(:,:,:)= DXM(PA(:,:,:))/(MZM(PDXX(:,:,:))) & + -DZM(MXM(MZF(PA(:,:,:))))*PDZX(:,:,:) & + /( MZM(PDXX(:,:,:))*MXM(PDZZ(:,:,:)) ) ELSE - PGX_W_UW(:,:,:)= DXM(PA(:,:,:))/(MZM(KKA,KKU,KL,PDXX(:,:,:))) + PGX_W_UW(:,:,:)= DXM(PA(:,:,:))/(MZM(PDXX(:,:,:))) END IF ! !---------------------------------------------------------------------------- @@ -477,11 +477,11 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_W_VW ! result VW point ! --------------------- ! IF (.NOT. LFLAT) THEN - PGY_W_VW(:,:,:)= DYM(PA(:,:,:))/(MZM(KKA,KKU,KL,PDYY(:,:,:))) & - -DZM(KKA,KKU,KL,MYM(MZF(KKA,KKU,KL,PA(:,:,:))))*PDZY(:,:,:) & - /( MZM(KKA,KKU,KL,PDYY(:,:,:))*MYM(PDZZ(:,:,:)) ) + PGY_W_VW(:,:,:)= DYM(PA(:,:,:))/(MZM(PDYY(:,:,:))) & + -DZM(MYM(MZF(PA(:,:,:))))*PDZY(:,:,:) & + /( MZM(PDYY(:,:,:))*MYM(PDZZ(:,:,:)) ) ELSE - PGY_W_VW(:,:,:)= DYM(PA(:,:,:))/(MZM(KKA,KKU,KL,PDYY(:,:,:))) + PGY_W_VW(:,:,:)= DYM(PA(:,:,:))/(MZM(PDYY(:,:,:))) END IF ! !---------------------------------------------------------------------------- diff --git a/src/MNH/gravity.f90 b/src/MNH/gravity.f90 index 2d43fa8a49f4dca6755803b1c994f3114b5d5690..d89641e9fa862d42df09ce812e6277430952df7e 100644 --- a/src/MNH/gravity.f90 +++ b/src/MNH/gravity.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -140,7 +140,6 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRWS ! Sources of Momentum REAL :: ZRV_OV_RD ! = RV / RD INTEGER :: JWATER ! loop index on the different types of water REAL, DIMENSION(:,:,:), allocatable :: ZWORK1, ZWORK2 -INTEGER :: IKU ! ! !------------------------------------------------------------------------------- @@ -164,8 +163,6 @@ allocate( zwork2(size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) ) !* 1. COMPUTES THE GRAVITY TERM ! ------------------------- ! -IKU=SIZE(PTHT,3) -! IF( L1D ) THEN ! no buoyancy for 1D case !$acc kernels PRWS(:,:,:) = 0. @@ -214,7 +211,7 @@ ELSE ! compute the gravity term ! #ifndef MNH_OPENACC - PRWS(:,:,:) = XG * MZM(1,IKU,1, ( (ZWORK2/PTHVREF) - 1. ) * PRHODJ ) + PRWS(:,:,:) = XG * MZM( ( (ZWORK2/PTHVREF) - 1. ) * PRHODJ ) #else !$acc kernels ZWORK1(:,:,:) = ( ( ZWORK2(:,:,:) / PTHVREF(:,:,:) ) - 1. ) * PRHODJ(:,:,:) diff --git a/src/MNH/ini_field_elec.f90 b/src/MNH/ini_field_elec.f90 index a4fa7cd9bdf038b73c0cd2c6a88a0ebb9357fba3..c5dcbb79a30d93761faecc41871205996584c396 100644 --- a/src/MNH/ini_field_elec.f90 +++ b/src/MNH/ini_field_elec.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 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. @@ -100,7 +100,6 @@ CHARACTER(LEN=4), DIMENSION(2) :: ZLBCY ! y-direction LBC type ! INTEGER :: JK ! loop over the vertical levels INTEGER :: IINFO_ll ! -INTEGER :: IKB,IKE,IKU ! Indices for the first and last point along vertical ! REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZZMASS, ZWORK, ZWORK1, ZWORK2 ! @@ -112,9 +111,6 @@ TYPE(LIST_ll),POINTER :: TZFIELDS_ll ! list of fields to exchange !* 1. INITIALIZATIONS ! --------------- ! -IKB = 1 + JPVEXT -IKE = SIZE(PZZ,3) - JPVEXT -IKU = SIZE(PZZ,3) ZLBCX = 'OPEN' ! forced LBC ZLBCY = 'OPEN' ! forced LBC ! @@ -172,7 +168,7 @@ XEFIELDW(:,:,SIZE(PDZZ,3)) = 2. * XEFIELDW(:,:,SIZE(PDZZ,3)-1) - & XEFIELDW(:,:,SIZE(PDZZ,3)-2) ! Computing the mobility of small positive (negative) ions at Mass-point -ZZMASS = MZF(1,IKU,1, PZZ ) ! altitude at mass point +ZZMASS = MZF( PZZ ) ! altitude at mass point DO JK = 2,SIZE(PZZ,3)-1 XMOBIL_POS(:,:,JK) = XF_POS * EXP( XEXPMOB* ZZMASS(:,:,JK) ) diff --git a/src/MNH/ini_spawn_lsn.f90 b/src/MNH/ini_spawn_lsn.f90 index 75354a3f53f1b94993a020d953d37ad8232e4f84..3e31fdc9bb522c60f03c41674d8d2fdb8d1fceef 100644 --- a/src/MNH/ini_spawn_lsn.f90 +++ b/src/MNH/ini_spawn_lsn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 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. @@ -501,9 +501,9 @@ IF ( GVERT_INTERP ) THEN ! IKU = SIZE(PZZ,3) ! - ZZLS2=MZF(1,IKU,1,ZZLS1) + ZZLS2=MZF(ZZLS1) ZZLS2(:,:,IKU)=2.*ZZLS2(:,:,IKU-1)-ZZLS2(:,:,IKU-2) - ZZSS=MZF(1,IKU,1,PZZ) + ZZSS=MZF(PZZ) ZZSS(:,:,IKU)=2.*ZZSS(:,:,IKU-1)-ZZSS(:,:,IKU-2) ! CALL COEF_VER_INTERP_LIN(ZZLS2,ZZSS,IKLIN,ZCOEFLIN) @@ -707,7 +707,7 @@ IF ( GVERT_INTERP ) THEN ! ZZLS1=MYM(ZZLS2) ZZLS1(:,1,:)=2.*ZZLS1(:,2,:)-ZZLS1(:,3,:) - ZZSS=MZF(1,IKU,1,PZZ) + ZZSS=MZF(PZZ) ZZSS(:,:,IKU)=2.*ZZSS(:,:,IKU-1)-ZZSS(:,:,IKU-2) ZZSS=MYM(ZZSS) ZZSS(:,1,:)=2.*ZZSS(:,2,:)-ZZSS(:,3,:) diff --git a/src/MNH/ini_tke_eps.f90 b/src/MNH/ini_tke_eps.f90 index f0aba674f3ec36a83f1284b8fa33713cfd7af53f..c76c795b5e67772a14cd56384910110c2a55a010 100644 --- a/src/MNH/ini_tke_eps.f90 +++ b/src/MNH/ini_tke_eps.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 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. @@ -117,7 +117,7 @@ TYPE(LIST_ll), POINTER :: TPINITHALO3D_ll ! pointer for the ! !* 0.2 Declaration of local variables ! -INTEGER :: IKB,IKE,IKU! index value for the first and last inner +INTEGER :: IKB,IKE ! index value for the first and last inner ! mass points INTEGER :: JKK ! vertical loop index REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZDELTZ ! vertical @@ -128,7 +128,6 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZDELTZ ! vertical ! IKB=1+JPVEXT IKE=SIZE(PTHT,3)-JPVEXT -IKU=SIZE(PTHT,3) ! !* 1. TKE DETERMINATION ! ----------------- @@ -150,9 +149,9 @@ IF (HGETTKET == 'INIT' ) THEN ! ! determines TKE PTKET(:,:,:)=(XLINI**2/XCED)*( & - XCMFS*( DZF(1,IKU,1,MXF(MZM(1,IKU,1,PUT)))**2 & - +DZF(1,IKU,1,MYF(MZM(1,IKU,1,PVT)))**2) / ZDELTZ & - -(XG/PTHVREF)*XCSHF*DZF(1,IKU,1,MZM(1,IKU,1,PTHT)) & + XCMFS*( DZF(MXF(MZM(PUT)))**2 & + +DZF(MYF(MZM(PVT)))**2) / ZDELTZ & + -(XG/PTHVREF)*XCSHF*DZF(MZM(PTHT)) & ) / ZDELTZ ! positivity control WHERE (PTKET < XTKEMIN) PTKET=XTKEMIN diff --git a/src/MNH/initial_guess.f90 b/src/MNH/initial_guess.f90 index f7d74b6474576d655d59f7a7d6a9d30d128a749a..cc86efe6508b07f4f65b235a08400aa6f59e3c8c 100644 --- a/src/MNH/initial_guess.f90 +++ b/src/MNH/initial_guess.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! ######################### MODULE MODI_INITIAL_GUESS ! ######################### @@ -188,12 +183,10 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT, PSVT !* 0.2 declarations of local variables ! INTEGER :: JRR, JSV -INTEGER :: IKU REAL :: ZINVTSTEP ! !------------------------------------------------------------------------------- ! -IKU=SIZE(XZHAT) !* 1. COMPUTES THE INVERSE OF THE APPLICABLE TIMESTEP ! ----------------------------------------------- ! @@ -207,7 +200,7 @@ ZINVTSTEP = 1./PTSTEP ! forward-in-time time-marching scheme PRUS = PUT * ZINVTSTEP * MXM(PRHODJ) PRVS = PVT * ZINVTSTEP * MYM(PRHODJ) -PRWS = PWT * ZINVTSTEP * MZM(1,IKU,1,PRHODJ) +PRWS = PWT * ZINVTSTEP * MZM(PRHODJ) ! ! *** meteorological variables ! diff --git a/src/MNH/interp3d.f90 b/src/MNH/interp3d.f90 index b5c2faa9db31d4193d7dae0c2f67abba16c4af5b..d6a05a70bba723815e295e7c8738e1f9a8e423b9 100644 --- a/src/MNH/interp3d.f90 +++ b/src/MNH/interp3d.f90 @@ -1,14 +1,11 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -!----------------------------------------------------------------- +!################### MODULE MODI_INTERP3D -!################################# +!################### ! INTERFACE SUBROUTINE INTERP3D(PFIELD,KGRID,PSVAL,PPLEV,PFIELDAP) @@ -88,7 +85,6 @@ INTEGER :: IIE,IJE,IPU ! End of usefull area INTEGER :: IIB,IJB,IKB ! Begining of usefull area REAL, DIMENSION(SIZE(XPABST,1),SIZE(XPABST,2),SIZE(XPABST,3)) :: ZPTH ! pressure for grid points corresponding to KGRID type REAL :: ZREF,ZXP,ZXM,ZDIXEPS ! pressure values and epsilon value -INTEGER :: IKU !------------------------------------------------------------------------------- ! !* 1. @@ -96,7 +92,6 @@ INTEGER :: IKU CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IPU=SIZE(PFIELDAP,3) IKB=1 +JPVEXT -IKU=SIZE(XZHAT) ZDIXEPS=10.*EPSILON(1.) ! SELECT CASE (KGRID) @@ -109,7 +104,7 @@ SELECT CASE (KGRID) ZPTH(:,:,:)=MYM(XPABST(:,:,:)) ZPTH(:,1,:)=2.*ZPTH(:,2,:) - ZPTH(:,3,:) CASE(4) - ZPTH(:,:,:)=MZM(1,IKU,1,XPABST(:,:,:)) + ZPTH(:,:,:)=MZM(XPABST(:,:,:)) ZPTH(:,:,1)=2.*ZPTH(:,:,2) - ZPTH(:,:,3) END SELECT ! diff --git a/src/MNH/ion_drift.f90 b/src/MNH/ion_drift.f90 index 73edec604ea8572b9418b0181fabd74761dfcc78..b3187ca833f755e9a0ad1ab341f829d89d26c633 100644 --- a/src/MNH/ion_drift.f90 +++ b/src/MNH/ion_drift.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2020 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. @@ -74,7 +74,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT INTEGER :: IIB, IIE ! index of first and last inner mass points along x INTEGER :: IJB, IJE ! index of first and last inner mass points along y INTEGER :: IKB, IKE ! index of first and last inner mass points along z -INTEGER :: IKU REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZDRIFTX REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZDRIFTY REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3)) :: ZDRIFTZ @@ -95,7 +94,6 @@ NULLIFY(TZFIELDS_ll) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB = 1 + JPVEXT IKE = SIZE(PSVT,3) - JPVEXT -IKU = SIZE(PSVT,3) ! ! !------------------------------------------------------------------------------- @@ -166,7 +164,7 @@ ZDRIFTY(:,:,:) = -MYM(ZDRIFTY(:,:,:)) ! Put components at flux sides ! z-component of div term ZDRIFTZ(:,:,:) = PSVT(:,:,:,NSV_ELECBEG) * XMOBIL_POS(:,:,:) ZDRIFTZ(:,:,:) = ZDRIFTZ(:,:,:) * XEFIELDW(:,:,:) -ZDRIFTZ(:,:,:) = -MZM(1,IKU,1,ZDRIFTZ(:,:,:)) ! Put components at flux sides +ZDRIFTZ(:,:,:) = -MZM(ZDRIFTZ(:,:,:)) ! Put components at flux sides ! IF (LWEST_ll( )) ZDRIFTX(IIB-1,:,:) = ZDRIFTX(IIB,:,:) IF (LEAST_ll( )) ZDRIFTX(IIE+1,:,:) = ZDRIFTX(IIE,:,:) @@ -192,7 +190,7 @@ ZDRIFTY(:,:,:) = +MYM(ZDRIFTY(:,:,:)) ! Put components at flux sides ! z-component of div term ZDRIFTZ(:,:,:) = PSVT(:,:,:,NSV_ELECEND) * XMOBIL_NEG(:,:,:) ZDRIFTZ(:,:,:) = ZDRIFTZ(:,:,:) * XEFIELDW(:,:,:) -ZDRIFTZ(:,:,:) = +MZM(1,IKU,1,ZDRIFTZ(:,:,:)) ! Put components at flux sides +ZDRIFTZ(:,:,:) = +MZM(ZDRIFTZ(:,:,:)) ! Put components at flux sides ! IF (LWEST_ll( )) ZDRIFTX(IIB-1,:,:) = ZDRIFTX(IIB,:,:) diff --git a/src/MNH/lap_m.f90 b/src/MNH/lap_m.f90 index a16fd80611ef94e9a60d6cc9707f68bdf3833ab3..f1936c828237a3c61b7f54fcb0ab6ee86376396a 100644 --- a/src/MNH/lap_m.f90 +++ b/src/MNH/lap_m.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2007-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. +!----------------------------------------------------------------- ! ################# MODULE MODI_LAP_M ! ################# @@ -211,7 +212,7 @@ IF(.NOT. L2D) THEN ZV = MYM(PRHODJ) * ZV ENDIF ! -ZW = MZM(1,IKU,1,PRHODJ) * GZ_M_W(1,IKU,1,PY,PDZZ) +ZW = MZM(PRHODJ) * GZ_M_W(1,IKU,1,PY,PDZZ) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/les_budget.f90 b/src/MNH/les_budget.f90 index c11a00da0efb960488bc86fee48c44f705bf17f0..5219c5930a3a6a5c702f8ad724f0c68bfe692946 100644 --- a/src/MNH/les_budget.f90 +++ b/src/MNH/les_budget.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 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. @@ -398,7 +398,7 @@ INTEGER :: IINFO_ll ZRHODJ(:,:,:) = MYM(XCURRENT_RHODJ) ZS(:,:,:) = PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP CASE ('Z') - ZRHODJ(:,:,:) = MZM(1,IKU,1,XCURRENT_RHODJ) + ZRHODJ(:,:,:) = MZM(XCURRENT_RHODJ) ZS(:,:,:) = PVARS(:,:,:) / ZRHODJ * XCURRENT_TSTEP CASE DEFAULT ZRHODJ(:,:,:) = XCURRENT_RHODJ @@ -416,7 +416,7 @@ INTEGER :: IINFO_ll CASE ('Y') ZS(:,:,:) = MYF(ZS) CASE ('Z') - ZS(:,:,:) = MZF(1,IKU,1,ZS) + ZS(:,:,:) = MZF(ZS) END SELECT CALL LES_ANOMALY_FIELD(ZS,PANOM) diff --git a/src/MNH/les_budget_tendn.f90 b/src/MNH/les_budget_tendn.f90 index 88f033d8e0ad92ba150a3bd6117ab9ffcd27a223..35652009d4ca465bc5b6a480747514fc6822b28a 100644 --- a/src/MNH/les_budget_tendn.f90 +++ b/src/MNH/les_budget_tendn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 les 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ####################### MODULE MODI_LES_BUDGET_TEND_n ! ####################### @@ -134,7 +129,7 @@ ALLOCATE(ZSV_ANOM (IIU,IJU,NLES_K,NSV)) CALL LES_ANOMALY_FIELD(MXF(XUT),ZU_ANOM) CALL LES_ANOMALY_FIELD(MYF(XVT),ZV_ANOM) -CALL LES_ANOMALY_FIELD(MZF(1,IKU,1,XWT),ZW_ANOM) +CALL LES_ANOMALY_FIELD(MZF(XWT),ZW_ANOM) CALL LES_ANOMALY_FIELD(ZTHL,ZTHL_ANOM) CALL LES_ANOMALY_FIELD(ZRT,ZRT_ANOM) DO JSV=1,NSV diff --git a/src/MNH/les_cloud_masksn.f90 b/src/MNH/les_cloud_masksn.f90 index daeb189e9c4857293aa878d87b0c9ad65e92d079..9b9bbf3b2bec186d39db42ade3c6b34e8bd54806 100644 --- a/src/MNH/les_cloud_masksn.f90 +++ b/src/MNH/les_cloud_masksn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2006-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 les 2006/10/16 14:59:17 -!----------------------------------------------------------------- ! ####################### SUBROUTINE LES_CLOUD_MASKS_n ! ####################### @@ -170,7 +165,7 @@ ZWORK1D=0. ZWORK3D=0. ZWORK3DB=0. ! -CALL LES_VER_INT(MZF(1,IKU,1,XWT), ZW_LES) +CALL LES_VER_INT(MZF(XWT), ZW_LES) IF (NSV_CS>0) THEN DO JSV=NSV_CSBEG, NSV_CSEND CALL LES_VER_INT( XSVT(:,:,:,JSV), & diff --git a/src/MNH/les_ini_timestepn.f90 b/src/MNH/les_ini_timestepn.f90 index 9ab7943694bd079c354d4c74aec2029aa9c02e74..f1d8cb6a3cacee43cf315ac25ca908f3b2b8f173 100644 --- a/src/MNH/les_ini_timestepn.f90 +++ b/src/MNH/les_ini_timestepn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 les 2006/08/30 18:38:45 -!----------------------------------------------------------------- ! ####################### MODULE MODI_LES_INI_TIMESTEP_n ! ####################### @@ -377,7 +372,7 @@ CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR, & ! CALL LES_ANOMALY_FIELD(MXF(XUT),XU_ANOM) CALL LES_ANOMALY_FIELD(MYF(XVT),XV_ANOM) -CALL LES_ANOMALY_FIELD(MZF(1,IKU,1,XWT),XW_ANOM) +CALL LES_ANOMALY_FIELD(MZF(XWT),XW_ANOM) CALL LES_ANOMALY_FIELD(ZTHL,XTHL_ANOM) IF (LUSERV) CALL LES_ANOMALY_FIELD(ZRT,XRT_ANOM) DO JSV=1,NSV diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90 index 3eae3fc04d59c273e750b89bb0ef769ad7e3d3f9..dd9fa4260fad01d74b4a9a05f78b523a599cc12a 100644 --- a/src/MNH/lesn.f90 +++ b/src/MNH/lesn.f90 @@ -1,8 +1,7 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. -! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/lesn.f90,v $ !----------------------------------------------------------------- ! ################# SUBROUTINE LES_n @@ -485,7 +484,7 @@ ELSE END IF ! ! computation of mass flux -ZMASSF=MZM(1,IKU,1,ZRHO)*XWT +ZMASSF=MZM(ZRHO)*XWT ! !------------------------------------------------------------------------------- ! @@ -516,11 +515,11 @@ CALL LES_VER_INT( GZ_M_M(1,IKU,1,XPABST,XDZZ), ZDPDZ_LES ) ! CALL LES_VER_INT( MXF(XUT) ,ZU_LES ) CALL LES_VER_INT( MYF(XVT) ,ZV_LES ) -CALL LES_VER_INT( MZF(1,IKU,1,XWT) ,ZW_LES ) -CALL LES_VER_INT( MZF(1,IKU,1,ZMASSF) ,ZMF_LES) +CALL LES_VER_INT( MZF(XWT) ,ZW_LES ) +CALL LES_VER_INT( MZF(ZMASSF) ,ZMF_LES) CALL LES_VER_INT( XTHT ,ZTH_LES ) -CALL LES_VER_INT( MXF(MZF(1,IKU,1,GZ_U_UW(1,IKU,1,XUT,XDZZ))), ZDUDZ_LES ) -CALL LES_VER_INT( MYF(MZF(1,IKU,1,GZ_V_VW(1,IKU,1,XVT,XDZZ))), ZDVDZ_LES ) +CALL LES_VER_INT( MXF(MZF(GZ_U_UW(1,IKU,1,XUT,XDZZ))), ZDUDZ_LES ) +CALL LES_VER_INT( MYF(MZF(GZ_V_VW(1,IKU,1,XVT,XDZZ))), ZDVDZ_LES ) CALL LES_VER_INT( GZ_W_M(1,IKU,1,XWT,XDZZ), ZDWDZ_LES ) CALL LES_VER_INT( ZEXN, ZEXN_LES) ! @@ -870,7 +869,7 @@ END DO ! IF (NLES_CURRENT_TCOUNT==1) THEN ALLOCATE(ZZ_LES (IIU,IJU,NLES_K)) - CALL LES_VER_INT( MZF(1,IKU,1,XZZ) ,ZZ_LES ) + CALL LES_VER_INT( MZF(XZZ) ,ZZ_LES ) CALL LES_MEAN_ll ( ZZ_LES, LLES_CURRENT_CART_MASK, XLES_Z ) DEALLOCATE(ZZ_LES) CALL LES_MEAN_ll ( XZS, LLES_CURRENT_CART_MASK(:,:,1), XLES_ZS ) @@ -885,7 +884,7 @@ END IF ! CALL SPEC_VER_INT(IMI, MXF(XUT) ,ZU_SPEC ) CALL SPEC_VER_INT(IMI, MYF(XVT) ,ZV_SPEC ) -CALL SPEC_VER_INT(IMI, MZF(1,IKU,1,XWT) ,ZW_SPEC ) +CALL SPEC_VER_INT(IMI, MZF(XWT) ,ZW_SPEC ) CALL SPEC_VER_INT(IMI, XTHT ,ZTH_SPEC ) IF (LUSERC) CALL SPEC_VER_INT(IMI, ZTHL ,ZTHL_SPEC) IRR = 0 diff --git a/src/MNH/metrics.f90 b/src/MNH/metrics.f90 index 6d292f948693ed1cdceb775cefb07e519eefd63a..b973e0920ed8e38b3ed6371269cfe5cd342a7a0b 100644 --- a/src/MNH/metrics.f90 +++ b/src/MNH/metrics.f90 @@ -1,14 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! ################### MODULE MODI_METRICS ! ################### @@ -162,7 +156,7 @@ ELSE ZD1=1. END IF IF (.NOT.LCARTESIAN) THEN - ZDZZ(:,:,:) = MZF(1,IKU,1, 1.+ ZD1*PZZ(:,:,:)/XRADIUS) + ZDZZ(:,:,:) = MZF( 1.+ ZD1*PZZ(:,:,:)/XRADIUS) DO JK=1,IKU ; DO JJ=1,IJU ; DO JI=1,IIU PDXX(JI,JJ,JK) = ZDZZ(JI,JJ,JK) * PDXHAT(JI) /PMAP(JI,JJ) PDYY(JI,JJ,JK) = ZDZZ(JI,JJ,JK) * PDYHAT(JJ) /PMAP(JI,JJ) @@ -201,7 +195,7 @@ PDZY(:,:,:) = DYM(PZZ(:,:,:)) !* 4. COMPUTE PDZZ : ! ------------- ! -PDZZ(:,:,:) = DZM(1,IKU,1,MZF(1,IKU,1,PZZ(:,:,:))) +PDZZ(:,:,:) = DZM(MZF(PZZ(:,:,:))) PDZZ(:,:,IKU) = PZZ(:,:,IKU) - PZZ(:,:,IKU-1) ! same delta z in IKU and IKU -1 PDZZ(:,:,1) = PDZZ(:,:,2) ! same delta z in 1 and 2 !20131024 diff --git a/src/MNH/mode_prandtl.f90 b/src/MNH/mode_prandtl.f90 index 8c2d2609e04949062e0f6ccfe215a09e29c87a70..f90b4713bcf3f32a4548f651adb55bf5e9a0eda2 100644 --- a/src/MNH/mode_prandtl.f90 +++ b/src/MNH/mode_prandtl.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -599,7 +599,7 @@ IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC -PM3_WTH_W2TH(:,:,:) = XCSHF*PKEFF*1.5/MZM(KKA,KKU,KKL,PTKE) & +M3_WTH_W2TH(:,:,:) = XCSHF*PKEFF*1.5/MZM(PTKE) & * (1. - 0.5*PREDR1*(1.+PREDR1)/PD ) / (1.+PREDTH1) #else CALL MZM_DEVICE(PTKE,ZTMP1_DEVICE) @@ -665,9 +665,9 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PD_M3_WTH_W2TH_O_DDTDZ(:,:,:) = & #ifndef MNH_BITREP - - XCSHF*PKEFF*1.5/MZM(KKA,KKU,KKL,PTKE)/(1.+PREDTH1)**2*XCTV*PBLL_O_E*PETHETA & + - XCSHF*PKEFF*1.5/MZM(PTKE)/(1.+PREDTH1)**2*XCTV*PBLL_O_E*PETHETA & #else - - XCSHF*PKEFF*1.5/MZM(KKA,KKU,KKL,PTKE)/BR_P2(1.+PREDTH1)*XCTV*PBLL_O_E*PETHETA & + - XCSHF*PKEFF*1.5/MZM(PTKE)/BR_P2(1.+PREDTH1)*XCTV*PBLL_O_E*PETHETA & #endif * (1. - 0.5*PREDR1*(1.+PREDR1)/PD*( 1.+(1.+PREDTH1)*(1.5+PREDR1+PREDTH1)/PD) ) #else @@ -738,7 +738,7 @@ IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC -PM3_WTH_W2R(:,:,:) = - XCSHF*PKEFF*0.75*XCTV*PBLL_O_E/MZM(KKA,KKU,KKL,PTKE)*PEMOIST*PDTDZ/PD +PM3_WTH_W2R(:,:,:) = - XCSHF*PKEFF*0.75*XCTV*PBLL_O_E/MZM(PTKE)*PEMOIST*PDTDZ/PD #else CALL MZM_DEVICE(PTKE,ZTMP1_DEVICE) !$acc kernels @@ -800,7 +800,7 @@ IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC -PD_M3_WTH_W2R_O_DDTDZ(:,:,:) = - XCSHF*PKEFF*0.75*XCTV*PBLL_O_E/MZM(KKA,KKU,KKL,PTKE)*PEMOIST/PD & +PD_M3_WTH_W2R_O_DDTDZ(:,:,:) = - XCSHF*PKEFF*0.75*XCTV*PBLL_O_E/MZM(PTKE)*PEMOIST/PD & * (1. - PREDTH1*(1.5+PREDTH1+PREDR1)/PD) #else CALL MZM_DEVICE(PTKE,ZTMP1_DEVICE) @@ -874,7 +874,7 @@ PM3_WTH_WR2(:,:,:) = - XCSHF*PKEFF*0.25*PBLL_O_E*XCTV*PEMOIST**2 & #else PM3_WTH_WR2(:,:,:) = - XCSHF*PKEFF*0.25*PBLL_O_E*XCTV*BR_P2(PEMOIST) & #endif - *MZM(KKA,KKU,KKL,PBETA*PLEPS/(PSQRT_TKE*PTKE))/XCTD*PDTDZ/PD + *MZM(PBETA*PLEPS/(PSQRT_TKE*PTKE))/XCTD*PDTDZ/PD #else !$acc kernels ZTMP2_DEVICE = PBETA*PLEPS/(PSQRT_TKE*PTKE) @@ -955,7 +955,7 @@ PD_M3_WTH_WR2_O_DDTDZ(:,:,:) = - XCSHF*PKEFF*0.25*PBLL_O_E*XCTV*PEMOIST**2 & #else PD_M3_WTH_WR2_O_DDTDZ(:,:,:) = - XCSHF*PKEFF*0.25*PBLL_O_E*XCTV*BR_P2(PEMOIST) & #endif - *MZM(KKA,KKU,KKL,PBETA*PLEPS/(PSQRT_TKE*PTKE))/XCTD/PD & + *MZM(PBETA*PLEPS/(PSQRT_TKE*PTKE))/XCTD/PD & * (1. - PREDTH1*(1.5+PREDTH1+PREDR1)/PD) #else !$acc kernels @@ -1029,7 +1029,7 @@ IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC -PM3_WTH_WTHR(:,:,:) = XCSHF*PKEFF*PEMOIST*MZM(KKA,KKU,KKL,PBETA/PTKE*PSQRT_TKE) & +PM3_WTH_WTHR(:,:,:) = XCSHF*PKEFF*PEMOIST*MZM(PBETA/PTKE*PSQRT_TKE) & *0.5*PLEPS/XCTD*(1+PREDR1)/PD #else !$acc kernels @@ -1137,7 +1137,7 @@ IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC -PM3_TH2_W2TH(:,:,:) = - MZF(KKA,KKU,KKL,(1.-0.5*PREDR1*(1.+PREDR1)/PD)/(1.+PREDTH1)*PDTDZ) & +PM3_TH2_W2TH(:,:,:) = - MZF((1.-0.5*PREDR1*(1.+PREDR1)/PD)/(1.+PREDTH1)*PDTDZ) & * 1.5*PLM*PLEPS/PTKE*XCTV #else !$acc kernels @@ -1206,7 +1206,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC IF (OUSERV) THEN - PD_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*XCTV * MZF(KKA,KKU,KKL, & + PD_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*XCTV * MZF( & (1.-0.5*PREDR1*(1.+PREDR1)/PD)*(1.-(1.5+PREDTH1+PREDR1)* & #ifndef MNH_BITREP PREDTH1*(1.+PREDTH1)/PD ) / (1.+PREDTH1)**2 ) @@ -1216,9 +1216,9 @@ IF (OUSERV) THEN ELSE #ifndef MNH_BITREP - PD_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*XCTV * MZF(KKA,KKU,KKL,1./(1.+PREDTH1)**2) + PD_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*XCTV * MZF(1./(1.+PREDTH1)**2) #else - PD_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*XCTV * MZF(KKA,KKU,KKL,1./BR_P2(1.+PREDTH1)) + PD_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*XCTV * MZF(1./BR_P2(1.+PREDTH1)) #endif END IF #else @@ -1308,9 +1308,9 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PM3_TH2_WTH2(:,:,:) = PLEPS*0.5/XCTD/PSQRT_TKE & #ifndef MNH_BITREP - * MZF(KKA,KKU,KKL, (1.+0.5*PREDTH1+1.5*PREDR1+0.5*PREDR1**2)/PD ) + * MZF( (1.+0.5*PREDTH1+1.5*PREDR1+0.5*PREDR1**2)/PD ) #else - * MZF(KKA,KKU,KKL, (1.+0.5*PREDTH1+1.5*PREDR1+0.5*BR_P2(PREDR1))/PD ) + * MZF( (1.+0.5*PREDTH1+1.5*PREDR1+0.5*BR_P2(PREDR1))/PD ) #endif #else !$acc kernels @@ -1382,7 +1382,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PD_M3_TH2_WTH2_O_DDTDZ(:,:,:) = PLEPS*0.5/XCTD/PSQRT_TKE*XCTV & - * MZF(KKA,KKU,KKL, PBLL_O_E*PETHETA* (0.5/PD & + * MZF( PBLL_O_E*PETHETA* (0.5/PD & #ifndef MNH_BITREP - (1.5+PREDTH1+PREDR1)*(1.+0.5*PREDTH1+1.5*PREDR1+0.5*PREDR1**2)/PD**2 & #else @@ -1461,9 +1461,9 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC #ifndef MNH_BITREP -PM3_TH2_W2R(:,:,:) = 0.75*XCTV**2*MZF(KKA,KKU,KKL,PBLL_O_E*PEMOIST/PD*PDTDZ**2)*PLM*PLEPS/PTKE +PM3_TH2_W2R(:,:,:) = 0.75*XCTV**2*MZF(PBLL_O_E*PEMOIST/PD*PDTDZ**2)*PLM*PLEPS/PTKE #else -PM3_TH2_W2R(:,:,:) = 0.75*BR_P2(XCTV)*MZF(KKA,KKU,KKL,PBLL_O_E*PEMOIST/PD*BR_P2(PDTDZ))*PLM*PLEPS/PTKE +PM3_TH2_W2R(:,:,:) = 0.75*BR_P2(XCTV)*MZF(PBLL_O_E*PEMOIST/PD*BR_P2(PDTDZ))*PLM*PLEPS/PTKE #endif #else !$acc kernels @@ -1545,7 +1545,7 @@ PD_M3_TH2_W2R_O_DDTDZ(:,:,:) = 0.75*XCTV**2*PLM*PLEPS/PTKE & #else PD_M3_TH2_W2R_O_DDTDZ(:,:,:) = 0.75*BR_P2(XCTV)*PLM*PLEPS/PTKE & #endif - * MZF(KKA,KKU,KKL, PBLL_O_E*PEMOIST/PD*PDTDZ*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) + * MZF( PBLL_O_E*PEMOIST/PD*PDTDZ*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) #else !$acc kernels ZTMP2_DEVICE = PBLL_O_E*PEMOIST/PD*PDTDZ*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) @@ -1616,9 +1616,9 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC #ifndef MNH_BITREP -PM3_TH2_WR2(:,:,:) = 0.25*XCTV**2*MZF(KKA,KKU,KKL,(PBLL_O_E*PEMOIST*PDTDZ)**2/PD)*PLEPS/PSQRT_TKE/XCTD +PM3_TH2_WR2(:,:,:) = 0.25*XCTV**2*MZF((PBLL_O_E*PEMOIST*PDTDZ)**2/PD)*PLEPS/PSQRT_TKE/XCTD #else -PM3_TH2_WR2(:,:,:) = 0.25*BR_P2(XCTV)*MZF(KKA,KKU,KKL,BR_P2(PBLL_O_E*PEMOIST*PDTDZ)/PD)*PLEPS/PSQRT_TKE/XCTD +PM3_TH2_WR2(:,:,:) = 0.25*BR_P2(XCTV)*MZF(BR_P2(PBLL_O_E*PEMOIST*PDTDZ)/PD)*PLEPS/PSQRT_TKE/XCTD #endif #else !$acc kernels @@ -1695,10 +1695,10 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC #ifndef MNH_BITREP PD_M3_TH2_WR2_O_DDTDZ(:,:,:) = 0.25*XCTV**2*PLEPS/PSQRT_TKE/XCTD & - * MZF(KKA,KKU,KKL, (PBLL_O_E*PEMOIST)**2*PDTDZ/PD*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) + * MZF( (PBLL_O_E*PEMOIST)**2*PDTDZ/PD*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) #else PD_M3_TH2_WR2_O_DDTDZ(:,:,:) = 0.25*BR_P2(XCTV)*PLEPS/PSQRT_TKE/XCTD & - * MZF(KKA,KKU,KKL, BR_P2(PBLL_O_E*PEMOIST)*PDTDZ/PD*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) + * MZF( BR_P2(PBLL_O_E*PEMOIST)*PDTDZ/PD*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) #endif #else !$acc kernels @@ -1775,7 +1775,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PM3_TH2_WTHR(:,:,:) = - 0.5*XCTV*PLEPS/PSQRT_TKE/XCTD & - * MZF(KKA,KKU,KKL, PBLL_O_E*PEMOIST*PDTDZ*(1.+PREDR1)/PD ) + * MZF( PBLL_O_E*PEMOIST*PDTDZ*(1.+PREDR1)/PD ) #else !$acc kernels ZTMP2_DEVICE = PBLL_O_E*PEMOIST*PDTDZ*(1.+PREDR1)/PD @@ -1843,7 +1843,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PD_M3_TH2_WTHR_O_DDTDZ(:,:,:) = - 0.5*XCTV*PLEPS/PSQRT_TKE/XCTD & - * MZF(KKA,KKU,KKL, PBLL_O_E*PEMOIST*(1.+PREDR1)/PD * (1. -PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) + * MZF( PBLL_O_E*PEMOIST*(1.+PREDR1)/PD * (1. -PREDTH1*(1.5+PREDTH1+PREDR1)/PD) ) #else !$acc kernels ZTMP2_DEVICE = PBLL_O_E*PEMOIST*(1.+PREDR1)/PD * (1. -PREDTH1*(1.5+PREDTH1+PREDR1)/PD) @@ -1909,7 +1909,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PM3_THR_WTHR(:,:,:) = 0.5*PLEPS/PSQRT_TKE/XCTD & - * MZF(KKA,KKU,KKL, (1.+PREDTH1)*(1.+PREDR1)/PD ) + * MZF( (1.+PREDTH1)*(1.+PREDR1)/PD ) #else !$acc kernels ZTMP2_DEVICE = (1.+PREDTH1)*(1.+PREDR1)/PD @@ -1976,7 +1976,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PD_M3_THR_WTHR_O_DDTDZ(:,:,:) = 0.5*PLEPS/PSQRT_TKE/XCTD * XCTV & - * MZF(KKA,KKU,KKL, PETHETA*PBLL_O_E/PD*(1.+PREDR1)*(1.-(1.+PREDTH1)*(1.5+PREDTH1+PREDR1)/PD) ) + * MZF( PETHETA*PBLL_O_E/PD*(1.+PREDR1)*(1.-(1.+PREDTH1)*(1.5+PREDTH1+PREDR1)/PD) ) #else !$acc kernels ZTMP2_DEVICE = PETHETA*PBLL_O_E/PD*(1.+PREDR1)*(1.-(1.+PREDTH1)*(1.5+PREDTH1+PREDR1)/PD) @@ -2043,7 +2043,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PM3_THR_WTH2(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/XCTD*XCTV & - * MZF(KKA,KKU,KKL, (1.+PREDR1)*PBLL_O_E*PETHETA*PDRDZ/PD ) + * MZF( (1.+PREDR1)*PBLL_O_E*PETHETA*PDRDZ/PD ) #else !$acc kernels ZTMP2_DEVICE = (1.+PREDR1)*PBLL_O_E*PETHETA*PDRDZ/PD @@ -2112,10 +2112,10 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC #ifndef MNH_BITREP PD_M3_THR_WTH2_O_DDTDZ(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/XCTD*XCTV**2 & - * MZF(KKA,KKU,KKL, -(1.+PREDR1)*(PBLL_O_E*PETHETA/PD)**2*PDRDZ*(1.5+PREDTH1+PREDR1) ) + * MZF( -(1.+PREDR1)*(PBLL_O_E*PETHETA/PD)**2*PDRDZ*(1.5+PREDTH1+PREDR1) ) #else PD_M3_THR_WTH2_O_DDTDZ(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/XCTD*BR_P2(XCTV) & - * MZF(KKA,KKU,KKL, -(1.+PREDR1)*BR_P2(PBLL_O_E*PETHETA/PD)*PDRDZ*(1.5+PREDTH1+PREDR1) ) + * MZF( -(1.+PREDR1)*BR_P2(PBLL_O_E*PETHETA/PD)*PDRDZ*(1.5+PREDTH1+PREDR1) ) #endif #else !$acc kernels @@ -2191,7 +2191,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PD_M3_THR_WTH2_O_DDRDZ(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/XCTD*XCTV & - * MZF(KKA,KKU,KKL, PBLL_O_E*PETHETA/PD & + * MZF( PBLL_O_E*PETHETA/PD & *(-(1.+PREDR1)*PREDR1/PD*(1.5+PREDTH1+PREDR1)+(1.+2.*PREDR1)) & ) #else @@ -2260,7 +2260,7 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PM3_THR_W2TH(:,:,:) = - 0.75*PLM*PLEPS/PTKE * XCTV & - * MZF(KKA,KKU,KKL, (1.+PREDR1)*PDRDZ/PD ) + * MZF( (1.+PREDR1)*PDRDZ/PD ) #else !$acc kernels ZTMP2_DEVICE = (1.+PREDR1)*PDRDZ/PD @@ -2330,10 +2330,10 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC #ifndef MNH_BITREP PD_M3_THR_W2TH_O_DDTDZ(:,:,:) = - 0.75*PLM*PLEPS/PTKE * XCTV**2 & - * MZF(KKA,KKU,KKL, -PETHETA*PBLL_O_E*(1.+PREDR1)*PDRDZ*(1.5+PREDTH1+PREDR1)/PD**2 ) + * MZF( -PETHETA*PBLL_O_E*(1.+PREDR1)*PDRDZ*(1.5+PREDTH1+PREDR1)/PD**2 ) #else PD_M3_THR_W2TH_O_DDTDZ(:,:,:) = - 0.75*PLM*PLEPS/PTKE * BR_P2(XCTV) & - * MZF(KKA,KKU,KKL, -PETHETA*PBLL_O_E*(1.+PREDR1)*PDRDZ*(1.5+PREDTH1+PREDR1)/BR_P2(PD) ) + * MZF( -PETHETA*PBLL_O_E*(1.+PREDR1)*PDRDZ*(1.5+PREDTH1+PREDR1)/BR_P2(PD) ) #endif #else !$acc kernels @@ -2409,9 +2409,9 @@ IKE = SIZE(PD,3)-JPVEXT_TURB #ifndef MNH_OPENACC PD_M3_THR_W2TH_O_DDRDZ(:,:,:) = - 0.75*PLM*PLEPS/PTKE * XCTV & #ifndef MNH_BITREP - * MZF(KKA,KKU,KKL, -(1.+PREDR1)*PREDR1*(1.5+PREDTH1+PREDR1)/PD**2 & + * MZF( -(1.+PREDR1)*PREDR1*(1.5+PREDTH1+PREDR1)/PD**2 & #else - * MZF(KKA,KKU,KKL, -(1.+PREDR1)*PREDR1*(1.5+PREDTH1+PREDR1)/BR_P2(PD) & + * MZF( -(1.+PREDR1)*PREDR1*(1.5+PREDTH1+PREDR1)/BR_P2(PD) & #endif +(1.+2.*PREDR1)/PD & ) diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index bac3def3868fdb173eb44f5342ceff46810ff1c8..e28be6ca8739ad56d00eba91d4c6d450e720db43 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -997,7 +997,7 @@ IF (NBUMOD==IMI .AND. CBUTYPE=='MASK' ) THEN IF (LBU_RV) XBURHODJV(:,NBUTIME,:) = XBURHODJV(:,NBUTIME,:) & + MASK_COMPRESS(MYM(XRHODJ)) IF (LBU_RW) XBURHODJW(:,NBUTIME,:) = XBURHODJW(:,NBUTIME,:) & - + MASK_COMPRESS(MZM(1,IKU,1,XRHODJ)) + + MASK_COMPRESS(MZM(XRHODJ)) IF (ALLOCATED(XBURHODJ)) & XBURHODJ (:,NBUTIME,:) = XBURHODJ (:,NBUTIME,:) & + MASK_COMPRESS(XRHODJ) @@ -1009,7 +1009,7 @@ IF (NBUMOD==IMI .AND. CBUTYPE=='CART' ) THEN IF (LBU_RV) XBURHODJV(:,:,:) = XBURHODJV(:,:,:) & + CART_COMPRESS(MYM(XRHODJ)) IF (LBU_RW) XBURHODJW(:,:,:) = XBURHODJW(:,:,:) & - + CART_COMPRESS(MZM(1,IKU,1,XRHODJ)) + + CART_COMPRESS(MZM(XRHODJ)) IF (ALLOCATED(XBURHODJ)) & XBURHODJ (:,:,:) = XBURHODJ (:,:,:) & + CART_COMPRESS(XRHODJ) diff --git a/src/MNH/mpdata.f90 b/src/MNH/mpdata.f90 index 961d2d98aec37e1372714ba152a3aca51743734d..8b676d70dcca23c6a87f0c71302a11fe1d91b856 100644 --- a/src/MNH/mpdata.f90 +++ b/src/MNH/mpdata.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ################## @@ -148,7 +148,6 @@ INTEGER :: JRR ! Loop index for moist variables ! INTEGER:: IIB,IJB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE ! End useful area in x,y,z directions -INTEGER:: IKU ! REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) :: ZGUESS ! Guess ! variable (to be removed in the future !) @@ -179,7 +178,6 @@ NULLIFY(TZFIELDS_ll) !* 0.3 PROLOGUE ! CALL GET_PHYSICAL_ll(IIB,IJB,IIE,IJE) -IKU=SIZE(PTHM,3) ! YRX(1) = 'RRV' YRX(2) = 'RRC' @@ -212,7 +210,7 @@ LBUDGET_R(7) = LBUDGET_RH ZRVARS(:,:,:) = PRTHS(:,:,:) ZFADVU(:,:,:) = -DXF(FXM( PTHM(:,:,:),PRUCT(:,:,:) ) ) ZFADVV(:,:,:) = -DYF(FYM( PTHM(:,:,:),PRVCT(:,:,:) ) ) - ZFADVW(:,:,:) = -DZF(1,IKU,1,FZM( PTHM(:,:,:),PRWCT(:,:,:) ) ) + ZFADVW(:,:,:) = -DZF(FZM( PTHM(:,:,:),PRWCT(:,:,:) ) ) ! PRTHS(:,:,:) = PRTHS(:,:,:) + ZFADVU(:,:,:) + ZFADVV(:,:,:) + ZFADVW(:,:,:) ! @@ -249,7 +247,7 @@ LBUDGET_R(7) = LBUDGET_RH ZFADVV(:,:,:) = ZFADVV(:,:,:) + ZFADV(:,:,:) PRTHS(:,:,:) = PRTHS(:,:,:) + ZFADV(:,:,:) ! - ZFADV(:,:,:) = -DZF(1,IKU,1,FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) + ZFADV(:,:,:) = -DZF(FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) IF(LWEST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIB,:,:)=0. IF(LEAST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIE,:,:)=0. IF(LSOUTH_ll() .AND. HLBCY(1) /= 'CYCL') ZFADV(:,IJB,:)=0. @@ -280,7 +278,7 @@ LBUDGET_R(7) = LBUDGET_RH ZRVARS(:,:,:) = PRRS(:,:,:,JRR) ZFADVU(:,:,:) = -DXF(FXM( PRM(:,:,:,JRR),PRUCT(:,:,:) ) ) ZFADVV(:,:,:) = -DYF(FYM( PRM(:,:,:,JRR),PRVCT(:,:,:) ) ) - ZFADVW(:,:,:) = -DZF(1,IKU,1,FZM( PRM(:,:,:,JRR),PRWCT(:,:,:) ) ) + ZFADVW(:,:,:) = -DZF(FZM( PRM(:,:,:,JRR),PRWCT(:,:,:) ) ) ! PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZFADVU(:,:,:) + ZFADVV(:,:,:) + & ZFADVW(:,:,:) @@ -313,7 +311,7 @@ LBUDGET_R(7) = LBUDGET_RH ZFADVV(:,:,:) = ZFADVV(:,:,:) + ZFADV(:,:,:) PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZFADV(:,:,:) ! - ZFADV(:,:,:) = -DZF(1,IKU,1,FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) + ZFADV(:,:,:) = -DZF(FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) IF(LWEST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIB,:,:)=0. IF(LEAST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIE,:,:)=0. IF(LSOUTH_ll() .AND. HLBCY(1) /= 'CYCL') ZFADV(:,IJB,:)=0. @@ -348,7 +346,7 @@ LBUDGET_R(7) = LBUDGET_RH ZRVARS(:,:,:) = PRTKES(:,:,:) ZFADVU(:,:,:) = -DXF(FXM( PTKEM(:,:,:),PRUCT(:,:,:) ) ) ZFADVV(:,:,:) = -DYF(FYM( PTKEM(:,:,:),PRVCT(:,:,:) ) ) - ZFADVW(:,:,:) = -DZF(1,IKU,1,FZM( PTKEM(:,:,:),PRWCT(:,:,:) ) ) + ZFADVW(:,:,:) = -DZF(FZM( PTKEM(:,:,:),PRWCT(:,:,:) ) ) ! PRTKES(:,:,:) = PRTKES(:,:,:) + ZFADVU(:,:,:) + ZFADVV(:,:,:) + ZFADVW(:,:,:) ! @@ -380,7 +378,7 @@ LBUDGET_R(7) = LBUDGET_RH ZFADVV(:,:,:) = ZFADVV(:,:,:) + ZFADV(:,:,:) PRTKES(:,:,:) = PRTKES(:,:,:) + ZFADV(:,:,:) ! - ZFADV(:,:,:) = -DZF(1,IKU,1,FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) + ZFADV(:,:,:) = -DZF(FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) IF(LWEST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIB,:,:)=0. IF(LEAST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIE,:,:)=0. IF(LSOUTH_ll() .AND. HLBCY(1) /= 'CYCL') ZFADV(:,IJB,:)=0. diff --git a/src/MNH/mpdata_scalar.f90 b/src/MNH/mpdata_scalar.f90 index ae29c69b09e8cd4baaf5cddcbb511f7780a9843c..48b6e121507328e3e59777682667c05d8cf4b3a2 100644 --- a/src/MNH/mpdata_scalar.f90 +++ b/src/MNH/mpdata_scalar.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 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. @@ -144,7 +144,6 @@ INTEGER :: JSV ! Loop index for Scalar Variables ! INTEGER:: IIB,IJB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE ! End useful area in x,y,z directions -INTEGER:: IKU ! REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3)) :: ZGUESS ! Guess ! variable (to be removed in the future !) @@ -170,7 +169,6 @@ NULLIFY(TZFIELDS_ll) !* 0. PROLOGUE ! CALL GET_PHYSICAL_ll(IIB,IJB,IIE,IJE) -IKU=SIZE(PSVM,3) ! ! !------------------------------------------------------------------------------- @@ -183,7 +181,7 @@ IKU=SIZE(PSVM,3) ZRVARS(:,:,:) = PRSVS(:,:,:,JSV) ZFADVU(:,:,:) = -DXF(FXM( PSVM(:,:,:,JSV),PRUCT(:,:,:) ) ) ZFADVV(:,:,:) = -DYF(FYM( PSVM(:,:,:,JSV),PRVCT(:,:,:) ) ) - ZFADVW(:,:,:) = -DZF(1,IKU,1,FZM( PSVM(:,:,:,JSV),PRWCT(:,:,:) ) ) + ZFADVW(:,:,:) = -DZF(FZM( PSVM(:,:,:,JSV),PRWCT(:,:,:) ) ) ! PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) + ZFADVU(:,:,:) + ZFADVV(:,:,:) + & ZFADVW(:,:,:) @@ -222,7 +220,7 @@ IKU=SIZE(PSVM,3) ZFADVV(:,:,:) = ZFADVV(:,:,:) + ZFADV(:,:,:) PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) + ZFADV(:,:,:) ! - ZFADV(:,:,:) = -DZF(1,IKU,1,FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) + ZFADV(:,:,:) = -DZF(FZM( ZGUESS(:,:,:),ZRAWCT(:,:,:) ) ) IF(LWEST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIB,:,:)=0. IF(LEAST_ll() .AND. HLBCX(1) /= 'CYCL') ZFADV(IIE,:,:)=0. IF(LSOUTH_ll() .AND. HLBCY(1) /= 'CYCL') ZFADV(:,IJB,:)=0. diff --git a/src/MNH/num_diff.f90 b/src/MNH/num_diff.f90 index 23751bff843dc1a983d8ad0f1cde32eeb59fb3dd..46ac17c1410d9be1a2e627e77451d1a763bc63f8 100644 --- a/src/MNH/num_diff.f90 +++ b/src/MNH/num_diff.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -280,7 +280,6 @@ INTEGER :: JRR ! Loop index for moist variables INTEGER :: JSV ! Loop index for Scalar Variables INTEGER:: IIB,IJB ! Begining useful area in x,y directions INTEGER:: IIE,IJE ! End useful area in x,y directions -INTEGER :: IKU ! LOGICAL :: GTKEALLOC ! true if TKE arrays are not zero-sized ! @@ -294,7 +293,6 @@ INTEGER :: IGRID ! localisation on the model grid !* 1. COMPUTES THE DOMAIN DIMENSIONS ! ------------------------------ CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) -IKU=SIZE(PUM,3) ! GTKEALLOC = SIZE(PTKEM,1) /= 0 ! @@ -337,10 +335,10 @@ IF (ONUMDIFU) THEN !!$ IF(NHALO == 1) THEN TZHALO2LIST => TZHALO2LIST%NEXT TZHALO2LSLIST => TZHALO2LSLIST%NEXT - CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(1,IKU,1,PRHODJ), PDK2U, PDK4U, & + CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(PRHODJ), PDK2U, PDK4U, & PLSWM, TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2) !!$ ELSE -!!$ CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(1,IKU,1,PRHODJ), PDK2U, PDK4U, PLSWM ) +!!$ CALL NUM_DIFF_ALGO(PRWS, PWM, IGRID, MZM(PRHODJ), PDK2U, PDK4U, PLSWM ) !!$ ENDIF ENDIF ! diff --git a/src/MNH/ppm.f90 b/src/MNH/ppm.f90 index c122536c17f8a068edfe87896e7265317c09e00c..bbfb03a46a9d816096ff70da3be9a12cc1f95a55 100644 --- a/src/MNH/ppm.f90 +++ b/src/MNH/ppm.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -2296,7 +2296,7 @@ ZFNEG(:,:,IKE+1) = (ZQR(:,:,IKE)-PSRC(:,:,IKE+1))*PCR(:,:,IKE+1) + & ! advect the actual field in Z direction by W*dt ! #ifndef MNH_OPENACC -PR = DZF(1,IKU,1, PCR*MZM(1,IKU,1,PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & +PR = DZF( PCR*MZM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else !$acc end kernels @@ -3404,7 +3404,6 @@ REAL, DIMENSION(:,:,:),INTENT(OUT):: PR #ifndef MNH_OPENACC INTEGER:: IKB ! Begining useful area in x,y,z directions INTEGER:: IKE ! End useful area in x,y,z directions -INTEGER:: IKU ! ! advection fluxes REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG @@ -3439,7 +3438,6 @@ END IF #ifndef MNH_OPENACC IKB = 1 + JPVEXT IKE = SIZE(PSRC,3) - JPVEXT -IKU = SIZE(PSRC,3) #endif ! !------------------------------------------------------------------------------- @@ -3504,7 +3502,7 @@ ZFNEG(:,:,IKE+1) = (ZPHAT(:,:,IKE+1) - PSRC(:,:,IKE+1))*PCR(:,:,IKE+1) + & ! #ifndef MNH_OPENACC PR = PSRC * PRHO - & - DZF(1,IKU,1, PCR*MZM(1,IKU,1,PRHO)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + & + DZF( PCR*MZM(PRHO)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + & ZFNEG*(0.5-SIGN(0.5,PCR)) ) ) #else !$acc end kernels @@ -4380,7 +4378,6 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR ! INTEGER:: IIB,IJB,IKB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions -INTEGER:: IKU ! ! variable at cell edges REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRVT @@ -4419,11 +4416,10 @@ END IF CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) IKB = 1 + JPVEXT IKE = SIZE(PSRC,3) - JPVEXT -IKU = SIZE(PSRC,3) ! !------------------------------------------------------------------------------- ! -ZRVT = PCR/PTSTEP * MZM(1,IKU,1,PRHO) +ZRVT = PCR/PTSTEP * MZM(PRHO) ! ! calculate 4th order fluxes at cell edges in the inner domain ! ZPHAT(:,:,IKB+1:IKE) = (7.0 * & @@ -4530,7 +4526,7 @@ END WHERE ! ! 1. calculate upwind tendency of the source ! -PR = PSRC*PRHO - PTSTEP*DZF(1,IKU,1,ZFUP) +PR = PSRC*PRHO - PTSTEP*DZF(ZFUP) ! !------------------------------------------------------------------------------- ! compute and apply the limiters @@ -4658,7 +4654,7 @@ ZFCOR(:,:,IKB-1) = MIN( & !------------------------------------------------------------------------------- ! 6. apply the limited flux correction to scalar field ! -PR = PR - PTSTEP*DZF(1,IKU,1,ZFCOR) +PR = PR - PTSTEP*DZF(ZFCOR) ! IF (MPPDB_INITIALIZED) THEN !Check all INOUT arrays diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90 index 8ec0361d6011910c2e724fe6dcadf21211634959..a4efd778ab656606d812688dde0096d25c11a065 100644 --- a/src/MNH/prandtl.f90 +++ b/src/MNH/prandtl.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -342,8 +342,8 @@ IKE = KKU-JPVEXT_TURB*KKL ISV =SIZE(PSVM,4) ! #ifndef MNH_OPENACC -PETHETA(:,:,:) = MZM(KKA,KKU,KKL, ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) ) -PEMOIST(:,:,:) = MZM(KKA,KKU,KKL, EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) ) +PETHETA(:,:,:) = MZM( ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) ) +PEMOIST(:,:,:) = MZM( EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) ) PETHETA(:,:,KKA) = 2.*PETHETA(:,:,IKB) - PETHETA(:,:,IKB+KKL) PEMOIST(:,:,KKA) = 2.*PEMOIST(:,:,IKB) - PEMOIST(:,:,IKB+KKL) #else @@ -362,7 +362,7 @@ PEMOIST(:,:,KKA) = 2.*PEMOIST(:,:,IKB) - PEMOIST(:,:,IKB+KKL) ! 1.3 1D Redelsperger numbers ! #ifndef MNH_OPENACC -PBLL_O_E(:,:,:) = MZM(KKA,KKU,KKL, XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:) ) +PBLL_O_E(:,:,:) = MZM( XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:) ) IF (KRR /= 0) THEN ! moist case PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * & & GZ_M_W(KKA,KKU,KKL,PTHLM,PDZZ) @@ -498,10 +498,10 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model #ifndef MNH_OPENACC #ifndef MNH_BITREP PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2+(XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 ) + MZM( GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 ) #else PRED2TH3(:,:,:)= BR_P2(PREDTH1(:,:,:))+BR_P2(XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) ) * & - MZM(KKA,KKU,KKL, BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) ) + MZM( BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) ) #endif PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL) #else @@ -527,10 +527,10 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model #ifndef MNH_OPENACC #ifndef MNH_BITREP PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)**2 ) + MZM( GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)**2 ) #else PRED2R3(:,:,:)= BR_P2(PREDR1(:,:,:)) + BR_P2(XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:)) * & - MZM(KKA,KKU,KKL, BR_P2(GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)) ) + MZM( BR_P2(GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)) ) #endif PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL) #else @@ -560,7 +560,7 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) + BR_P2(XCTV)*BR_P2(PBLL_O_E(:,:,:)) * & #endif PEMOIST(:,:,:) * PETHETA(:,:,:) * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)* & + MZM( GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)* & GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL) #else @@ -589,10 +589,10 @@ call Print_msg( NVERB_WARNING, 'GEN', 'PRANDTL', 'OpenACC: L2D=.T. and KRR=0 not #ifndef MNH_OPENACC #ifndef MNH_BITREP PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 + XCTV**2*PBLL_O_E(:,:,:)**2 * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 ) + MZM( GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 ) #else PRED2TH3(:,:,:) = BR_P2(PREDTH1(:,:,:)) + BR_P2(XCTV)*BR_P2(PBLL_O_E(:,:,:)) * & - MZM(KKA,KKU,KKL, BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) ) + MZM( BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) ) #endif PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL) #else @@ -635,11 +635,11 @@ ELSE ! 3D case in a 3D model #ifndef MNH_OPENACC #ifndef MNH_BITREP PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2 + ( XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 & + MZM( GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 & + GY_M_M(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY)**2 ) #else PRED2TH3(:,:,:)= BR_P2(PREDTH1(:,:,:)) + BR_P2( XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) ) * & - MZM(KKA,KKU,KKL, BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) & + MZM( BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) & + BR_P2(GY_M_M(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY)) ) #endif PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL) @@ -667,11 +667,11 @@ ELSE ! 3D case in a 3D model #ifndef MNH_OPENACC #ifndef MNH_BITREP PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)**2 + & + MZM( GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)**2 + & GY_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY)**2 ) #else PRED2R3(:,:,:)= BR_P2(PREDR1(:,:,:)) + BR_P2(XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:)) * & - MZM(KKA,KKU,KKL, BR_P2(GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)) + & + MZM( BR_P2(GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)) + & BR_P2(GY_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY)) ) #endif PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL) @@ -705,7 +705,7 @@ ELSE ! 3D case in a 3D model PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) + BR_P2(XCTV)*BR_P2(PBLL_O_E(:,:,:)) * & #endif PEMOIST(:,:,:) * PETHETA(:,:,:) * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)* & + MZM( GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)* & GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)+ & GY_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY)* & GY_M_M(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY) ) @@ -740,11 +740,11 @@ call Print_msg( NVERB_WARNING, 'GEN', 'PRANDTL', 'OpenACC: L2D=.F. and KRR=0 not #ifndef MNH_OPENACC #ifndef MNH_BITREP PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 + XCTV**2*PBLL_O_E(:,:,:)**2 * & - MZM(KKA,KKU,KKL, GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 & + MZM( GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)**2 & + GY_M_M(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY)**2 ) #else PRED2TH3(:,:,:) = BR_P2(PREDTH1(:,:,:)) + BR_P2(XCTV)*BR_P2(PBLL_O_E(:,:,:)) * & - MZM(KKA,KKU,KKL, BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) & + MZM( BR_P2(GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)) & + BR_P2(GY_M_M(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY)) ) #endif #else @@ -808,15 +808,15 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model DO JSV=1,ISV #ifndef MNH_BITREP IF (KRR /= 0) THEN - ZW1 = MZM(KKA,KKU,KKL, (XG / PTHVREF * PLM * PLEPS / PTKEM)**2 ) *PETHETA + ZW1 = MZM( (XG / PTHVREF * PLM * PLEPS / PTKEM)**2 ) *PETHETA ELSE - ZW1 = MZM(KKA,KKU,KKL, (XG / PTHVREF * PLM * PLEPS / PTKEM)**2) + ZW1 = MZM( (XG / PTHVREF * PLM * PLEPS / PTKEM)**2) END IF #else IF (KRR /= 0) THEN - ZW1 = MZM(KKA,KKU,KKL, BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM) ) *PETHETA + ZW1 = MZM( BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM) ) *PETHETA ELSE - ZW1 = MZM(KKA,KKU,KKL, BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM)) + ZW1 = MZM( BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM)) END IF #endif #else @@ -839,7 +839,7 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model #ifndef MNH_OPENACC PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & ZW1* & - MZM(KKA,KKU,KKL,GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & + MZM(GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX) & ) #else @@ -858,7 +858,7 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model #ifndef MNH_OPENACC PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & ZW1 * PEMOIST * & - MZM(KKA,KKU,KKL,GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & + MZM(GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX) & ) #else @@ -886,15 +886,15 @@ ELSE ! 3D case in a 3D model DO JSV=1,ISV #ifndef MNH_BITREP IF (KRR /= 0) THEN - ZW1 = MZM(KKA,KKU,KKL, (XG / PTHVREF * PLM * PLEPS / PTKEM)**2 ) *PETHETA + ZW1 = MZM( (XG / PTHVREF * PLM * PLEPS / PTKEM)**2 ) *PETHETA ELSE - ZW1 = MZM(KKA,KKU,KKL, (XG / PTHVREF * PLM * PLEPS / PTKEM)**2) + ZW1 = MZM( (XG / PTHVREF * PLM * PLEPS / PTKEM)**2) END IF #else IF (KRR /= 0) THEN - ZW1 = MZM(KKA,KKU,KKL, BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM) ) *PETHETA + ZW1 = MZM( BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM) ) *PETHETA ELSE - ZW1 = MZM(KKA,KKU,KKL, BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM)) + ZW1 = MZM( BR_P2(XG / PTHVREF * PLM * PLEPS / PTKEM)) END IF #endif #else @@ -917,7 +917,7 @@ ELSE ! 3D case in a 3D model #ifndef MNH_OPENACC PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & ZW1* & - MZM(KKA,KKU,KKL,GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & + MZM(GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & GX_M_M(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX) & +GY_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)* & GY_M_M(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY) & @@ -940,7 +940,7 @@ ELSE ! 3D case in a 3D model #ifndef MNH_OPENACC PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & ZW1 * PEMOIST * & - MZM(KKA,KKU,KKL,GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & + MZM(GX_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)* & GX_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX) & +GY_M_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)* & GY_M_M(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY) & diff --git a/src/MNH/pressure.f90 b/src/MNH/pressure.f90 index 0ec507eec7ee8fb1fe94c7bacc2836524e3dc88e..f06d79f0a5b295008267b2929473caa4db73f913 100644 --- a/src/MNH/pressure.f90 +++ b/src/MNH/pressure.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -509,10 +509,10 @@ END IF ! IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN PRUS = PRUS - MXM(PRHODJ * XCPD * ZTHETAV) * ZDV_SOURCE - PRWS = PRWS - MZM(1,IKU,1,PRHODJ * XCPD * ZTHETAV) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) + PRWS = PRWS - MZM(PRHODJ * XCPD * ZTHETAV) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) ELSEIF(CEQNSYS=='LHE') THEN PRUS = PRUS - MXM(PRHODJ) * ZDV_SOURCE - PRWS = PRWS - MZM(1,IKU,1,PRHODJ) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) + PRWS = PRWS - MZM(PRHODJ) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) END IF ! IF(.NOT. L2D) THEN diff --git a/src/MNH/pressure_in_prep.f90 b/src/MNH/pressure_in_prep.f90 index e012d515b828652f664356a845921c11fd663e38..6219e352f27f06e8a418d8073fdd8aed4031802d 100644 --- a/src/MNH/pressure_in_prep.f90 +++ b/src/MNH/pressure_in_prep.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2020 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. @@ -117,9 +117,6 @@ REAL,DIMENSION(SIZE(PDXX,1),SIZE(PDXX,2),SIZE(PDXX,3)):: ZDIV ! residual diverge !* file management variables and counters ! INTEGER :: ILUOUT0 ! logical unit for listing file -INTEGER :: IRESP ! error code -INTEGER :: IKB, IKE ! inner limits in Z direction -INTEGER :: IKU INTEGER :: IINFO_ll REAL :: ZMAXRES TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange @@ -133,10 +130,6 @@ INTEGER :: I,J,K ! ILUOUT0 = TLUOUT0%NLU ! -IKB=1+JPVEXT -IKE=NKMAX+JPVEXT -IKU=IKE+JPVEXT -! ZU(:,:,:) = XUT(:,:,:) ZV(:,:,:) = XVT(:,:,:) ZW(:,:,:) = XWT(:,:,:) @@ -192,7 +185,7 @@ CALL MPPDB_CHECK3D(XVT,"PressInP4-beforeupdhalo::XVT",PRECISION) ! ZRU(:,:,:) = XUT(:,:,:) * MXM(XRHODJ) ZRV(:,:,:) = XVT(:,:,:) * MYM(XRHODJ) - ZRW(:,:,:) = XWT(:,:,:) * MZM(1,IKU,1,XRHODJ) + ZRW(:,:,:) = XWT(:,:,:) * MZM(XRHODJ) ! CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRU, 'PRESSURE_IN_PREP::ZRU' ) CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRV, 'PRESSURE_IN_PREP::ZRV' ) diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90 index b4c3096c367839114be4329438e174c08f608d4c..0b32958a21ea434d6412e3ee9630b5c626be1578 100644 --- a/src/MNH/pressurez.f90 +++ b/src/MNH/pressurez.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -569,10 +569,10 @@ END IF CALL MPPDB_CHECK3DM("before MXM PRESSUREZ :PRU/V/WS",PRECISION,PRUS,PRVS,PRWS) IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN PRUS = PRUS - MXM(PRHODJ * XCPD * ZTHETAV) * ZDV_SOURCE - PRWS = PRWS - MZM(1,IKU,1,PRHODJ * XCPD * ZTHETAV) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) + PRWS = PRWS - MZM(PRHODJ * XCPD * ZTHETAV) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) ELSEIF(CEQNSYS=='LHE') THEN PRUS = PRUS - MXM(PRHODJ) * ZDV_SOURCE - PRWS = PRWS - MZM(1,IKU,1,PRHODJ) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) + PRWS = PRWS - MZM(PRHODJ) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ) END IF ! IF(.NOT. L2D) THEN diff --git a/src/MNH/qlap.f90 b/src/MNH/qlap.f90 index 75f8c728fd2b2ac86cdd9ae57f907c2bf1752207..d4da491d97bc6c716267088375a88a11fbeac7cc 100644 --- a/src/MNH/qlap.f90 +++ b/src/MNH/qlap.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -236,13 +236,13 @@ IF ( CEQNSYS == 'DUR' .OR. CEQNSYS == 'MAE' ) THEN IF(.NOT. L2D) THEN ZV = MYM(PRHODJ * XCPD * PTHETAV) * ZV END IF - ZW = MZM(1,IKU,1,PRHODJ * XCPD * PTHETAV) * GZ_M_W(1,IKU,1,PY,PDZZ) + ZW = MZM(PRHODJ * XCPD * PTHETAV) * GZ_M_W(1,IKU,1,PY,PDZZ) ELSEIF ( CEQNSYS == 'LHE' ) THEN ZU = MXM(PRHODJ) * ZU IF(.NOT. L2D) THEN ZV = MYM(PRHODJ) * ZV ENDIF - ZW = MZM(1,IKU,1,PRHODJ) * GZ_M_W(1,IKU,1,PY,PDZZ) + ZW = MZM(PRHODJ) * GZ_M_W(1,IKU,1,PY,PDZZ) END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/rel_forcingn.f90 b/src/MNH/rel_forcingn.f90 index e057e1223321a3a8f3f6a1748d82da97d3a72b12..fe55e6705720942125a3dc714fa6c42545bf9360 100644 --- a/src/MNH/rel_forcingn.f90 +++ b/src/MNH/rel_forcingn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2020 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. @@ -143,11 +143,9 @@ REAL, DIMENSION(SIZE(PRTHS,1),SIZE(PRTHS,2),SIZE(PRTHS,3)) :: ZXADVTHFRC,ZXADVRV REAL, DIMENSION(SIZE(PRTHS,1),SIZE(PRTHS,2),SIZE(PRTHS,3)) :: ZTHREL,ZRVREL LOGICAL,DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) :: GRELAX_MASK_FRC ! MAsk for relaxation REAL :: ZRELAX_HEIGHT_TOP,ZRELAX_HEIGHT_BOT, ZRELAX_TIME -INTEGER :: IKU !---------------------------------------------------------------------------- ! -IKU = SIZE(PTHM,3) !* 1. PREPARATION OF FORCING ! ---------------------- ! @@ -234,7 +232,7 @@ END IF ! Corresponds to CASE=FIXE of forcing.f90 ! GRELAX_MASK_FRC(:,:,:) = .TRUE. - WHERE ((MZF(1,IKU,1,PZZ).LT.ZRELAX_HEIGHT_BOT).OR.(MZF(1,IKU,1,PZZ).GT.ZRELAX_HEIGHT_TOP)) + WHERE ((MZF(PZZ).LT.ZRELAX_HEIGHT_BOT).OR.(MZF(PZZ).GT.ZRELAX_HEIGHT_TOP)) GRELAX_MASK_FRC = .FALSE. END WHERE ! diff --git a/src/MNH/relaxation.f90 b/src/MNH/relaxation.f90 index 13e62a4ab64a002543ff228b84df9a69e1ad9855..b9cf5c3bb1fef45d27379eb62846c1652608fc0e 100644 --- a/src/MNH/relaxation.f90 +++ b/src/MNH/relaxation.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. +!----------------------------------------------------------------- ! ###################### MODULE MODI_RELAXATION ! ###################### @@ -442,7 +443,7 @@ IJU_ll=IJU_ll+2*JPHEXT ! ZRHODJU(:,:,:) = MXM(PRHODJ) ZRHODJV(:,:,:) = MYM(PRHODJ) -ZRHODJW(:,:,:) = MZM(1,IKU,1,PRHODJ) +ZRHODJW(:,:,:) = MZM(PRHODJ) ! GHORELAXR(1) = OHORELAX_RV GHORELAXR(2) = OHORELAX_RC diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index 61ff8a22c69493ce87a2d68e0633a3ae6df2bf11..56dfb0cc57a6aa97c496d686bb8286fa6ccba493 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -1189,7 +1189,7 @@ CALL PRINT_MSG(NVERB_FATAL,'GEN','RESOLVED_CLOUD','C2R2//KHKO not yet implemente ZDZZ(:,:,IKE+1:) = 0. !$acc end kernels #ifndef MNH_OPENACC - ZZZ = MZF(1,IKU,1, PZZ ) + ZZZ = MZF( PZZ ) #else CALL MZF_DEVICE(1,IKU,1,PZZ,ZZZ) #endif @@ -1284,7 +1284,7 @@ CALL PRINT_MSG(NVERB_FATAL,'GEN','RESOLVED_CLOUD','ICE4 not yet implemented') ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK) ENDDO !$acc end kernels - ZZZ = MZF(1,IKU,1, PZZ ) + ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN CALL ICE_ADJUST (1,IKU,1, KRR, CFRAC_ICE_ADJUST, 'ADJU', & OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT, & @@ -1375,7 +1375,7 @@ CALL PRINT_MSG(NVERB_FATAL,'GEN','RESOLVED_CLOUD','LIMA not yet implemented') DO JK=IKB,IKE ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK) ENDDO - ZZZ = MZF(1,IKU,1, PZZ ) + ZZZ = MZF( PZZ ) IF (LPTSPLIT) THEN CALL LIMA (1, IKU, 1, & PTSTEP, TPFILE, OCLOSE_OUT, & diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90 index 71ceb8c62dcef75d0bafe62c656747b82f5d598b..6d82e6e5b8cb6c9a045fecf2d36c553f8cacbc63 100644 --- a/src/MNH/resolved_elecn.f90 +++ b/src/MNH/resolved_elecn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2009-2020 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. @@ -299,7 +299,6 @@ INTEGER :: IJB ! INTEGER :: IJE ! INTEGER :: IKB ! INTEGER :: IKE ! -INTEGER :: IKU INTEGER :: IINFO_ll ! return code of parallel routine INTEGER :: IPROC ! my proc number INTEGER :: IERR ! error status @@ -371,7 +370,6 @@ END IF CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB = 1 + JPVEXT IKE = SIZE(PZZ,3) - JPVEXT -IKU = SIZE(PZZ,3) ! ! !------------------------------------------------------------------------------ @@ -703,7 +701,7 @@ SELECT CASE (HCLOUD) ! !* 5.2 Perform the saturation adjustment over cloud ice and cloud water ! - ZZZ = MZF(1,IKU,1, PZZ ) + ZZZ = MZF( PZZ ) CALL ICE_ADJUST_ELEC (KRR, KMI, HRAD, HTURBDIM, & HSCONV, HMF_CLOUD, & OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT, & @@ -767,7 +765,7 @@ SELECT CASE (HCLOUD) ! !* 6.2 Perform the saturation adjustment over cloud ice and cloud water ! - ZZZ = MZF(1,IKU,1, PZZ ) + ZZZ = MZF( PZZ ) CALL ICE_ADJUST_ELEC (KRR, KMI, HRAD, & HTURBDIM, HSCONV, HMF_CLOUD, & OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT, & diff --git a/src/MNH/rmc01.f90 b/src/MNH/rmc01.f90 index 3098d25126fa97fec87ad3f6f12c244e2ee82587..7b98c37d5a20de8cf23a5e0caa57ec7f636dde04 100644 --- a/src/MNH/rmc01.f90 +++ b/src/MNH/rmc01.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 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. @@ -165,7 +165,7 @@ IKT=SIZE(PZZ,3) IKTE=IKT-JPVEXT_TURB ! ! altitude of mass points -ZZZ=MZF(KKA,KKU,KKL,PZZ) +ZZZ=MZF(PZZ) ! replace by height of mass points DO JK=1,IKT ZZZ(:,:,JK) = ZZZ(:,:,JK) - PZZ(:,:,IKB) diff --git a/src/MNH/set_bogus_vortex.f90 b/src/MNH/set_bogus_vortex.f90 index 5f22d60d909fb9459dacea44fab9f59f7a3cce78..b0a881e2813a891df91d13fe47a67a55ccd977c3 100644 --- a/src/MNH/set_bogus_vortex.f90 +++ b/src/MNH/set_bogus_vortex.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2001-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2001-2020 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. @@ -236,7 +236,7 @@ ZRADBOGMAX=ZRADBOGMAX*1000. ! conversion from km to m ! ALLOCATE(ZZHAT3D(1,1,IKU),ZZHATM(1,1,IKU)) ! to compute altitude of mass points ZZHAT3D(1,1,:) = XZHAT(:) -ZZHATM = MZF(1,IKU,1,ZZHAT3D) +ZZHATM = MZF(ZZHAT3D) DEALLOCATE(ZZHAT3D) ! ! Definition de l angle de convergence diff --git a/src/MNH/set_cstn.f90 b/src/MNH/set_cstn.f90 index 3ec1a28b54b6a2220d145c4a2a10c67672baa5b1..986526c82b5fd2812e3c20c9d54300592149a19e 100644 --- a/src/MNH/set_cstn.f90 +++ b/src/MNH/set_cstn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -312,7 +312,7 @@ ELSE ZZS_LS(:,:)=ZHEIGHT(1) ENDIF CALL VERT_COORD(LSLEVE,ZZS_LS,ZZS_LS,XLEN1,XLEN2,XZHAT,ZZFLUX_MX) -ZZMASS_MX(:,:,:)=MZF(1,IKU,1,ZZFLUX_MX) +ZZMASS_MX(:,:,:)=MZF(ZZFLUX_MX) ZZMASS_MX(:,:,IKU)=1.5*ZZFLUX_MX(:,:,IKU)-0.5*ZZFLUX_MX(:,:,IKU-1) ! CALL MPPDB_CHECK3D(ZZMASS_MX,"SET_CSTN::ZZMASS_MX",PRECISION) diff --git a/src/MNH/set_geosbal.f90 b/src/MNH/set_geosbal.f90 index ac57ba40c6f88f310f314a0812194805aa23f73e..28e528d8b1fbc1d269681cc40769c4f31e2ed273 100644 --- a/src/MNH/set_geosbal.f90 +++ b/src/MNH/set_geosbal.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2020 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. @@ -385,11 +385,11 @@ ELSE ! conformal projection ! PCORIOZ(:,:,:) = SPREAD( 2. * XOMEGA * SIN(XLAT(:,:)*ZRADSDG),3,IKU) ZDXX(:,:,:) = MXM( & - MZF(1,IKU,1,SPREAD(SPREAD( 1.+ ZD1*XZHAT(:)/XRADIUS ,1,IIU),2,IJU )) & + MZF(SPREAD(SPREAD( 1.+ ZD1*XZHAT(:)/XRADIUS ,1,IIU),2,IJU )) & * SPREAD( SPREAD(XDXHAT(1:IIU),2,IJU) /XMAP(:,:),3,IKU) ) ! dxx (without orography) ZDYY(:,:,:) = MYM( & - MZF(1,IKU,1,SPREAD(SPREAD( 1.+ ZD1*XZHAT(:)/XRADIUS,1,IIU),2,IJU )) & + MZF(SPREAD(SPREAD( 1.+ ZD1*XZHAT(:)/XRADIUS,1,IIU),2,IJU )) & * SPREAD( SPREAD(XDYHAT(1:IJU),1,IIU) /XMAP(:,:),3,IKU) ) ! dyy (without orography) END IF @@ -648,7 +648,7 @@ ZTHV3D(:,:,:) = SPREAD(SPREAD(PTHVM(:),1,IIU),2,IJU) ! initialize with !* 4. INTERPOLATE THETAV, MR ON MODEL GRID (WITH OROGRAPHY) ! ------------------------------------------------------------ ! -ZZM(:,:,:) = MZF(1,IKU,1,XZZ) ! compute height at mass level +ZZM(:,:,:) = MZF(XZZ) ! compute height at mass level ! of grid with orography ! ZZM(:,:,IKU) = 2. * XZZ(:,:,IKU) - ZZM(:,:,IKU-1) ! extrapolate on IKU mass level diff --git a/src/MNH/set_mass.f90 b/src/MNH/set_mass.f90 index acb2014ea5e5a4223d218ed518acf2f24c58017f..a7b266aaa997e476fbc3fa3d32a820b47f56efbe 100644 --- a/src/MNH/set_mass.f90 +++ b/src/MNH/set_mass.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2020 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. @@ -331,8 +331,8 @@ ELSE ! conformal projection ZDXX(JI,JJ,JK) = ( 1.+ ZD1*XZHAT(JK)/XRADIUS ) * ( XDXHAT(JI) /XMAP(JI,JJ) ) ! XDXHAT(JI) ZDYY(JI,JJ,JK) = ( 1.+ ZD1*XZHAT(JK)/XRADIUS ) * ( XDYHAT(JJ) /XMAP(JI,JJ) ) ! XDYHAT(JJ) ENDDO ; ENDDO ; ENDDO ; - ZDXX = MXM(MZF(1,IKU,1,ZDXX)) - ZDYY = MYM(MZF(1,IKU,1,ZDYY)) + ZDXX = MXM(MZF(ZDXX)) + ZDYY = MYM(MZF(ZDYY)) END IF ! SELECT CASE(HFUNU) @@ -482,8 +482,8 @@ CALL CLEANLIST_ll(TZFIELDS_ll) ! ! Interpolation of the wind ! - ZRHODU_MX=MZF(1,IKU,1,ZUW3D_FL)*ZRHOD_MX - ZRHODV_MX=MZF(1,IKU,1,ZVW3D_FL)*ZRHOD_MX + ZRHODU_MX=MZF(ZUW3D_FL)*ZRHOD_MX + ZRHODV_MX=MZF(ZVW3D_FL)*ZRHOD_MX CALL MPPDB_CHECK3DM("SET_MASS:ZRHODU_MX,ZRHODV_MX,PZFLUX_MX,PZMASS_MX",PRECISION,& & ZRHODU_MX,ZRHODV_MX,PZFLUX_MX,PZMASS_MX ) CALL VER_INT_DYN(OSHIFT,ZRHODU_MX,ZRHODV_MX,PZFLUX_MX,PZMASS_MX,PZS_MX,ZRHODUA,ZRHODVA) diff --git a/src/MNH/set_refz.f90 b/src/MNH/set_refz.f90 index b8b10b3b75dc9c4f4f69bc0c632c59ebcd3aba6d..f6e82cd85f4e20a2e30627462ed593af03d6d0b8 100644 --- a/src/MNH/set_refz.f90 +++ b/src/MNH/set_refz.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -174,7 +174,7 @@ IKE=IKU-JPVEXT !* 2. ALTITUDE OF THE MASS POINTS ! --------------------------- ! -ZZMASS(:,:,:)=MZF(1,IKU,1,XZZ(:,:,:)) +ZZMASS(:,:,:)=MZF(XZZ(:,:,:)) ZZMASS(:,:,IKU)=1.5*XZZ(:,:,IKU)-0.5*XZZ(:,:,IKU-1) ! !20131024 check zzmass and pthv diff --git a/src/MNH/set_rsou.f90 b/src/MNH/set_rsou.f90 index 5a787a31bd6be1946fb9b1c7bdf5770622c16812..353c6298bd02baa8db936c4df60565fc4235c013 100644 --- a/src/MNH/set_rsou.f90 +++ b/src/MNH/set_rsou.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -1117,7 +1117,7 @@ ELSE ENDIF ENDIF CALL VERT_COORD(LSLEVE,ZZS_LS,ZZS_LS,XLEN1,XLEN2,XZHAT,ZZFLUX_MX) -ZZMASS_MX(:,:,:)=MZF(1,IKU,1,ZZFLUX_MX) +ZZMASS_MX(:,:,:)=MZF(ZZFLUX_MX) ZZMASS_MX(:,:,IKU)=1.5*ZZFLUX_MX(:,:,IKU)-0.5*ZZFLUX_MX(:,:,IKU-1) ! !* 3.2 Interpolate and extrapolate U and V on w- mixed grid levels diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90 index 5e76f58c51e5632ec4c68795e8c7457b3d025a16..96fff37723b263791445e5d0e5e4891ef17e89c9 100644 --- a/src/MNH/shallow_mf_pack.f90 +++ b/src/MNH/shallow_mf_pack.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2020 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. @@ -282,7 +282,7 @@ ZSVM(:,:,:) = 0. ! wind on mass points ZUMM=MXF(PUM) ZVMM=MYF(PVM) -ZWMM=MZF(1,IKU,1,PWM) +ZWMM=MZF(PWM) ! !!! 2. Pack input variables ! diff --git a/src/MNH/shuman.f90 b/src/MNH/shuman.f90 index 5b76c5c0a81db3c491c872f69923c7d9e16ebade..12a702243b05f5836dc87624e05ea1bfc77d8ec6 100644 --- a/src/MNH/shuman.f90 +++ b/src/MNH/shuman.f90 @@ -33,19 +33,14 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass l REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDYM ! result at flux side END FUNCTION DYM ! -FUNCTION DZF(KKA,KKU,KL,PA) RESULT(PDZF) -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise +FUNCTION DZF(PA) RESULT(PDZF) REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZF ! result at mass - ! localization +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZF ! result at mass localization END FUNCTION DZF ! -FUNCTION DZM(KKA,KKU,KL,PA) RESULT(PDZM) -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZM ! result at flux side +FUNCTION DZM(PA) RESULT(PDZM) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZM ! result at flux side END FUNCTION DZM ! FUNCTION MXF(PA) RESULT(PMXF) @@ -68,18 +63,14 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass l REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMYM ! result at flux localization END FUNCTION MYM ! -FUNCTION MZF(KKA,KKU,KL,PA) RESULT(PMZF) -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZF ! result at mass localization +FUNCTION MZF(PA) RESULT(PMZF) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZF ! result at mass localization END FUNCTION MZF ! -FUNCTION MZM(KKA,KKU,KL,PA) RESULT(PMZM) -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZM ! result at flux localization +FUNCTION MZM(PA) RESULT(PMZM) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZM ! result at flux localization END FUNCTION MZM ! END INTERFACE @@ -542,7 +533,7 @@ END DO END FUNCTION MYM ! ! ############################### - FUNCTION MZF(KKA,KKU,KL,PA) RESULT(PMZF) + FUNCTION MZF(PA) RESULT(PMZF) ! ############################### ! !!**** *MZF* - Shuman operator : mean operator in z direction for a @@ -592,10 +583,8 @@ IMPLICIT NONE !* 0.1 Declarations of argument and result ! ------------------------------------ ! -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZF ! result at mass localization +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZF ! result at mass localization ! !* 0.2 Declarations of local variables ! ------------------------------- @@ -644,7 +633,7 @@ END DO END FUNCTION MZF ! ! ############################### - FUNCTION MZM(KKA,KKU,KL,PA) RESULT(PMZM) + FUNCTION MZM(PA) RESULT(PMZM) ! ############################### ! !!**** *MZM* - Shuman operator : mean operator in z direction for a @@ -694,10 +683,8 @@ IMPLICIT NONE !* 0.1 Declarations of argument and result ! ------------------------------------ ! -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZM ! result at flux localization +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZM ! result at flux localization ! !* 0.2 Declarations of local variables ! ------------------------------- @@ -1209,7 +1196,7 @@ END DO END FUNCTION DYM ! ! ############################### - FUNCTION DZF(KKA,KKU,KL,PA) RESULT(PDZF) + FUNCTION DZF(PA) RESULT(PDZF) ! ############################### ! !!**** *DZF* - Shuman operator : finite difference operator in z direction @@ -1259,10 +1246,8 @@ IMPLICIT NONE !* 0.1 Declarations of argument and result ! ------------------------------------ ! -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZF ! result at mass localization +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZF ! result at mass localization ! !* 0.2 Declarations of local variables ! ------------------------------- @@ -1316,7 +1301,7 @@ END DO END FUNCTION DZF ! ! ############################### - FUNCTION DZM(KKA,KKU,KL,PA) RESULT(PDZM) + FUNCTION DZM(PA) RESULT(PDZM) ! ############################### ! !!**** *DZM* - Shuman operator : finite difference operator in z direction @@ -1366,10 +1351,8 @@ IMPLICIT NONE !* 0.1 Declarations of argument and result ! ------------------------------------ ! -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization -REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZM ! result at flux side +REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization +REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZM ! result at flux side ! !* 0.2 Declarations of local variables ! ------------------------------- diff --git a/src/MNH/spawn_lsn.f90 b/src/MNH/spawn_lsn.f90 index 36a0341493c70d13ef181fe81596a5b7fb16b84a..4bf20369035d6bdc56badc2ee0b2339529ab943b 100644 --- a/src/MNH/spawn_lsn.f90 +++ b/src/MNH/spawn_lsn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 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. @@ -378,9 +378,9 @@ END IF IF ( GVERT_INTERP ) THEN IKU = SIZE(PZZ,3) ! - ZZLS2=MZF(1,IKU,1,ZZLS1) + ZZLS2=MZF(ZZLS1) ZZLS2(:,:,IKU)=2.*ZZLS2(:,:,IKU-1)-ZZLS2(:,:,IKU-2) - ZZSS=MZF(1,IKU,1,PZZ) + ZZSS=MZF(PZZ) ZZSS(:,:,IKU)=2.*ZZSS(:,:,IKU-1)-ZZSS(:,:,IKU-2) ! CALL COEF_VER_INTERP_LIN(ZZLS2,ZZSS,IKLIN,ZCOEFLIN) @@ -455,7 +455,7 @@ IF ( GVERT_INTERP ) THEN ! ZZLS1=MYM(ZZLS2) ZZLS1(:,1,:)=2.*ZZLS1(:,2,:)-ZZLS1(:,3,:) - ZZSS=MZF(1,IKU,1,PZZ) + ZZSS=MZF(PZZ) ZZSS(:,:,IKU)=2.*ZZSS(:,:,IKU-1)-ZZSS(:,:,IKU-2) ZZSS=MYM(ZZSS) ZZSS(:,1,:)=2.*ZZSS(:,2,:)-ZZSS(:,3,:) diff --git a/src/MNH/spawn_pressure2.f90 b/src/MNH/spawn_pressure2.f90 index 0a55faaef3b11cd76e9f289ad02fd6a32e772000..0b763ec655d07bf049999250ef06abbc38b1faf4 100644 --- a/src/MNH/spawn_pressure2.f90 +++ b/src/MNH/spawn_pressure2.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 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. @@ -339,9 +339,9 @@ IKE=IKU-JPVEXT ! ALLOCATE(ZGRIDA(IIU,IJU,IKU)) ALLOCATE(ZGRIDB(IIU,IJU,IKU)) - ZGRIDA(:,:,:)=MZF(1,IKU,1,PZZ_LS(:,:,:)) + ZGRIDA(:,:,:)=MZF(PZZ_LS(:,:,:)) ZGRIDA(:,:,IKU)=2.*ZGRIDA(:,:,IKU-1)-ZGRIDA(:,:,IKU-2) - ZGRIDB(:,:,:)=MZF(1,IKU,1,PZZ(:,:,:)) + ZGRIDB(:,:,:)=MZF(PZZ(:,:,:)) ZGRIDB(:,:,IKU)=2.*ZGRIDB(:,:,IKU-1)-ZGRIDB(:,:,IKU-2) CALL COEF_VER_INTERP_LIN(ZGRIDA(:,:,:),ZGRIDB(:,:,:)) ! diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90 index 80ee897c4f5f6d35c5816ecd04f67f95537ac03a..55d7384c22eb1be568812290d9e9e59a414519b7 100644 --- a/src/MNH/tke_eps_sources.f90 +++ b/src/MNH/tke_eps_sources.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -379,9 +379,9 @@ ZSOURCE(:,:,:) = PRTKES(:,:,:) / PRHODJ(:,:,:) + PRTKESM(:,:,:) / PRHODJ(:,:,: #ifndef MNH_OPENACC ZA(:,:,:) = - PTSTEP * XCET * & #ifndef MNH_BITREP - MZM(KKA,KKU,KKL,ZKEFF) * MZM(KKA,KKU,KKL,PRHODJ) / PDZZ(:,:,:)**2 + MZM(ZKEFF) * MZM(PRHODJ) / PDZZ(:,:,:)**2 #else - MZM(KKA,KKU,KKL,ZKEFF) * MZM(KKA,KKU,KKL,PRHODJ) / BR_P2(PDZZ(:,:,:)) + MZM(ZKEFF) * MZM(PRHODJ) / BR_P2(PDZZ(:,:,:)) #endif #else CALL MZM_DEVICE(ZKEFF, ZTMP1_DEVICE) !Warning: re-used later @@ -438,8 +438,8 @@ IF ( LLES_CALL .OR. & ! Compute the cartesian vertical flux of TKE in ZFLX ! #ifndef MNH_OPENACC - ZFLX(:,:,:) = - XCET * MZM(KKA,KKU,KKL,ZKEFF) * & - DZM(KKA,KKU,KKL,PIMPL * ZRES + PEXPL * PTKEM ) / PDZZ(:,:,:) + ZFLX(:,:,:) = - XCET * MZM(ZKEFF) * & + DZM(PIMPL * ZRES + PEXPL * PTKEM ) / PDZZ(:,:,:) #else !$acc kernels ZTMP3_DEVICE(:,:,:) = PIMPL * ZRES(:,:,:) + PEXPL * PTKEM(:,:,:) @@ -455,7 +455,7 @@ IF ( LLES_CALL .OR. & ! Compute the whole turbulent TRansport of TKE: ! #ifndef MNH_OPENACC - PTR(:,:,:)= PTR - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PRHODJ) * ZFLX / PDZZ ) /PRHODJ + PTR(:,:,:)= PTR - DZF( MZM(PRHODJ) * ZFLX / PDZZ ) /PRHODJ #else ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) * ZFLX(:,:,:) / PDZZ(:,:,:) !Re-use of ZTMP2_DEVICE !$acc end kernels @@ -469,7 +469,7 @@ IF ( LLES_CALL .OR. & ! IF (LLES_CALL) THEN #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLX), X_LES_SUBGRID_WTke ) + CALL LES_MEAN_SUBGRID( MZF(ZFLX), X_LES_SUBGRID_WTke ) CALL LES_MEAN_SUBGRID( -PTR, X_LES_SUBGRID_ddz_WTke ) #else !$acc data copy(X_LES_SUBGRID_WTke,X_LES_SUBGRID_ddz_WTke) diff --git a/src/MNH/tridiag_thermo.f90 b/src/MNH/tridiag_thermo.f90 index acc77444d18e3739c519071575d702bbf7342c24..ff79d84bbfa90beb40c23634c906b798af4aa4a9 100644 --- a/src/MNH/tridiag_thermo.f90 +++ b/src/MNH/tridiag_thermo.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2020 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. @@ -234,7 +234,7 @@ IKE=KKU-JPVEXT_TURB*KKL ! #ifndef MNH_OPENACC -ZMZM_RHODJ = MZM(KKA,KKU,KKL,PRHODJ) +ZMZM_RHODJ = MZM(PRHODJ) #else CALL MZM_DEVICE(PRHODJ,ZMZM_RHODJ) #endif diff --git a/src/MNH/tridiag_w.f90 b/src/MNH/tridiag_w.f90 index 87da6eff113a0671986d89e68a02782adba4f152..74d7775d5a4cad97fd039d7fde96f85575ee4f0b 100644 --- a/src/MNH/tridiag_w.f90 +++ b/src/MNH/tridiag_w.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-2020 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. @@ -184,7 +184,7 @@ REAL, DIMENSION(:,:,:), allocatable :: ZY ,ZGAM ! RHS of the equation, 3D work a REAL, DIMENSION(:,:), allocatable :: ZBET ! 2D work array ! INTEGER :: JK ! loop counter -INTEGER :: IKB,IKE,IKU ! inner vertical limits +INTEGER :: IKB,IKE ! inner vertical limits ! ! --------------------------------------------------------------------------- @@ -216,10 +216,9 @@ allocate( zbet (size( pvarm, 1 ), size( pvarm, 2 ) ) ) ! IKB=1+JPVEXT IKE=SIZE(PVARM,3)-JPVEXT -IKU=SIZE(PVARM,3) ! #ifndef MNH_OPENACC -ZMZM_RHODJ = MZM(1,IKU,1,PRHODJ) +ZMZM_RHODJ = MZM(PRHODJ) #else CALL MZM_DEVICE(PRHODJ,ZMZM_RHODJ) #endif diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index 1e90ee67398dbe77196a3656eed495af4c94ddb3..4f289aa1cff0174b7be009515c89aa3e8067c072 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -781,8 +781,8 @@ SELECT CASE (HTURBLEN) #ifdef MNH_OPENACC call Print_msg( NVERB_FATAL, 'GEN', 'TURB', 'OpenACC: HTURBLEN=RM17 not yet implemented' ) #endif - ZDUDZ = MXF(MZF(1,KKU,1,GZ_U_UW(1,KKU,1,PUT,PDZZ))) - ZDVDZ = MYF(MZF(1,KKU,1,GZ_V_VW(1,KKU,1,PVT,PDZZ))) + ZDUDZ = MXF(MZF(GZ_U_UW(1,KKU,1,PUT,PDZZ))) + ZDVDZ = MYF(MZF(GZ_V_VW(1,KKU,1,PVT,PDZZ))) ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ) CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,PLEM) ! @@ -1126,7 +1126,7 @@ IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'HTURB_BU_RRI') ! 6.1 Contribution of mass-flux in the TKE buoyancy production if ! cloud computation is not statistical #ifndef MNH_OPENACC - PTHP = PTHP + XG / PTHVREF * MZF(KKA,KKU,KKL, PFLXZTHVMF ) + PTHP = PTHP + XG / PTHVREF * MZF( PFLXZTHVMF ) #else CALL MZF_DEVICE(KKA,KKU,KKL,PFLXZTHVMF,ZTMP1_DEVICE) !$acc kernels @@ -1328,13 +1328,13 @@ IF (LLES_CALL) THEN CALL LES_MEAN_SUBGRID(2./3.*PTKET,X_LES_SUBGRID_U2) X_LES_SUBGRID_V2 = X_LES_SUBGRID_U2 X_LES_SUBGRID_W2 = X_LES_SUBGRID_U2 - CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(KKA,KKU,KKL,& + CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(& & GZ_M_W(KKA,KKU,KKL,PTHLT,PDZZ)),X_LES_RES_ddz_Thl_SBG_W2) IF (KRR>=1) & - CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(KKA,KKU,KKL,& + CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(& & GZ_M_W(KKA,KKU,KKL,PRT(:,:,:,1),PDZZ)),X_LES_RES_ddz_Rt_SBG_W2) DO JSV=1,NSV - CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(KKA,KKU,KKL,& + CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(& & GZ_M_W(KKA,KKU,KKL,PSVT(:,:,:,JSV),PDZZ)),X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV)) END DO END IF diff --git a/src/MNH/turb_hor.f90 b/src/MNH/turb_hor.f90 index 9d0b3b193c334ea5bbda76641385bd24cfe3b6b3..a9842851ec5a0419ba35b3dd821f97bee5064cc6 100644 --- a/src/MNH/turb_hor.f90 +++ b/src/MNH/turb_hor.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -182,20 +182,8 @@ END MODULE MODI_TURB_HOR !! !! EXTERNAL !! -------- -!! GX_M_U, GY_M_V -!! GX_M_M, GY_M_M, GZ_M_M -!! GY_U_UV,GX_V_UV -!! GX_U_M, GY_V_M, GZ_W_M -!! GX_W_UW,GY_W_UW -!! : Cartesian vertical gradient operators -!! !! -!! MXM,MXF,MYM,MYF,MZM,MZF -!! : Shuman functions (mean operators) -!! DXM,DXF.DYM,DYF,DZM,DZF -!! : Shuman functions (difference operators) !! -!! !! IMPLICIT ARGUMENTS !! ------------------ !! Module MODD_CST : contains physical constants @@ -260,12 +248,6 @@ USE MODD_LES use mode_mppdb -USE MODI_GRADIENT_M -USE MODI_GRADIENT_U -USE MODI_GRADIENT_V -USE MODI_GRADIENT_W -USE MODI_SHUMAN -! USE MODI_TURB_HOR_THERMO_FLUX USE MODI_TURB_HOR_THERMO_CORR USE MODI_TURB_HOR_DYN_CORR diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 69c208e48d2120622017b3af0af8b465b3f3bf62..85de90771ff5a6ae76f2c221c0266f889bf362e4 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -373,7 +373,7 @@ IF (.NOT. L2D) THEN END IF GZ_W_M_PWM = GZ_W_M(1,IKU,1,PWM,PDZZ) ! -ZMZF_DZZ = MZF(1,IKU,1,PDZZ) +ZMZF_DZZ = MZF(PDZZ) #else CALL GX_U_M_DEVICE(1,IKU,1,PUM,PDXX,PDZZ,PDZX,GX_U_M_PUM) IF (.NOT. L2D) THEN @@ -633,7 +633,7 @@ END IF IF (.NOT. LFLAT) THEN PRUS(:,:,:)=PRUS & -DXM(PRHODJ * ZFLX / MXF(PDXX) ) & - +DZF(1,IKU,1, PDZX / MZM(1,IKU,1,PDXX) * MXM( MZM(1,IKU,1,PRHODJ*ZFLX) * PINV_PDZZ ) ) + +DZF( PDZX / MZM(PDXX) * MXM( MZM(PRHODJ*ZFLX) * PINV_PDZZ ) ) ELSE PRUS(:,:,:)=PRUS -DXM(PRHODJ * ZFLX / MXF(PDXX) ) END IF @@ -826,8 +826,8 @@ IF (.NOT. L2D) THEN IF (.NOT. LFLAT) THEN PRVS(:,:,:)=PRVS & -DYM(PRHODJ * ZFLX / MYF(PDYY) ) & - +DZF(1,IKU,1, PDZY / MZM(1,IKU,1,PDYY) * & - MYM( MZM(1,IKU,1,PRHODJ*ZFLX) * PINV_PDZZ ) ) + +DZF( PDZY / MZM(PDYY) * & + MYM( MZM(PRHODJ*ZFLX) * PINV_PDZZ ) ) ELSE PRVS(:,:,:)=PRVS -DYM(PRHODJ * ZFLX / MYF(PDYY) ) END IF @@ -1004,7 +1004,7 @@ END IF ! ! Complete the W tendency ! -!PRWS(:,:,:)=PRWS(:,:,:) - DZM(1,IKU,1, PRHODJ*ZFLX/MZF(1,IKU,1,PDZZ) ) +!PRWS(:,:,:)=PRWS(:,:,:) - DZM( PRHODJ*ZFLX/MZF(PDZZ) ) !$acc kernels async(2) ZDFDDWDZ(:,:,:) = - XCMFS * PK(:,:,:) * (4./3.) !$acc end kernels @@ -1019,7 +1019,7 @@ ZDFDDWDZ(:,:,:IKB) = 0. CALL TRIDIAG_W(PWM,ZFLX,ZDFDDWDZ,PTSTEP,ZMZF_DZZ,PRHODJ,ZWP) ! #ifndef MNH_OPENACC -PRWS = PRWS(:,:,:) + MZM(1,IKU,1,PRHODJ(:,:,:))*(ZWP(:,:,:)-PWM(:,:,:))/PTSTEP +PRWS = PRWS(:,:,:) + MZM(PRHODJ(:,:,:))*(ZWP(:,:,:)-PWM(:,:,:))/PTSTEP #else CALL MZM_DEVICE(PRHODJ(:,:,:),ZTMP1_DEVICE) !$acc kernels async(1) @@ -1065,17 +1065,17 @@ IF (LLES_CALL .AND. KSPLT==1) THEN CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_W2 ) CALL LES_MEAN_SUBGRID( -ZWORK, X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) CALL LES_MEAN_SUBGRID( GZ_M_M(1,IKU,1,PTHLM,PDZZ)*ZFLX, X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE.) - CALL LES_MEAN_SUBGRID(ZFLX*MZF(1,IKU,1,GZ_M_W(1,IKU,1,PTHLM,PDZZ)),X_LES_RES_ddz_Thl_SBG_W2) + CALL LES_MEAN_SUBGRID(ZFLX*MZF(GZ_M_W(1,IKU,1,PTHLM,PDZZ)),X_LES_RES_ddz_Thl_SBG_W2) IF (KRR>=1) THEN CALL LES_MEAN_SUBGRID( GZ_M_M(1,IKU,1,PRM(:,:,:,1),PDZZ)*ZFLX, & X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE.) - CALL LES_MEAN_SUBGRID(ZFLX*MZF(1,IKU,1,GZ_M_W(1,IKU,1,PRM(:,:,:,1),PDZZ)), & + CALL LES_MEAN_SUBGRID(ZFLX*MZF(GZ_M_W(1,IKU,1,PRM(:,:,:,1),PDZZ)), & X_LES_RES_ddz_Rt_SBG_W2) END IF DO JSV=1,NSV CALL LES_MEAN_SUBGRID( GZ_M_M(1,IKU,1,PSVM(:,:,:,JSV),PDZZ)*ZFLX, & X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) , .TRUE.) - CALL LES_MEAN_SUBGRID(ZFLX*MZF(1,IKU,1,GZ_M_W(1,IKU,1,PSVM(:,:,:,JSV),PDZZ)), & + CALL LES_MEAN_SUBGRID(ZFLX*MZF(GZ_M_W(1,IKU,1,PSVM(:,:,:,JSV),PDZZ)), & X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV)) END DO #else diff --git a/src/MNH/turb_hor_splt.f90 b/src/MNH/turb_hor_splt.f90 index 2b5d5d470bc66ae3508820c197ecb4e796e92e52..452aeddec086feff3c20ca4d96ea7570fc031c8f 100644 --- a/src/MNH/turb_hor_splt.f90 +++ b/src/MNH/turb_hor_splt.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -356,7 +356,7 @@ REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZMZM_PRHODJ ! MZM(PRHODJ) ! INTEGER :: JSPLT ! current split ! -INTEGER :: IKB, IKE, IIB, IIE, IJB, IJE, IKU +INTEGER :: IKB, IKE, IIB, IIE, IJB, IJE INTEGER :: JRR, JSV ! INTEGER :: ISV @@ -442,7 +442,6 @@ end if ! IKB = 1.+JPVEXT IKE = SIZE(PUM,3) - JPVEXT -IKU = SIZE(PUM,3) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) ISV=SIZE(PSVM,4) ! @@ -467,7 +466,7 @@ ZINV_PDZZ = 1./PDZZ ZK(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:)) !$acc end kernels #ifndef MNH_OPENACC -ZMZM_PRHODJ = MZM(1,IKU,1,PRHODJ) +ZMZM_PRHODJ = MZM(PRHODJ) #else CALL MZM_DEVICE(PRHODJ,ZMZM_PRHODJ) #endif diff --git a/src/MNH/turb_hor_sv_corr.f90 b/src/MNH/turb_hor_sv_corr.f90 index 0523d00b0e35e6a0f4c0d86d377771cf961097c6..e675c8643743a5603bc688cfcc0ee509d385d188 100644 --- a/src/MNH/turb_hor_sv_corr.f90 +++ b/src/MNH/turb_hor_sv_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 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. @@ -221,7 +221,7 @@ DO JSV=1,NSV END IF CALL LES_MEAN_SUBGRID( -2.*ZCSVD*SQRT(PTKEM)*ZFLX/PLEPS, & X_LES_SUBGRID_DISS_Sv2(:,:,:,JSV), .TRUE. ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX, X_LES_RES_W_SBG_Sv2(:,:,:,JSV), .TRUE. ) + CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_Sv2(:,:,:,JSV), .TRUE. ) END IF ! ! covariance SvThv diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90 index c4a20c624cedb64f76fb8f0a01764ee6750bdd4c..0b0239d06ba33ae2b4ce98d347d193cbdf067a01 100644 --- a/src/MNH/turb_hor_sv_flux.f90 +++ b/src/MNH/turb_hor_sv_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -361,7 +361,7 @@ DO JSV=1,ISV CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( MXF(ZFLXX), X_LES_SUBGRID_USv(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MXF(GX_W_UW(1,IKU,1,PWM,PDXX,PDZZ,PDZX)*MZM(1,IKU,1,ZFLXX))), & + CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(1,IKU,1,PWM,PDXX,PDZZ,PDZX)*MZM(ZFLXX))), & X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) , .TRUE. ) CALL LES_MEAN_SUBGRID( GX_M_M(1,IKU,1,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)*MXF(ZFLXX), & X_LES_RES_ddxa_Sv_SBG_UaSv(:,:,:,JSV), .TRUE. ) @@ -480,7 +480,7 @@ DO JSV=1,ISV CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( MYF(ZFLXY), X_LES_SUBGRID_VSv(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*MZM(1,IKU,1,ZFLXY))), & + CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*MZM(ZFLXY))), & X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) , .TRUE. ) CALL LES_MEAN_SUBGRID( GY_M_M(1,IKU,1,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)*MYF(ZFLXY), & X_LES_RES_ddxa_Sv_SBG_UaSv(:,:,:,JSV) , .TRUE. ) @@ -523,8 +523,8 @@ DO JSV=1,ISV PRSVS(:,:,:,JSV)= PRSVS(:,:,:,JSV) & -DXF( MXM(PRHODJ) * ZFLXX * PINV_PDXX ) & -DYF( MYM(PRHODJ) * ZFLXY * PINV_PDYY ) & - +DZF( 1,IKU,1,PMZM_PRHODJ * PINV_PDZZ * & - ( MXF( MZM(1,IKU,1,ZFLXX * PINV_PDXX) * PDZX ) + MYF( MZM(1,IKU,1,ZFLXY * PINV_PDYY) * PDZY ) ) & + +DZF( PMZM_PRHODJ * PINV_PDZZ * & + ( MXF( MZM(ZFLXX * PINV_PDXX) * PDZX ) + MYF( MZM(ZFLXY * PINV_PDYY) * PDZY ) ) & ) ELSE PRSVS(:,:,:,JSV)= PRSVS(:,:,:,JSV) & @@ -535,8 +535,8 @@ DO JSV=1,ISV IF (.NOT. LFLAT) THEN PRSVS(:,:,:,JSV)= PRSVS(:,:,:,JSV) & -DXF( MXM(PRHODJ) * ZFLXX * PINV_PDXX ) & - +DZF(1,IKU,1, PMZM_PRHODJ * PINV_PDZZ * & - ( MXF( MZM(1,IKU,1,ZFLXX * PINV_PDXX) * PDZX ) ) & + +DZF( PMZM_PRHODJ * PINV_PDZZ * & + ( MXF( MZM(ZFLXX * PINV_PDXX) * PDZX ) ) & ) ELSE PRSVS(:,:,:,JSV)= PRSVS(:,:,:,JSV) & diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90 index 19e163c6aaa7350c2c2d2dcce04e262b90024911..e3fc62853ae090d11c31333a928dd2fa4282e28d 100644 --- a/src/MNH/turb_hor_thermo_corr.f90 +++ b/src/MNH/turb_hor_thermo_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -424,7 +424,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) & CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Thl2, .TRUE. ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_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) CALL LES_MEAN_SUBGRID( ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_ThlThv, .TRUE. ) @@ -622,7 +622,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) & CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_ThlRt, .TRUE. ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_ThlRt, .TRUE. ) + CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_ThlRt, .TRUE. ) 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.) @@ -798,7 +798,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) & CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Rt2, .TRUE. ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_Rt2, .TRUE. ) + CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_Rt2, .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.) CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS, X_LES_SUBGRID_DISS_Rt2, .TRUE. ) diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90 index 80f98aea6e34cd47c5826f5421dd43272d253389..f7e576222ea919089ab1640f02e79cb9015b58b8 100644 --- a/src/MNH/turb_hor_thermo_flux.f90 +++ b/src/MNH/turb_hor_thermo_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -368,7 +368,7 @@ ZFLX(:,:,IKB-1:IKB-1) = 2. * MXM( SPREAD( PSFTHM(:,:)* PDIRCOSXW(:,:), 3,1) ) IF (.NOT. LFLAT) THEN PRTHLS(:,:,:) = PRTHLS(:,:,:) & - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, PMZM_PRHODJ(:,:,:) *MXF(PDZX*(MZM(1,IKU,1,ZFLX(:,:,:) * PINV_PDXX(:,:,:)))) * PINV_PDZZ(:,:,:) ) + + DZF( PMZM_PRHODJ(:,:,:) *MXF(PDZX*(MZM(ZFLX(:,:,:) * PINV_PDXX(:,:,:)))) * PINV_PDZZ(:,:,:) ) ELSE PRTHLS(:,:,:) = PRTHLS(:,:,:) - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) ) END IF @@ -412,27 +412,27 @@ END IF IF ( KRRL >= 1 ) THEN IF (.NOT. LFLAT) THEN ZFLXC(:,:,:) = 2.*( MXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) ) & - +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MXF( & - PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) ) )& + +MZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MXF( & + PDZX*(MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) ) )& ) IF ( KRRI >= 1 ) THEN PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* & - MXF( PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* & + MXF( PDZX*(MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * & (- DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* & - MXF( PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* & + MXF( PDZX*(MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & )*PFRAC_ICE(:,:,:) ELSE PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* & - MXF( PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* & + MXF( PDZX*(MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & ) END IF @@ -567,7 +567,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( MXF(ZFLX), X_LES_SUBGRID_UThl ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MXF(GX_W_UW(1,IKU,1,PWM,PDXX,PDZZ,PDZX)*MZM(1,IKU,1,ZFLX))),& + CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(1,IKU,1,PWM,PDXX,PDZZ,PDZX)*MZM(ZFLX))),& X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. ) CALL LES_MEAN_SUBGRID( GX_M_M(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX)*MXF(ZFLX),& X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. ) @@ -639,7 +639,7 @@ IF (KRR/=0) THEN IF (.NOT. LFLAT) THEN PRRS(:,:,:,1) = PRRS(:,:,:,1) & - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, PMZM_PRHODJ(:,:,:) *MXF(PDZX*(MZM(1,IKU,1,ZFLX * PINV_PDXX(:,:,:)))) * PINV_PDZZ(:,:,:) ) + + DZF( PMZM_PRHODJ(:,:,:) *MXF(PDZX*(MZM(ZFLX * PINV_PDXX(:,:,:)))) * PINV_PDZZ(:,:,:) ) ELSE PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) ) END IF @@ -650,27 +650,27 @@ IF (KRR/=0) THEN IF (.NOT. LFLAT) THEN ZFLXC(:,:,:) = ZFLXC(:,:,:) & + 2.*( MXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) ) & - +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( & - PDZX(:,:,:)*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) ) )& + +MZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( & + PDZX(:,:,:)*(MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) ) )& ) IF ( KRRI >= 1 ) THEN PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & )*PFRAC_ICE(:,:,:) ELSE PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & ) END IF @@ -706,7 +706,7 @@ IF (KRR/=0) THEN IF (KSPLT==1 .AND. LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) CALL LES_MEAN_SUBGRID( MXF(ZFLX), X_LES_SUBGRID_URt ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MXF(GX_W_UW(1,IKU,1,PWM,PDXX,PDZZ,PDZX)*MZM(1,IKU,1,ZFLX))),& + CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(1,IKU,1,PWM,PDXX,PDZZ,PDZX)*MZM(ZFLX))),& X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. ) CALL LES_MEAN_SUBGRID( GX_M_M(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX)*MXF(ZFLX),& X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. ) @@ -1003,7 +1003,7 @@ IF (.NOT. L2D) THEN IF (.NOT. LFLAT) THEN PRTHLS(:,:,:) = PRTHLS(:,:,:) & - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) ) & - + DZF(1,IKU,1, PMZM_PRHODJ *MYF(PDZY(:,:,:)*(MZM(1,IKU,1,ZFLX(:,:,:) * PINV_PDYY(:,:,:)))) * PINV_PDZZ(:,:,:) ) + + DZF( PMZM_PRHODJ *MYF(PDZY(:,:,:)*(MZM(ZFLX(:,:,:) * PINV_PDYY(:,:,:)))) * PINV_PDZZ(:,:,:) ) ELSE PRTHLS(:,:,:) = PRTHLS(:,:,:) - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) ) END IF @@ -1015,27 +1015,27 @@ END IF IF ( KRRL >= 1 .AND. .NOT. L2D) THEN IF (.NOT. LFLAT) THEN ZFLXC(:,:,:) = 2.*( MYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) ) & - +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( & - PDZY(:,:,:)*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )& + +MZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( & + PDZY(:,:,:)*(MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )& ) IF ( KRRI >= 1 ) THEN PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * & (- DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & )*PFRAC_ICE(:,:,:) ELSE PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& *PINV_PDZZ(:,:,:) ) & ) END IF @@ -1074,7 +1074,7 @@ END IF IF (KSPLT==1 .AND. LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) CALL LES_MEAN_SUBGRID( MYF(ZFLX), X_LES_SUBGRID_VThl ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*MZM(1,IKU,1,ZFLX))),& + CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*MZM(ZFLX))),& X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. ) CALL LES_MEAN_SUBGRID( GY_M_M(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY)*MYF(ZFLX),& X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. ) @@ -1343,8 +1343,8 @@ IF (KRR/=0) THEN IF (.NOT. LFLAT) THEN PRRS(:,:,:,1) = PRRS(:,:,:,1) & - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) ) & - + DZF(1,IKU,1, PMZM_PRHODJ(:,:,:) *MYF(PDZY(:,:,:)* & - (MZM(1,IKU,1,ZFLX(:,:,:) * PINV_PDYY(:,:,:)))) * PINV_PDZZ(:,:,:) ) + + DZF( PMZM_PRHODJ(:,:,:) *MYF(PDZY(:,:,:)* & + (MZM(ZFLX(:,:,:) * PINV_PDYY(:,:,:)))) * PINV_PDZZ(:,:,:) ) ELSE PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) ) END IF @@ -1356,27 +1356,27 @@ IF (KRR/=0) THEN IF (.NOT. LFLAT) THEN ZFLXC(:,:,:) = ZFLXC(:,:,:) & + 2.*( MXF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) ) & - + MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( & - PDZY(:,:,:)*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )& + + MZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( & + PDZY(:,:,:)*(MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )& ) IF ( KRRI >= 1 ) THEN PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& * PINV_PDZZ(:,:,:) ) & )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * & (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& * PINV_PDZZ(:,:,:) ) & )*PFRAC_ICE(:,:,:) ELSE PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * & (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY ) & - + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & - (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& + + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* & + (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )& * PINV_PDZZ(:,:,:) ) & ) END IF @@ -1412,7 +1412,7 @@ IF (KRR/=0) THEN IF (KSPLT==1 .AND. LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) CALL LES_MEAN_SUBGRID( MYF(ZFLX), X_LES_SUBGRID_VRt ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*MZM(1,IKU,1,ZFLX))),& + CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*MZM(ZFLX))),& X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. ) CALL LES_MEAN_SUBGRID( GY_M_M(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY)*MYF(ZFLX), & X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. ) diff --git a/src/MNH/turb_hor_tke.f90 b/src/MNH/turb_hor_tke.f90 index f81424712df6e3a383cf3ddfcc3308d33bfeb072..f98d8de25d5d3fed9a3663e56b23796428a9463f 100644 --- a/src/MNH/turb_hor_tke.f90 +++ b/src/MNH/turb_hor_tke.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -246,7 +246,7 @@ ZFLX(:,:,IKU) = ZFLX(:,:,IKU-1) #ifndef MNH_OPENACC IF (.NOT. LFLAT) THEN PTRH =-( DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX)& - - DZF(1,IKU,1, PMZM_PRHODJ * MXF( PDZX * MZM(1,IKU,1,ZFLX*PINV_PDXX)) * PINV_PDZZ)& + - DZF( PMZM_PRHODJ * MXF( PDZX * MZM(ZFLX*PINV_PDXX)) * PINV_PDZZ)& ) /PRHODJ ELSE PTRH =-( DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX)& @@ -362,7 +362,7 @@ IF (.NOT. L2D) THEN #ifndef MNH_OPENACC IF (.NOT. LFLAT) THEN PTRH = PTRH - ( DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY ) & - - DZF(1,IKU,1, PMZM_PRHODJ * MYF( PDZY * MZM(1,IKU,1,ZFLX*PINV_PDYY) ) * PINV_PDZZ ) & + - DZF( PMZM_PRHODJ * MYF( PDZY * MZM(ZFLX*PINV_PDYY) ) * PINV_PDZZ ) & ) /PRHODJ ELSE PTRH = PTRH - ( DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY ) & diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90 index e11c9959921b3f8161ec1914031e82ed399e201a..2ea8010382b36c7caad33a0b5d6bc8efc2dad33d 100644 --- a/src/MNH/turb_hor_uv.f90 +++ b/src/MNH/turb_hor_uv.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -471,7 +471,7 @@ END IF IF (.NOT. LFLAT) THEN PRUS(:,:,:) = PRUS(:,:,:) & - DYF(ZFLX * MXM(MYM(PRHODJ) * PINV_PDYY) ) & - + DZF(1,IKU,1, MYF( MZM(1,IKU,1,ZFLX)*MXM(PDZY/MZM(1,IKU,1,PDYY))) & + + DZF( MYF( MZM(ZFLX)*MXM(PDZY/MZM(PDYY))) & * MXM(PMZM_PRHODJ * PINV_PDZZ) ) ELSE PRUS(:,:,:) = PRUS(:,:,:) - DYF(ZFLX * MXM(MYM(PRHODJ) * PINV_PDYY) ) @@ -520,7 +520,7 @@ END IF IF (.NOT. LFLAT) THEN PRVS(:,:,:) = PRVS(:,:,:) & - DXF(ZFLX * MYM(MXM(PRHODJ) * PINV_PDXX) ) & - + DZF(1,IKU,1, MXF( MZM(1,IKU,1,ZFLX)*MYM(PDZX/MZM(1,IKU,1,PDXX))) & + + DZF( MXF( MZM(ZFLX)*MYM(PDZX/MZM(PDXX))) & * MYM(PMZM_PRHODJ * PINV_PDZZ) ) ELSE PRVS(:,:,:) = PRVS(:,:,:) - DXF(ZFLX * MYM(MXM(PRHODJ) * PINV_PDXX) ) diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90 index 102bc4322650b448d75762786a537d27ac91d775..5c2a2408888a7daf8817ebc770ef879523906635 100644 --- a/src/MNH/turb_hor_uw.f90 +++ b/src/MNH/turb_hor_uw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -266,7 +266,7 @@ CALL GX_W_UW_DEVICE(1,IKU,1,PWM,PDXX,PDZZ,PDZX,GX_W_UW_PWM) ! #ifndef MNH_OPENACC ZFLX(:,:,:) = & - - XCMFS * MXM(MZM(1,IKU,1,PK)) * GX_W_UW_PWM + - XCMFS * MXM(MZM(PK)) * GX_W_UW_PWM #else CALL MZM_DEVICE(PK,ZTMP1_DEVICE) CALL MXM_DEVICE(ZTMP1_DEVICE,ZTMP2_DEVICE) @@ -304,7 +304,7 @@ END IF ! compute the source for rho*U due to this residual flux ( the other part is ! taken into account in TURB_VER) #ifndef MNH_OPENACC -PRUS(:,:,:) = PRUS(:,:,:) - DZF(1,IKU,1, ZFLX* MXM( PMZM_PRHODJ ) / MXM( PDZZ ) ) +PRUS(:,:,:) = PRUS(:,:,:) - DZF( ZFLX* MXM( PMZM_PRHODJ ) / MXM( PDZZ ) ) #else CALL MXM_DEVICE( PMZM_PRHODJ, ZTMP1_DEVICE ) CALL MXM_DEVICE( PDZZ, ZTMP2_DEVICE ) @@ -321,10 +321,10 @@ PRUS(:,:,:) = PRUS(:,:,:) - ZTMP1_DEVICE(:,:,:) #ifndef MNH_OPENACC IF (.NOT. LFLAT) THEN PRWS(:,:,:) = PRWS(:,:,:) & - -DXF( MZM(1,IKU,1, MXM(PRHODJ) * PINV_PDXX) * ZFLX) & - +DZM(1,IKU,1, PRHODJ * MXF( MZF(1,IKU,1, ZFLX*PDZX ) * PINV_PDXX ) / MZF(1,IKU,1,PDZZ) ) + -DXF( MZM( MXM(PRHODJ) * PINV_PDXX) * ZFLX) & + +DZM( PRHODJ * MXF( MZF( ZFLX*PDZX ) * PINV_PDXX ) / MZF(PDZZ) ) ELSE - PRWS(:,:,:) = PRWS(:,:,:) -DXF( MZM(1,IKU,1, MXM(PRHODJ) * PINV_PDXX) * ZFLX) + PRWS(:,:,:) = PRWS(:,:,:) -DXF( MZM( MXM(PRHODJ) * PINV_PDXX) * ZFLX) END IF #else CALL MXM_DEVICE(PRHODJ,ZTMP1_DEVICE) @@ -367,7 +367,7 @@ IF (KSPLT==1) THEN !Contribution to the dynamic production of TKE: ! #ifndef MNH_OPENACC - ZWORK(:,:,:) =-MZF(1,IKU,1, MXF( & + ZWORK(:,:,:) =-MZF( MXF( & ZFLX *( GZ_U_UW(1,IKU,1,PUM,PDZZ) + GX_W_UW_PWM ) ) ) #else CALL GZ_U_UW_DEVICE(1,IKU,1,PUM,PDZZ,ZTMP1_DEVICE) @@ -433,17 +433,17 @@ END IF IF (LLES_CALL .AND. KSPLT==1) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MXF(ZFLX)), X_LES_SUBGRID_WU , .TRUE. ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MXF(GZ_U_UW(1,IKU,1,PUM,PDZZ)*ZFLX)), X_LES_RES_ddxa_U_SBG_UaU , .TRUE.) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MXF(GX_W_UW_PWM*ZFLX)), X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) - CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX)*MZF(1,IKU,1,ZFLX)),& + CALL LES_MEAN_SUBGRID( MZF(MXF(ZFLX)), X_LES_SUBGRID_WU , .TRUE. ) + CALL LES_MEAN_SUBGRID( MZF(MXF(GZ_U_UW(1,IKU,1,PUM,PDZZ)*ZFLX)), X_LES_RES_ddxa_U_SBG_UaU , .TRUE.) + CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW_PWM*ZFLX)), X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) + CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX)*MZF(ZFLX)),& X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE.) IF (KRR>=1) THEN - CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX)*MZF(1,IKU,1,ZFLX)), & + CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX)*MZF(ZFLX)), & X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE.) END IF DO JSV=1,NSV - CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)*MZF(1,IKU,1,ZFLX)), & + CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)*MZF(ZFLX)), & X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) , .TRUE.) END DO #else diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90 index 4dbcb63e618ebe4dff2206ba195aeca8c8e42eca..9b27bf8b350a9c6088d954ba7a3a811dc0411e01 100644 --- a/src/MNH/turb_hor_vw.f90 +++ b/src/MNH/turb_hor_vw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -266,7 +266,7 @@ END IF #ifndef MNH_OPENACC IF (.NOT. L2D) THEN ZFLX(:,:,:) = & - - XCMFS * MYM(MZM(1,IKU,1,PK)) * GY_W_VW_PWM + - XCMFS * MYM(MZM(PK)) * GY_W_VW_PWM !! & to be tested !! - (2./3.) * XCMFB * MZM( ZVPTV * MYM( PLM / SQRT(PTKEM) * XG / PTHVREF ) ) ELSE @@ -322,7 +322,7 @@ END IF ! taken into account in TURB_VER) #ifndef MNH_OPENACC IF (.NOT. L2D) & -PRVS(:,:,:) = PRVS(:,:,:) - DZF(1,IKU,1, ZFLX* MYM( PMZM_PRHODJ ) / MYM ( PDZZ ) ) +PRVS(:,:,:) = PRVS(:,:,:) - DZF( ZFLX* MYM( PMZM_PRHODJ ) / MYM ( PDZZ ) ) #else IF (.NOT. L2D) THEN CALL MYM_DEVICE( PMZM_PRHODJ, ZTMP1_DEVICE ) @@ -342,10 +342,10 @@ ENDIF IF (.NOT. L2D) THEN IF (.NOT. LFLAT) THEN PRWS(:,:,:) = PRWS(:,:,:) & - -DYF( MZM(1,IKU,1, MYM(PRHODJ) * PINV_PDYY) * ZFLX) & - +DZM(1,IKU,1, PRHODJ * MYF( MZF(1,IKU,1, ZFLX*PDZY ) * PINV_PDYY ) / MZF(1,IKU,1,PDZZ) ) + -DYF( MZM( MYM(PRHODJ) * PINV_PDYY) * ZFLX) & + +DZM( PRHODJ * MYF( MZF( ZFLX*PDZY ) * PINV_PDYY ) / MZF(PDZZ) ) ELSE - PRWS(:,:,:) = PRWS(:,:,:) - DYF( MZM(1,IKU,1, MYM(PRHODJ) * PINV_PDYY) * ZFLX) + PRWS(:,:,:) = PRWS(:,:,:) - DYF( MZM( MYM(PRHODJ) * PINV_PDYY) * ZFLX) END IF END IF #else @@ -401,7 +401,7 @@ IF (KSPLT==1) THEN ! IF (.NOT. L2D) THEN #ifndef MNH_OPENACC - ZWORK(:,:,:) =-MZF(1,IKU,1, MYF( ZFLX *( GZ_V_VW(1,IKU,1,PVM,PDZZ) + GY_W_VW_PWM ) ) ) + ZWORK(:,:,:) =-MZF( MYF( ZFLX *( GZ_V_VW(1,IKU,1,PVM,PDZZ) + GY_W_VW_PWM ) ) ) #else CALL GZ_V_VW_DEVICE(1,IKU,1,PVM,PDZZ,ZTMP1_DEVICE) !$acc kernels @@ -467,17 +467,17 @@ END IF IF (LLES_CALL .AND. KSPLT==1) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MYF(ZFLX)), X_LES_SUBGRID_WV , .TRUE. ) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MYF(GZ_V_VW(1,IKU,1,PVM,PDZZ)*ZFLX)), X_LES_RES_ddxa_V_SBG_UaV , .TRUE.) - CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*ZFLX)), X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) - CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY)*MZF(1,IKU,1,ZFLX)), & + CALL LES_MEAN_SUBGRID( MZF(MYF(ZFLX)), X_LES_SUBGRID_WV , .TRUE. ) + CALL LES_MEAN_SUBGRID( MZF(MYF(GZ_V_VW(1,IKU,1,PVM,PDZZ)*ZFLX)), X_LES_RES_ddxa_V_SBG_UaV , .TRUE.) + CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(1,IKU,1,PWM,PDYY,PDZZ,PDZY)*ZFLX)), X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) + CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY)*MZF(ZFLX)), & X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE.) IF (KRR>=1) THEN - CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY)*MZF(1,IKU,1,ZFLX)), & + CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY)*MZF(ZFLX)), & X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE.) END IF DO JSV=1,NSV - CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)*MZF(1,IKU,1,ZFLX)), & + CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)*MZF(ZFLX)), & X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV), .TRUE.) END DO #else diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90 index 80fd1717f9f254de4b37931eba63e759135c9faa..b188f0778fd498f13ee0698be23738e54586f4a2 100644 --- a/src/MNH/turb_ver.f90 +++ b/src/MNH/turb_ver.f90 @@ -223,13 +223,7 @@ END MODULE MODI_TURB_VER !! field to be derivated !! _(M,UW,...) represent the localization of the !! field derivated -!! !! -!! MXM,MXF,MYM,MYF,MZM,MZF -!! : Shuman functions (mean operators) -!! DXF,DYF,DZF,DZM -!! : Shuman functions (difference operators) -!! !! SUBROUTINE TRIDIAG : to compute the splitted implicit evolution !! of a variable located at a mass point !! diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90 index 15f1e793cf88319b5d579d333d190de87b26c061..3cb5acffe4091afca00b8d6c2d7ab7438ca0605d 100644 --- a/src/MNH/turb_ver_dyn_flux.f90 +++ b/src/MNH/turb_ver_dyn_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -501,7 +501,7 @@ ZDIRSINZW(:,:) = SQRT(1.-BR_P2(PDIRCOSZW(:,:))) ! ground ! #ifndef MNH_OPENACC -ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) +ZKEFF(:,:,:) = MZM( PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) #else ZTMP1_DEVICE(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:)) !$acc end kernels @@ -525,7 +525,7 @@ ZVSLOPEM(:,:,1)=PVSLOPEM(:,:) ! #ifndef MNH_OPENACC ZA(:,:,:) = -PTSTEP * XCMFS * & - MXM( ZKEFF ) * MXM(MZM(KKA,KKU,KKL, PRHODJ )) / & + MXM( ZKEFF ) * MXM(MZM( PRHODJ )) / & #ifndef MNH_BITREP MXM( PDZZ )**2 #else @@ -637,7 +637,7 @@ PRUS(:,:,:)=PRUS(:,:,:)+ZTMP1_DEVICE(:,:,:)*(ZRES(:,:,:)-PUM(:,:,:))/PTSTEP ! #ifndef MNH_OPENACC ZFLXZ(:,:,:) = -XCMFS * MXM(ZKEFF) * & - DZM (KKA,KKU,KKL,PIMPL*ZRES(:,:,:) + PEXPL*PUM(:,:,:)) / MXM(PDZZ) + DZM (PIMPL*ZRES + PEXPL*PUM) / MXM(PDZZ) #else ZTMP2_DEVICE(:,:,:) = PIMPL*ZRES(:,:,:) + PEXPL*PUM(:,:,:) !$acc end kernels @@ -696,7 +696,7 @@ PWU(:,:,:) = ZFLXZ(:,:,:) ! compute the dynamic production at the mass point ! #ifndef MNH_OPENACC -PDP(:,:,:) = - MZF(KKA,KKU,KKL, MXF ( ZFLXZ(:,:,:) * GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) ) ) +PDP(:,:,:) = - MZF( MXF ( ZFLXZ * GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) ) ) #else CALL GZ_U_UW_DEVICE(KKA,KKU,KKL,PUM,PDZZ,ZTMP1_DEVICE) !$acc kernels @@ -732,10 +732,10 @@ PDP(:,:,IKB:IKB) = - ZTMP3_DEVICE(:,:,IKB:IKB) IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MXF(ZFLXZ)), X_LES_SUBGRID_WU ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MXF(GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) & - & *ZFLXZ(:,:,:))), X_LES_RES_ddxa_U_SBG_UaU ) - CALL LES_MEAN_SUBGRID( XCMFS * ZKEFF(:,:,:), X_LES_SUBGRID_Km ) + CALL LES_MEAN_SUBGRID( MZF(MXF(ZFLXZ)), X_LES_SUBGRID_WU ) + CALL LES_MEAN_SUBGRID( MZF(MXF(GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) & + & *ZFLXZ)), X_LES_RES_ddxa_U_SBG_UaU ) + CALL LES_MEAN_SUBGRID( XCMFS * ZKEFF, X_LES_SUBGRID_Km ) #else !$acc data copy(X_LES_SUBGRID_WU,X_LES_RES_ddxa_U_SBG_UaU,X_LES_SUBGRID_Km) ! @@ -775,12 +775,12 @@ IF(HTURBDIM=='3DIM') THEN #ifndef MNH_OPENACC IF (.NOT. LFLAT) THEN PRWS(:,:,:)= PRWS & - -DXF( MZM(KKA,KKU,KKL, MXM(PRHODJ) /PDXX(:,:,:) ) * ZFLXZ(:,:,:) ) & - +DZM(KKA,KKU,KKL, PRHODJ / MZF(KKA,KKU,KKL,PDZZ ) * & - MXF( MZF(KKA,KKU,KKL, ZFLXZ(:,:,:)*PDZX(:,:,:) ) / PDXX(:,:,:) ) & + -DXF( MZM( MXM(PRHODJ) /PDXX(:,:,:) ) * ZFLXZ(:,:,:) ) & + +DZM( PRHODJ / MZF(PDZZ ) * & + MXF( MZF( ZFLXZ(:,:,:)*PDZX(:,:,:) ) / PDXX(:,:,:) ) & ) ELSE - PRWS(:,:,:)= PRWS(:,:,:) -DXF( MZM(KKA,KKU,KKL, MXM(PRHODJ) /PDXX(:,:,:) ) * ZFLXZ(:,:,:) ) + PRWS(:,:,:)= PRWS(:,:,:) -DXF( MZM( MXM(PRHODJ) /PDXX(:,:,:) ) * ZFLXZ(:,:,:) ) END IF #else CALL MXM_DEVICE(PRHODJ,ZTMP1_DEVICE) @@ -819,7 +819,7 @@ IF(HTURBDIM=='3DIM') THEN ! Complete the Dynamical production with the W wind component ! #ifndef MNH_OPENACC - ZA(:,:,:)=-MZF(KKA,KKU,KKL, MXF ( ZFLXZ(:,:,:) * GX_W_UW(KKA,KKU,KKL, PWM,PDXX,PDZZ,PDZX) ) ) + ZA(:,:,:)=-MZF( MXF ( ZFLXZ * GX_W_UW(KKA,KKU,KKL, PWM,PDXX,PDZZ,PDZX) ) ) #else CALL GX_W_UW_DEVICE(KKA,KKU,KKL, PWM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels @@ -873,17 +873,17 @@ IF(HTURBDIM=='3DIM') THEN IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MXF(GX_W_UW(KKA,KKU,KKL,PWM,PDXX,& - PDZZ,PDZX)*ZFLXZ(:,:,:))), X_LES_RES_ddxa_W_SBG_UaW ) + CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(KKA,KKU,KKL,PWM,PDXX,& + PDZZ,PDZX)*ZFLXZ)), X_LES_RES_ddxa_W_SBG_UaW ) CALL LES_MEAN_SUBGRID( MXF(GX_M_U(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)& - * MZF(KKA,KKU,KKL,ZFLXZ)), X_LES_RES_ddxa_Thl_SBG_UaW ) + * MZF(ZFLXZ)), X_LES_RES_ddxa_Thl_SBG_UaW ) IF (KRR>=1) THEN CALL LES_MEAN_SUBGRID(MXF(GX_U_M(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX)& - *MZF(KKA,KKU,KKL,ZFLXZ)),X_LES_RES_ddxa_Rt_SBG_UaW ) + *MZF(ZFLXZ)),X_LES_RES_ddxa_Rt_SBG_UaW ) END IF DO JSV=1,NSV CALL LES_MEAN_SUBGRID( MXF(GX_U_M(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,& - PDZX)*MZF(KKA,KKU,KKL,ZFLXZ)),X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) ) + PDZX)*MZF(ZFLXZ)),X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) ) END DO #else !$acc data copy(X_LES_RES_ddxa_W_SBG_UaW,X_LES_RES_ddxa_Thl_SBG_UaW, & @@ -944,7 +944,7 @@ END IF !! #ifndef MNH_OPENACC ZA(:,:,:) = - PTSTEP * XCMFS * & - MYM( ZKEFF ) * MYM(MZM(KKA,KKU,KKL, PRHODJ )) / & + MYM( ZKEFF ) * MYM(MZM( PRHODJ )) / & #ifndef MNH_BITREP MYM( PDZZ )**2 #else @@ -1055,7 +1055,7 @@ PRVS(:,:,:)=PRVS(:,:,:)+ZTMP1_DEVICE*(ZRES(:,:,:)-PVM(:,:,:))/PTSTEP ! #ifndef MNH_OPENACC ZFLXZ(:,:,:) = -XCMFS * MYM(ZKEFF) * & - DZM(KKA,KKU,KKL, PIMPL*ZRES + PEXPL*PVM ) / MYM(PDZZ) + DZM( PIMPL*ZRES + PEXPL*PVM ) / MYM(PDZZ) ! ZFLXZ(:,:,IKB:IKB) = MYM(PDZZ(:,:,IKB:IKB)) * & ( ZSOURCE(:,:,IKB:IKB) & @@ -1111,7 +1111,7 @@ PWV(:,:,:) = ZFLXZ(:,:,:) ! compute the dynamic production contribution at the mass point ! #ifndef MNH_OPENACC -ZA(:,:,:) = - MZF(KKA,KKU,KKL, MYF ( ZFLXZ * GZ_V_VW(KKA,KKU,KKL,PVM,PDZZ) ) ) +ZA(:,:,:) = - MZF( MYF ( ZFLXZ * GZ_V_VW(KKA,KKU,KKL,PVM,PDZZ) ) ) #else CALL GZ_V_VW_DEVICE(KKA,KKU,KKL,PVM,PDZZ,ZTMP1_DEVICE) !$acc kernels @@ -1149,8 +1149,8 @@ PDP(:,:,:)=PDP(:,:,:)+ZA(:,:,:) IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MYF(ZFLXZ)), X_LES_SUBGRID_WV ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MYF(GZ_V_VW(KKA,KKU,KKL,PVM,PDZZ)*& + CALL LES_MEAN_SUBGRID( MZF(MYF(ZFLXZ)), X_LES_SUBGRID_WV ) + CALL LES_MEAN_SUBGRID( MZF(MYF(GZ_V_VW(KKA,KKU,KKL,PVM,PDZZ)*& & ZFLXZ)), X_LES_RES_ddxa_V_SBG_UaV ) #else !$acc data copy(X_LES_SUBGRID_WV,X_LES_RES_ddxa_V_SBG_UaV) @@ -1186,12 +1186,12 @@ IF(HTURBDIM=='3DIM') THEN IF (.NOT. L2D) THEN IF (.NOT. LFLAT) THEN PRWS(:,:,:)= PRWS(:,:,:) & - -DYF( MZM(KKA,KKU,KKL, MYM(PRHODJ) /PDYY ) * ZFLXZ ) & - +DZM(KKA,KKU,KKL, PRHODJ / MZF(KKA,KKU,KKL,PDZZ ) * & - MYF( MZF(KKA,KKU,KKL, ZFLXZ*PDZY ) / PDYY ) & + -DYF( MZM( MYM(PRHODJ) /PDYY ) * ZFLXZ ) & + +DZM( PRHODJ / MZF(PDZZ ) * & + MYF( MZF( ZFLXZ*PDZY ) / PDYY ) & ) ELSE - PRWS(:,:,:)= PRWS(:,:,:) -DYF( MZM(KKA,KKU,KKL, MYM(PRHODJ) /PDYY ) * ZFLXZ ) + PRWS(:,:,:)= PRWS(:,:,:) -DYF( MZM( MYM(PRHODJ) /PDYY ) * ZFLXZ ) END IF END IF #else @@ -1233,7 +1233,7 @@ IF(HTURBDIM=='3DIM') THEN ! Complete the Dynamical production with the W wind component IF (.NOT. L2D) THEN #ifndef MNH_OPENACC - ZA(:,:,:) = - MZF(KKA,KKU,KKL, MYF ( ZFLXZ(:,:,:) * GY_W_VW(KKA,KKU,KKL, PWM,PDYY,PDZZ,PDZY) ) ) + ZA(:,:,:) = - MZF( MYF ( ZFLXZ(:,:,:) * GY_W_VW(KKA,KKU,KKL, PWM,PDYY,PDZZ,PDZY) ) ) #else CALL GY_W_VW_DEVICE(KKA,KKU,KKL, PWM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) !$acc kernels @@ -1288,13 +1288,13 @@ IF(HTURBDIM=='3DIM') THEN IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MYF(GY_W_VW(KKA,KKU,KKL,PWM,PDYY,& + CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(KKA,KKU,KKL,PWM,PDYY,& PDZZ,PDZY)*ZFLXZ(:,:,:))), X_LES_RES_ddxa_W_SBG_UaW , .TRUE. ) CALL LES_MEAN_SUBGRID( MYF(GY_M_V(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY)& - *MZF(KKA,KKU,KKL,ZFLXZ)), X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE. ) + *MZF(ZFLXZ)), X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE. ) IF (KRR>=1) THEN CALL LES_MEAN_SUBGRID( MYF(GY_V_M(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,& - PDZY)*MZF(KKA,KKU,KKL,ZFLXZ)),X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE. ) + PDZY)*MZF(ZFLXZ)),X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE. ) END IF #else !$acc data copy(X_LES_RES_ddxa_W_SBG_UaW,X_LES_RES_ddxa_Thl_SBG_UaW,X_LES_RES_ddxa_Rt_SBG_UaW) diff --git a/src/MNH/turb_ver_sv_corr.f90 b/src/MNH/turb_ver_sv_corr.f90 index cdac705065b008b6669450c203d04420c9e671e3..1b5f2ed4013ee68410f839dbf425e3e6dd7f2821 100644 --- a/src/MNH/turb_ver_sv_corr.f90 +++ b/src/MNH/turb_ver_sv_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 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. @@ -223,9 +223,9 @@ DO JSV=1,NSV #else ZFLXZ(:,:,:) = PPSI_SV(:,:,:,JSV)*BR_P2(GZ_M_W(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDZZ)) #endif - ZFLXZ(:,:,:) = ZCSV / ZCSVD * PLM * PLEPS * MZF(KKA,KKU,KKL,ZFLXZ(:,:,:) ) + ZFLXZ(:,:,:) = ZCSV / ZCSVD * PLM * PLEPS * MZF(ZFLXZ(:,:,:) ) CALL LES_MEAN_SUBGRID( -2.*ZCSVD*SQRT(PTKEM)*ZFLXZ/PLEPS, X_LES_SUBGRID_DISS_Sv2(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM)*ZFLXZ, X_LES_RES_W_SBG_Sv2(:,:,:,JSV) ) + CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLXZ, X_LES_RES_W_SBG_Sv2(:,:,:,JSV) ) END IF ! ! covariance ThvSv @@ -243,7 +243,7 @@ call Print_msg( NVERB_WARNING, 'GEN', 'TURB_VER_SV_CORR', 'OpenACC: LLES_CALL no ZFLXZ(:,:,:)= ( XCSHF * PPHI3 + ZCSV * PPSI_SV(:,:,:,JSV) ) & * GZ_M_W(KKA,KKU,KKL,PTHLM,PDZZ) & * GZ_M_W(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDZZ) - ZFLXZ(:,:,:)= PLM * PLEPS / (2.*ZCTSVD) * MZF(KKA,KKU,KKL,ZFLXZ) + ZFLXZ(:,:,:)= PLM * PLEPS / (2.*ZCTSVD) * MZF(ZFLXZ) CALL LES_MEAN_SUBGRID( ZA*ZFLXZ, X_LES_SUBGRID_SvThv(:,:,:,JSV) ) CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLXZ, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE.) ! @@ -258,7 +258,7 @@ call Print_msg( NVERB_WARNING, 'GEN', 'TURB_VER_SV_CORR', 'OpenACC: LLES_CALL no ZFLXZ(:,:,:)= ( XCHF * PPSI3 + ZCSV * PPSI_SV(:,:,:,JSV) ) & * GZ_M_W(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ) & * GZ_M_W(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDZZ) - ZFLXZ(:,:,:)= PLM * PLEPS / (2.*ZCQSVD) * MZF(KKA,KKU,KKL,ZFLXZ) + ZFLXZ(:,:,:)= PLM * PLEPS / (2.*ZCQSVD) * MZF(ZFLXZ) CALL LES_MEAN_SUBGRID( ZA*ZFLXZ, X_LES_SUBGRID_SvThv(:,:,:,JSV) , .TRUE.) CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLXZ, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE.) END IF diff --git a/src/MNH/turb_ver_sv_flux.f90 b/src/MNH/turb_ver_sv_flux.f90 index 6a2f8fcba1a92ee14544c1bc0ef0b49f053c1331..cf6b79fa3b697a1baeff8fe015b9cb4bb82a4bf3 100644 --- a/src/MNH/turb_ver_sv_flux.f90 +++ b/src/MNH/turb_ver_sv_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -404,7 +404,7 @@ IKTB =1+JPVEXT_TURB ! ISV=SIZE(PSVM,4) ! -ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) +ZKEFF(:,:,:) = MZM( PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) ! IF(LBLOWSNOW) THEN ! See Vionnet (PhD, 2012) for a complete discussion around the value of the Schmidt number for blowing snow variables @@ -423,7 +423,7 @@ DO JSV=1,ISV ! ! Preparation of the arguments for TRIDIAG ZA(:,:,:) = -PTSTEP*ZCSV*PPSI_SV(:,:,:,JSV) * & - ZKEFF * MZM(KKA,KKU,KKL,PRHODJ) / & + ZKEFF * MZM(PRHODJ) / & #ifndef MNH_BITREP PDZZ**2 #else @@ -460,8 +460,8 @@ DO JSV=1,ISV IF ( (OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL ) THEN ! Diagnostic of the cartesian vertical flux ! - ZFLXZ(:,:,:) = -ZCSV * PPSI_SV(:,:,:,JSV) * MZM(KKA,KKU,KKL,PLM*SQRT(PTKEM)) / PDZZ * & - DZM(KKA,KKU,KKL, PIMPL*ZRES(:,:,:) + PEXPL*PSVM(:,:,:,JSV) ) + ZFLXZ(:,:,:) = -ZCSV * PPSI_SV(:,:,:,JSV) * MZM(PLM*SQRT(PTKEM)) / PDZZ * & + DZM( PIMPL*ZRES(:,:,:) + PEXPL*PSVM(:,:,:,JSV) ) ! surface flux !* in 3DIM case, a part of the flux goes vertically, and another goes horizontally ! (in presence of slopes) @@ -505,13 +505,13 @@ DO JSV=1,ISV ! IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_WSv(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(KKA,KKU,KKL,ZFLXZ), & + CALL LES_MEAN_SUBGRID( MZF(ZFLXZ), X_LES_SUBGRID_WSv(:,:,:,JSV) ) + CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(ZFLXZ), & X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,GZ_M_W(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDZZ)*ZFLXZ), & + CALL LES_MEAN_SUBGRID( MZF(GZ_M_W(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDZZ)*ZFLXZ), & X_LES_RES_ddxa_Sv_SBG_UaSv(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( -ZCSVP*SQRT(PTKEM)/PLM*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_SvPz(:,:,:,JSV) ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM*ZFLXZ), X_LES_RES_W_SBG_WSv(:,:,:,JSV) ) + CALL LES_MEAN_SUBGRID( -ZCSVP*SQRT(PTKEM)/PLM*MZF(ZFLXZ), X_LES_SUBGRID_SvPz(:,:,:,JSV) ) + CALL LES_MEAN_SUBGRID( MZF(PWM*ZFLXZ), X_LES_RES_W_SBG_WSv(:,:,:,JSV) ) CALL SECOND_MNH(ZTIME2) XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1 END IF diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90 index 000e3cf61d70bfc03b38eeb0281ff2160923a7af..a10e618784c22ccdcb3c8c92b8451e609f1d3b56 100644 --- a/src/MNH/turb_ver_thermo_corr.f90 +++ b/src/MNH/turb_ver_thermo_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -502,7 +502,7 @@ ZCOEFF(:,:,IKB)= - (PDZZ(:,:,IKB+2*KKL)+2.*PDZZ(:,:,IKB+KKL)) / & ( (PDZZ(:,:,IKB+2*KKL)+PDZZ(:,:,IKB+KKL)) * PDZZ(:,:,IKB+KKL) ) ! #ifndef MNH_OPENACC -ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) +ZKEFF(:,:,:) = MZM( PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) #else ZTMP1_DEVICE(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:)) !$acc end kernels @@ -536,9 +536,9 @@ END IF ! Compute the turbulent variance F and F' at time t-dt. #ifndef MNH_OPENACC #ifndef MNH_BITREP - ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPHI3(:,:,:)*PDTH_DZ(:,:,:)**2) + ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(PPHI3(:,:,:)*PDTH_DZ(:,:,:)**2) #else - ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPHI3(:,:,:)*BR_P2(PDTH_DZ(:,:,:))) + ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(PPHI3(:,:,:)*BR_P2(PDTH_DZ(:,:,:))) #endif ZDFDDTDZ(:,:,:) = 0. ! this term, because of discretization, is treated separately #else @@ -584,9 +584,9 @@ END IF #ifndef MNH_OPENACC IF (GFWTH) THEN ZF(:,:,:) = ZF(:,:,:) + M3_TH2_W2TH(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PDTH_DZ(:,:,:),& - & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(PFWTH(:,:,:)) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),& - & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV) * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV) * MZF(PFWTH(:,:,:)) END IF #else IF (GFWTH) THEN @@ -632,9 +632,9 @@ END IF #ifndef MNH_OPENACC IF (GFWR) THEN ZF(:,:,:) = ZF(:,:,:) + M3_TH2_W2R(KKA,KKU,KKL,PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),& - & PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * MZF(PFWR(:,:,:)) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),& - & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * MZF(PFWR(:,:,:)) END IF #else IF (GFWR) THEN @@ -680,10 +680,10 @@ END IF #ifndef MNH_OPENACC ZFLXZ(:,:,:) = ZF(:,:,:) & ! + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:) & - ! *MZF(KKA,KKU,KKL,D_PHI3DTDZ2_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:),& + ! *MZF(D_PHI3DTDZ2_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:),& ! PRED2THR3(:,:,:),PDTH_DZ(:,:,:),HTURBDIM,GUSERV) & - ! *DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) ) & - + PIMPL * ZDFDDTDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) ) + ! *DZM(PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) ) & + + PIMPL * ZDFDDTDZ(:,:,:) * MZF(DZM(PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) ) #else ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:) CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP2_DEVICE(:,:,:)) @@ -758,7 +758,7 @@ END IF CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Thl2 ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_Thl2 ) + CALL LES_MEAN_SUBGRID( MZF(PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_Thl2 ) CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:), X_LES_SUBGRID_DISS_Thl2 ) CALL LES_MEAN_SUBGRID( PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_ThlThv ) CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. ) @@ -801,7 +801,7 @@ END IF ! ! Compute the turbulent variance F and F' at time t-dt. #ifndef MNH_OPENACC - ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,0.5*(PPHI3(:,:,:)+PPSI3(:,:,:))*PDTH_DZ(:,:,:)*PDR_DZ(:,:,:)) + ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(0.5*(PPHI3(:,:,:)+PPSI3(:,:,:))*PDTH_DZ(:,:,:)*PDR_DZ(:,:,:)) #else !$acc kernels ZTMP1_DEVICE(:,:,:) = 0.5*(PPHI3(:,:,:)+PPSI3(:,:,:))*PDTH_DZ(:,:,:)*PDR_DZ(:,:,:) @@ -850,11 +850,11 @@ END IF #ifndef MNH_OPENACC IF (GFWTH) THEN ZF(:,:,:) = ZF(:,:,:) + M3_THR_W2TH(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),& - PDR_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + PDR_DZ(:,:,:)) * MZF(PFWTH(:,:,:)) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),& - PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDR_DZ(:,:,:),PETHETA(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDR_DZ(:,:,:),PETHETA(:,:,:)) * MZF(PFWTH(:,:,:)) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),& - PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(PFWTH(:,:,:)) END IF #else IF (GFWTH) THEN @@ -911,11 +911,11 @@ END IF #ifndef MNH_OPENACC IF (GFWR) THEN ZF(:,:,:) = ZF(:,:,:) + M3_THR_W2R(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),& - & PDTH_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PDTH_DZ(:,:,:)) * MZF(PFWR(:,:,:)) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_W2R_O_DDTDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),& - & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(PFWR(:,:,:)) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),& - & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDTH_DZ(:,:,:),PEMOIST(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDTH_DZ(:,:,:),PEMOIST(:,:,:)) * MZF(PFWR(:,:,:)) END IF #else IF (GFWR) THEN @@ -971,19 +971,19 @@ END IF #ifndef MNH_OPENACC ZFLXZ(:,:,:) = ZF(:,:,:) & + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:)*0.5 & - * MZF(KKA,KKU,KKL, ( D_PHI3DTDZ_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:), & + * MZF( ( D_PHI3DTDZ_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:), & PRED2TH3(:,:,:),PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(phi3*dthdz)/ddthdz term +D_PSI3DTDZ_O_DDTDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:), & PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(psi3*dthdz)/ddthdz term - ) *PDR_DZ(:,:,:) *DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:) ) / PDZZ(:,:,:) & + ) *PDR_DZ(:,:,:) *DZM(PTHLP(:,:,:) - PTHLM(:,:,:) ) / PDZZ(:,:,:) & +( D_PHI3DRDZ_O_DDRDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:), & PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(phi3*drdz )/ddrdz term +D_PSI3DRDZ_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:), & PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(psi3*drdz )/ddrdz term - ) *PDTH_DZ(:,:,:) *DZM(KKA,KKU,KKL,PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) & + ) *PDTH_DZ(:,:,:) *DZM(PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) & ) & - + PIMPL * ZDFDDTDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) ) & - + PIMPL * ZDFDDRDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) ) + + PIMPL * ZDFDDTDZ(:,:,:) * MZF(DZM(PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) ) & + + PIMPL * ZDFDDRDZ(:,:,:) * MZF(DZM(PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) ) #else !$acc kernels ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:) @@ -1084,7 +1084,7 @@ END IF CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_THlRt ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_ThlRt ) + CALL LES_MEAN_SUBGRID( MZF(PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_ThlRt ) CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:), X_LES_SUBGRID_DISS_ThlRt ) CALL LES_MEAN_SUBGRID( PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtThv ) CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. ) @@ -1140,9 +1140,9 @@ END IF ! Compute the turbulent variance F and F' at time t-dt. #ifndef MNH_OPENACC #ifndef MNH_BITREP - ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPSI3(:,:,:)*PDR_DZ(:,:,:)**2) + ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(PPSI3(:,:,:)*PDR_DZ(:,:,:)**2) #else - ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPSI3(:,:,:)*BR_P2(PDR_DZ(:,:,:))) + ZF (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(PPSI3(:,:,:)*BR_P2(PDR_DZ(:,:,:))) #endif #else !$acc kernels @@ -1188,9 +1188,9 @@ END IF #ifndef MNH_OPENACC IF (GFWR) THEN ZF(:,:,:) = ZF(:,:,:) + M3_R2_W2R(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),PDR_DZ(:,:,:),& - & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(PFWR(:,:,:)) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),& - & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV) * MZF(KKA,KKU,KKL,PFWR(:,:,:)) + & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV) * MZF(PFWR(:,:,:)) END IF #else IF (GFWR) THEN @@ -1236,10 +1236,10 @@ END IF #ifndef MNH_OPENACC IF (GFWTH) THEN ZF(:,:,:) = ZF(:,:,:) + M3_R2_W2TH(KKA,KKU,KKL,PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),& - PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * MZF(PFWTH(:,:,:)) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),& PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) & - * MZF(KKA,KKU,KKL,PFWTH(:,:,:)) + * MZF(PFWTH(:,:,:)) END IF #else IF (GFWTH) THEN @@ -1285,10 +1285,10 @@ END IF #ifndef MNH_OPENACC ZFLXZ(:,:,:) = ZF(:,:,:) & + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:) & - *MZF(KKA,KKU,KKL,D_PSI3DRDZ2_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:), & + *MZF(D_PSI3DRDZ2_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:), & PDR_DZ(:,:,:),HTURBDIM,GUSERV) & - *DZM(KKA,KKU,KKL,PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) ) & - + PIMPL * ZDFDDRDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) ) + *DZM(PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) ) & + + PIMPL * ZDFDDRDZ(:,:,:) * MZF(DZM(PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) ) #else CALL D_PSI3DRDZ2_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:),PDR_DZ(:,:,:), & HTURBDIM,GUSERV,ZTMP1_DEVICE(:,:,:)) @@ -1369,7 +1369,7 @@ END IF CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Rt2 ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_Rt2 ) + CALL LES_MEAN_SUBGRID( MZF(PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_Rt2 ) CALL LES_MEAN_SUBGRID( PEMOIST(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtThv , .TRUE. ) CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PEMOIST(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. ) CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:), X_LES_SUBGRID_DISS_Rt2 ) diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90 index 770c4cf96d51798455a2e30723040c80be28559d..1e0baf89868ed3a953387b65cbfa2b78be35a241 100644 --- a/src/MNH/turb_ver_thermo_flux.f90 +++ b/src/MNH/turb_ver_thermo_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -567,7 +567,7 @@ GUSERV = (KRR/=0) ! ground ! #ifndef MNH_OPENACC -ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) +ZKEFF(:,:,:) = MZM( PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ) #else !$acc kernels ZTMP1_DEVICE(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:)) @@ -601,7 +601,7 @@ END IF ! Compute the turbulent flux F and F' at time t-dt. ! #ifndef MNH_OPENACC -ZF (:,:,:) = -XCSHF*PPHI3(:,:,:)*ZKEFF(:,:,:)*DZM(KKA,KKU,KKL,PTHLM)/PDZZ(:,:,:) +ZF (:,:,:) = -XCSHF*PPHI3(:,:,:)*ZKEFF(:,:,:)*DZM(PTHLM)/PDZZ(:,:,:) ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF(:,:,:)*D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV) #else CALL DZM_DEVICE(KKA,KKU,KKL,PTHLM,ZTMP1_DEVICE) @@ -646,9 +646,9 @@ END IF IF (GFTH2) THEN Z3RDMOMENT(:,:,:)= M3_WTH_WTH2(PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) ! - ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFTH2) + ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(PFTH2) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_WTH2_O_DDTDZ(Z3RDMOMENT,PREDTH1,PREDR1,& - & PD,PBLL_O_E,PETHETA) * MZM(KKA,KKU,KKL,PFTH2) + & PD,PBLL_O_E,PETHETA) * MZM(PFTH2) END IF #else IF (GFTH2) THEN @@ -694,9 +694,9 @@ END IF #ifndef MNH_OPENACC IF (GFR2) THEN ZF(:,:,:) = ZF(:,:,:) + M3_WTH_WR2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,& - & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ) * MZM(KKA,KKU,KKL,PFR2) + & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ) * MZM(PFR2) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,& - & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST) * MZM(KKA,KKU,KKL,PFR2) + & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST) * MZM(PFR2) END IF #else IF (GFR2) THEN @@ -720,9 +720,9 @@ END IF IF (GFTHR) THEN Z3RDMOMENT(:,:,:)= M3_WTH_WTHR(KKA,KKU,KKL,PREDR1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,PLEPS,PEMOIST) ! - ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFTHR) + ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(PFTHR) ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_WTHR_O_DDTDZ(Z3RDMOMENT,PREDTH1,& - & PREDR1,PD,PBLL_O_E,PETHETA) * MZM(KKA,KKU,KKL,PFTHR) + & PREDR1,PD,PBLL_O_E,PETHETA) * MZM(PFTHR) END IF #else IF (GFTHR) THEN @@ -776,7 +776,7 @@ PRTHLS(:,:,:)= PRTHLS(:,:,:) + & ! #ifndef MNH_OPENACC ZFLXZ(:,:,:) = ZF(:,:,:) & - + PIMPL * ZDFDDTDZ(:,:,:) * DZM(KKA,KKU,KKL,PTHLP - PTHLM(:,:,:)) / PDZZ(:,:,:) + + PIMPL * ZDFDDTDZ(:,:,:) * DZM(PTHLP - PTHLM(:,:,:)) / PDZZ(:,:,:) #else !$acc kernels ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:) @@ -816,11 +816,11 @@ END IF ! Contribution of the conservative temperature flux to the buoyancy flux #ifndef MNH_OPENACC IF (KRR /= 0) THEN - PTP(:,:,:) = PBETA(:,:,:) * MZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PETHETA) * ZFLXZ(:,:,:) ) + PTP(:,:,:) = PBETA(:,:,:) * MZF( MZM(PETHETA) * ZFLXZ(:,:,:) ) PTP(:,:,IKB)= PBETA(:,:,IKB) * PETHETA(:,:,IKB) * & 0.5 * ( ZFLXZ(:,:,IKB) + ZFLXZ(:,:,IKB+KKL) ) ELSE - PTP(:,:,:)= PBETA(:,:,:) * MZF(KKA,KKU,KKL, ZFLXZ ) + PTP(:,:,:)= PBETA(:,:,:) * MZF( ZFLXZ ) END IF #else IF (KRR /= 0) THEN @@ -845,7 +845,7 @@ END IF ! Buoyancy flux at flux points ! #ifndef MNH_OPENACC -PWTHV(:,:,:) = MZM(KKA,KKU,KKL,PETHETA) * ZFLXZ(:,:,:) +PWTHV(:,:,:) = MZM(PETHETA) * ZFLXZ(:,:,:) #else CALL MZM_DEVICE(PETHETA,ZTMP1_DEVICE) !$acc kernels @@ -860,14 +860,14 @@ PWTHV(:,:,IKB) = PETHETA(:,:,IKB) * ZFLXZ(:,:,IKB) IF ( KRRL >= 1 ) THEN IF ( KRRI >= 1 ) THEN PRRS(:,:,:,2) = PRRS(:,:,:,2) - & - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & *(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) - & - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & *PFRAC_ICE(:,:,:) ELSE PRRS(:,:,:,2) = PRRS(:,:,:,2) - & - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) + DZF( MZM( PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) END IF END IF #else @@ -906,22 +906,22 @@ END IF IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_WThl ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_W_SBG_WThl ) - CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(KKA,KKU,KKL,ZFLXZ),& + CALL LES_MEAN_SUBGRID( MZF(ZFLXZ), X_LES_SUBGRID_WThl ) + CALL LES_MEAN_SUBGRID( MZF(PWM(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_W_SBG_WThl ) + CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(ZFLXZ),& & X_LES_RES_ddxa_W_SBG_UaThl ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Thl_SBG_UaThl ) - CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_ThlPz ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MZM(KKA,KKU,KKL,PETHETA)*ZFLXZ(:,:,:)), X_LES_SUBGRID_WThv ) + CALL LES_MEAN_SUBGRID( MZF(PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Thl_SBG_UaThl ) + CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*MZF(ZFLXZ), X_LES_SUBGRID_ThlPz ) + CALL LES_MEAN_SUBGRID( MZF(MZM(PETHETA)*ZFLXZ(:,:,:)), X_LES_SUBGRID_WThv ) IF (KRR>=1) THEN - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDR_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Rt_SBG_UaThl ) + CALL LES_MEAN_SUBGRID( MZF(PDR_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Rt_SBG_UaThl ) END IF !* diagnostic of mixing coefficient for heat - ZA(:,:,:) = DZM(KKA,KKU,KKL,PTHLP) + ZA(:,:,:) = DZM(PTHLP) WHERE (ZA(:,:,:)==0.) ZA(:,:,:)=1.E-6 ZA(:,:,:) = - ZFLXZ(:,:,:) / ZA(:,:,:) * PDZZ(:,:,:) ZA(:,:,IKB) = XCSHF*PPHI3(:,:,IKB)*ZKEFF(:,:,IKB) - ZA(:,:,:) = MZF(KKA,KKU,KKL, ZA ) + ZA(:,:,:) = MZF( ZA ) ZA(:,:,:) = MIN(MAX(ZA(:,:,:),-1000.),1000.) CALL LES_MEAN_SUBGRID( ZA, X_LES_SUBGRID_Kh ) #else @@ -1000,7 +1000,7 @@ IF (KRR /= 0) THEN ! Compute the turbulent flux F and F' at time t-dt. ! #ifndef MNH_OPENACC - ZF (:,:,:) = -XCSHF*PPSI3(:,:,:)*ZKEFF(:,:,:)*DZM(KKA,KKU,KKL,PRM(:,:,:,1))/PDZZ(:,:,:) + ZF (:,:,:) = -XCSHF*PPSI3(:,:,:)*ZKEFF(:,:,:)*DZM(PRM(:,:,:,1))/PDZZ(:,:,:) ZDFDDRDZ(:,:,:) = -XCSHF*ZKEFF(:,:,:)*D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV) #else CALL DZM_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),ZTMP1_DEVICE) @@ -1045,9 +1045,9 @@ IF (KRR /= 0) THEN IF (GFR2) THEN Z3RDMOMENT(:,:,:)= M3_WR_WR2(PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) ! - ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFR2) + ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(PFR2) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_WR2_O_DDRDZ(Z3RDMOMENT,PREDR1,& - & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(KKA,KKU,KKL,PFR2) + & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(PFR2) END IF #else IF (GFR2) THEN @@ -1092,9 +1092,9 @@ IF (KRR /= 0) THEN #ifndef MNH_OPENACC IF (GFTH2) THEN ZF(:,:,:) = ZF(:,:,:) + M3_WR_WTH2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM,& - & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ) * MZM(KKA,KKU,KKL,PFTH2) + & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ) * MZM(PFTH2) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,& - &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) * MZM(KKA,KKU,KKL,PFTH2) + &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) * MZM(PFTH2) END IF #else IF (GFTH2) THEN @@ -1118,9 +1118,9 @@ IF (KRR /= 0) THEN Z3RDMOMENT(:,:,:)= M3_WR_WTHR(KKA,KKU,KKL,PREDTH1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,& & PLEPS,PETHETA) ! - ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFTHR) + ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * MZM(PFTHR) ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_WTHR_O_DDRDZ(KKA,KKU,KKL,Z3RDMOMENT,PREDR1, & - & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(KKA,KKU,KKL,PFTHR) + & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(PFTHR) END IF #else IF (GFTHR) THEN @@ -1174,7 +1174,7 @@ IF (KRR /= 0) THEN ! #ifndef MNH_OPENACC ZFLXZ(:,:,:) = ZF(:,:,:) & - + PIMPL * ZDFDDRDZ(:,:,:) * DZM(KKA,KKU,KKL,PRP - PRM(:,:,:,1)) / PDZZ(:,:,:) + + PIMPL * ZDFDDRDZ(:,:,:) * DZM(PRP - PRM(:,:,:,1)) / PDZZ(:,:,:) #else !$acc kernels ZTMP1_DEVICE(:,:,:) = PRP(:,:,:) - PRM(:,:,:,1) @@ -1216,7 +1216,7 @@ IF (KRR /= 0) THEN ! ! Contribution of the conservative water flux to the Buoyancy flux #ifndef MNH_OPENACC - ZA(:,:,:) = PBETA(:,:,:) * MZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PEMOIST) * ZFLXZ(:,:,:) ) + ZA(:,:,:) = PBETA(:,:,:) * MZF( MZM(PEMOIST) * ZFLXZ(:,:,:) ) #else CALL MZM_DEVICE(PEMOIST,ZTMP1_DEVICE) !$acc kernels @@ -1234,7 +1234,7 @@ IF (KRR /= 0) THEN ! Buoyancy flux at flux points ! #ifndef MNH_OPENACC - PWTHV(:,:,:) = PWTHV(:,:,:) + MZM(KKA,KKU,KKL,PEMOIST) * ZFLXZ(:,:,:) + PWTHV(:,:,:) = PWTHV(:,:,:) + MZM(PEMOIST) * ZFLXZ(:,:,:) #else CALL MZM_DEVICE(PEMOIST,ZTMP1_DEVICE) !$acc kernels @@ -1249,14 +1249,14 @@ IF (KRR /= 0) THEN IF ( KRRL >= 1 ) THEN IF ( KRRI >= 1 ) THEN PRRS(:,:,:,2) = PRRS(:,:,:,2) - & - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & *(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) - & - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) & *PFRAC_ICE(:,:,:) ELSE PRRS(:,:,:,2) = PRRS(:,:,:,2) - & - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) END IF END IF #else @@ -1295,14 +1295,14 @@ IF (KRR /= 0) THEN IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_WRt ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_W_SBG_WRt ) - CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(KKA,KKU,KKL,ZFLXZ),& + CALL LES_MEAN_SUBGRID( MZF(ZFLXZ), X_LES_SUBGRID_WRt ) + CALL LES_MEAN_SUBGRID( MZF(PWM(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_W_SBG_WRt ) + CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(ZFLXZ),& & X_LES_RES_ddxa_W_SBG_UaRt ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Thl_SBG_UaRt ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDR_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Rt_SBG_UaRt ) - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MZM(KKA,KKU,KKL,PEMOIST)*ZFLXZ(:,:,:)), X_LES_SUBGRID_WThv , .TRUE. ) - CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_RtPz ) + CALL LES_MEAN_SUBGRID( MZF(PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Thl_SBG_UaRt ) + CALL LES_MEAN_SUBGRID( MZF(PDR_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Rt_SBG_UaRt ) + CALL LES_MEAN_SUBGRID( MZF(MZM(PEMOIST)*ZFLXZ(:,:,:)), X_LES_SUBGRID_WThv , .TRUE. ) + CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*MZF(ZFLXZ), X_LES_SUBGRID_RtPz ) #else !$acc data copy(X_LES_SUBGRID_WRt,X_LES_RES_W_SBG_WRt,X_LES_RES_ddxa_W_SBG_UaRt,X_LES_RES_ddxa_Thl_SBG_UaRt,& !$acc & X_LES_RES_ddxa_Rt_SBG_UaRt,X_LES_SUBGRID_WThv,X_LES_SUBGRID_RtPz) @@ -1368,8 +1368,8 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN ! ! recover the Conservative potential temperature flux : #ifndef MNH_OPENACC - ZA(:,:,:) = DZM(KKA,KKU,KKL,PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:)) / PDZZ(:,:,:) * & - (-PPHI3(:,:,:)*MZM(KKA,KKU,KKL,PLM(:,:,:)*PSQRT_TKE(:,:,:))) * XCSHF + ZA(:,:,:) = DZM(PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:)) / PDZZ(:,:,:) * & + (-PPHI3(:,:,:)*MZM(PLM(:,:,:)*PSQRT_TKE(:,:,:))) * XCSHF #else !$acc kernels ZTMP1_DEVICE(:,:,:) = PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:) @@ -1387,8 +1387,8 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN ! ! compute <w Rc> #ifndef MNH_OPENACC - ZFLXZ(:,:,:) = MZM(KKA,KKU,KKL, PAMOIST(:,:,:) * 2.* PSRCM(:,:,:) ) * ZFLXZ(:,:,:) + & - MZM(KKA,KKU,KKL, PATHETA(:,:,:) * 2.* PSRCM(:,:,:) ) * ZA(:,:,:) + ZFLXZ(:,:,:) = MZM( PAMOIST(:,:,:) * 2.* PSRCM(:,:,:) ) * ZFLXZ(:,:,:) + & + MZM( PATHETA(:,:,:) * 2.* PSRCM(:,:,:) ) * ZA(:,:,:) #else !$acc kernels ZTMP1_DEVICE(:,:,:) = PAMOIST(:,:,:) * 2.* PSRCM(:,:,:) @@ -1426,7 +1426,7 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN IF (LLES_CALL) THEN CALL SECOND_MNH(ZTIME1) #ifndef MNH_OPENACC - CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_WRc ) + CALL LES_MEAN_SUBGRID( MZF(ZFLXZ), X_LES_SUBGRID_WRc ) #else !$acc data copy(X_LES_SUBGRID_WRc) CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP1_DEVICE) diff --git a/src/MNH/two_wayn.f90 b/src/MNH/two_wayn.f90 index 52a22f8d530b86603579bc88ea8c555f242ced5c..5b361e3f9b57f7960993ed78924b5bab83fc2107 100644 --- a/src/MNH/two_wayn.f90 +++ b/src/MNH/two_wayn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 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. @@ -1286,7 +1286,7 @@ ZRHODJ(IXOR:IXEND,IYOR:IYEND,IKB) = 2.*ZRHODJ(IXOR:IXEND,IYOR:IYEND,IKB) ZRHODJ(IXOR:IXEND,IYOR:IYEND,IKB+1:IKU) = ZRHODJ(IXOR:IXEND,IYOR:IYEND,IKB+1:IKU) & +ZRHODJ(IXOR:IXEND,IYOR:IYEND,IKB:IKU-1) ! -ZAVE_RHODJ=MZM(1,IKU,1,PRHODJ) +ZAVE_RHODJ=MZM(PRHODJ) PRWS(IXOR:IXEND,IYOR:IYEND,:) = PRWS(IXOR:IXEND,IYOR:IYEND,:) & - ZK2W * ZAVE_RHODJ(IXOR:IXEND,IYOR:IYEND,:) * ( PWM(IXOR:IXEND,IYOR:IYEND,:) & -ZWM(IXOR:IXEND,IYOR:IYEND,:)/ZRHODJ(IXOR:IXEND,IYOR:IYEND,:) ) diff --git a/src/MNH/ver_dyn.f90 b/src/MNH/ver_dyn.f90 index 49b6ef42936c3747e2784377d34bee9ae7ee0850..925c2225b66e5466ba7fc21484e247670678eb61 100644 --- a/src/MNH/ver_dyn.f90 +++ b/src/MNH/ver_dyn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -80,7 +80,7 @@ END MODULE MODI_VER_DYN !! subroutine VER_INT_DYN : to initialize the horizontal momentum !! subroutine WGUESS : to initialize vertical momentum !! subroutine ANEL_BALANCE1 : to apply the anelastic correction -!! functions MXM ,MYM ,MZM : Shuman operators +!! functions MXM, MYM : Shuman operators !! !! !! IMPLICIT ARGUMENTS diff --git a/src/MNH/ver_int_dyn.f90 b/src/MNH/ver_int_dyn.f90 index 1065cdc10a890b91b3cdee4f2164fc58bcc768b4..912522f9835bd6d86bd2020c7baaa1a92d5c2eae 100644 --- a/src/MNH/ver_int_dyn.f90 +++ b/src/MNH/ver_int_dyn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -186,7 +186,7 @@ ZRHODV_SH(:,:,1) = ZRHODV_SH(:,:,2) !* 3.1 Altitude of the mass points on the MESO-NH grid ! ----------------------------------------------- ! -ZZMASS(:,:,:)=MZF(1,IKU,1,XZZ(:,:,:)) +ZZMASS(:,:,:)=MZF(XZZ(:,:,:)) ZZMASS(:,:,SIZE(XZZ,3))=1.5*XZZ(:,:,SIZE(XZZ,3))-0.5*XZZ(:,:,SIZE(XZZ,3)-1) ! !* 3.2 Interpolation on the MESO-NH grid diff --git a/src/MNH/ver_int_thermo.f90 b/src/MNH/ver_int_thermo.f90 index caace8ad5fa37979d8840f7c279c6c98bf95ce92..1d3424a943e422cf37b2ec52dd4651470c25a108 100644 --- a/src/MNH/ver_int_thermo.f90 +++ b/src/MNH/ver_int_thermo.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -198,7 +198,7 @@ REAL,DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PLSRVM ! Large scale vapor ! ------------------------------ ! INTEGER ::ILUOUT0, IRESP -INTEGER ::IKB,IKE,IIB,IIE,IJB,IJE,IKU +INTEGER ::IKB,IKE,IIB,IIE,IJB,IJE INTEGER, DIMENSION(2) ::IIJ INTEGER :: IK4000 INTEGER ::JK @@ -270,7 +270,6 @@ ILUOUT0 = TLUOUT0%NLU CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB=JPVEXT+1 IKE=SIZE(XZZ,3)-JPVEXT -IKU=SIZE(XZZ,3) ! ! !------------------------------------------------------------------------------- @@ -515,7 +514,7 @@ PDIAG = ZTIME2 - ZTIME1 ! !20140217 upgrade shuman fct MZF !$ZZMASS(:,:,:)=MZF(XZZ(:,:,:)) -ZZMASS(:,:,:)=MZF(1,IKU,1,XZZ(:,:,:)) +ZZMASS(:,:,:)=MZF(XZZ(:,:,:)) !20131113 check CALL MPPDB_CHECK3D(ZZMASS,"ver_int_thermo6::ZZMASS",PRECISION) ZZMASS(:,:,SIZE(XZZ,3))=1.5*XZZ(:,:,SIZE(XZZ,3))-0.5*XZZ(:,:,SIZE(XZZ,3)-1) diff --git a/src/MNH/ver_interp_field.f90 b/src/MNH/ver_interp_field.f90 index 1eb52591ae889b6f813b5238972b3f79384bb79f..e380b7da0d431d133a1decd4e6ace07786cf7887 100644 --- a/src/MNH/ver_interp_field.f90 +++ b/src/MNH/ver_interp_field.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 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. @@ -157,9 +157,9 @@ CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) ! ----------- ! !* shift of grids to mass points -ZGRID1(:,:,:)=MZF(1,IKU,1,PZZ_LS(:,:,:)) +ZGRID1(:,:,:)=MZF(PZZ_LS(:,:,:)) ZGRID1(:,:,IKU)=2.*ZGRID1(:,:,IKU-1)-ZGRID1(:,:,IKU-2) -ZGRID2(:,:,:)=MZF(1,IKU,1,PZZ(:,:,:)) +ZGRID2(:,:,:)=MZF(PZZ(:,:,:)) ZGRID2(:,:,IKU)=2.*ZGRID2(:,:,IKU-1)-ZGRID2(:,:,IKU-2) !* move the first physical level if above the target grid ZGRID1(:,:,1:IKB)=MIN(ZGRID1(:,:,1:IKB),ZGRID2(:,:,1:IKB)) @@ -199,9 +199,9 @@ CALL MPPDB_CHECK3D(PUT,"VERINTERPFIELD:PUT",PRECISION) ! ----------- ! !* shift of grids to mass points -ZGRID1(:,:,:)=MZF(1,IKU,1,PZZ_LS(:,:,:)) +ZGRID1(:,:,:)=MZF(PZZ_LS(:,:,:)) ZGRID1(:,:,IKU)=2.*ZGRID1(:,:,IKU-1)-ZGRID1(:,:,IKU-2) -ZGRID2(:,:,:)=MZF(1,IKU,1,PZZ(:,:,:)) +ZGRID2(:,:,:)=MZF(PZZ(:,:,:)) ZGRID2(:,:,IKU)=2.*ZGRID2(:,:,IKU-1)-ZGRID2(:,:,IKU-2) !* move the first physical level if above the target grid ZGRID1(:,:,1:IKB)=MIN(ZGRID1(:,:,1:IKB),ZGRID2(:,:,1:IKB)) @@ -246,9 +246,9 @@ PLSWM (:,:,:) = VER_INTERP_LIN(PLSWM (:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:)) ! ------------------------- ! !* shift of grids to mass points -ZGRID1(:,:,:)=MZF(1,IKU,1,PZZ_LS(:,:,:)) +ZGRID1(:,:,:)=MZF(PZZ_LS(:,:,:)) ZGRID1(:,:,IKU)=2.*ZGRID1(:,:,IKU-1)-ZGRID1(:,:,IKU-2) -ZGRID2(:,:,:)=MZF(1,IKU,1,PZZ(:,:,:)) +ZGRID2(:,:,:)=MZF(PZZ(:,:,:)) ZGRID2(:,:,IKU)=2.*ZGRID2(:,:,IKU-1)-ZGRID2(:,:,IKU-2) ! CALL COEF_VER_INTERP_LIN(ZGRID1(:,:,:),ZGRID2(:,:,:)) @@ -292,9 +292,9 @@ END DO ! ------------ ! !* shift of grids to mass points -ZGRID1(:,:,:)=MZF(1,IKU,1,PZZ_LS(:,:,:)) +ZGRID1(:,:,:)=MZF(PZZ_LS(:,:,:)) ZGRID1(:,:,IKU)=2.*ZGRID1(:,:,IKU-1)-ZGRID1(:,:,IKU-2) -ZGRID2(:,:,:)=MZF(1,IKU,1,PZZ(:,:,:)) +ZGRID2(:,:,:)=MZF(PZZ(:,:,:)) ZGRID2(:,:,IKU)=2.*ZGRID2(:,:,IKU-1)-ZGRID2(:,:,IKU-2) !* move the first physical level if above the target grid ZGRID1(:,:,1:IKB)=MIN(ZGRID1(:,:,1:IKB),ZGRID2(:,:,1:IKB)) diff --git a/src/MNH/ver_interp_to_mixed_grid.f90 b/src/MNH/ver_interp_to_mixed_grid.f90 index 1b2d4d6a0fb5905bb397b94dfcec75e811a99c00..94b161a5d4989fd24bcc8dc2305436acfc304d03 100644 --- a/src/MNH/ver_interp_to_mixed_grid.f90 +++ b/src/MNH/ver_interp_to_mixed_grid.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -290,13 +290,13 @@ IF (HFILE=='ATM ') THEN ALLOCATE(XZFLUX_MX(IIU,IJU,IKU)) ALLOCATE(XZMASS_MX(IIU,IJU,IKU)) CALL VERT_COORD(LSLEVE,PZS_LS,PZSMT_LS,XLEN1,XLEN2,XZHAT,XZFLUX_MX) - XZMASS_MX(:,:,:)=MZF(1,IKU,1,XZFLUX_MX) + XZMASS_MX(:,:,:)=MZF(XZFLUX_MX) XZMASS_MX(:,:,IKU)=1.5*XZFLUX_MX(:,:,IKU)-0.5*XZFLUX_MX(:,:,IKU-1) ELSE IF (HFILE=='CHEM') THEN ALLOCATE(ZZFLUX_MX(IIU,IJU,IKU)) ALLOCATE(ZZMASS_MX(IIU,IJU,IKU)) CALL VERT_COORD(LSLEVE,PZS_LS,PZSMT_LS,XLEN1,XLEN2,XZHAT,ZZFLUX_MX) - ZZMASS_MX(:,:,:)=MZF(1,IKU,1,ZZFLUX_MX) + ZZMASS_MX(:,:,:)=MZF(ZZFLUX_MX) ZZMASS_MX(:,:,IKU)=1.5*ZZFLUX_MX(:,:,IKU)-0.5*ZZFLUX_MX(:,:,IKU-1) END IF ! diff --git a/src/MNH/ver_prep_mesonh_case.f90 b/src/MNH/ver_prep_mesonh_case.f90 index 15ea1cc313fc52f699651a95190f5dab63a50c35..e50abec0ec100cf2792eddd685cd647ba7943322 100644 --- a/src/MNH/ver_prep_mesonh_case.f90 +++ b/src/MNH/ver_prep_mesonh_case.f90 @@ -169,7 +169,7 @@ CALL VERT_COORD(LSLEVE_LS,XZS_LS,XZSMT_LS,XLEN1_LS,XLEN2_LS,XZHAT_LS,XZFLUX_LS) ! !20140217 upgrade MZF !$XZMASS_LS(:,:,:)=MZF(XZFLUX_LS(:,:,:)) -XZMASS_LS(:,:,:)=MZF(1,ILU,1,XZFLUX_LS(:,:,:)) +XZMASS_LS(:,:,:)=MZF(XZFLUX_LS(:,:,:)) !20131112 add update_halo for this type of calculation CALL MPPDB_CHECK3D(XZMASS_LS,"ver_prep_mesonh_case1.2a::XZMASS_LS",PRECISION) CALL ADD3DFIELD_ll( TZFIELDS_ll, XZMASS_LS, 'VER_PREP_MESONH_CASE::XZMASS_LS' ) diff --git a/src/MNH/viscosity.f90 b/src/MNH/viscosity.f90 index b3d3e6a44a3bfa855d8555943dc035330e27689d..d02759b83919be70fb614b6fe82bae858675325e 100644 --- a/src/MNH/viscosity.f90 +++ b/src/MNH/viscosity.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -297,7 +297,7 @@ ENDIF IKB = JPVEXT + 1 IKE = SIZE(PWT,3) - JPVEXT - ZTMP = MZF(1,IKU,1,PWT) + ZTMP = MZF(PWT) ! IF (ODRAG) THEN WHERE (PDRAG==-1) @@ -310,7 +310,7 @@ ENDIF ZTMP(:,:,IKE+IK) = ZTMP(:,:,IKE) END DO ! - ZTMP = MZM(1,IKU,1, PNU * & + ZTMP = MZM( PNU * & LAP_M(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,ZTMP) ) ! DO IK = 1,JPVEXT diff --git a/src/MNH/wguess.f90 b/src/MNH/wguess.f90 index 189707fef4876f91574364f272cb5a500f8bc0ab..d6324d60702c9724022327ca7d0efc5550ddf6a6 100644 --- a/src/MNH/wguess.f90 +++ b/src/MNH/wguess.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ################## @@ -140,8 +140,8 @@ END DO !* 2.1 General case ! ------------ ! -PRHODJW= PDZZ*ZRHODJWC + MXF(PDZX*MZM(1,IKU,1,PRHODJU/PDXX)) & - + MYF(PDZY*MZM(1,IKU,1,PRHODJV/PDYY)) +PRHODJW= PDZZ*ZRHODJWC + MXF(PDZX*MZM(PRHODJU/PDXX)) & + + MYF(PDZY*MZM(PRHODJV/PDYY)) ! !* 2.2 Copies on boundaries ! -------------------- diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 6655d27e109d94115783b87e80f9edc5251e5616..8f16be8070cb6635cd5738c66844de016144cdb4 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 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. @@ -491,8 +491,8 @@ ZVOZ(:,:,1)=ZVOZ(:,:,3) ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHT,XDXX,XDZZ,XDZX) ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHT,XDYY,XDZZ,XDZY) ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHT,XDZZ) -ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & - + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & +ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(MYF(ZVOX(:,:,:))) & + + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZPOVO(:,:,:)= ZPOVO(:,:,:)*1E6/XRHODREF(:,:,:) ZPOVO(:,:,1) =-1.E+11 @@ -704,7 +704,7 @@ IF (LVAR_PR ) THEN ZWORK21(:,:) = 0. ZWORK22(:,:) = 0. ZWORK23(:,:) = 0. - ZWORK31(:,:,:) = DZF(1,IKU,1,XZZ(:,:,:)) + ZWORK31(:,:,:) = DZF(XZZ(:,:,:)) DO JK = IKB,IKE !* Calcul de qtot IF (CCLOUD(1:3) == 'ICE' .OR. CCLOUD == 'LIMA') THEN @@ -760,7 +760,7 @@ IF (LHU_FLX) THEN IKTOP(:,:)=JK END WHERE END DO - ZDELTAZ(:,:,:)=DZF(1,IKU,1,XZZ) + ZDELTAZ(:,:,:)=DZF(XZZ) ZWORK21(:,:) = 0. ZWORK22(:,:) = 0. ZWORK25(:,:) = 0. @@ -2274,7 +2274,7 @@ IF (LTPZH .OR. LCOREF) THEN TZFIELD%LTIMEDEP = .TRUE. CALL IO_Field_write(TPFILE,TZFIELD,ZWORK33) ! - ZWORK33(:,:,:)=ZWORK33(:,:,:)+MZF(1,IKU,1,XZZ(:,:,:))*1E6/XRADIUS + ZWORK33(:,:,:)=ZWORK33(:,:,:)+MZF(XZZ(:,:,:))*1E6/XRADIUS TZFIELD%CMNHNAME = 'MCOREF' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'MCOREF' @@ -2584,7 +2584,7 @@ END IF ! IF (LVORT) THEN ! Vorticity x - ZWORK31(:,:,:)=MYF(MZF(1,IKU,1,MXM(ZVOX(:,:,:)))) + ZWORK31(:,:,:)=MYF(MZF(MXM(ZVOX(:,:,:)))) TZFIELD%CMNHNAME = 'UM1' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'UM1' @@ -2598,7 +2598,7 @@ IF (LVORT) THEN CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31) ! ! Vorticity y - ZWORK32(:,:,:)=MZF(1,IKU,1,MXF(MYM(ZVOY(:,:,:)))) + ZWORK32(:,:,:)=MZF(MXF(MYM(ZVOY(:,:,:)))) TZFIELD%CMNHNAME = 'VM1' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'VM1' @@ -2638,7 +2638,7 @@ IF (LVORT) THEN ENDIF ! ! Vorticity z - ZWORK31(:,:,:)=MXF(MYF(MZM(1,IKU,1,ZVOZ(:,:,:)))) + ZWORK31(:,:,:)=MXF(MYF(MZM(ZVOZ(:,:,:)))) TZFIELD%CMNHNAME = 'WM1' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'WM1' @@ -2703,8 +2703,8 @@ IF (LMOIST_V .AND. (NRR>0) ) THEN ZWORK31(:,:,:)=GX_M_M(1,IKU,1,ZTHETAV,XDXX,XDZZ,XDZX) ZWORK32(:,:,:)=GY_M_M(1,IKU,1,ZTHETAV,XDYY,XDZZ,XDZY) ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,ZTHETAV,XDZZ) - ZWORK34(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & - + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZWORK34(:,:,:)= ZWORK31(:,:,:)*MZF(MYF(ZVOX(:,:,:))) & + + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZWORK34(:,:,:)=ZWORK34(:,:,:)*1E6/XRHODREF(:,:,:) TZFIELD%CMNHNAME = 'POVOV' @@ -2749,8 +2749,8 @@ IF (LMOIST_E .AND. (NRR>0) ) THEN ZWORK31(:,:,:)=GX_M_M(1,IKU,1,ZTHETAE,XDXX,XDZZ,XDZX) ZWORK32(:,:,:)=GY_M_M(1,IKU,1,ZTHETAE,XDYY,XDZZ,XDZY) ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,ZTHETAE,XDZZ) - ZWORK34(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & - + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZWORK34(:,:,:)= ZWORK31(:,:,:)*MZF(MYF(ZVOX(:,:,:))) & + + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZWORK34(:,:,:)=ZWORK34(:,:,:)*1E6/XRHODREF(:,:,:) TZFIELD%CMNHNAME = 'POVOE' @@ -2796,8 +2796,8 @@ IF (LMOIST_ES .AND. (NRR>0) ) THEN ZWORK31(:,:,:)=GX_M_M(1,IKU,1,ZTHETAES,XDXX,XDZZ,XDZX) ZWORK32(:,:,:)=GY_M_M(1,IKU,1,ZTHETAES,XDYY,XDZZ,XDZY) ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,ZTHETAES,XDZZ) - ZWORK34(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & - + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZWORK34(:,:,:)= ZWORK31(:,:,:)*MZF(MYF(ZVOX(:,:,:))) & + + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZWORK34(:,:,:)=ZWORK34(:,:,:)*1E6/XRHODREF(:,:,:) TZFIELD%CMNHNAME = 'POVOES' @@ -3496,7 +3496,7 @@ ENDIF !* B-V frequency to assess thermal tropopause ! IF (LBV_FR) THEN - ZWORK32(:,:,:)=DZM(1,IKU,1,XTHT(:,:,:))/ MZM(1,IKU,1,XTHT(:,:,:)) + ZWORK32(:,:,:)=DZM(XTHT(:,:,:))/ MZM(XTHT(:,:,:)) DO JK=1,IKU DO JJ=1,IJU DO JI=1,IIU @@ -3522,7 +3522,7 @@ IF (LBV_FR) THEN CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31) ! IF (NRR > 0) THEN - ZWORK32(:,:,:)=DZM(1,IKU,1,ZTHETAE(:,:,:))/ MZM(1,IKU,1,ZTHETAE(:,:,:)) + ZWORK32(:,:,:)=DZM(ZTHETAE(:,:,:))/ MZM(ZTHETAE(:,:,:)) DO JK=1,IKU DO JJ=1,IJU DO JI=1,IIU diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 4908ec514781ac6d48a5ffeb717a3024e9f4007e..a55567a215d706c5347e0568864a98f391da8bd9 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-2020 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. @@ -420,7 +420,7 @@ IF (LCLD_COV .AND. LUSERC) THEN ZCLMR=1.E-4 ! detection of clouds for cloud mixing ratio > .1g/kg ! GMASK2(:,:)=.TRUE. - ZWORK31(:,:,:)= MZM(1,IKU,1, XRT(:,:,:,2) ) ! cloud mixing ratio at zz levels + ZWORK31(:,:,:)= MZM( XRT(:,:,:,2) ) ! cloud mixing ratio at zz levels DO JK=IKE,IKB,-1 WHERE ( (GMASK2(:,:)).AND.(ZWORK31(:,:,JK)>ZCLMR) ) GMASK2(:,:)=.FALSE. @@ -430,7 +430,7 @@ IF (LCLD_COV .AND. LUSERC) THEN ! IF (LUSERI) THEN GMASK2(:,:)=.TRUE. - ZWORK31(:,:,:)= MZM(1,IKU,1, XRT(:,:,:,4) ) ! cloud mixing ratio at zz levels + ZWORK31(:,:,:)= MZM( XRT(:,:,:,4) ) ! cloud mixing ratio at zz levels DO JK=IKE,IKB,-1 WHERE ( (GMASK2(:,:)).AND.(ZWORK31(:,:,JK)>ZCLMR) ) GMASK2(:,:)=.FALSE. @@ -466,7 +466,7 @@ IF (LCLD_COV .AND. LUSERC) THEN ! Higher top of the different species of clouds ! IWORK1(:,:)=IKB ! initialization with the ground values - ZWORK31(:,:,:)=MZM(1,IKU,1,ZTEMP(:,:,:)) ! temperature (K) at zz levels + ZWORK31(:,:,:)=MZM(ZTEMP(:,:,:)) ! temperature (K) at zz levels IF(CRAD/='NONE') ZWORK31(:,:,IKB)=XTSRAD(:,:) ZWORK21(:,:)=0. ZWORK22(:,:)=0. @@ -1124,7 +1124,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! ********************* ! Geopotential in meters ! ********************* - ZWORK31(:,:,:) = MZF(1,IKU,1,XZZ(:,:,:)) + ZWORK31(:,:,:) = MZF(XZZ(:,:,:)) CALL PINTER(ZWORK31, XPABST, XZZ, ZTEMP, ZWRES, ZPRES, & IIU, IJU, IKU, IKB, IPRES, 'LOG', 'RHU.') DO JK=1,IPRES @@ -1203,8 +1203,8 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHT,XDXX,XDZZ,XDZX) ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHT,XDYY,XDZZ,XDZY) ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHT,XDZZ) - ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & - + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(MYF(ZVOX(:,:,:))) & + + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZPOVO(:,:,:)= ZPOVO(:,:,:)*1E6/XRHODREF(:,:,:) ZPOVO(:,:,1) =-1.E+11 @@ -1352,8 +1352,8 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHT,XDXX,XDZZ,XDZX) ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHT,XDYY,XDZZ,XDZY) ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHT,XDZZ) - ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & - + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(MYF(ZVOX(:,:,:))) & + + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZPOVO(:,:,:)= ZPOVO(:,:,:)*1E6/XRHODREF(:,:,:) ZPOVO(:,:,1) =-1.E+11 @@ -1450,7 +1450,7 @@ IF (LCOARSE) THEN CALL BLOCKAVG(ZWORK31,IDX,IDX,ZUU_AVG) ZWORK31=MYF(ZVT_PRM*ZVT_PRM) CALL BLOCKAVG(ZWORK31,IDX,IDX,ZVV_AVG) - ZWORK31=MZF(1,IKU,1,ZWT_PRM*ZWT_PRM) + ZWORK31=MZF(ZWT_PRM*ZWT_PRM) CALL BLOCKAVG(ZWORK31,IDX,IDX,ZWW_AVG) CALL BLOCKAVG(XTKET,IDX,IDX,ZWORK31) ZWORK31=0.5*( ZUU_AVG+ZVV_AVG+ZWW_AVG ) + ZWORK31 @@ -1480,7 +1480,7 @@ IF (LCOARSE) THEN CALL MOVINGAVG(ZWORK31,IDX,IDX,ZUU_AVG) ZWORK31=MYF(ZVT_PRM*ZVT_PRM) CALL MOVINGAVG(ZWORK31,IDX,IDX,ZVV_AVG) - ZWORK31=MZF(1,IKU,1,ZWT_PRM*ZWT_PRM) + ZWORK31=MZF(ZWT_PRM*ZWT_PRM) CALL MOVINGAVG(ZWORK31,IDX,IDX,ZWW_AVG) CALL MOVINGAVG(XTKET,IDX,IDX,ZWORK31) ZWORK31=0.5*( ZUU_AVG+ZVV_AVG+ZWW_AVG ) + ZWORK31 diff --git a/src/MNH/zdiffusetup.f90 b/src/MNH/zdiffusetup.f90 index 3b7abb83c752596d0e25eb7aa264231b45efe6b0..955853512eb79517e052560b117e01f2952d3117 100644 --- a/src/MNH/zdiffusetup.f90 +++ b/src/MNH/zdiffusetup.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2006-2020 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. @@ -151,7 +151,7 @@ ALLOCATE (ZN4HGTI_HALO2(IIB-2:IIE+2,IJB-2:IJE+2),ZN4HGTJ_HALO2(IIB-2:IIE+2,IJB-2 NULLIFY(TZHGTMASS_ll,TZHGTHALO2_ll) ! Compute height field at mass points -ZZMASS = MZF(1,IKU,1,PZZ) +ZZMASS = MZF(PZZ) CALL INIT_HALO2_ll(TZHGTHALO2_ll,1,IIU,IJU,IKU) CALL ADD3DFIELD_ll( TZHGTMASS_ll, ZZMASS, 'ZDIFFUSETUP::ZZMASS' )