From eaa321c5ae5148082ae4ebb655cb701304e4d4d8 Mon Sep 17 00:00:00 2001
From: Gaelle DELAUTIER <gaelle.delautier@meteo.fr>
Date: Tue, 15 May 2018 14:31:35 +0200
Subject: [PATCH] C.Lac 15/5/2018 USPRES,VS_PRES,WS_PRES read/written only if
 CTEMP_SCHEME='LEFR

---
 src/MNH/read_field.f90 | 118 ++++++++++++++++++++++-------------------
 src/MNH/write_lfin.f90 |  41 +++++++-------
 2 files changed, 87 insertions(+), 72 deletions(-)

diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index 8551cd5f2..5036c52b9 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -271,6 +271,8 @@ USE MODD_PARAM_LIMA     , ONLY: NMOD_CCN, LSCAV, LAERO_MASS,                &
                                 NMOD_IFN, NMOD_IMM, NINDICE_CCN_IMM, LHHONI
 USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES
 USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES, CAERO_MASS
+USE MODD_PARAM_n,           ONLY: CSCONV
+USE MODD_ADV_n
 USE MODD_PASPOL
 USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES
 USE MODD_SALT
@@ -453,7 +455,7 @@ SELECT CASE(HGETTKET)
     ELSE
       CALL IO_READ_FIELD(TPINIFILE,'TKET',PTKET)
     END IF
-    IF (KMASDEV>50 .AND. (CCONF == 'RESTA')) THEN
+    IF (KMASDEV>50 .AND. (CCONF == 'RESTA') .AND. LSPLIT_CFL) THEN
       CALL IO_READ_FIELD(TPINIFILE,'TKEMS',PRTKEMS)
     END IF
   CASE('INIT')
@@ -1119,58 +1121,62 @@ END IF
 
 !
 IF (CCONF == 'RESTA') THEN
