From ffebb082460a016143ee9316a26b63aef03be213 Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Thu, 30 Jan 2014 14:29:30 +0000
Subject: [PATCH] Christine 30/01/2014 : BUG KHKO

---
 src/MNH/rain_khko.f90 | 86 +++++++++++++++++++++++--------------------
 1 file changed, 46 insertions(+), 40 deletions(-)

diff --git a/src/MNH/rain_khko.f90 b/src/MNH/rain_khko.f90
index cbae93173..95b7137c2 100644
--- a/src/MNH/rain_khko.f90
+++ b/src/MNH/rain_khko.f90
@@ -508,8 +508,6 @@ DO JN = 1 , KSPLITR
   END IF
 !
   ISEDIM = COUNTJV( GSEDIM(:,:,:),I1(:),I2(:),I3(:))
-!
-  IF( ISEDIM >= 1 ) THEN
 !
     IF( JN==1 ) THEN
       IF( OSEDC ) THEN
@@ -522,6 +520,11 @@ DO JN = 1 , KSPLITR
         ZW(:,:,JK) = ZTSPLITR/(PZZ(:,:,JK+1) -PZZ(:,:,JK))
       END DO
     END IF
+!
+  ZWSEDR(:,:,:) = 0.0
+  ZWSEDC(:,:,:) = 0.0
+!
+  IF( ISEDIM >= 1 ) THEN
 !
     ALLOCATE(ZRHODREF(ISEDIM))
     DO JL = 1,ISEDIM
@@ -543,8 +546,8 @@ DO JN = 1 , KSPLITR
       ALLOCATE(ZCCS(ISEDIM))
       ALLOCATE(ZLBDC(ISEDIM))
       DO JL = 1,ISEDIM
-        ZRCS(JL) = PRCT(I1(JL),I2(JL),I3(JL))
-        ZCCS(JL) = PCCT(I1(JL),I2(JL),I3(JL))
+        ZRCS(JL) = PRCS(I1(JL),I2(JL),I3(JL))
+        ZCCS(JL) = PCCS(I1(JL),I2(JL),I3(JL))
         ZLBDC(JL) = ZWLBDC(I1(JL),I2(JL),I3(JL))
       END DO
       WHERE( ZRCS(:)>XRTMIN(2) )
@@ -554,26 +557,31 @@ DO JN = 1 , KSPLITR
       END WHERE
       ZWSEDR(:,:,:) = UNPACK( ZZW1(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
       ZWSEDC(:,:,:) = UNPACK( ZZW2(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
-      ZWSEDR(:,:,:) = MAX(MIN(ZW(:,:,:)*ZWSEDR(:,:,:)/PRHODREF(:,:,:), &
-                PRCS(:,:,:)),0.0) 
-      ZWSEDC(:,:,:) = MAX(MIN(ZW(:,:,:)*ZWSEDC(:,:,:),PCCS(:,:,:)),0.0)
-!      
-!*       2.3     update the rain tendency
-!
-      DO JK = IKB , IKE
-        PRCS(:,:,JK) = PRCS(:,:,JK)+ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK)
-        PCCS(:,:,JK) = PCCS(:,:,JK)+ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK)
-      END DO
-      IF( JN.EQ.1 ) THEN
-        PINPRC(:,:) = ZWSEDR(:,:,IKB)/XRHOLW                           ! in m/s
-      END IF
       DEALLOCATE(ZRCS)
       DEALLOCATE(ZCCS)
       DEALLOCATE(ZLBDC)
     END IF
+!             
+   END IF
+!        
+   IF( OSEDC ) THEN
+     DO JK = IKB , IKE
+        PRCS(:,:,JK) = PRCS(:,:,JK) + ZW(:,:,JK)*    &
+                      (ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK))/PRHODREF(:,:,JK)
+        PCCS(:,:,JK) = PCCS(:,:,JK) + ZW(:,:,JK)*    &
+                      (ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK))
+     END DO
+!             
+     IF( JN.EQ.1 ) THEN
+        PINPRC(:,:) = ZWSEDR(:,:,IKB)/XRHOLW                           ! in m/s
+     END IF
+   END IF    
 !
 !*       2.22   for drizzle
 !
