diff --git a/src/MNH/advec_ppm_algo.f90 b/src/MNH/advec_ppm_algo.f90 index 5bbeadcee81c155e0cfdc6b115eb81d97e210548..b7eb4415ff508d1e5c77e8d135c171e4ee3eb2bc 100644 --- a/src/MNH/advec_ppm_algo.f90 +++ b/src/MNH/advec_ppm_algo.f90 @@ -14,8 +14,8 @@ ! INTERFACE ! - SUBROUTINE ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, & - PRHODJ, PTSTEP, & + SUBROUTINE ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT,& + PRHODJ, PTSTEP, PTSTEP_PPM, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,& PSRC, TPDTCUR, PCRU, PCRV, PCRW) ! @@ -34,7 +34,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! density REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1, PRHOX2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1, PRHOY2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1, PRHOZ2 -REAL, INTENT(IN) :: PTSTEP ! Time step +REAL, INTENT(IN) :: PTSTEP ! Time step model +REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection @@ -48,7 +49,7 @@ END MODULE MODI_ADVEC_PPM_ALGO ! ! ########################################################################## SUBROUTINE ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, & - PRHODJ, PTSTEP, & + PRHODJ, PTSTEP, PTSTEP_PPM, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,& PSRC, TPDTCUR, PCRU, PCRV, PCRW) ! ########################################################################## @@ -101,7 +102,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! density REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1, PRHOX2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1, PRHOY2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1, PRHOZ2 -REAL, INTENT(IN) :: PTSTEP ! Time step +REAL, INTENT(IN) :: PTSTEP ! Time step model +REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection @@ -137,19 +139,19 @@ CASE('PPM_00') !* 1. ADVECTION IN X DIRECTION ! ------------------------ ! - PSRC = PPM_S0_X(HLBCX, KGRID, PSRC, PCRU, PRHODJ, PTSTEP) + PSRC = PPM_S0_X(HLBCX, KGRID, PSRC, PCRU, PRHODJ, PTSTEP_PPM) PSRC = PSRC / PRHOX1 ! !* 2. ADVECTION IN Y DIRECTION ! ------------------------ ! - PSRC = PPM_S0_Y(HLBCY, KGRID, PSRC, PCRV, PRHOX1, PTSTEP) + PSRC = PPM_S0_Y(HLBCY, KGRID, PSRC, PCRV, PRHOX1, PTSTEP_PPM) PSRC = PSRC / PRHOY1 ! !* 3. ADVECTION IN Z DIRECTION ! ------------------------ ! - PSRC = PPM_S0_Z(KGRID, PSRC, PCRW, PRHOY1, PTSTEP) + PSRC = PPM_S0_Z(KGRID, PSRC, PCRW, PRHOY1, PTSTEP_PPM) PSRC = PSRC / PRHOZ1 ! ELSE @@ -158,19 +160,19 @@ CASE('PPM_00') !* 1. ADVECTION IN Z DIRECTION ! ------------------------ ! - PSRC = PPM_S0_Z(KGRID, PSRC, PCRW, PRHODJ, PTSTEP) + PSRC = PPM_S0_Z(KGRID, PSRC, PCRW, PRHODJ, PTSTEP_PPM) PSRC = PSRC / PRHOZ2 ! !* 2. ADVECTION IN Y DIRECTION ! ------------------------ ! - PSRC = PPM_S0_Y(HLBCY, KGRID, PSRC, PCRV, PRHOZ2, PTSTEP) + PSRC = PPM_S0_Y(HLBCY, KGRID, PSRC, PCRV, PRHOZ2, PTSTEP_PPM) PSRC = PSRC / PRHOY2 ! !* 3. ADVECTION IN X DIRECTION ! ------------------------ ! - PSRC = PPM_S0_X(HLBCX, KGRID, PSRC, PCRU, PRHOY2, PTSTEP) + PSRC = PPM_S0_X(HLBCX, KGRID, PSRC, PCRU, PRHOY2, PTSTEP_PPM) PSRC = PSRC / PRHOX2 ! END IF @@ -185,21 +187,21 @@ CASE('PPM_01') ! ------------------------ ! PSRC = (PSRC * PRHODJ) - & - PPM_01_X(HLBCX, KGRID, PSRC, PCRU, PRHODJ, PTSTEP) + PPM_01_X(HLBCX, KGRID, PSRC, PCRU, PRHODJ, PTSTEP_PPM) PSRC = PSRC / PRHOX1 ! !* 2. ADVECTION IN Y DIRECTION ! ------------------------ ! PSRC = (PSRC * PRHOX1) - & - PPM_01_Y(HLBCY, KGRID, PSRC, PCRV, PRHOX1, PTSTEP) + PPM_01_Y(HLBCY, KGRID, PSRC, PCRV, PRHOX1, PTSTEP_PPM) PSRC = PSRC / PRHOY1 ! !* 3. ADVECTION IN Z DIRECTION ! ------------------------ ! PSRC = (PSRC * PRHOY1) - & - PPM_01_Z(KGRID, PSRC, PCRW, PRHOY1, PTSTEP) + PPM_01_Z(KGRID, PSRC, PCRW, PRHOY1, PTSTEP_PPM) PSRC = PSRC / PRHOZ1 ! ELSE @@ -208,21 +210,21 @@ CASE('PPM_01') ! ------------------------ ! PSRC = (PSRC * PRHODJ) - & - PPM_01_Z(KGRID, PSRC, PCRW, PRHODJ, PTSTEP) + PPM_01_Z(KGRID, PSRC, PCRW, PRHODJ, PTSTEP_PPM) PSRC = PSRC / PRHOZ2 ! !* 2. ADVECTION IN Y DIRECTION ! ------------------------ ! PSRC = (PSRC * PRHOZ2) - & - PPM_01_Y(HLBCY, KGRID, PSRC, PCRV, PRHOZ2, PTSTEP) + PPM_01_Y(HLBCY, KGRID, PSRC, PCRV, PRHOZ2, PTSTEP_PPM) PSRC = PSRC / PRHOY2 ! !* 3. ADVECTION IN X DIRECTION ! ------------------------ ! PSRC = (PSRC * PRHOY2) - & - PPM_01_X(HLBCX, KGRID, PSRC, PCRU, PRHOY2, PTSTEP) + PPM_01_X(HLBCX, KGRID, PSRC, PCRU, PRHOY2, PTSTEP_PPM) PSRC = PSRC / PRHOX2 ! END IF @@ -236,19 +238,19 @@ CASE('PPM_02') !* 1. ADVECTION IN X DIRECTION ! ------------------------ ! - PSRC = PPM_S1_X(HLBCX, KGRID, PSRC, PCRU, PRHODJ, PRHOX1, PTSTEP) + PSRC = PPM_S1_X(HLBCX, KGRID, PSRC, PCRU, PRHODJ, PRHOX1, PTSTEP_PPM) PSRC = PSRC / PRHOX1 ! !* 2. ADVECTION IN Y DIRECTION ! ------------------------ ! - PSRC = PPM_S1_Y(HLBCY, KGRID, PSRC, PCRV, PRHOX1, PRHOY1, PTSTEP) + PSRC = PPM_S1_Y(HLBCY, KGRID, PSRC, PCRV, PRHOX1, PRHOY1, PTSTEP_PPM) PSRC = PSRC / PRHOY1 ! !* 3. ADVECTION IN Z DIRECTION ! ------------------------ ! - PSRC = PPM_S1_Z(KGRID, PSRC, PCRW, PRHOY1, PRHOZ1, PTSTEP) + PSRC = PPM_S1_Z(KGRID, PSRC, PCRW, PRHOY1, PRHOZ1, PTSTEP_PPM) PSRC = PSRC / PRHOZ1 ! ELSE @@ -256,19 +258,19 @@ CASE('PPM_02') !* 1. ADVECTION IN Z DIRECTION ! ------------------------ ! - PSRC = PPM_S1_Z(KGRID, PSRC, PCRW, PRHODJ, PRHOZ2, PTSTEP) + PSRC = PPM_S1_Z(KGRID, PSRC, PCRW, PRHODJ, PRHOZ2, PTSTEP_PPM) PSRC = PSRC / PRHOZ2 ! !* 2. ADVECTION IN Y DIRECTION ! ------------------------ ! - PSRC = PPM_S1_Y(HLBCY, KGRID, PSRC, PCRV, PRHOZ2, PRHOY2, PTSTEP) + PSRC = PPM_S1_Y(HLBCY, KGRID, PSRC, PCRV, PRHOZ2, PRHOY2, PTSTEP_PPM) PSRC = PSRC / PRHOY2 ! !* 3. ADVECTION IN X DIRECTION ! ------------------------ ! - PSRC = PPM_S1_X(HLBCX, KGRID, PSRC, PCRU, PRHOY2, PRHOX2, PTSTEP) + PSRC = PPM_S1_X(HLBCX, KGRID, PSRC, PCRU, PRHOY2, PRHOX2, PTSTEP_PPM) PSRC = PSRC / PRHOX2 ! END IF @@ -283,6 +285,6 @@ END SELECT ! compatible to the rest of the model forcings, we need to substract the ! initial field, devide by dt and muliplty by RHODJ ! -PSRC = (PSRC - PFIELDT)*PRHODJ/PTSTEP +PSRC = (PSRC - PFIELDT)*PRHODJ/PTSTEP_PPM ! END SUBROUTINE ADVEC_PPM_ALGO diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index 61c14c18b04f53a2dc042b6f4472bf6324ced26a..8318e5f0559455e04f6816443730bcac41207f7f 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -479,12 +479,12 @@ DO JSPL=1,KSPLIT !IF (KSV /=0) ZRSVS_PPM(:,:,:,:) = 0. ! IF (LNEUTRAL) ZTH=ZTH-PTHVREF !* To be removed with the new PPM scheme ? - CALL PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR,ZRUCPPM, ZRVCPPM, ZRWCPPM, ZTSTEP_PPM, & - PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, & + CALL PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR,ZRUCPPM, ZRVCPPM, ZRWCPPM, PTSTEP,ZTSTEP_PPM, & + PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, & ZTH, ZTKE, ZR, ZRTHS_PPM, ZRTKES_PPM, ZRRS_PPM, HMET_ADV_SCHEME) IF (LNEUTRAL) ZTH=ZTH+PTHVREF !* To be removed with the new PPM scheme ? ! - CALL PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, ZRUCPPM, ZRVCPPM, ZRWCPPM, & + CALL PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, ZRUCPPM, ZRVCPPM, ZRWCPPM, PTSTEP, & ZTSTEP_PPM, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, & ZSV, ZRSVS_PPM, HSV_ADV_SCHEME ) ! diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index dc72033a8f91847af2ec524a917f9afdbf186e2c..b84f2e1bef42f8a46ab69ed416c84bd22743fff9 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -5,7 +5,6 @@ !----------------------------------------------------------------- !--------------- special set of characters for RCS information !----------------------------------------------------------------- -! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/modeln.f90,v $ $Revision: 1.3.2.5.2.5.2.9.2.12.2.5 $ !----------------------------------------------------------------- ! ################### MODULE MODI_MODEL_n @@ -1519,7 +1518,7 @@ CALL MPPDB_CHECK3DM("before ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ",PRECISION,& CALL ADVECTION_METSV ( CLUOUT, YFMFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, & CMET_ADV_SCHEME, CSV_ADV_SCHEME, CCLOUD, NSPLIT, & LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT, & - CLBCX, CLBCY, NRR, NSV, TDTCUR, XTSTEP, & + CLBCX, CLBCY, NRR, NSV, TDTCUR, XTSTEP, & XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT, XPABST, & XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY, & XRTHS, XRRS, XRTKES, XRSVS, & diff --git a/src/MNH/ppm_met.f90 b/src/MNH/ppm_met.f90 index 1e64016646f10c5dd6e3e40d68dbb3e374ded5b0..d97e2fd934972159f48356c3dcee125c185caf10 100644 --- a/src/MNH/ppm_met.f90 +++ b/src/MNH/ppm_met.f90 @@ -10,7 +10,7 @@ INTERFACE ! SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR, & - PCRU, PCRV, PCRW, PTSTEP, PRHODJ, & + PCRU, PCRV, PCRW, PTSTEP,PTSTEP_PPM, PRHODJ, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, & PRHOZ1, PRHOZ2, PTHT, PTKET, PRT, & PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME ) @@ -33,7 +33,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1,PRHOX2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1,PRHOY2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1,PRHOZ2 ! -REAL, INTENT(IN) :: PTSTEP ! Single Time step +REAL, INTENT(IN) :: PTSTEP ! Time step model +REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT @@ -49,7 +50,7 @@ END MODULE MODI_PPM_MET ! ! ###################################################################### SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR, & - PCRU, PCRV, PCRW, PTSTEP, PRHODJ, & + PCRU, PCRV, PCRW, PTSTEP,PTSTEP_PPM, PRHODJ, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, & PRHOZ1, PRHOZ2, PTHT, PTKET, PRT, & PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME ) @@ -124,7 +125,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1,PRHOX2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1,PRHOY2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1,PRHOZ2 ! -REAL, INTENT(IN) :: PTSTEP ! Time step +REAL, INTENT(IN) :: PTSTEP ! Time step model +REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT @@ -158,7 +160,7 @@ IGRID = 1 ! Potential temperature ! CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, & - PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & + PTSTEP_PPM,PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PRTHS, TPDTCUR, PCRU, PCRV, PCRW) ! ! @@ -166,7 +168,7 @@ CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, ! IF (GTKEALLOC) THEN CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, & - PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & + PTSTEP_PPM,PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PRTKES, TPDTCUR, PCRU, PCRV, PCRW) ! ! @@ -178,7 +180,7 @@ END IF ! DO JRR=1,KRR CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, & - PRT(:,:,:,JRR), PRHODJ, PTSTEP, & + PRT(:,:,:,JRR), PRHODJ, PTSTEP, PTSTEP_PPM, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PRRS(:,:,:,JRR), TPDTCUR, PCRU, PCRV, PCRW ) END DO diff --git a/src/MNH/ppm_scalar.f90 b/src/MNH/ppm_scalar.f90 index 463d3eec683b62cf172cdbf9ac98c1e8a924ba33..0c6ab86c00e8e30fbf181322630f8b9c98326c0b 100644 --- a/src/MNH/ppm_scalar.f90 +++ b/src/MNH/ppm_scalar.f90 @@ -10,11 +10,11 @@ ! INTERFACE ! - SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, & - PCRU, PCRV, PCRW, PTSTEP, PRHODJ, & - PRHOX1, PRHOX2, PRHOY1, PRHOY2, & - PRHOZ1, PRHOZ2, & - PSVT, PRSVS, HSV_ADV_SCHEME ) + SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, & + PCRU, PCRV, PCRW, PTSTEP, PTSTEP_PPM, & + PRHODJ, PRHOX1, PRHOX2, PRHOY1, PRHOY2,& + PRHOZ1, PRHOZ2, & + PSVT, PRSVS, HSV_ADV_SCHEME ) ! USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll USE MODD_TYPE_DATE, ONLY : DATE_TIME @@ -36,7 +36,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1,PRHOX2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1,PRHOY2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1,PRHOZ2 ! -REAL, INTENT(IN) :: PTSTEP ! Time step +REAL, INTENT(IN) :: PTSTEP ! Time step model +REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ! REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! Vars at t ! @@ -50,11 +51,11 @@ END INTERFACE END MODULE MODI_PPM_SCALAR ! ! ###################################################################### - SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, & - PCRU, PCRV, PCRW, PTSTEP, PRHODJ, & - PRHOX1, PRHOX2, PRHOY1, PRHOY2, & - PRHOZ1, PRHOZ2, & - PSVT, PRSVS, HSV_ADV_SCHEME ) + SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, & + PCRU, PCRV, PCRW, PTSTEP, PTSTEP_PPM, & + PRHODJ, PRHOX1, PRHOX2, PRHOY1, PRHOY2,& + PRHOZ1, PRHOZ2, & + PSVT, PRSVS, HSV_ADV_SCHEME ) ! ###################################################################### ! !!**** *PPM_SCALAR * @@ -123,7 +124,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1,PRHOX2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1,PRHOY2 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1,PRHOZ2 ! -REAL, INTENT(IN) :: PTSTEP ! Time step +REAL, INTENT(IN) :: PTSTEP ! Time step model +REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ! REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! @@ -147,8 +149,8 @@ IGRID = 1 ! DO JSV=1,KSV CALL ADVEC_PPM_ALGO(HSV_ADV_SCHEME, HLBCX, HLBCY, IGRID, PSVT(:,:,:,JSV), & - PRHODJ, PTSTEP, & - PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & + PRHODJ, PTSTEP, PTSTEP_PPM, & + PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PRSVS(:,:,:,JSV), TPDTCUR, PCRU, PCRV, PCRW) END DO !