Skip to content
Snippets Groups Projects
Commit d4b7d37a authored by Gaelle DELAUTIER's avatar Gaelle DELAUTIER
Browse files

Christine 25/11/2016 : Correction on the flag for Strang splitting to insure...

Christine 25/11/2016 : Correction on the flag for Strang splitting to insure reproducibility between START and RESTA
parent 15b3dbe1
No related branches found
No related tags found
No related merge requests found
...@@ -473,10 +473,10 @@ IF (GTKE) PRTKES_ADV(:,:,:) = 0. ...@@ -473,10 +473,10 @@ IF (GTKE) PRTKES_ADV(:,:,:) = 0.
!* time splitting loop !* time splitting loop
DO JSPL=1,KSPLIT DO JSPL=1,KSPLIT
! !
!ZRTHS_PPM(:,:,:) = 0. ZRTHS_PPM(:,:,:) = 0.
!ZRTKES_PPM(:,:,:) = 0. ZRTKES_PPM(:,:,:) = 0.
!IF (KRR /=0) ZRRS_PPM(:,:,:,:) = 0. IF (KRR /=0) ZRRS_PPM(:,:,:,:) = 0.
!IF (KSV /=0) ZRSVS_PPM(:,:,:,:) = 0. IF (KSV /=0) ZRSVS_PPM(:,:,:,:) = 0.
! !
IF (LNEUTRAL) ZTH=ZTH-PTHVREF !* To be removed with the new PPM scheme ? IF (LNEUTRAL) ZTH=ZTH-PTHVREF !* To be removed with the new PPM scheme ?
CALL PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR,ZRUCPPM, ZRVCPPM, ZRWCPPM, PTSTEP,ZTSTEP_PPM, & CALL PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR,ZRUCPPM, ZRVCPPM, ZRWCPPM, PTSTEP,ZTSTEP_PPM, &
...@@ -495,7 +495,6 @@ DO JSPL=1,KSPLIT ...@@ -495,7 +495,6 @@ DO JSPL=1,KSPLIT
IF (KRR /=0) PRRS (:,:,:,:) = PRRS (:,:,:,:) + ZRRS_PPM (:,:,:,:) / KSPLIT IF (KRR /=0) PRRS (:,:,:,:) = PRRS (:,:,:,:) + ZRRS_PPM (:,:,:,:) / KSPLIT
IF (KSV /=0 ) PRSVS (:,:,:,:) = PRSVS (:,:,:,:) + ZRSVS_PPM (:,:,:,:) / KSPLIT IF (KSV /=0 ) PRSVS (:,:,:,:) = PRSVS (:,:,:,:) + ZRSVS_PPM (:,:,:,:) / KSPLIT
! !
IF (JSPL<KSPLIT) THEN
! !
! Guesses of the field inside the time splitting loop ! Guesses of the field inside the time splitting loop
! !
...@@ -514,7 +513,7 @@ DO JSPL=1,KSPLIT ...@@ -514,7 +513,7 @@ DO JSPL=1,KSPLIT
! Top and bottom Boundaries and LBC for the guesses ! Top and bottom Boundaries and LBC for the guesses
! !
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTH, PTHT ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTH, PTHT )
IF (GTKE) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTKE, PTKET) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTKE, PTKET)
DO JR = 1, KRR DO JR = 1, KRR
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR)) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR))
END DO END DO
...@@ -537,7 +536,6 @@ DO JSPL=1,KSPLIT ...@@ -537,7 +536,6 @@ DO JSPL=1,KSPLIT
CALL UPDATE_HALO_ll(TZFIELDS1_ll,IINFO_ll) CALL UPDATE_HALO_ll(TZFIELDS1_ll,IINFO_ll)
CALL CLEANLIST_ll(TZFIELDS1_ll) CALL CLEANLIST_ll(TZFIELDS1_ll)
!!$ END IF !!$ END IF
END IF
! !
END DO END DO
! !
......
...@@ -39,8 +39,8 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ...@@ -39,8 +39,8 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT
! !
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRTHS, PRTKES! Source terms REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES! Source terms
REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRRS REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS
! !
END SUBROUTINE PPM_MET END SUBROUTINE PPM_MET
! !
...@@ -131,8 +131,8 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ...@@ -131,8 +131,8 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT
! !
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRTHS, PRTKES! Source terms REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES! Source terms
REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRRS REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS
! !
!* 0.2 Declarations of local variables : !* 0.2 Declarations of local variables :
! !
...@@ -142,6 +142,11 @@ LOGICAL :: GTKEALLOC ! true if TKE arrays are not zero-sized ...@@ -142,6 +142,11 @@ LOGICAL :: GTKEALLOC ! true if TKE arrays are not zero-sized
! !
INTEGER :: IGRID ! localisation on the model grid INTEGER :: IGRID ! localisation on the model grid
! !
!* Variables specific to ppm scheme
!
! Advection source term calulated in the PPM algorithm
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
!
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
!* 1. COMPUTES THE DOMAIN DIMENSIONS !* 1. COMPUTES THE DOMAIN DIMENSIONS
...@@ -161,7 +166,9 @@ IGRID = 1 ...@@ -161,7 +166,9 @@ IGRID = 1
! !
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, & CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
PTSTEP_PPM,PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PTSTEP_PPM,PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
PRTHS, TPDTCUR, PCRU, PCRV, PCRW) ZSRC, TPDTCUR, PCRU, PCRV, PCRW)
! add the advection to the sources
PRTHS = PRTHS + ZSRC
! !
! !
! Turbulence variables ! Turbulence variables
...@@ -169,7 +176,8 @@ CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, ...@@ -169,7 +176,8 @@ CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP,
IF (GTKEALLOC) THEN IF (GTKEALLOC) THEN
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, & CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, &
PTSTEP_PPM,PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PTSTEP_PPM,PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
PRTKES, TPDTCUR, PCRU, PCRV, PCRW) ZSRC, TPDTCUR, PCRU, PCRV, PCRW)
PRTKES = PRTKES + ZSRC
! !
! !
END IF END IF
...@@ -179,10 +187,13 @@ END IF ...@@ -179,10 +187,13 @@ END IF
! Case with KRR moist variables ! Case with KRR moist variables
! !
DO JRR=1,KRR DO JRR=1,KRR
!
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, & CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, &
PRT(:,:,:,JRR), PRHODJ, PTSTEP, PTSTEP_PPM, & PRT(:,:,:,JRR), PRHODJ, PTSTEP, PTSTEP_PPM, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
PRRS(:,:,:,JRR), TPDTCUR, PCRU, PCRV, PCRW ) ZSRC, TPDTCUR, PCRU, PCRV, PCRW )
PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZSRC(:,:,:)
!
END DO END DO
! !
! !
......
...@@ -41,7 +41,7 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ...@@ -41,7 +41,7 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM
! !
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! Vars at t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! Vars at t
! !
REAL, DIMENSION(:,:,:,:), INTENT(OUT ) :: PRSVS ! Source terms REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS ! Source terms
! !
! !
END SUBROUTINE PPM_SCALAR END SUBROUTINE PPM_SCALAR
...@@ -129,7 +129,7 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM ...@@ -129,7 +129,7 @@ REAL, INTENT(IN) :: PTSTEP_PPM ! Time Step PPM
! !
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT
! !
REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRSVS ! Source terms REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS ! Source terms
! !
! !
!* 0.2 Declarations of local variables : !* 0.2 Declarations of local variables :
...@@ -138,6 +138,12 @@ INTEGER :: JSV ! Loop index for Scalar Variables ...@@ -138,6 +138,12 @@ INTEGER :: JSV ! Loop index for Scalar Variables
! !
INTEGER :: IGRID ! localisation on the model grid INTEGER :: IGRID ! localisation on the model grid
! !
!* Variables specific to ppm scheme
!
! Advection source term calulated in the PPM algorithm
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
!
!
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
!* 1. CALL THE ADVEC_PPM_ALGO ROUTINE FOR EACH FIELD !* 1. CALL THE ADVEC_PPM_ALGO ROUTINE FOR EACH FIELD
...@@ -148,10 +154,14 @@ IGRID = 1 ...@@ -148,10 +154,14 @@ IGRID = 1
! Case with KSV tracers ! Case with KSV tracers
! !
DO JSV=1,KSV DO JSV=1,KSV
!
CALL ADVEC_PPM_ALGO(HSV_ADV_SCHEME, HLBCX, HLBCY, IGRID, PSVT(:,:,:,JSV), & CALL ADVEC_PPM_ALGO(HSV_ADV_SCHEME, HLBCX, HLBCY, IGRID, PSVT(:,:,:,JSV), &
PRHODJ, PTSTEP, PTSTEP_PPM, & PRHODJ, PTSTEP, PTSTEP_PPM, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
PRSVS(:,:,:,JSV), TPDTCUR, PCRU, PCRV, PCRW) ZSRC, TPDTCUR, PCRU, PCRV, PCRW)
! add the advection to the sources
PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) + ZSRC(:,:,:)
!
END DO END DO
! !
! !
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment