From dca5f90d6b3c451467ddf73ce8b7fdcfec670d1e Mon Sep 17 00:00:00 2001
From: VIE Benoit <vie@sxphynh>
Date: Mon, 30 Jan 2023 10:45:05 +0100
Subject: [PATCH] bugfix sedimentation (init pfpr + size zwsedr) & init zri_in
 in lima_adjust_split

---
 src/common/micro/lima.F90               |  2 +-
 src/common/micro/lima_adjust_split.F90  |  6 ++----
 src/common/micro/lima_sedimentation.F90 | 12 +++++++-----
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/common/micro/lima.F90 b/src/common/micro/lima.F90
index d23466e4a..1944e9d42 100644
--- a/src/common/micro/lima.F90
+++ b/src/common/micro/lima.F90
@@ -694,7 +694,7 @@ if ( BUCONF%lbu_enable ) then
       call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_nh), 'SEDI', zchs(:, :, :) * prhodj(:, :, :) )
   end if
 end if
-
+PFPR(:,:,:,:)=0.
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = CST%XCPD + (CST%XCPV * ZRVS + CST%XCL * (ZRCS + ZRRS) + CST%XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (NMOM_C.GE.1 .AND. LSEDC) CALL LIMA_SEDIMENTATION(D, CST, &
diff --git a/src/common/micro/lima_adjust_split.F90 b/src/common/micro/lima_adjust_split.F90
index a84bc26d6..c63833838 100644
--- a/src/common/micro/lima_adjust_split.F90
+++ b/src/common/micro/lima_adjust_split.F90
@@ -501,12 +501,10 @@ DO JITER =1,ITERMAX
 !*       3.     FIRST ORDER SUBGRID CONDENSATION SCHEME
 !               ---------------------------------------
 !
-   ZRV=PRVS*PTSTEP
-   ZRC=PRCS*PTSTEP
+   ZRV_IN=PRVS*PTSTEP
    ZRV2=PRVT
+   ZRC_IN=PRCS*PTSTEP
    ZRC2=PRCT
-   ZRV_IN=ZRV
-   ZRC_IN=ZRC
    IF (NMOM_I.EQ.1) THEN
       ZRI_IN=PRIS*PTSTEP
       GUSERI=.TRUE.
diff --git a/src/common/micro/lima_sedimentation.F90 b/src/common/micro/lima_sedimentation.F90
index 55304ba39..22a347365 100644
--- a/src/common/micro/lima_sedimentation.F90
+++ b/src/common/micro/lima_sedimentation.F90
@@ -122,9 +122,10 @@ LOGICAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
                            :: GSEDIM      ! Test where to compute the SED processes
 REAL,    DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
                            :: ZW,       & ! Work array
-                              ZWSEDR,   & ! Sedimentation of MMR
-                              ZWSEDC,   & ! Sedimentation of number conc.
                               ZWDT        ! Temperature change
+REAL,    DIMENSION(D%NIT,D%NJT,0:D%NKT+1) &
+                           :: ZWSEDR,   & ! Sedimentation of MMR
+                              ZWSEDC      ! Sedimentation of number conc.
 !
 REAL, DIMENSION(:), ALLOCATABLE         &
                            :: ZRS,      & ! m.r. source
@@ -155,7 +156,8 @@ ZTSPLITG= PTSTEP / REAL(NSPLITSED(KID))
 !
 ZWDT=0.
 PINPR(:,:) = 0.
-PFPR(:,:,:) = 0.
+ZWSEDR(:,:,:) = 0.
+ZWSEDC(:,:,:) = 0.
 !
 PRS(:,:,:) = PRS(:,:,:) * PTSTEP
 IF (KMOMENTS==2) PCS(:,:,:) = PCS(:,:,:) * PTSTEP
@@ -233,10 +235,10 @@ DO JN = 1 ,  NSPLITSED(KID)
          ZZX(:) = ZCC(:) * ZZX(:)
       END IF
 
-      ZWSEDR(:,:,:) = UNPACK( ZZW(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
+      ZWSEDR(:,:,1:D%NKT) = UNPACK( ZZW(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
       ZWSEDR(:,:,D%NKTB:D%NKTE) = MIN( ZWSEDR(:,:,D%NKTB:D%NKTE), PRS(:,:,D%NKTB:D%NKTE) * PRHODREF(:,:,D%NKTB:D%NKTE) / ZW(:,:,D%NKTB:D%NKTE) )
       IF (KMOMENTS==2) THEN
-         ZWSEDC(:,:,:) = UNPACK( ZZX(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
+         ZWSEDC(:,:,1:D%NKT) = UNPACK( ZZX(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
          ZWSEDC(:,:,D%NKTB:D%NKTE) = MIN( ZWSEDC(:,:,D%NKTB:D%NKTE), PCS(:,:,D%NKTB:D%NKTE) * PRHODREF(:,:,D%NKTB:D%NKTE) / ZW(:,:,D%NKTB:D%NKTE) )
       END IF
       
-- 
GitLab