From 0032eb9019b73b1425dfec39cdcfdad896eabccb Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 17 Jun 2016 10:06:37 +0200
Subject: [PATCH] Philippe 17/06/2016: optimisation: change variable status
 INOUT->OUT, replace update by affectation, removed intermediate variable

---
 src/MNH/ppm_met.f90    | 25 +++++++------------------
 src/MNH/ppm_scalar.f90 | 16 +++-------------
 2 files changed, 10 insertions(+), 31 deletions(-)

diff --git a/src/MNH/ppm_met.f90 b/src/MNH/ppm_met.f90
index 65eed307e..d89ff1700 100644
--- a/src/MNH/ppm_met.f90
+++ b/src/MNH/ppm_met.f90
@@ -36,8 +36,8 @@ REAL,                     INTENT(IN)    :: PTSTEP ! Single Time step
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET        ! Vars at t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT 
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES! Source terms
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS 
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PRTHS, PRTKES! Source terms
+REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRRS 
 !
 END SUBROUTINE PPM_MET   
 !
@@ -124,8 +124,8 @@ REAL,                     INTENT(IN)    :: PTSTEP ! Time step
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET ! Vars at t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT 
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES! Source terms
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS 
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PRTHS, PRTKES! Source terms
+REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRRS 
 !
 !*       0.2   Declarations of local variables :
 !
@@ -135,11 +135,6 @@ LOGICAL :: GTKEALLOC     ! true if TKE arrays are not zero-sized
 !
 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
@@ -159,9 +154,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)
-! add the advection to the sources
-PRTHS = PRTHS +  ZSRC 
+                    PRTHS, KTCOUNT, PCRU, PCRV, PCRW)
 !
 !
 ! Turbulence variables
@@ -169,8 +162,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)
-  PRTKES = PRTKES + ZSRC
+                       PRTKES, KTCOUNT, PCRU, PCRV, PCRW)
 !
 !
 END IF
@@ -180,13 +172,10 @@ END IF
 ! Case with KRR moist variables
 !
 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                 )
-   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZSRC(:,:,:)
-!
+                       PRRS(:,:,:,JRR), KTCOUNT, PCRU, PCRV, PCRW                 )
 END DO
 !
 !
diff --git a/src/MNH/ppm_scalar.f90 b/src/MNH/ppm_scalar.f90
index 25f08aba4..99951ba52 100644
--- a/src/MNH/ppm_scalar.f90
+++ b/src/MNH/ppm_scalar.f90
@@ -38,7 +38,7 @@ REAL,                     INTENT(IN)    :: PTSTEP ! Time step
 !
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT         ! Vars at t
 !
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS ! Source terms
+REAL, DIMENSION(:,:,:,:), INTENT(OUT  ) :: PRSVS ! Source terms
 !
 !
 END SUBROUTINE PPM_SCALAR
@@ -123,7 +123,7 @@ REAL,                     INTENT(IN)    :: PTSTEP ! Time step
 !
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT             
 !
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS         ! Source terms
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)   :: PRSVS         ! Source terms
 !
 !
 !*       0.2   Declarations of local variables :
@@ -132,12 +132,6 @@ INTEGER :: JSV           ! Loop index for Scalar Variables
 !
 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
@@ -148,14 +142,10 @@ IGRID = 1
 ! Case with KSV tracers
 !
 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)
-! add the advection to the sources
-   PRSVS(:,:,:,JSV) =  PRSVS(:,:,:,JSV) + ZSRC(:,:,:)   
-!
+                       PRSVS(:,:,:,JSV), KTCOUNT, PCRU, PCRV, PCRW)
 END DO
 !
 !
-- 
GitLab