From 54d4d5eabd41561f6af8725e84c1964c96d512a2 Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Tue, 26 Apr 2016 11:42:32 +0000
Subject: [PATCH] C.LAC 26/04/2016 : negative contribution to the budget
 splitted between advection, turbulence and microphysics for KHKO/C2R2

---
 src/MNH/advection_metsv.f90 | 39 ++++++++++++++++++++++----
 src/MNH/default_desfmn.f90  | 10 +++++++
 src/MNH/ini_budget.f90      | 55 ++++++++++++++++++++++++++++++++++---
 src/MNH/modd_budget.f90     | 12 +++++++-
 src/MNH/modn_budget.f90     |  9 ++++--
 5 files changed, 112 insertions(+), 13 deletions(-)

diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 5cee9d2d8..05db3f1b1 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -9,10 +9,10 @@
 !
 INTERFACE
       SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
-                            HMET_ADV_SCHEME,HSV_ADV_SCHEME, KSPLIT,            &
+                            HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT,    &
                             OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT,                 &
                             HLBCX, HLBCY, KRR, KSV, KTCOUNT, PTSTEP,           &
-                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT,             &
+                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT, PPABST,     &
                             PTHVREF, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,     &
                             PRTHS, PRRS, PRTKES, PRSVS,                        &
                             PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV         )
@@ -26,6 +26,7 @@ CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
 CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
                                         HSV_ADV_SCHEME, &  ! scheme applied 
                                         HUVW_ADV_SCHEME
+CHARACTER (LEN=4),      INTENT(IN)   :: HCLOUD      ! Kind of cloud parameterization                                
 !
 INTEGER,                INTENT(INOUT):: KSPLIT       ! Number of time splitting
                                                      ! for PPM advection
@@ -43,6 +44,7 @@ REAL,                     INTENT(IN)    :: PTSTEP
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET, PRHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST                 
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT , PSVT
                                                   ! Variables at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
@@ -63,10 +65,10 @@ END INTERFACE
 END MODULE MODI_ADVECTION_METSV
 !     ##########################################################################
       SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
-                            HMET_ADV_SCHEME,HSV_ADV_SCHEME, KSPLIT,            &
+                            HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT,    &
                             OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT,                 &
                             HLBCX, HLBCY, KRR, KSV, KTCOUNT, PTSTEP,           &
-                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT,             &
+                            PUT, PVT, PWT, PTHT, PRT, PTKET, PSVT, PPABST,     &
                             PTHVREF, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY,     &
                             PRTHS, PRRS, PRTKES, PRSVS,                        &
                             PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV         )
@@ -128,6 +130,7 @@ END MODULE MODI_ADVECTION_METSV
 !!                  04/2015  (J.Escobar) remove/commente some NHALO=1 test
 !!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!                  J.Escobar : 01/10/2015 : add computation of CFL for L1D case
+!!                  04/2016  (C.Lac)       : correction of negativity for KHKO
 !!
 !-------------------------------------------------------------------------------
 !
@@ -140,6 +143,7 @@ USE MODE_IO_ll
 USE MODD_PARAM_n
 USE MODD_CONF,  ONLY : LNEUTRAL,NHALO,L1D, L2D
 USE MODD_CTURB, ONLY : XTKEMIN
+USE MODD_CST 
 USE MODD_BUDGET
 !
 USE MODI_CONTRAV
@@ -165,6 +169,7 @@ CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
 CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
                                         HSV_ADV_SCHEME, &  ! scheme applied 
                                         HUVW_ADV_SCHEME
+CHARACTER (LEN=4),      INTENT(IN)   :: HCLOUD      ! Kind of cloud parameterization                                
 !
 INTEGER,                INTENT(INOUT):: KSPLIT       ! Number of time splitting
                                                      ! for PPM advection
@@ -182,6 +187,7 @@ REAL,                     INTENT(IN)    :: PTSTEP
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET, PRHODJ
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST                 
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT , PSVT
                                                   ! Variables at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
@@ -232,6 +238,7 @@ REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZRSVS_PP
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOX1,ZRHOX2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOY1,ZRHOY2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOZ1,ZRHOZ2
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZT,ZEXN,ZLV,ZLS,ZCPH
 ! Temporary advected rhodj for PPM routines
 !
 INTEGER :: JS,JR,JSV,JSPL  ! Loop index
@@ -250,7 +257,7 @@ CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 INTEGER             :: ILUOUT       ! logical unit
 INTEGER             :: ISPLIT_PPM   ! temporal time splitting 
-INTEGER         :: IIB, IIE, IJB, IJE
+INTEGER             :: IIB, IIE, IJB, IJE
 !-------------------------------------------------------------------------------
 !
 !*       0.     INITIALIZATION                        
