From 445eb9cffd708f6e3be58095bd38c26b7fb82b8d Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Tue, 19 Jan 2021 15:21:49 +0100
Subject: [PATCH] Philippe 19/01/2021: bugfix: correct several errors in
 conditions and order of budgets

(cherry picked from commit 070a018903f02a1a58d9ef27753efa2fc42726d1)
---
 src/MNH/ini_budget.f90 | 55 +++++++++++++++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 12 deletions(-)

diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index 0f54b3d5a..33615bd99 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -2375,7 +2375,7 @@ ELSE
   IPROC=IPROC+1
   IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NGMLTRG
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. .NOT. LRED ) IPROACTV(11,IPROC) = NWETHRG
+  IF( HCLOUD == 'ICE4' ) IPROACTV(11,IPROC) = NWETHRG
   IPROC=IPROC+1
   IF( HCLOUD == 'ICE4' .AND. LRED ) IPROACTV(11,IPROC) = NHGCVRG
   IPROC=IPROC+1
@@ -2572,7 +2572,8 @@ IF (LBU_RRH) THEN
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
           IPROACTV(12,IPROC) = NSEDIRH
   END IF
-      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(12,IPROC) = NNECONRH
+  IPROC=IPROC+1
+  IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(12,IPROC) = NNECONRH
 !
   YWORK2(12,1) = 'INIF_'
   YWORK2(12,2) = 'ENDF_'
@@ -2686,11 +2687,6 @@ IF (LBU_RSV) THEN
         IPROACTV(12+JSV,IPROC) = 3
       END IF
     END IF 
-    IPROC=IPROC+1
-    IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,IPROC)= NMAFLSV
-    IPROC=IPROC+1
-    IF ( HCLOUD /= 'LIMA' .AND. HCLOUD /= 'C2R2' .AND. HCLOUD /= 'KHKO' ) IPROACTV(12+JSV,IPROC)= NADVSV
-    IPROC=IPROC+1
 !
     YWORK2(12+JSV,1) = 'INIF_'
     YWORK2(12+JSV,2) = 'ENDF_'
@@ -2713,10 +2709,6 @@ IF (LBU_RSV) THEN
     YWORK2(12+JSV,IPROC) = 'VTURB_'
     IPROC=IPROC+1
     YWORK2(12+JSV,IPROC) = 'HTURB_'
-    IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'MAFL_'
-    IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'ADV_'
 !
 ! complete with the budget of other processes
 !
@@ -3010,6 +3002,9 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3034,6 +3029,9 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3074,6 +3072,9 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3112,6 +3113,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR)= NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3223,6 +3227,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3321,6 +3328,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3357,6 +3367,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3374,6 +3387,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3392,6 +3408,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3493,6 +3512,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3524,6 +3546,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3542,6 +3567,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
@@ -3560,6 +3588,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
       IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'MAFL_'
+      IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,ILAST_PROC_NBR) = NMAFLSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-- 
GitLab