From be045b6fe797bfb45b31b3a66638dd1c7ae4550e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Vi=C3=A9?= <benoit.vie@meteo.fr>
Date: Wed, 6 Jul 2022 11:30:07 +0200
Subject: [PATCH] bugfix riming array syntax conversion add ICE3 droplet
 accretion formulation in LIMA1M

---
 src/MNH/ini_lima_warm.f90             |  5 +++++
 src/MNH/lima_droplets_accretion.f90   | 13 +++++++++++--
 src/MNH/lima_droplets_riming_snow.f90 | 22 +++++++++++-----------
 src/MNH/modd_param_lima_warm.f90      |  3 ++-
 4 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/src/MNH/ini_lima_warm.f90 b/src/MNH/ini_lima_warm.f90
index 08d1e85a5..5ef1977aa 100644
--- a/src/MNH/ini_lima_warm.f90
+++ b/src/MNH/ini_lima_warm.f90
@@ -361,6 +361,11 @@ XACCR_CSMALL2 = XKERA1*ZGAMR(3)
 XACCR_RSMALL1 = XKERA1*ZGAMC(5)*XRHOLW*(XPI/6.0)
 XACCR_RSMALL2 = XKERA1*ZGAMC(2)*ZGAMR(3)*XRHOLW*(XPI/6.0)
 !
+! ICE3 accretion of cloud droplets by rain drops
+!
+XFCACCR  = (XPI/4.0)*XCCR*XCR*(ZRHO00**XCEXVT)*MOMG(XALPHAR,XNUR,XDR+2.0)
+XEXCACCR = -XDR-3.0
+!
 ! Cst for the raindrop self-collection/breakup process
 !
 XSCBU2 = XKERA2*ZGAMR(2)
diff --git a/src/MNH/lima_droplets_accretion.f90 b/src/MNH/lima_droplets_accretion.f90
index d97d99d3e..f7e518b64 100644
--- a/src/MNH/lima_droplets_accretion.f90
+++ b/src/MNH/lima_droplets_accretion.f90
@@ -64,11 +64,12 @@ END MODULE MODI_LIMA_DROPLETS_ACCRETION
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_PARAM_LIMA,      ONLY : XRTMIN, XCTMIN, LKHKO
+USE MODD_PARAM_LIMA,      ONLY : XRTMIN, XCTMIN, LKHKO, NMOM_C, NMOM_R, XCEXVT
 USE MODD_PARAM_LIMA_WARM, ONLY : XLAUTR, XAUTO1, XLAUTR_THRESHOLD, &
                                  XACCR4, XACCR5, XACCR3, XACCR2, XACCR1, &
                                  XACCR_CLARGE1, XACCR_CLARGE2, XACCR_RLARGE1, XACCR_RLARGE2, &
-                                 XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2
+                                 XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2, &
+                                 XFCACCR, XEXCACCR
 !
 IMPLICIT NONE
 !
@@ -128,6 +129,14 @@ IF ( LKHKO ) THEN
 !
    END WHERE
 !
+ELSE IF (NMOM_C.EQ.1 .AND. NMOM_R.EQ.1) THEN
+   GACCR(:) = PRRT(:)>XRTMIN(3) .AND. &
+              PRCT(:)>XRTMIN(2)
+   WHERE ( GACCR(:) )
+      P_RC_ACCR(:) = XFCACCR * PRCT(:)      &
+                   * PLBDR(:)**XEXCACCR     &
+                   * PRHODREF(:)**(-XCEXVT)
+   END WHERE
 ELSE
 !
    WHERE( PRCT(:)>XRTMIN(2) .AND. PCCT(:)>XCTMIN(2) .AND. PRRT(:)>XRTMIN(3) .AND. PCRT(:)>XCTMIN(3) .AND. LDCOMPUTE(:) )
diff --git a/src/MNH/lima_droplets_riming_snow.f90 b/src/MNH/lima_droplets_riming_snow.f90
index d5d32ad8f..4e650743e 100644
--- a/src/MNH/lima_droplets_riming_snow.f90
+++ b/src/MNH/lima_droplets_riming_snow.f90
@@ -185,11 +185,11 @@ DO JI = 1, SIZE(PRCT)
    !
       P_TH_RIM(JI) = - P_RC_RIM(JI)*(PLSFACT(JI)-PLVFACT(JI))
    ELSE
-      P_TH_RIM(:) = 0.
-      P_RC_RIM(:) = 0.
-      P_CC_RIM(:) = 0.
-      P_RS_RIM(:) = 0.
-      P_RG_RIM(:) = 0.
+      P_TH_RIM(JI) = 0.
+      P_RC_RIM(JI) = 0.
+      P_CC_RIM(JI) = 0.
+      P_RS_RIM(JI) = 0.
+      P_RG_RIM(JI) = 0.
    END IF
 !
 !*       Hallett-Mossop ice production (HMS)  
@@ -214,14 +214,14 @@ DO JI = 1, SIZE(PRCT)
          P_RI_HMS(JI) = P_CI_HMS(JI) * XMNU0                                     ! RCHMSI
          P_RS_HMS(JI) = - P_RI_HMS(JI)
       ELSE
-         P_RI_HMS(:) = 0.
-         P_CI_HMS(:) = 0.
-         P_RS_HMS(:) = 0.
+         P_RI_HMS(JI) = 0.
+         P_CI_HMS(JI) = 0.
+         P_RS_HMS(JI) = 0.
       END IF
    ELSE
-      P_RI_HMS(:) = 0.
-      P_CI_HMS(:) = 0.
-      P_RS_HMS(:) = 0.
+      P_RI_HMS(JI) = 0.
+      P_CI_HMS(JI) = 0.
+      P_RS_HMS(JI) = 0.
    END IF
 END DO
 !
diff --git a/src/MNH/modd_param_lima_warm.f90 b/src/MNH/modd_param_lima_warm.f90
index aafcb4ed6..8089a5f5d 100644
--- a/src/MNH/modd_param_lima_warm.f90
+++ b/src/MNH/modd_param_lima_warm.f90
@@ -96,7 +96,8 @@ REAL,SAVE :: XAUTO1, XAUTO2, XCAUTR,           & ! Constants for cloud droplet
 REAL,SAVE :: XACCR1, XACCR2, XACCR3,           & ! Constants for the accretion
 	     XACCR4, XACCR5, XACCR6,           & ! process
              XACCR_CLARGE1, XACCR_CLARGE2, XACCR_RLARGE1, XACCR_RLARGE2, &
-             XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2
+             XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2, &
+             XFCACCR, XEXCACCR
 !
 REAL,SAVE :: XSCBU2, XSCBU3,                   & ! Constants for the raindrop
              XSCBU_EFF1, XSCBU_EFF2, XSCBUEXP1   ! breakup-selfcollection: SCBU
-- 
GitLab