Skip to content
Snippets Groups Projects
Commit 1789949e authored by Juan Escobar's avatar Juan Escobar
Browse files

Juan & C.Lac 23/11/2016: suite reproducibility , add PTSTEP_PPM

parent b3c5fa23
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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 )
!
......
......@@ -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
......
......@@ -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
!
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment