From ffe2c8aeafdf45a64ceeda646ee83e2fff7ae5a1 Mon Sep 17 00:00:00 2001 From: Gaelle DELAUTIER <gaelle.delautier@meteo.fr> Date: Tue, 19 Jun 2018 14:39:33 +0200 Subject: [PATCH] Christine 19/6/2018 : bug with viscosity --- src/MNH/advection_metsv.f90 | 2 ++ src/MNH/default_desfmn.f90 | 4 +-- src/MNH/modd_viscosity.f90 | 6 ++-- src/MNH/modeln.f90 | 6 ++-- src/MNH/modn_viscosity.f90 | 12 +++++--- src/MNH/read_desfmn.f90 | 2 +- src/MNH/read_exsegn.f90 | 4 +-- src/MNH/viscosity.f90 | 61 +++++++++++++++++++------------------ 8 files changed, 52 insertions(+), 45 deletions(-) diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index b125cb434..15e583d34 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -344,6 +344,7 @@ IF (OCLOSE_OUT .AND. OCFL_WRIT .AND. (.NOT. L1D)) THEN TZFIELD%LTIMEDEP = .TRUE. CALL IO_WRITE_FIELD(TPFILE,TZFIELD,ZCFLU) ! + IF (.NOT. L2D) THEN TZFIELD%CMNHNAME = 'CFLV' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = 'CFLV' @@ -355,6 +356,7 @@ IF (OCLOSE_OUT .AND. OCFL_WRIT .AND. (.NOT. L1D)) THEN TZFIELD%NDIMS = 3 TZFIELD%LTIMEDEP = .TRUE. CALL IO_WRITE_FIELD(TPFILE,TZFIELD,ZCFLV) + END IF ! TZFIELD%CMNHNAME = 'CFLW' TZFIELD%CSTDNAME = '' diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index 1a7ee1d27..f77c69a49 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -293,8 +293,8 @@ USE MODD_LATZ_EDFLX USE MODD_2D_FRC USE MODD_BLOWSNOW USE MODD_BLOWSNOW_n -USE MODD_VISC USE MODD_DRAG_n +USE MODD_VISCOSITY #ifdef MNH_FOREFIRE USE MODD_FOREFIRE #endif @@ -1470,7 +1470,7 @@ IF (KMI == 1) THEN LVISC_TH = .FALSE. LVISC_SV = .FALSE. LVISC_R = .FALSE. - XMU_v = 0. + XMU_V = 0. XPRANDTL = 0. ENDIF ! diff --git a/src/MNH/modd_viscosity.f90 b/src/MNH/modd_viscosity.f90 index 4fb0abcf0..04851f840 100644 --- a/src/MNH/modd_viscosity.f90 +++ b/src/MNH/modd_viscosity.f90 @@ -3,7 +3,7 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. ! ####################### - MODULE MODD_VISC + MODULE MODD_VISCOSITY ! ####################### ! !!**** *MODD_VISCOSITY* - declaration of viscosity forces constants @@ -42,7 +42,7 @@ LOGICAL :: LVISC_SV ! Logical switch to activate viscosity for the ! scalar tracer LOGICAL :: LVISC_R ! Logical switch to activate viscosity for the ! moisture -REAL, SAVE :: XMU_v ! Molecular (cinematic) viscosity +REAL, SAVE :: XMU_V ! Molecular (cinematic) viscosity REAL, SAVE :: XPRANDTL ! Prandtl number -END MODULE MODD_VISC +END MODULE MODD_VISCOSITY diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 5816fefeb..6836f74fa 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -267,7 +267,7 @@ USE MODD_CH_AERO_n, ONLY: XSOLORG, XMI USE MODD_CH_MNHC_n, ONLY: LUSECHEM,LCH_CONV_LINOX,LUSECHAQ,LUSECHIC, & LCH_INIT_FIELD USE MODD_CLOUD_MF_n -USE MODD_VISC +USE MODD_VISCOSITY USE MODD_DRAG_n USE MODD_CLOUDPAR_n USE MODD_CONF @@ -374,7 +374,7 @@ USE MODI_INI_MEAN_FIELD USE MODI_INITIAL_GUESS USE MODI_LES_INI_TIMESTEP_n USE MODI_LES_N -USE MODI_VISC +USE MODI_VISCOSITY USE MODI_LIMA_PRECIP_SCAVENGING USE MODI_LS_COUPLING USE MODI_MASK_COMPRESS @@ -1498,7 +1498,7 @@ IF ( LVISC ) THEN ! ZTIME1 = ZTIME2 ! - CALL VISCOSITY(CLBCX, CLBCY, NRR, NSV, XMU_v,XPRANDTL, & + CALL VISCOSITY(CLBCX, CLBCY, NRR, NSV, XMU_V,XPRANDTL, & LVISC_UVW,LVISC_TH,LVISC_SV,LVISC_R, & LDRAG, & XUT, XVT, XWT, XTHT, XRT, XSVT, & diff --git a/src/MNH/modn_viscosity.f90 b/src/MNH/modn_viscosity.f90 index d2a9dd8f3..53c4e3851 100644 --- a/src/MNH/modn_viscosity.f90 +++ b/src/MNH/modn_viscosity.f90 @@ -1,5 +1,9 @@ +!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. ! ################### - MODULE MODN_VISC + MODULE MODN_VISCOSITY ! ################### ! !!**** *MODN_VISCOSITY* - declaration of namelist NAM_VISC @@ -28,10 +32,10 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_VISC +USE MODD_VISCOSITY ! IMPLICIT NONE ! -NAMELIST/NAM_VISC/LVISC,LVISC_UVW,LVISC_TH,LVISC_SV,LVISC_R,XMU_v,XPRANDTL +NAMELIST/NAM_VISC/LVISC,LVISC_UVW,LVISC_TH,LVISC_SV,LVISC_R,XMU_V,XPRANDTL ! -END MODULE MODN_VISC +END MODULE MODN_VISCOSITY diff --git a/src/MNH/read_desfmn.f90 b/src/MNH/read_desfmn.f90 index 1dc1e41e0..86cde7c74 100644 --- a/src/MNH/read_desfmn.f90 +++ b/src/MNH/read_desfmn.f90 @@ -250,7 +250,7 @@ USE MODN_CH_ORILAM USE MODN_DUST USE MODN_SALT USE MODN_PASPOL -USE MODN_VISC +USE MODN_VISCOSITY USE MODN_DRAG_n #ifdef MNH_FOREFIRE USE MODN_FOREFIRE diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index ea4aa6e26..28c1e5457 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -374,8 +374,8 @@ USE MODN_CONDSAMP USE MODN_BLOWSNOW USE MODN_BLOWSNOW_n USE MODN_2D_FRC -USE MODN_VISC -USE MODD_VISC +USE MODN_VISCOSITY +USE MODD_VISCOSITY USE MODD_DRAG_n ! IMPLICIT NONE diff --git a/src/MNH/viscosity.f90 b/src/MNH/viscosity.f90 index ae03806c0..5d822248a 100644 --- a/src/MNH/viscosity.f90 +++ b/src/MNH/viscosity.f90 @@ -4,7 +4,7 @@ !MNH_LIC for details. version 1. ! ! ##################### - MODULE MODI_VISC + MODULE MODI_VISCOSITY ! ##################### ! INTERFACE @@ -66,7 +66,7 @@ INTERFACE ! END INTERFACE ! -END MODULE MODI_VISC +END MODULE MODI_VISCOSITY ! !------------------------------------------------------------------------------- ! @@ -98,7 +98,7 @@ SUBROUTINE VISCOSITY(HLBCX, HLBCY, KRR, KSV, PNU, PPRANDTL, & USE MODI_SHUMAN USE MODD_PARAMETERS USE MODD_CONF - USE MODD_VISC + USE MODD_VISCOSITY USE MODD_DRAG_n USE MODD_BUDGET USE MODE_ll @@ -127,7 +127,7 @@ SUBROUTINE VISCOSITY(HLBCX, HLBCY, KRR, KSV, PNU, PPRANDTL, & LOGICAL, INTENT(IN) :: OVISC_TH ! theta LOGICAL, INTENT(IN) :: OVISC_SV ! scalar tracer LOGICAL, INTENT(IN) :: OVISC_R ! moisture - LOGICAL, INTENT(IN) :: ODRAG ! moisture + LOGICAL, INTENT(IN) :: ODRAG ! noslip/freeslip ! ! input variables at time t REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT @@ -190,7 +190,7 @@ IF (OVISC_TH) THEN LAP_M(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHT) ! ! - END IF +END IF ! IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RU') ! @@ -199,7 +199,7 @@ IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RU') !* 2. Viscous forcing for moisture ! ---------------------------- ! - IF (OVISC_R .AND. (SIZE(PRT,1) > 0)) THEN +IF (OVISC_R .AND. (SIZE(PRT,1) > 0)) THEN ! ! DO IK = 1, KRR @@ -208,7 +208,7 @@ IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RU') END DO ! ! - END IF +END IF ! IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'VISC_BU_RRV') IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'VISC_BU_RRC') @@ -223,7 +223,7 @@ IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'VISC_BU_RRH') !* 3. Viscous forcing for passive scalars ! ----------------------------------- ! - IF (OVISC_SV .AND. (SIZE(PSVT,1) > 0)) THEN +IF (OVISC_SV .AND. (SIZE(PSVT,1) > 0)) THEN ! ! DO IK = 1, KSV @@ -231,7 +231,7 @@ IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'VISC_BU_RRH') LAP_M(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PSVT(:,:,:,IK)) END DO ! - END IF +END IF ! IF (LBUDGET_SV) THEN DO IK = 1, KSV @@ -259,12 +259,12 @@ IF (OVISC_UVW) THEN ZLAPu = LAP_M(HLBCX,HLBCY,PDXX,PDYY,PDZX, & PDZY,PDZZ,PRHODJ,ZY1) !! Update halo to compute the source term -NULLIFY(TZFIELDS_ll) -CALL ADD3DFIELD_ll(TZFIELDS_ll,ZLAPu) -CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) -CALL CLEANLIST_ll(TZFIELDS_ll) + NULLIFY(TZFIELDS_ll) + CALL ADD3DFIELD_ll(TZFIELDS_ll,ZLAPu) + CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) + CALL CLEANLIST_ll(TZFIELDS_ll) ! -PRUS = PRUS + MXM(PNU*ZLAPu) + PRUS = PRUS + MXM(PNU*ZLAPu) ! !* 4.2 V - component ! ------------- @@ -272,21 +272,20 @@ PRUS = PRUS + MXM(PNU*ZLAPu) IF (.NOT. L2D) THEN ZY2 = MYF(PVT) - IF (ODRAG) THEN - ZY2(:,:,1) = PDRAG * ZY2(:,:,2) - ENDIF - ELSE + IF (ODRAG) THEN + ZY2(:,:,1) = PDRAG * ZY2(:,:,2) + ENDIF ! ZLAPv = LAP_M(HLBCX,HLBCY,PDXX,PDYY,PDZX, & PDZY,PDZZ,PRHODJ,ZY2) !! Update halo to compute the source term ! -NULLIFY(TZFIELDS_ll) -CALL ADD3DFIELD_ll(TZFIELDS_ll,ZLAPv) -CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) -CALL CLEANLIST_ll(TZFIELDS_ll) + NULLIFY(TZFIELDS_ll) + CALL ADD3DFIELD_ll(TZFIELDS_ll,ZLAPv) + CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) + CALL CLEANLIST_ll(TZFIELDS_ll) ! -PRVS = PRVS + MYM(PNU*ZLAPv) + PRVS = PRVS + MYM(PNU*ZLAPv) ENDIF @@ -297,31 +296,32 @@ ENDIF IKB = JPVEXT + 1 IKE = SIZE(PWT,3) - JPVEXT - ZTMP = PWT + ZTMP = MZF(1,IKU,1,PWT) ! -IF (ODRAG) THEN + IF (ODRAG) THEN WHERE (PDRAG==-1) ZTMP(:,:,IKB) = 0. ENDWHERE -ENDIF + ENDIF ! DO IK = 1,JPVEXT ZTMP(:,:,IK) = ZTMP(:,:,IKB) - ZTMP(:,:,IKE+IK) = ZTMP(:,:,IKE) + ZTMP(:,:,IKE+IK) = ZTMP(:,:,IKE) END DO ! ZTMP = MZM(1,IKU,1, PNU * & LAP_M(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,ZTMP) ) - +! DO IK = 1,JPVEXT ZTMP(:,:,IK) = ZTMP(:,:,IKB) ZTMP(:,:,IKE+IK) = ZTMP(:,:,IKE) END DO -PRWS = PRWS + ZTMP + PRWS = PRWS + ZTMP ! !!! Debug provisoire dans le cas ou le noslip est applique jusqu'au bord de !sortie de flux en OPEN - IF ( LWEST_ll().AND.(ODRAG).AND.(MINVAL(PDRAG(IIU,:))== -1)) THEN + IF ( LWEST_ll().AND.(ODRAG)) THEN + IF ( MINVAL(PDRAG(IIU,:))== -1) THEN DO JK=1,IKU WHERE(PDRAG(IIU,:)== -1) PRUS(IIU,:,JK) = PRUS(IIU-1,:,JK) @@ -329,6 +329,7 @@ PRWS = PRWS + ZTMP PRWS(IIU,:,JK) = PRWS(IIU-1,:,JK) ENDWHERE END DO + ENDIF ENDIF END IF ! -- GitLab