From 693af57c432af273a51516226a97705fafcb853c Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Thu, 10 Apr 2014 14:28:14 +0000
Subject: [PATCH]  Christine 10/04/2014 : introduction of GETSVCONV

---
 src/MNH/ini_deep_convection.f90 | 13 +++++++------
 src/MNH/ini_modeln.f90          | 10 +++++-----
 src/MNH/modd_getn.f90           |  4 ++++
 src/MNH/read_desfmn.f90         |  8 ++++++--
 4 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/src/MNH/ini_deep_convection.f90 b/src/MNH/ini_deep_convection.f90
index 118fbe383..d3e9e033e 100644
--- a/src/MNH/ini_deep_convection.f90
+++ b/src/MNH/ini_deep_convection.f90
@@ -13,7 +13,7 @@ INTERFACE
                                      PDRICONV,PPRCONV,PPRSCONV,PPACCONV,       &
                                      PUMFCONV,PDMFCONV,PMFCONV,PPRLFLXCONV,PPRSFLXCONV,&
                                      PCAPE,KCLTOPCONV,KCLBASCONV,              &
-                                     TPDTDCONV, OCHTRANS, PDSVCONV,            &
+                                     TPDTDCONV, HGETSVCONV, PDSVCONV,          &
                                      OCH_CONV_LINOX, PIC_RATE, PCG_RATE,       &
                                      PIC_TOTAL_NUMBER, PCG_TOTAL_NUMBER        )
 !
@@ -24,7 +24,7 @@ CHARACTER (LEN=*),      INTENT(IN) :: HLUOUT    ! name for output-listing
                                                 !  of nested models
 LOGICAL,                INTENT(IN) :: OINIDCONV ! switch to initialize or read
 TYPE (DATE_TIME),       INTENT(IN) :: TPDTCUR   ! Current date and time
-LOGICAL,                INTENT(IN) :: OCHTRANS  ! flag for chemical tracers
+CHARACTER (LEN=*),      INTENT(IN) :: HGETSVCONV ! GET indicator for SVCONV
 !
 TYPE (DATE_TIME),       INTENT(OUT):: TPDTDCONV ! date and time of the 
                                                 ! last deep convection call
@@ -66,7 +66,7 @@ END MODULE MODI_INI_DEEP_CONVECTION
                                      PDRICONV,PPRCONV,PPRSCONV,PPACCONV,       &
                                      PUMFCONV,PDMFCONV,PMFCONV,PPRLFLXCONV,PPRSFLXCONV,&
                                      PCAPE,KCLTOPCONV,KCLBASCONV,              &
-                                     TPDTDCONV, OCHTRANS, PDSVCONV,            &
+                                     TPDTDCONV, HGETSVCONV, PDSVCONV,          &
                                      OCH_CONV_LINOX, PIC_RATE, PCG_RATE,       &
                                      PIC_TOTAL_NUMBER, PCG_TOTAL_NUMBER        )
 !     ##########################################################################
@@ -142,7 +142,7 @@ CHARACTER (LEN=*),      INTENT(IN) :: HLUOUT    ! name for output-listing
                                                 !  of nested models
 LOGICAL,                INTENT(IN) :: OINIDCONV ! switch to initialize or read
 TYPE (DATE_TIME),       INTENT(IN) :: TPDTCUR   ! Current date and time
-LOGICAL,                INTENT(IN) :: OCHTRANS  ! flag for chemical tracers
+CHARACTER (LEN=*),      INTENT(IN) :: HGETSVCONV ! GET indicator for SVCONV
 !
 TYPE (DATE_TIME),       INTENT(OUT):: TPDTDCONV ! date and time of the 
                                                 ! last deep convection call
@@ -322,7 +322,8 @@ ELSE
   END IF
 !
 !
-  IF ( OCHTRANS .AND. NSV > 0 ) THEN
+ SELECT CASE(HGETSVCONV)
+  CASE('READ')
     IGRID=1      
     DO JSV = 1, NSV_USER
       WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV
@@ -401,7 +402,7 @@ ELSE
       CALL FMREAD(HINIFILE,YRECFM,HLUOUT,'XY',PDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
-  END IF
+ END SELECT
 !
 !
 END IF
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index e4c1e905c..363d5f4ee 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -705,8 +705,8 @@ END IF
 ALLOCATE(XPABSM(IIU,IJU,IKU)) ; XPABSM = 0.0
 ALLOCATE(XPABST(IIU,IJU,IKU)) ; XPABST = 0.0
 !
-ALLOCATE(XRT(IIU,IJU,IKU,NRR))
-ALLOCATE(XRRS(IIU,IJU,IKU,NRR))
+ALLOCATE(XRT(IIU,IJU,IKU,NRR)) ;     XRT = 0.0
+ALLOCATE(XRRS(IIU,IJU,IKU,NRR)) ;    XRRS = 0.0
 ALLOCATE(XRRS_CLD(IIU,IJU,IKU,NRR)); XRRS_CLD = 0.0
 !
 IF (CTURB /= 'NONE' .AND. NRR>1) THEN
@@ -723,8 +723,8 @@ ELSE
   ALLOCATE(XCLDFR(0,0,0))
 END IF
 !
-ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
-ALLOCATE(XRSVS(IIU,IJU,IKU,NSV))
+ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ;     XSVT  = 0.
+ALLOCATE(XRSVS(IIU,IJU,IKU,NSV));     XRSVS = 0.
 ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0
 !
 IF (LPASPOL) THEN
@@ -1977,7 +1977,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
                            XDRICONV,XPRCONV,XPRSCONV,XPACCONV,       &
                            XUMFCONV,XDMFCONV,XMFCONV,XPRLFLXCONV,XPRSFLXCONV,&
                            XCAPE,NCLTOPCONV,NCLBASCONV,              &
-                           TDTDCONV,LCHTRANS,XDSVCONV,               &
+                           TDTDCONV, CGETSVCONV, XDSVCONV,           &
                            LCH_CONV_LINOX, XIC_RATE, XCG_RATE,       &
                            XIC_TOTAL_NUMBER, XCG_TOTAL_NUMBER        )
 
diff --git a/src/MNH/modd_getn.f90 b/src/MNH/modd_getn.f90
index 583abdaf5..7a583779d 100644
--- a/src/MNH/modd_getn.f90
+++ b/src/MNH/modd_getn.f90
@@ -77,6 +77,8 @@ TYPE GET_t
   CHARACTER (LEN=4)  :: CGETINPRC,CGETINPRR,CGETINPRS !  Get indicator for
                                                  ! 2D precip fields
   CHARACTER (LEN=4)  :: CGETINPRG,CGETINPRH
+  CHARACTER (LEN=4)  :: CGETSVCONV ! Get indicator for
+                                   ! SV deep convection (LCHTRANS)
   CHARACTER (LEN=4), DIMENSION(:), POINTER :: CGETSVT=>NULL() !  Get indicator 
                                 ! for the Scalar Var. at time t
   CHARACTER (LEN=4) :: CGETLSUM, CGETLSVM, CGETLSWM   !  Get indicator for 
@@ -116,6 +118,7 @@ CHARACTER (LEN=4), POINTER :: CGETRIT=>NULL(),CGETRST=>NULL(),CGETRGT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETRHT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETINPRC=>NULL(), CGETINPRR=>NULL(), CGETINPRS=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETINPRG=>NULL(), CGETINPRH=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETSVCONV=>NULL()
 CHARACTER (LEN=4), DIMENSION(:), POINTER :: CGETSVT=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETLSUM=>NULL(), CGETLSVM=>NULL(), CGETLSWM=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETLSTHM=>NULL(), CGETLSRVM=>NULL()
@@ -164,6 +167,7 @@ CGETINPRR=>GET_MODEL(KTO)%CGETINPRR
 CGETINPRS=>GET_MODEL(KTO)%CGETINPRS
 CGETINPRG=>GET_MODEL(KTO)%CGETINPRG
 CGETINPRH=>GET_MODEL(KTO)%CGETINPRH
+CGETSVCONV=>GET_MODEL(KTO)%CGETSVCONV
 CGETSVT=>GET_MODEL(KTO)%CGETSVT
 CGETLSUM=>GET_MODEL(KTO)%CGETLSUM
 CGETLSVM=>GET_MODEL(KTO)%CGETLSVM