@@ -556,6 +563,28 @@ IF (KRR>=7.AND.LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADV_BU_RRH')
 DO JSV=1,KSV
   IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADV_BU_RSV')
 END DO
+!
+IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) THEN
+  ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+  ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
+  ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
+  ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
+  ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+  DO JSV = 2, 3
+    WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
+      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
+             ZCPH(:,:,:) / ZEXN(:,:,:)
+      PRRS(:,:,:,JSV)  = 0.0
+      PRSVS(:,:,:,JSV) = 0.0
+    END WHERE
+  END DO
+!
+  IF (LBUDGET_TH) CALL BUDGET (PRTHS(:,:,:) , 4,'NEADV_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NEADV_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NEADV_BU_RRC')
+
+END IF
 
 
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 7837e3b5d..c99ba20e7 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -208,6 +208,7 @@ END MODULE MODI_DEFAULT_DESFM_n
 !!                   07/2013  (C.Lac) add WENO, LCHECK              
 !!                   07/2013  (Bosseur & Filippi) adds Forefire
 !!                   08/2015  (Redelsperger & Pianezze) add XPOND coefficient for LBC
+!!                   04/2016 (C.LAC) negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -584,6 +585,9 @@ IF (KMI == 1) THEN
   NHTURBTH = 0
   NDISSHTH = 0
   NNEGATH  = 0
+  NNEADVTH  = 0
+  NNETURTH  = 0
+  NNECONTH  = 0
   NREVATH  = 0
   NCONDTH  = 0
   NHENUTH  = 0
@@ -631,6 +635,9 @@ IF (KMI == 1) THEN
   NVTURBRV = 0
   NHTURBRV = 0
   NNEGARV  = 0
+  NNETURRV  = 0
+  NNECONRV  = 0
+  NNEADVRV  = 0
   NREVARV  = 0
   NCONDRV  = 0
   NHENURV  = 0
@@ -651,6 +658,9 @@ IF (KMI == 1) THEN
   NVTURBRC = 0
   NHTURBRC = 0
   NNEGARC  = 0
+  NNETURRC  = 0
+  NNECONRC  = 0
+  NNEADVRC  = 0
   NACCRRC  = 0
   NAUTORC  = 0
   NCONDRC  = 0
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index 6ea13fd11..691b05514 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -152,7 +152,9 @@ END MODULE MODI_INI_BUDGET
 !!      C .Lac          27/05/14    add negative corrections for chemical species
 !!      C.Lac           29/01/15  Correction for NSV_USER
 !!      J.Escobar       02/10/2015 modif for JPHEXT(JPVEXT) variable  
-!!      C.Lac           04/12/15  Correction for LSUPSAT  
+!!      C.Lac           04/12/15  Correction for LSUPSAT 
+!!                   04/2016 (C.LAC) negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2
+
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -769,11 +771,17 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF (HTURB /= 'NONE')     IPROACTV(4,IPROC) = NDISSHTH
   IPROC=IPROC+1
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
+          IPROACTV(4,IPROC) = NNETURTH
+  IPROC=IPROC+1
   IF ( HSCONV == 'EDKF' ) IPROACTV(4,IPROC) = NMAFLTH
   IPROC=IPROC+1
   IPROACTV(4,IPROC) = NADVTH
   IPROC=IPROC+1
-  IF (HCLOUD /= 'NONE')     IPROACTV(4,IPROC) = NNEGATH
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(4,IPROC) = NNEADVTH
+  IPROC=IPROC+1
+  IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
+          IPROACTV(4,IPROC) = NNEGATH
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'ICE' .OR. (HCLOUD == 'C2R2' .AND. (.NOT. LSUPSAT)) &
           .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) ) &
@@ -815,6 +823,8 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'KES' .OR.   &
       HCLOUD == 'REVE')   IPROACTV(4,IPROC) = NCONDTH                     
+  IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')) IPROACTV(4,IPROC) = NNECONTH
 !
   YWORK2(4,1) = 'INIF_'
   YWORK2(4,2) = 'ENDF_'
@@ -848,10 +858,14 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'DISSH_'
   IPROC=IPROC+1