+  ZWSEDR(:,:,:) = 0.0
+  ZWSEDC(:,:,:) = 0.0
+  IF( ISEDIM >= 1 ) THEN
     ZZW1(:) = 0.0
     ZZW2(:) = 0.0
 !
@@ -583,8 +591,8 @@ DO JN = 1 , KSPLITR
       ALLOCATE(ZZVRR(ISEDIM))
       ALLOCATE(ZZVCR(ISEDIM))
       DO JL = 1,ISEDIM
-        ZRRS(JL) = PRRT(I1(JL),I2(JL),I3(JL))
-        ZCRS(JL) = PCRT(I1(JL),I2(JL),I3(JL))
+        ZRRS(JL) = PRRS(I1(JL),I2(JL),I3(JL))
+        ZCRS(JL) = PCRS(I1(JL),I2(JL),I3(JL))
         ZZVRR(JL) = ZVRR(I1(JL),I2(JL),I3(JL))
         ZZVCR(JL) = ZVCR(I1(JL),I2(JL),I3(JL))
       END DO
@@ -594,46 +602,44 @@ DO JN = 1 , KSPLITR
       END WHERE
       ZWSEDR(:,:,:) = UNPACK( ZZW1(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
       ZWSEDC(:,:,:) = UNPACK( ZZW2(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
-!
-      ZWSEDR(:,:,:) = MAX(MIN(ZW(:,:,:)*ZWSEDR(:,:,:)/PRHODREF(:,:,:),&
-                      PRRS(:,:,:)),0.0) 
-      ZWSEDC(:,:,:)= MAX(MIN(ZW(:,:,:)*ZWSEDC(:,:,:),PCRS(:,:,:)),0.0) 
-!      
-!*       2.3     update the rain tendency
-!
-      DO JK = IKB , IKE
-        PRRS(:,:,JK) = PRRS(:,:,JK) +ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK)
-        PCRS(:,:,JK) = PCRS(:,:,JK) +ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK)
-      END DO
 !
       DEALLOCATE(ZRRS)
       DEALLOCATE(ZCRS)
       DEALLOCATE(ZZVRR)
       DEALLOCATE(ZZVCR)
 !
-    ELSE
-      ZWSEDR(:,:,IKB) = 0.0
     END IF
+!
+    DEALLOCATE(ZRHODREF)
+    DEALLOCATE(ZZW1)
+    DEALLOCATE(ZZW2)
+    DEALLOCATE(ZZW3)
+!
+  END IF
+!
+!*       2.3     update the rain tendency
+!
+  DO JK = IKB , IKE
+        PRRS(:,:,JK) = PRRS(:,:,JK) + ZW(:,:,JK)* &
+                      (ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK))/PRHODREF(:,:,JK)
+        PCRS(:,:,JK) = PCRS(:,:,JK) + ZW(:,:,JK)* &
+                      (ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK))
+  END DO
 !
 !*       2.4     compute the explicit accumulated precipitations
 !         
-    IF( JN.EQ.1 ) THEN
+  IF( JN.EQ.1 ) THEN
       PINPRR(:,:) = ZWSEDR(:,:,IKB)/XRHOLW                           ! in m/s
       PINPRR3D(:,:,:) = ZWSEDR(:,:,:)/XRHOLW                           ! in m/s
-    END IF
+  END IF
 !
-    DEALLOCATE(ZRHODREF)
-    DEALLOCATE(ZZW1)
-    DEALLOCATE(ZZW2)
-    DEALLOCATE(ZZW3)
-    IF( JN==KSPLITR ) THEN
+  IF( JN==KSPLITR ) THEN
       IF( OSEDC ) THEN
         PRCS(:,:,:) = PRCS(:,:,:) / PTSTEP
         PCCS(:,:,:) = PCCS(:,:,:) / PTSTEP
       END IF
       PRRS(:,:,:) = PRRS(:,:,:) / PTSTEP
       PCRS(:,:,:) = PCRS(:,:,:) / PTSTEP
-    END IF
   END IF
 END DO
 !
-- 
GitLab