diff --git a/src/MNH/read_desfmn.f90 b/src/MNH/read_desfmn.f90
index 953cd209c..960404a5e 100644
--- a/src/MNH/read_desfmn.f90
+++ b/src/MNH/read_desfmn.f90
@@ -16,7 +16,7 @@ INTERFACE
       SUBROUTINE READ_DESFM_n(KMI,HDESFM,HLUOUT,HCONF,OFLAT,OUSERV,              &
                    OUSERC,OUSERR,OUSERI,OUSECI,OUSERS,OUSERG,OUSERH,             &
                    OUSECHEM,OUSECHAQ,OUSECHIC,OCH_PH,OCH_CONV_LINOX,OSALT,       &
-                   ODEPOS_SLT,ODUST,ODEPOS_DST,                                  &
+                   ODEPOS_SLT,ODUST,ODEPOS_DST, OCHTRANS,                        &
                    OORILAM,ODEPOS_AER,OLG,OPASPOL,                               &
 #ifdef MNH_FOREFIRE
                    OFOREFIRE,                                                    &
@@ -52,6 +52,7 @@ LOGICAL,            INTENT(OUT) :: OFOREFIRE! ForeFire flag
 #endif
 LOGICAL,            INTENT(OUT) :: OCONDSAMP! Conditional sampling flag
 LOGICAL,            INTENT(OUT) :: OORILAM  ! Orilam flag
+LOGICAL,            INTENT(OUT) :: OCHTRANS ! Deep convection on scalar
 LOGICAL,DIMENSION(JPMODELMAX),INTENT(OUT) :: ODEPOS_DST    ! Dust Wet Deposition flag
 LOGICAL,DIMENSION(JPMODELMAX),INTENT(OUT) :: ODEPOS_SLT    ! Sea Salt Wet Deposition flag
 LOGICAL,DIMENSION(JPMODELMAX),INTENT(OUT) :: ODEPOS_AER    ! Aerosols Wet Deposition flag
@@ -78,7 +79,7 @@ END MODULE MODI_READ_DESFM_n
       SUBROUTINE READ_DESFM_n(KMI,HDESFM,HLUOUT,HCONF,OFLAT,OUSERV,              &
                    OUSERC,OUSERR,OUSERI,OUSECI,OUSERS,OUSERG,OUSERH,             &
                    OUSECHEM,OUSECHAQ,OUSECHIC,OCH_PH,OCH_CONV_LINOX,OSALT,       &
-                   ODEPOS_SLT,ODUST,ODEPOS_DST,                                  &
+                   ODEPOS_SLT,ODUST,ODEPOS_DST, OCHTRANS,                        &
                    OORILAM,ODEPOS_AER,OLG,OPASPOL,                               &
 #ifdef MNH_FOREFIRE
                    OFOREFIRE,                                                    &
@@ -281,6 +282,8 @@ LOGICAL,            INTENT(OUT) :: OFOREFIRE ! ForeFire flag
 LOGICAL,            INTENT(OUT) :: OCONDSAMP! Conditional sampling flag
 LOGICAL,            INTENT(OUT) :: ODUST    ! Dust flag
 LOGICAL,            INTENT(OUT) :: OORILAM  ! Dust flag
+LOGICAL,            INTENT(OUT) :: OCHTRANS ! Deep convection on scalar
+                                            ! variables flag 
 LOGICAL,DIMENSION(JPMODELMAX),INTENT(OUT) :: ODEPOS_DST    ! Dust Wet Deposition flag
 LOGICAL,DIMENSION(JPMODELMAX),INTENT(OUT) :: ODEPOS_SLT    ! Sea Salt Wet Deposition flag
 LOGICAL,DIMENSION(JPMODELMAX),INTENT(OUT) :: ODEPOS_AER    ! Aerosols Wet Deposition flag
@@ -498,6 +501,7 @@ ODUST    = LDUST
 ODEPOS_DST(KMI)    = LTEMPDEPOS_DST(KMI)
 ODEPOS_SLT(KMI)    = LTEMPDEPOS_SLT(KMI)
 ODEPOS_AER(KMI)    = LTEMPDEPOS_AER(KMI)
+OCHTRANS = LCHTRANS
 OSALT    = LSALT
 OORILAM  = LORILAM
 OLG      = LLG
-- 
GitLab