-  CALL IO_READ_FIELD(TPINIFILE,'US_PRES',PRUS_PRES)
-  CALL IO_READ_FIELD(TPINIFILE,'VS_PRES',PRVS_PRES)
-  CALL IO_READ_FIELD(TPINIFILE,'WS_PRES',PRWS_PRES)
-  CALL IO_READ_FIELD(TPINIFILE,'THS_CLD',PRTHS_CLD)
-  DO JRR = 1, SIZE(PRT,4)
-    SELECT CASE(JRR)
-      CASE (1)
-        CALL IO_READ_FIELD(TPINIFILE,'RVS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE (2)
-        CALL IO_READ_FIELD(TPINIFILE,'RCS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE (3)
-        CALL IO_READ_FIELD(TPINIFILE,'RRS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE (4)
-        CALL IO_READ_FIELD(TPINIFILE,'RIS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE (5)
-        CALL IO_READ_FIELD(TPINIFILE,'RSS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE (6)
-        CALL IO_READ_FIELD(TPINIFILE,'RGS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE (7)
-        CALL IO_READ_FIELD(TPINIFILE,'RHS_CLD',PRRS_CLD(:,:,:,JRR))
-      CASE DEFAULT
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_FIELD','PRT is too big')
-    END SELECT
-  END DO
-  DO JSV = NSV_C2R2BEG,NSV_C2R2END
-    IF (JSV == NSV_C2R2BEG ) THEN
-      TZFIELD%CMNHNAME   = 'RSVS_CLD1'
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'RSVS_CLD1'
-      TZFIELD%CUNITS     = '1'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_RHS_CLD'
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_READ_FIELD(TPINIFILE,TZFIELD,PRSVS_CLD(:,:,:,JSV))
-    END IF
-    IF (JSV == NSV_C2R2BEG ) THEN
-      TZFIELD%CMNHNAME   = 'RSVS_CLD2'
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'RSVS_CLD2'
-      TZFIELD%CUNITS     = '1'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_RHS_CLD'
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_READ_FIELD(TPINIFILE,TZFIELD,PRSVS_CLD(:,:,:,JSV))
-    END IF
-  END DO
+  IF (CTEMP_SCHEME/='LEFR') THEN
+    CALL IO_READ_FIELD(TPINIFILE,'US_PRES',PRUS_PRES)
+    CALL IO_READ_FIELD(TPINIFILE,'VS_PRES',PRVS_PRES)
+    CALL IO_READ_FIELD(TPINIFILE,'WS_PRES',PRWS_PRES)
+  END IF
+  IF (LSPLIT_CFL) THEN
+    CALL IO_READ_FIELD(TPINIFILE,'THS_CLD',PRTHS_CLD)
+    DO JRR = 1, SIZE(PRT,4)
+      SELECT CASE(JRR)
+        CASE (1)
+          CALL IO_READ_FIELD(TPINIFILE,'RVS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE (2)
+          CALL IO_READ_FIELD(TPINIFILE,'RCS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE (3)
+          CALL IO_READ_FIELD(TPINIFILE,'RRS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE (4)
+          CALL IO_READ_FIELD(TPINIFILE,'RIS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE (5)
+          CALL IO_READ_FIELD(TPINIFILE,'RSS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE (6)
+          CALL IO_READ_FIELD(TPINIFILE,'RGS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE (7)
+          CALL IO_READ_FIELD(TPINIFILE,'RHS_CLD',PRRS_CLD(:,:,:,JRR))
+        CASE DEFAULT
+          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_FIELD','PRT is too big')
+      END SELECT
+    END DO
+    DO JSV = NSV_C2R2BEG,NSV_C2R2END
+      IF (JSV == NSV_C2R2BEG ) THEN
+        TZFIELD%CMNHNAME   = 'RSVS_CLD1'
+        TZFIELD%CSTDNAME   = ''
+        TZFIELD%CLONGNAME  = 'RSVS_CLD1'
+        TZFIELD%CUNITS     = '1'
+        TZFIELD%CDIR       = 'XY'
+        TZFIELD%CCOMMENT   = 'X_Y_Z_RHS_CLD'
+        TZFIELD%NGRID      = 1
+        TZFIELD%NTYPE      = TYPEREAL
+        TZFIELD%NDIMS      = 3
+        TZFIELD%LTIMEDEP   = .TRUE.
+        CALL IO_READ_FIELD(TPINIFILE,TZFIELD,PRSVS_CLD(:,:,:,JSV))
+      END IF
+      IF (JSV == NSV_C2R2BEG ) THEN
+        TZFIELD%CMNHNAME   = 'RSVS_CLD2'
+        TZFIELD%CSTDNAME   = ''
+        TZFIELD%CLONGNAME  = 'RSVS_CLD2'
+        TZFIELD%CUNITS     = '1'
+        TZFIELD%CDIR       = 'XY'
+        TZFIELD%CCOMMENT   = 'X_Y_Z_RHS_CLD'
+        TZFIELD%NGRID      = 1
+        TZFIELD%NTYPE      = TYPEREAL
+        TZFIELD%NDIMS      = 3
+        TZFIELD%LTIMEDEP   = .TRUE.
+        CALL IO_READ_FIELD(TPINIFILE,TZFIELD,PRSVS_CLD(:,:,:,JSV))
+      END IF
+    END DO
+  END IF
 END IF
 !
 !*       2.1  Time t-dt:
@@ -1282,7 +1288,11 @@ END IF
 !
 SELECT CASE(HGETTKET)                   
   CASE('READ') 
-    CALL IO_READ_FIELD(TPINIFILE,'WTHVMF',PWTHVMF)
+    IF (CSCONV=='EDKF') THEN 
+      CALL IO_READ_FIELD(TPINIFILE,'WTHVMF',PWTHVMF)
+    ELSE
+      PWTHVMF(:,:,:)=0
+    ENDIF
   CASE('INIT')
     PWTHVMF(:,:,:)=0.
 END SELECT 
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 3056e0260..0ebe23290 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -228,7 +228,7 @@ USE MODD_CH_AEROSOL
 USE MODD_BLOWSNOW
 USE MODD_BLOWSNOW_n
 USE MODD_PAST_FIELD_n
-USE MODD_ADV_n, ONLY: CUVW_ADV_SCHEME,XRTKEMS,CTEMP_SCHEME
+USE MODD_ADV_n, ONLY: CUVW_ADV_SCHEME,XRTKEMS,CTEMP_SCHEME,LSPLIT_CFL
 USE MODD_ELEC_FLASH
 !
 USE MODD_PARAM_LIMA     , ONLY: NMOD_CCN, LSCAV, LAERO_MASS,                &
@@ -613,7 +613,7 @@ END IF
 !
 IF (CTURB /= 'NONE') THEN
   CALL IO_WRITE_FIELD(TPFILE,'TKET',XTKET)
-  IF (CPROGRAM == 'MESONH') CALL IO_WRITE_FIELD(TPFILE,'TKEMS',XRTKEMS)
+  IF (CPROGRAM == 'MESONH' .AND. LSPLIT_CFL) CALL IO_WRITE_FIELD(TPFILE,'TKEMS',XRTKEMS)
 END IF
 !
 !
@@ -1419,7 +1419,7 @@ IF( CTURB /= 'NONE' .AND. LRMC01) THEN
   CALL IO_WRITE_FIELD(TPFILE,'SBL_DEPTH',XBL_DEPTH)
 END IF
 !
-IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN
+IF( CTURB /= 'NONE' .AND. CSCONV == 'EDKF' .AND.(CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN
   CALL IO_WRITE_FIELD(TPFILE,'WTHVMF',XWTHVMF)
 END IF
 !
@@ -1438,23 +1438,27 @@ CALL IO_WRITE_FIELD(TPFILE,'EXNTOP', XEXNTOP)
 !*       1.6  Tendencies                                         
 !
 IF (CPROGRAM == 'MESONH') THEN
-  CALL IO_WRITE_FIELD(TPFILE,'US_PRES',XRUS_PRES)
-  CALL IO_WRITE_FIELD(TPFILE,'VS_PRES',XRVS_PRES)
-  CALL IO_WRITE_FIELD(TPFILE,'WS_PRES',XRWS_PRES)
-  CALL IO_WRITE_FIELD(TPFILE,'THS_CLD',XRTHS_CLD)
-!
- IF (NRR >=1) THEN
-   IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'RVS_CLD',XRRS_CLD(:,:,:,IDX_RVT))
-   IF (LUSERC) CALL IO_WRITE_FIELD(TPFILE,'RCS_CLD',XRRS_CLD(:,:,:,IDX_RCT))
-   IF (LUSERR) CALL IO_WRITE_FIELD(TPFILE,'RRS_CLD',XRRS_CLD(:,:,:,IDX_RRT))
-   IF (LUSERI) CALL IO_WRITE_FIELD(TPFILE,'RIS_CLD',XRRS_CLD(:,:,:,IDX_RIT))
-   IF (LUSERS) CALL IO_WRITE_FIELD(TPFILE,'RSS_CLD',XRRS_CLD(:,:,:,IDX_RST))
-   IF (LUSERG) CALL IO_WRITE_FIELD(TPFILE,'RGS_CLD',XRRS_CLD(:,:,:,IDX_RGT))
-   IF (LUSERH) CALL IO_WRITE_FIELD(TPFILE,'RHS_CLD',XRRS_CLD(:,:,:,IDX_RHT))
- END IF 
+  IF (CTEMP_SCHEME/='LEFR') THEN
+    CALL IO_WRITE_FIELD(TPFILE,'US_PRES',XRUS_PRES)
+    CALL IO_WRITE_FIELD(TPFILE,'VS_PRES',XRVS_PRES)
+    CALL IO_WRITE_FIELD(TPFILE,'WS_PRES',XRWS_PRES)
+  END IF
+  IF (LSPLIT_CFL) THEN
+    CALL IO_WRITE_FIELD(TPFILE,'THS_CLD',XRTHS_CLD)
+!
+    IF (NRR >=1) THEN
+      IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'RVS_CLD',XRRS_CLD(:,:,:,IDX_RVT))
+      IF (LUSERC) CALL IO_WRITE_FIELD(TPFILE,'RCS_CLD',XRRS_CLD(:,:,:,IDX_RCT))
+      IF (LUSERR) CALL IO_WRITE_FIELD(TPFILE,'RRS_CLD',XRRS_CLD(:,:,:,IDX_RRT))
+      IF (LUSERI) CALL IO_WRITE_FIELD(TPFILE,'RIS_CLD',XRRS_CLD(:,:,:,IDX_RIT))
+      IF (LUSERS) CALL IO_WRITE_FIELD(TPFILE,'RSS_CLD',XRRS_CLD(:,:,:,IDX_RST))
+      IF (LUSERG) CALL IO_WRITE_FIELD(TPFILE,'RGS_CLD',XRRS_CLD(:,:,:,IDX_RGT))
+      IF (LUSERH) CALL IO_WRITE_FIELD(TPFILE,'RHS_CLD',XRRS_CLD(:,:,:,IDX_RHT))
+    END IF 
+  END IF
 END IF 
 !
-!
+!IF (LSPLIT_CFL) THEN
 ! IF (NSV >=1) THEN
 !    DO JSV = NSV_C2R2BEG,NSV_C2R2END
 !     IF (JSV == NSV_C2R2BEG ) THEN
@@ -1485,6 +1489,7 @@ END IF
 !     END IF
 !    END DO
 ! END IF
+!ENDIF
 !
 !*       1.8    Diagnostic variables related to the radiations
 !
-- 
GitLab