+  YWORK2(4,IPROC) = 'NETUR_'
+  IPROC=IPROC+1
   YWORK2(4,IPROC) = 'MAFL_'
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(4,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(4,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'HENU_'
@@ -889,6 +903,8 @@ IF (LBU_RTH) THEN
   YWORK2(4,IPROC) = 'CDEPI_'
   IPROC=IPROC+1
   YWORK2(4,IPROC) = 'COND_'
+  IPROC=IPROC+1
+  YWORK2(4,IPROC) = 'NECON_'
 !
   YEND_COMMENT(4) = 'BU_RTH'
   NBUPROCNBR(4) = 3
@@ -1018,11 +1034,17 @@ IF (LBU_RRV) THEN
     END IF
   END IF 
   IPROC=IPROC+1 
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
+   IPROACTV(6,IPROC) = NNETURRV
+  IPROC=IPROC+1 
   IF ( HSCONV == 'EDKF' ) IPROACTV(6,IPROC) = NMAFLRV
   IPROC=IPROC+1 
   IPROACTV(6,IPROC) = NADVRV
+  IPROC=IPROC+1   
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(6,IPROC) = NNEADVRV
   IPROC=IPROC+1 
-  IF ( HCLOUD /= 'NONE' ) IPROACTV(6,IPROC) = NNEGARV
+  IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
+     IPROACTV(6,IPROC) = NNEGARV
   IPROC=IPROC+1   
   IF ((HCLOUD == 'C2R2'  .AND. (.NOT. LSUPSAT)) &
           .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) &
@@ -1041,6 +1063,9 @@ IF (LBU_RRV) THEN
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'ICE') IPROACTV(6,IPROC) = NCDEPIRV 
   IPROC=IPROC+1
+  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2')) &
+          IPROACTV(6,IPROC) = NNECONRV
+  IPROC=IPROC+1   
 !
   YWORK2(6,1) = 'INIF_'
   YWORK2(6,2) = 'ENDF_'
@@ -1068,10 +1093,14 @@ IF (LBU_RRV) THEN
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'HTURB_'
   IPROC=IPROC+1
+  YWORK2(6,IPROC) = 'NETUR_'
+  IPROC=IPROC+1
   YWORK2(6,IPROC) = 'MAFL_'
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(6,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(6,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'HENU_'
@@ -1085,6 +1114,8 @@ IF (LBU_RRV) THEN
   YWORK2(6,IPROC) = 'COND_'
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'CDEPI_'
+  IPROC=IPROC+1
+  YWORK2(6,IPROC) = 'NECON_'
 !
   YEND_COMMENT(6) = 'BU_RRV'
   NBUPROCNBR(6) = 3
@@ -1137,9 +1168,16 @@ IF (LBU_RRC) THEN
     END IF
   END IF 
   IPROC=IPROC+1
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
+      IPROACTV(7,IPROC) = NNETURRC
+  IPROC=IPROC+1
   IPROACTV(7,IPROC) = NADVRC
   IPROC=IPROC+1
-  IF( HCLOUD /= 'NONE' ) IPROACTV(7,IPROC)  = NNEGARC
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  &
+      IPROACTV(7,IPROC) = NNEADVRC
+  IPROC=IPROC+1
+  IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
+     IPROACTV(7,IPROC)  = NNEGARC
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'KES' )                      IPROACTV(7,IPROC  ) = NACCRRC
   IPROC=IPROC+1
@@ -1178,6 +1216,9 @@ IF (LBU_RRC) THEN
   IF (HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO' .OR. &
       HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC
   IPROC=IPROC+1
+  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2')) &
+     IPROACTV(7,IPROC) = NNECONRC
+  IPROC=IPROC+1
 !
   YWORK2(7,1) = 'INIF_'
   YWORK2(7,2) = 'ENDF_'
@@ -1199,8 +1240,12 @@ IF (LBU_RRC) THEN
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'HTURB_'
   IPROC=IPROC+1
+  YWORK2(7,IPROC) = 'NETUR_'
+  IPROC=IPROC+1
   YWORK2(7,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(7,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(7,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'ACCR_'
@@ -1232,6 +1277,8 @@ IF (LBU_RRC) THEN
   YWORK2(7,IPROC) = 'CDEPI_'
   IPROC=IPROC+1
   YWORK2(7,IPROC) = 'COND_'
+  IPROC=IPROC+1
+  YWORK2(7,IPROC) = 'NECON_'
 !
   YEND_COMMENT(7) = 'BU_RRC'
   NBUPROCNBR(7) = 3
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 89fd0c237..f836d15c2 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -36,7 +36,8 @@
 !!      V. Masson       06/11/02    new flags for budget calls and time counters
 !!      V. Masson       27/11/02    add 2way nesting effect
 !!      P. Jabouille    07/07/04    add budget terms for microphysics
-!!      C. Barthe       19/11/09    add budget terms for electricity              
+!!      C. Barthe       19/11/09    add budget terms for electricity          
+!!      C.Lac           04/2016  negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -251,6 +252,9 @@ INTEGER, SAVE :: NHTURBTH   ! horizontal turbulence
 INTEGER, SAVE :: NVTURBTH   ! vertical turbulence
 INTEGER, SAVE :: NDISSHTH   ! dissipative heating
 INTEGER, SAVE :: NNEGATH    ! negative correction induced by hydrometeors
+INTEGER, SAVE :: NNETURTH    ! negative correction induced by hydrometeors
+INTEGER, SAVE :: NNEADVTH    ! negative correction induced by hydrometeors
+INTEGER, SAVE :: NNECONTH    ! negative correction induced by hydrometeors
 INTEGER, SAVE :: NREVATH    ! rain evaporation
 INTEGER, SAVE :: NCONDTH    ! evaporation/condensation
 INTEGER, SAVE :: NHENUTH    ! HEterogenous NUcleation ICE3
@@ -308,6 +312,9 @@ INTEGER, SAVE :: NMAFLRV   ! Mass flux
 INTEGER, SAVE :: NHTURBRV  ! horizontal turbulence 
 INTEGER, SAVE :: NVTURBRV  ! vertical turbulence
 INTEGER, SAVE :: NNEGARV   ! negative correction                            
+INTEGER, SAVE :: NNETURRV   ! negative correction                            
+INTEGER, SAVE :: NNECONRV   ! negative correction                            
+INTEGER, SAVE :: NNEADVRV   ! negative correction                            
 INTEGER, SAVE :: NREVARV   ! rain evaporation
 INTEGER, SAVE :: NCONDRV   ! evaporation/condensation
 INTEGER, SAVE :: NHENURV   ! HEterogenous NUcleation ICE3
@@ -331,6 +338,9 @@ INTEGER, SAVE :: NDCONVRC   ! Deep CONVection
 INTEGER, SAVE :: NHTURBRC   ! horizontal turbulence 
 INTEGER, SAVE :: NVTURBRC   ! vertical turbulence
 INTEGER, SAVE :: NNEGARC    ! negative correction                            
+INTEGER, SAVE :: NNETURRC    ! negative correction                            
+INTEGER, SAVE :: NNECONRC    ! negative correction                            
+INTEGER, SAVE :: NNEADVRC    ! negative correction                            
 INTEGER, SAVE :: NACCRRC    ! accretion
 INTEGER, SAVE :: NAUTORC    ! autoconversion
 INTEGER, SAVE :: NCONDRC    ! evaporation/condensation
diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90
index cfaa4223d..4f15755ee 100644
--- a/src/MNH/modn_budget.f90
+++ b/src/MNH/modn_budget.f90
@@ -225,6 +225,7 @@
 !!      J.-P. Pinty 18/02/97  add forcing and ice
 !!      J.-P. Pinty 25/09/00  add budget terms for C2R2
 !!      D. Gazen    22/01/01  add NCHEMSV
+!!      C.Lac           04/2016  negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -251,7 +252,7 @@ NAMELIST/NAM_BU_RTH/LBU_RTH, NASSETH, NNESTTH, NADVTH, NFRCTH, &
                    NVTURBTH, NDISSHTH, NNEGATH, NREVATH, NCONDTH, NHENUTH, NHONTH, &
                    NSFRTH, NDEPSTH, NDEPGTH,NRIMTH, NACCTH, NCFRZTH, NWETGTH, &
                    NDRYGTH, NGMLTTH, NIMLTTH, NBERFITH, NCDEPITH, NWETHTH, NHMLTTH, &
-                   NMAFLTH
+                   NMAFLTH, NNETURTH, NNEADVTH,NNECONTH
 !
 NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE,    &
                      NFRCTKE, NDIFTKE, NRELTKE, NDRAGTKE,                           &
@@ -259,12 +260,14 @@ NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE,    &
 !
 NAMELIST/NAM_BU_RRV/LBU_RRV, NASSERV, NNESTRV, NADVRV, NFRCRV, &
                     NNUDRV, NDIFRV, NRELRV, NDCONVRV, NHTURBRV, NVTURBRV, NNEGARV, &
-                    NREVARV, NCONDRV, NHENURV, NDEPSRV, NDEPGRV, NCDEPIRV, NMAFLRV
+                    NREVARV, NCONDRV, NHENURV, NDEPSRV, NDEPGRV, NCDEPIRV, NMAFLRV, &
+                    NNETURRV, NNEADVRV,NNECONRV
 ! 
 NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NADVRC, NFRCRC, &
                     NDIFRC, NRELRC, NDCONVRC, NHTURBRC, NVTURBRC, NNEGARC, NACCRRC, &
                     NAUTORC, NCONDRC, NHONRC, NRIMRC, NWETGRC, NDRYGRC, NIMLTRC,   &
-                    NBERFIRC, NCDEPIRC, NHENURC, NSEDIRC, NWETHRC
+                    NBERFIRC, NCDEPIRC, NHENURC, NSEDIRC, NWETHRC, NNETURRC, &
+                    NNEADVRC,NNECONRC
 ! 
 NAMELIST/NAM_BU_RRR/LBU_RRR, NASSERR, NNESTRR, NADVRR, NFRCRR, &
                     NDIFRR, NRELRR, NNEGARR, NACCRRR, NAUTORR, NREVARR, NSEDIRR,    &
-- 
GitLab