Skip to content
Snippets Groups Projects
Commit e321c0eb authored by Gaelle TANGUY's avatar Gaelle TANGUY
Browse files

C.Lac 15/11/2016 : Correction on the flag for Strang splitting to insure...

C.Lac 15/11/2016 : Correction on the flag for Strang splitting to insure reproducibility between START and RESTA
parent cb0b90ab
No related branches found
No related tags found
No related merge requests found
......@@ -17,7 +17,9 @@ INTERFACE
SUBROUTINE ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, &
PRHODJ, PTSTEP, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,&
PSRC, KTCOUNT, PCRU, PCRV, PCRW)
PSRC, TPDTCUR, PCRU, PCRV, PCRW)
!
USE MODD_TIME, ONLY: DATE_TIME
!
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
......@@ -33,7 +35,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1, PRHOX2
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1, PRHOY2
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1, PRHOZ2
REAL, INTENT(IN) :: PTSTEP ! Time step
INTEGER, INTENT(IN) :: KTCOUNT ! iteration count
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
!
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection
!
......@@ -48,7 +50,7 @@ END MODULE MODI_ADVEC_PPM_ALGO
SUBROUTINE ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, &
PRHODJ, PTSTEP, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,&
PSRC, KTCOUNT, PCRU, PCRV, PCRW)
PSRC, TPDTCUR, PCRU, PCRV, PCRW)
! ##########################################################################
!!
!!**** *ADVEC_PPM_ALGO* - interface for 3D advection with PPM type scheme
......@@ -73,12 +75,12 @@ END MODULE MODI_ADVEC_PPM_ALGO
!!
!! MODIFICATIONS
!! -------------
! 10/16 (C.Lac) : Correction on the flag for Strang splitting to insure
! reproducibility between START and RESTA
!
!
!USE MODE_ll
USE MODD_TYPE_DATE
!
!USE MODD_CONF
!USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
!USE MODI_ADVEC_4TH_ORDER_AUX
USE MODI_SHUMAN
USE MODI_PPM
!
......@@ -100,7 +102,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1, PRHOX2
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1, PRHOY2
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1, PRHOZ2
REAL, INTENT(IN) :: PTSTEP ! Time step
INTEGER, INTENT(IN) :: KTCOUNT ! iteration count
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
!
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection
!
......@@ -108,7 +110,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection
!
!* 0.2 Declarations of local variables :
!
!INTEGER:: IW,IE,IS,IN,IT,IB,IWF,IEF,ISF,INF ! Coordinate of 4th order diffusion area
LOGICAL :: GFLAG ! Logical flag
!
!-------------------------------------------------------------------------------
!
......@@ -121,6 +123,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection
! ------------
!
PSRC = PFIELDT
GFLAG = ABS(MOD(TPDTCUR%TIME/PTSTEP,2.)-1.) .LE. 0.5
!
SELECT CASE (HMET_ADV_SCHEME)
!
......@@ -128,7 +131,8 @@ SELECT CASE (HMET_ADV_SCHEME)
!
CASE('PPM_00')
!
IF (MODULO(KTCOUNT,2) .EQ. 0) THEN ! JUANTEST50
! IF (MODULO(KTCOUNT,2) .EQ. 0) THEN ! JUANTEST50
IF (GFLAG ) THEN
!
!* 1. ADVECTION IN X DIRECTION
! ------------------------
......@@ -175,7 +179,7 @@ CASE('PPM_00')
!
CASE('PPM_01')
!
IF (MODULO(KTCOUNT,2) .EQ. 0) THEN
IF (GFLAG ) THEN
!
!* 1. ADVECTION IN X DIRECTION
! ------------------------
......@@ -227,7 +231,7 @@ CASE('PPM_01')
!
CASE('PPM_02')
!
IF (MODULO(KTCOUNT,2) .EQ. 0) THEN
IF (GFLAG ) THEN
!
!* 1. ADVECTION IN X DIRECTION
! ------------------------
......
......@@ -11,12 +11,14 @@ INTERFACE
SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT, &
OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT, &
HLBCX, HLBCY, KRR, KSV, KTCOUNT, PTSTEP, &
HLBCX, HLBCY, KRR, KSV, TPDTCUR, PTSTEP, &
PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT, PPABST, &
PTHVREF, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY, &
PRTHS, PRRS, PRTKES, PRSVS, &
PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV )
!
USE MODD_TYPE_DATE, ONLY: DATE_TIME
!
LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous
! file opening
CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output
......@@ -39,7 +41,7 @@ CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables
!
INTEGER, INTENT(IN) :: KTCOUNT
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
REAL, INTENT(IN) :: PTSTEP
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT , PVT , PWT
......@@ -67,7 +69,7 @@ END MODULE MODI_ADVECTION_METSV
SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT, &
OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT, &
HLBCX, HLBCY, KRR, KSV, KTCOUNT, PTSTEP, &
HLBCX, HLBCY, KRR, KSV, TPDTCUR, PTSTEP, &
PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT, PPABST, &
PTHVREF, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY, &
PRTHS, PRRS, PRTKES, PRSVS, &
......@@ -131,7 +133,8 @@ END MODULE MODI_ADVECTION_METSV
!! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
!! J.Escobar : 01/10/2015 : add computation of CFL for L1D case
!! 04/2016 (C.Lac) : correction of negativity for KHKO
!!
!! 10/2016 (C.Lac) Correction on the flag for Strang splitting
!! to insure reproducibility between START and RESTA
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
......@@ -145,6 +148,7 @@ USE MODD_CONF, ONLY : LNEUTRAL,NHALO,L1D, L2D
USE MODD_CTURB, ONLY : XTKEMIN
USE MODD_CST
USE MODD_BUDGET
USE MODD_TYPE_DATE, ONLY: DATE_TIME
!
USE MODI_CONTRAV
USE MODI_PPM_RHODJ
......@@ -183,7 +187,7 @@ CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables
!
INTEGER, INTENT(IN) :: KTCOUNT
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
REAL, INTENT(IN) :: PTSTEP
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT , PVT , PWT
......@@ -475,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, KTCOUNT, ZRUCPPM, ZRVCPPM, ZRWCPPM, ZTSTEP_PPM, &
PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
CALL PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR,ZRUCPPM, ZRVCPPM, ZRWCPPM, 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, KTCOUNT, ZRUCPPM, ZRVCPPM, ZRWCPPM, &
CALL PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, ZRUCPPM, ZRVCPPM, ZRWCPPM, &
ZTSTEP_PPM, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
ZSV, ZRSVS_PPM, HSV_ADV_SCHEME )
!
......
......@@ -9,18 +9,20 @@
!
INTERFACE
!
SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT, &
SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR, &
PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, &
PRHOZ1, PRHOZ2, PTHT, PTKET, PRT, &
PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME )
!
USE MODD_TYPE_DATE, ONLY: DATE_TIME
!
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
CHARACTER (LEN=6), INTENT(IN) :: HMET_ADV_SCHEME
!
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KTCOUNT! iteration count
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRU ! Courant
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRV ! numbers
......@@ -46,7 +48,7 @@ END INTERFACE
END MODULE MODI_PPM_MET
!
! ######################################################################
SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT, &
SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR, &
PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, &
PRHOZ1, PRHOZ2, PTHT, PTKET, PRT, &
......@@ -80,6 +82,8 @@ END MODULE MODI_PPM_MET
!! -------------
!! Original 11.05.2006. T.Maric
!! Modification : 11.2011 C.Lac, V.Masson : Advection of (theta_l,r_t)
!! 10/2016 (C.Lac) Correction on the flag for Strang splitting
!! to insure reproducibility between START and RESTA
!!
!-------------------------------------------------------------------------------
!
......@@ -90,6 +94,7 @@ END MODULE MODI_PPM_MET
!
USE MODD_PARAMETERS
USE MODD_CONF
USE MODD_TYPE_DATE, ONLY: DATE_TIME
!
USE MODI_SHUMAN
USE MODI_PPM
......@@ -108,7 +113,7 @@ CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
CHARACTER (LEN=6), INTENT(IN) :: HMET_ADV_SCHEME
!
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KTCOUNT! iteration count
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRU ! contravariant
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRV ! components
......@@ -159,7 +164,7 @@ IGRID = 1
!
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
ZSRC, TPDTCUR, PCRU, PCRV, PCRW)
! add the advection to the sources
PRTHS = PRTHS + ZSRC
!
......@@ -169,7 +174,7 @@ PRTHS = PRTHS + ZSRC
IF (GTKEALLOC) THEN
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
ZSRC, TPDTCUR, PCRU, PCRV, PCRW)
PRTKES = PRTKES + ZSRC
!
!
......@@ -184,7 +189,7 @@ DO JRR=1,KRR
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, &
PRT(:,:,:,JRR), PRHODJ, PTSTEP, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW )
ZSRC, TPDTCUR, PCRU, PCRV, PCRW )
PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZSRC(:,:,:)
!
END DO
......
......@@ -10,20 +10,22 @@
!
INTERFACE
!
SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, KTCOUNT, &
SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, &
PCRU, PCRV, PCRW, PTSTEP, 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
!
!
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
CHARACTER (LEN=6), INTENT(IN) :: HSV_ADV_SCHEME
!
INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables
INTEGER, INTENT(IN) :: KTCOUNT! iteration count
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRU ! Courant
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRV ! numbers
......@@ -48,7 +50,7 @@ END INTERFACE
END MODULE MODI_PPM_SCALAR
!
! ######################################################################
SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, KTCOUNT, &
SUBROUTINE PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, &
PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, &
PRHOZ1, PRHOZ2, &
......@@ -82,7 +84,8 @@ END MODULE MODI_PPM_SCALAR
!! -------------
!! Original 11.05.2006. T.Maric
!! Modification : 11.2011 C.Lac, V.Masson : Advection of (theta_l,r_t)
!!
!! 10/2016 (C.Lac) Correction on the flag for Strang splitting
!! to insure reproducibility between START and RESTA!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
......@@ -93,6 +96,7 @@ END MODULE MODI_PPM_SCALAR
USE MODD_PARAMETERS
USE MODD_CONF
USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
USE MODD_TYPE_DATE, ONLY: DATE_TIME
!
USE MODI_SHUMAN
USE MODI_PPM
......@@ -108,7 +112,7 @@ CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
CHARACTER (LEN=6), INTENT(IN) :: HSV_ADV_SCHEME
!
INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables
INTEGER, INTENT(IN) :: KTCOUNT! iteration count
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! current date and time
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRU ! contravariant
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRV ! components
......@@ -152,7 +156,7 @@ DO JSV=1,KSV
CALL ADVEC_PPM_ALGO(HSV_ADV_SCHEME, HLBCX, HLBCY, IGRID, PSVT(:,:,:,JSV), &
PRHODJ, PTSTEP, &
PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1, PRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
ZSRC, TPDTCUR, PCRU, PCRV, PCRW)
! add the advection to the sources
PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) + ZSRC(:,:,:)
!
......
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