From 749a3b89ad622a2498ff510a7012d2d49146c8e1 Mon Sep 17 00:00:00 2001
From: Juan Escobar <escj@aero.obs-mip.fr>
Date: Mon, 11 Dec 2023 16:57:01 +0100
Subject: [PATCH] Juan 11/12/2024:condsamp.f90, PB Bitrepro -> replace SUM be
 SUM_DD_R2_ll & average on all interiors pts for NFINDTOP = 0 ou 2

---
 src/MNH/condsamp.f90 | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/MNH/condsamp.f90 b/src/MNH/condsamp.f90
index 7de29c114..8142daedc 100644
--- a/src/MNH/condsamp.f90
+++ b/src/MNH/condsamp.f90
@@ -70,6 +70,8 @@ USE MODD_DYN        , ONLY : XTSTEP_MODEL1
 USE MODD_CONDSAMP
 USE MODE_ll
 USE MODD_CST
+USE MODE_MPPDB
+USE MODE_REPRO_SUM, ONLY : SUM_DD_R2_ll
 !
 !*      0. DECLARATIONS
 !          ------------
@@ -98,7 +100,9 @@ REAL, DIMENSION(SIZE(XRT,1),SIZE(XRT,2),SIZE(XRT,3)) :: ZRT
 REAL, DIMENSION(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),SIZE(XSVT,4)) :: ZSVT
 REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZSUM,ZTHV
 REAL, DIMENSION(:,:,:), ALLOCATABLE  :: ZLVOCPEXNM,ZLSOCPEXNM ! Lv/Cp/EXNREF and Ls/Cp/EXNREF at t-1
-
+!
+CHARACTER(LEN=3) :: YJSV
+INTEGER          :: IIMAX_ll,IJMAX_ll
 !
 !--------------------------------------------------------------------------------------
 !
@@ -111,9 +115,16 @@ IKU = SIZE(XRT,3)
 IKB = 1 + JPVEXT
 IKE = IKU - JPVEXT
 CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
+CALL GET_GLOBALDIMS_ll ( IIMAX_ll,IJMAX_ll)
 !
 ZSVT(:,:,:,:) = XSVT(:,:,:,:)
 !
+IF (MPPDB_INITIALIZED) THEN
+DO JSV=NSV_CSBEG, NSV_CSEND
+   WRITE( YJSV, '( I3.3 )' ) JSV
+   CALL MPPDB_CHECK3D(ZSVT(:,:,:,JSV),"BEG CONDSAMP ZSVT"//YJSV,PRECISION)
+END DO
+END IF
 !
 !
 !*	1.  INITIALIZATION OF CONDITIONAL SAMPLING TRACERS
@@ -159,10 +170,10 @@ IF ( NSV_CS >= 2 ) THEN
     ZTHV(:,:,JK)=XTHT(:,:,JK) * ( 1. + XRV/XRD*XRT(:,:,JK,1) )  &
                            / ( 1. + ZSUM(:,:,JK) )
   END DO
-  ZTHVMEAN = SUM(ZTHV(:,:,2))/SIZE(ZTHV(:,:,2)) 
+  ZTHVMEAN = SUM_DD_R2_ll(ZTHV(IIB:IIE,IJB:IJE,2))/REAL(IIMAX_ll*IJMAX_ll)
   DO JK=3,IKE
      IF (ITOP == 0) THEN
-      ZDT     =  SUM(ZTHV(:,:,JK))/SIZE(ZTHV(:,:,JK))   
+        ZDT = SUM_DD_R2_ll(ZTHV(IIB:IIE,IJB:IJE,JK))/REAL(IIMAX_ll*IJMAX_ll)
       ZTHVMEAN =   (1.0/XZHAT(JK+1))* & 
                   (XZHAT(JK)*ZTHVMEAN + (XZHAT(JK+1)-XZHAT(JK))*ZDT)
       IF (ZDT > ZTHVMEAN + ZOFFSET ) THEN
@@ -181,7 +192,7 @@ IF ( NSV_CS >= 2 ) THEN
   !
   DO JK=1,IKE
     ! ZDT need to become positive at least once
-    ZDT = SUM((XTHT(:,:,JK+1)-XTHT(:,:,JK)))/SIZE(XTHT(:,:,JK))
+    ZDT = SUM_DD_R2_ll(XTHT(IIB:IIE,IJB:IJE,JK+1)-XTHT(IIB:IIE,IJB:IJE,JK))/REAL(IIMAX_ll*IJMAX_ll)     
     ZDT = ZDT/(XZHAT(JK+1)-XZHAT(JK))
     IF ( ZDT > ZMAXZDT ) THEN
       ITOP=JK
@@ -260,6 +271,12 @@ DO JSV=NSV_CSBEG, NSV_CSEND
    XRSVS(:,:,:,JSV) = XRSVS(:,:,:,JSV) + &
         XRHODJ(:,:,:)*(ZSVT(:,:,:,JSV)-XSVT(:,:,:,JSV))/PTSTEP
 END DO
+IF (MPPDB_INITIALIZED) THEN
+DO JSV=NSV_CSBEG, NSV_CSEND
+   WRITE( YJSV, '( I3.3 )' ) JSV
+   CALL MPPDB_CHECK3D(ZSVT(:,:,:,JSV),"END CONDSAMP ZSVT"//YJSV,PRECISION)
+END DO
+END IF
 !-------------------------------------------------------------------------------
 !
 !-------------------------------------------------------------------------------
-- 
GitLab