Skip to content
Snippets Groups Projects
Commit b24dac2a authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 17/06/2016: optimisations: removed unnecessary operations when...

Philippe 17/06/2016: optimisations: removed unnecessary operations when JSPL=K/ISPLIT, removed unnecessary initialisations
parent b9dad5cf
No related branches found
No related tags found
No related merge requests found
...@@ -17,7 +17,7 @@ INTERFACE ...@@ -17,7 +17,7 @@ INTERFACE
PRTHS, PRRS, PRTKES, PRSVS, & PRTHS, PRRS, PRTKES, PRSVS, &
PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV ) PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV )
! !
LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous
! file opening ! file opening
CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output
! FM-file ! FM-file
...@@ -161,7 +161,7 @@ IMPLICIT NONE ...@@ -161,7 +161,7 @@ IMPLICIT NONE
! !
!* 0.1 Declarations of dummy arguments : !* 0.1 Declarations of dummy arguments :
! !
LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous
! file opening ! file opening
CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output
! FM-file ! FM-file
...@@ -232,7 +232,7 @@ REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZSV ...@@ -232,7 +232,7 @@ REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZSV
! Guess at the sub time step ! Guess at the sub time step
REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZRRS_OTHER REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZRRS_OTHER
REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_OTHER REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_OTHER
! Tendencie since the beginning of the time step ! Tendencies since the beginning of the time step
REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZRRS_PPM REAL, DIMENSION(SIZE(PRT,1), SIZE(PRT,2), SIZE(PRT,3), SIZE(PRT,4) ) :: ZRRS_PPM
REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_PPM REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_PPM
! Guess at the end of the sub time step ! Guess at the end of the sub time step
...@@ -458,7 +458,7 @@ CALL PPM_RHODJ(HLBCX,HLBCY, ZRUCPPM, ZRVCPPM, ZRWCPPM, & ...@@ -458,7 +458,7 @@ CALL PPM_RHODJ(HLBCX,HLBCY, ZRUCPPM, ZRVCPPM, ZRWCPPM, &
ZTSTEP_PPM, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, & ZTSTEP_PPM, PRHODJ, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, &
ZRHOZ1, ZRHOZ2 ) ZRHOZ1, ZRHOZ2 )
! !
!* valuesw of the fields at the beginning of the time splitting loop !* values of the fields at the beginning of the time splitting loop
ZTH = PTHT ZTH = PTHT
ZTKE = PTKET ZTKE = PTKET
IF (KRR /=0 ) ZR = PRT IF (KRR /=0 ) ZR = PRT
...@@ -469,10 +469,10 @@ IF (GTKE) PRTKES_ADV(:,:,:) = 0. ...@@ -469,10 +469,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, KTCOUNT, ZRUCPPM, ZRVCPPM, ZRWCPPM, ZTSTEP_PPM, & CALL PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT, ZRUCPPM, ZRVCPPM, ZRWCPPM, ZTSTEP_PPM, &
...@@ -491,35 +491,36 @@ DO JSPL=1,KSPLIT ...@@ -491,35 +491,36 @@ 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
ZTH = ZTH + ( ZRTHS_PPM(:,:,:) + ZRTHS_OTHER(:,:,:) + PRTHS_CLD(:,:,:)) * & !
ZTSTEP_PPM / PRHODJ(:,:,:) ZTH = ZTH + ( ZRTHS_PPM(:,:,:) + ZRTHS_OTHER(:,:,:) + PRTHS_CLD(:,:,:)) * &
IF (GTKE) ZTKE = ZTKE + ( ZRTKES_PPM(:,:,:) + ZRTKES_OTHER(:,:,:) ) * ZTSTEP_PPM / PRHODJ(:,:,:) ZTSTEP_PPM / PRHODJ(:,:,:)
DO JR = 1, KRR IF (GTKE) ZTKE = ZTKE + ( ZRTKES_PPM(:,:,:) + ZRTKES_OTHER(:,:,:) ) * ZTSTEP_PPM / PRHODJ(:,:,:)
ZR(:,:,:,JR) = ZR(:,:,:,JR) + ( ZRRS_PPM(:,:,:,JR) + ZRRS_OTHER(:,:,:,JR) + PRRS_CLD(:,:,:,JR) ) & DO JR = 1, KRR
* ZTSTEP_PPM / PRHODJ(:,:,:) ZR(:,:,:,JR) = ZR(:,:,:,JR) + ( ZRRS_PPM(:,:,:,JR) + ZRRS_OTHER(:,:,:,JR) + PRRS_CLD(:,:,:,JR) ) &
END DO * ZTSTEP_PPM / PRHODJ(:,:,:)
DO JSV = 1, KSV END DO
ZSV(:,:,:,JSV) = ZSV(:,:,:,JSV) + ( ZRSVS_PPM(:,:,:,JSV) + ZRSVS_OTHER(:,:,:,JSV) + & DO JSV = 1, KSV
PRSVS_CLD(:,:,:,JSV) ) * ZTSTEP_PPM / PRHODJ(:,:,:) ZSV(:,:,:,JSV) = ZSV(:,:,:,JSV) + ( ZRSVS_PPM(:,:,:,JSV) + ZRSVS_OTHER(:,:,:,JSV) + &
END DO PRSVS_CLD(:,:,:,JSV) ) * ZTSTEP_PPM / PRHODJ(:,:,:)
! END DO
! 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, ZTKE, PTKET) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTH, PTHT )
DO JR = 1, KRR IF (GTKE) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTKE, PTKET)
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR)) DO JR = 1, KRR
END DO CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR))
DO JSV = 1, KSV END DO
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZSV(:,:,:,JSV), PSVT(:,:,:,JSV)) DO JSV = 1, KSV
END DO CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZSV(:,:,:,JSV), PSVT(:,:,:,JSV))
! END DO
! Exchanges fields between processors !
! ! Exchanges fields between processors
NULLIFY(TZFIELDS1_ll) !
NULLIFY(TZFIELDS1_ll)
!!$ IF(NHALO == 1) THEN !!$ IF(NHALO == 1) THEN
CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTH) CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTH)
IF (GTKE) CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTKE) IF (GTKE) CALL ADD3DFIELD_ll(TZFIELDS1_ll, ZTKE)
...@@ -532,6 +533,7 @@ DO JSPL=1,KSPLIT ...@@ -532,6 +533,7 @@ 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
! !
......
...@@ -286,22 +286,24 @@ DO JSPL=1,ISPLIT ...@@ -286,22 +286,24 @@ DO JSPL=1,ISPLIT
PRVS(:,:,:) = PRVS(:,:,:) + ZRVS_ADV(:,:,:) / ISPLIT PRVS(:,:,:) = PRVS(:,:,:) + ZRVS_ADV(:,:,:) / ISPLIT
PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_ADV(:,:,:) / ISPLIT PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_ADV(:,:,:) / ISPLIT
! IF (JSPL<ISPLIT) THEN
! Guesses for next time splitting loop !
! ! Guesses for next time splitting loop
ZU(:,:,:) = ZU(:,:,:) + ZTSTEP / ZMXM_RHODJ * & !
(ZRUS_OTHER(:,:,:) + ZRUS_ADV(:,:,:)) ZU(:,:,:) = ZU(:,:,:) + ZTSTEP / ZMXM_RHODJ * &
ZV(:,:,:) = ZV(:,:,:) + ZTSTEP / ZMYM_RHODJ * & (ZRUS_OTHER(:,:,:) + ZRUS_ADV(:,:,:))
(ZRVS_OTHER(:,:,:) + ZRVS_ADV(:,:,:)) ZV(:,:,:) = ZV(:,:,:) + ZTSTEP / ZMYM_RHODJ * &
ZW(:,:,:) = ZW(:,:,:) + ZTSTEP / ZMZM_RHODJ * & (ZRVS_OTHER(:,:,:) + ZRVS_ADV(:,:,:))
ZW(:,:,:) = ZW(:,:,:) + ZTSTEP / ZMZM_RHODJ * &
(ZRWS_OTHER(:,:,:) + ZRWS_ADV(:,:,:)) (ZRWS_OTHER(:,:,:) + ZRWS_ADV(:,:,:))
! !
! Top and bottom Boundaries ! Top and bottom Boundaries
! !
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZU, PUT, 'U' ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZU, PUT, 'U' )
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZV, PVT, 'V' ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZV, PVT, 'V' )
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZW, PWT, 'W' ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZW, PWT, 'W' )
ZW (:,:,IKE+1 ) = 0. ZW (:,:,IKE+1 ) = 0.
END IF
! !
! End of the time splitting loop ! End of the time splitting loop
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