From 4aab1d39238917e626a70e6265672db4f88000af Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Wed, 14 Aug 2024 12:02:29 +0200
Subject: [PATCH] Quentin 14/08/2024: test cases, update ver_user to 571

---
 .../HPC/GABLS1/SOURCES/coupling_tsz0n.F90     |  27 ++--
 .../HPC/IBM/SOURCES/mode_sbl_depth.f90        |   4 +-
 .../LOCAL/COPT81/SOURCES/read_exsegn.f90      | 139 ++++++++----------
 .../LOCAL/COPT81/SOURCES/set_rsou.f90         |  51 ++++---
 4 files changed, 113 insertions(+), 108 deletions(-)

diff --git a/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90 b/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90
index 85996ced7..651a1a3c0 100644
--- a/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90
+++ b/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90
@@ -3,10 +3,11 @@
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
 !     ###############################################################################
-SUBROUTINE COUPLING_TSZ0_n (DTCO, UG, U, USS, IM, DTZ, NDST, SLT,BLOWSNW, HPROGRAM, HCOUPLING,   &
+SUBROUTINE COUPLING_TSZ0_n (DTCO, UG, U, USS, IM, DTZ, NDST, DST, SLT,BLOWSNW, HPROGRAM, HCOUPLING,   &
                             PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN,&
                             PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PZS, PU, PV,    &
-                            PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW,     &
+                            PQA, PTA, PRHOA, PSV, PCO2,PIMPWET,PIMPDRY, HSV, PRAIN, &
+                            PSNOW, PLW,                                             &
                             PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH,    &
                             PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,   &
                             PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF,          &
@@ -42,13 +43,15 @@ SUBROUTINE COUPLING_TSZ0_n (DTCO, UG, U, USS, IM, DTZ, NDST, SLT,BLOWSNW, HPROGR
 USE MODD_ISBA_n, ONLY : ISBA_P_t, ISBA_PE_t
 USE MODD_SURFEX_n, ONLY : ISBA_MODEL_t
 !
+USE MODD_PREP_SNOW, ONLY : NIMPUR
+!
 USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
 USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 USE MODD_SSO_n, ONLY : SSO_t
 USE MODD_DATA_TSZ0_n, ONLY : DATA_TSZ0_t
 USE MODD_DATA_ISBA_n, ONLY : DATA_ISBA_t
-USE MODD_DST_n, ONLY : DST_NP_t
+USE MODD_DST_n, ONLY : DST_NP_t, DST_t
 USE MODD_SLT_n, ONLY : SLT_t
 USE MODD_BLOWSNW_n, ONLY : BLOWSNW_t
 USE MODD_BLANK_n, ONLY : LDUMMY1
@@ -77,6 +80,7 @@ TYPE(SURF_ATM_t), INTENT(INOUT) :: U
 TYPE(SSO_t), INTENT(INOUT) :: USS
 TYPE(DATA_TSZ0_t), INTENT(INOUT) :: DTZ
 TYPE(DST_NP_t), INTENT(INOUT) :: NDST
+TYPE(DST_t), INTENT(INOUT) :: DST
 TYPE(SLT_t), INTENT(INOUT) :: SLT
 TYPE(BLOWSNW_t), INTENT(INOUT) :: BLOWSNW
 !
@@ -84,9 +88,9 @@ TYPE(BLOWSNW_t), INTENT(INOUT) :: BLOWSNW
  CHARACTER(LEN=1),    INTENT(IN)  :: HCOUPLING ! type of coupling
                                               ! 'E' : explicit
                                               ! 'I' : implicit
-INTEGER,             INTENT(IN)  :: KYEAR     ! current year (UTC)
-INTEGER,             INTENT(IN)  :: KMONTH    ! current month (UTC)
-INTEGER,             INTENT(IN)  :: KDAY      ! current day (UTC)
+INTEGER,             INTENT(INOUT)  :: KYEAR     ! current year (UTC)
+INTEGER,             INTENT(INOUT)  :: KMONTH    ! current month (UTC)
+INTEGER,             INTENT(INOUT)  :: KDAY      ! current day (UTC)
 REAL,                INTENT(IN)  :: PTIME     ! current time since midnight (UTC, s)
 INTEGER,             INTENT(IN)  :: KI        ! number of points
 INTEGER,             INTENT(IN)  :: KSV       ! number of scalars
@@ -119,6 +123,8 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model su
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
+REAL, DIMENSION(KI,NIMPUR), INTENT(IN) :: PIMPWET ! Wet impur deposition
+REAL, DIMENSION(KI,NIMPUR), INTENT(IN) :: PIMPDRY ! Dry impur deposition
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
 !
@@ -214,17 +220,20 @@ ENDDO
 !*      3.     Call to surface scheme
 !              ----------------------
 !
- CALL COUPLING_ISBA_OROGRAPHY_n(DTCO, UG, U, USS, IM%SB, IM%NAG, IM%CHI, IM%NCHI, IM%MGN, IM%MSF,IM%DTV, IM%ID, &
+ CALL COUPLING_ISBA_OROGRAPHY_n(DTCO, UG, U, USS, IM%SB, IM%NAG, IM%CHI, IM%NCHI,         &
+                                IM%MGN, IM%MSF, IM%DTV, IM%ID,                            &
                                 IM%NGB, IM%GB, IM%ISS, IM%NISS, IM%G, IM%NG, IM%O, IM%S, IM%K, IM%NK, &
-                                IM%NP, IM%NPE, NDST, SLT,BLOWSNW, HPROGRAM, 'E', 0.001, KYEAR,   &
+                                IM%NP, IM%NPE, IM%AT, NDST, DST, SLT,BLOWSNW, HPROGRAM, 'E', 0.001, KYEAR,   &
                                 KMONTH, KDAY, PTIME,  KI, KSV, KSW, PTSUN, PZENITH,       &
                                 PZENITH2, PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA,     &
-                                PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW,        &
+                                PRHOA, PSV, PCO2,PIMPWET,PIMPDRY, HSV, PRAIN, PSNOW, PLW, &
+                                PDIR_SW,                                                  &
                                 PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2,&
                                 PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0,&
                                 PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF,      &
                                 PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, 'OK'  )  
 !
+
 !ATTENTION : variation de Z0 dans le temps non implemente
 IF(LDUMMY1) THEN
  !Coefficient de Beare et al. et Cuxart et al. (2006)
diff --git a/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90 b/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90
index 1f3fceabf..f7110ebd1 100644
--- a/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90
+++ b/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90
@@ -111,7 +111,7 @@ ZUSTAR2(:) = SQRT(ZWU(:)**2+ZWV(:)**2)
 !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
 ZWIND(:,:)=SQRT(PFLXU(:,:)**2+PFLXV(:,:)**2)
 !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
-CALL BL_DEPTH_DIAG(D,ZUSTAR2,PZZ(:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN)
+CALL BL_DEPTH_DIAG(D,D%NKT,ZUSTAR2,PZZ(:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN)
 !$mnh_expand_array(JIJ=IIJB:IIJE)
 ZSBL_DYN(:) = CSTURB%XSBL_O_BL * ZSBL_DYN(:)
 !$mnh_end_expand_array(JIJ=IIJB:IIJE)
@@ -120,7 +120,7 @@ ZSBL_DYN(:) = CSTURB%XSBL_O_BL * ZSBL_DYN(:)
 !
 !* BL and SBL diagnosed with buoyancy flux criteria
 !
-CALL BL_DEPTH_DIAG(D,ZQ0,PZZ(:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER)
+CALL BL_DEPTH_DIAG(D,D%NKT,ZQ0,PZZ(:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER)
 !$mnh_expand_array(JIJ=IIJB:IIJE)
 ZSBL_THER(:)= CSTURB%XSBL_O_BL * ZSBL_THER(:)
 !$mnh_end_expand_array(JIJ=IIJB:IIJE)
diff --git a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90 b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90
index c8a3e2a83..f548f943e 100644
--- a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90
+++ b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2024 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.
@@ -23,7 +23,8 @@ INTERFACE
                    HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,              &
                    HEQNSYS,PTSTEP_ALL,HINIFILEPGD                                  )
 !
-USE MODD_IO,   ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 INTEGER,            INTENT(IN) :: KMI    ! Model index
 TYPE(TFILEDATA),    INTENT(IN) :: TPEXSEGFILE ! EXSEG file
@@ -72,7 +73,7 @@ CHARACTER (LEN=4),  INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
 CHARACTER (LEN=4),  INTENT(IN) :: HELEC  ! Kind of electrical scheme
 CHARACTER (LEN=*),  INTENT(IN) :: HEQNSYS! type of equations' system
 REAL,DIMENSION(:),  INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models
-CHARACTER (LEN=*),  INTENT(IN) :: HINIFILEPGD ! name of PGD file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file
 !
 END SUBROUTINE READ_EXSEG_n
 !
@@ -326,7 +327,6 @@ USE MODD_CONDSAMP
 USE MODD_CONF
 USE MODD_CONF_n,          ONLY: CSTORAGE_TYPE
 USE MODD_CONFZ
-! USE MODD_DRAG_n
 USE MODD_DUST
 USE MODD_DYN
 USE MODD_DYN_n, ONLY : LHORELAX_SVLIMA, LHORELAX_SVFIRE
@@ -473,13 +473,13 @@ CHARACTER (LEN=4),  INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
 CHARACTER (LEN=4),  INTENT(IN) :: HELEC  ! Kind of electrical scheme
 CHARACTER (LEN=*),  INTENT(IN) :: HEQNSYS! type of equations' system
 REAL,DIMENSION(:),  INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models
-CHARACTER (LEN=*),  INTENT(IN) :: HINIFILEPGD ! name of PGD file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file
 !
 !*       0.2   declarations of local variables
 !
 CHARACTER(LEN=3) :: YMODEL
 INTEGER :: ILUSEG,ILUOUT ! logical unit numbers of EXSEG file and outputlisting
-INTEGER :: JS,JCI,JI,JSV       ! Loop indexes 
+INTEGER :: JS,JI,JSV       ! Loop indexes
 LOGICAL :: GRELAX              
 LOGICAL :: GFOUND              ! Return code when searching namelist
 !
@@ -494,7 +494,6 @@ ILUSEG = TPEXSEGFILE%NLU
 ILUOUT = TLUOUT%NLU
 !
 CALL INIT_NAM_LUNITN
-CCPLFILE(:)="                            "
 CALL INIT_NAM_CONFN
 CALL INIT_NAM_DYNN
 CALL INIT_NAM_ADVN
@@ -523,6 +522,7 @@ CALL INIT_NAM_FIREn
 !
 WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')")
 CALL POSNAM( TPEXSEGFILE, 'NAM_LUNITN', GFOUND )
+CCPLFILE(:) = ''
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LUNITn)
 CALL POSNAM( TPEXSEGFILE, 'NAM_CONFN', GFOUND )
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFn)
@@ -598,26 +598,8 @@ IF (KMI == 1) THEN
   CALL POSNAM( TPEXSEGFILE, 'NAM_BACKUP', GFOUND )
   IF (GFOUND) THEN
     !Should have been allocated before in READ_DESFM_n
-    IF (.NOT.ALLOCATED(XBAK_TIME)) THEN
-      ALLOCATE(XBAK_TIME(NMODEL,NFILE_NUM_MAX))
-      XBAK_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(XOUT_TIME)) THEN
-      ALLOCATE(XOUT_TIME(NMODEL,NFILE_NUM_MAX)) !Allocate *OUT* variables to prevent
-      XOUT_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NBAK_STEP)) THEN
-      ALLOCATE(NBAK_STEP(NMODEL,NFILE_NUM_MAX))
-      NBAK_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NOUT_STEP)) THEN
-      ALLOCATE(NOUT_STEP(NMODEL,NFILE_NUM_MAX)) !problems if NAM_OUTPUT does not exist
-      NOUT_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(COUT_VAR)) THEN
-      ALLOCATE(COUT_VAR (NMODEL,JPOUTVARMAX))
-      COUT_VAR(:,:)  = ''
-    END IF
+    CALL BACKUP_NML_ALLOCATE()
+    CALL OUTPUT_NML_ALLOCATE() !Allocate *OUT* variables to prevent problems if NAM_OUTPUT does not exist
     READ(UNIT=ILUSEG,NML=NAM_BACKUP)
   ELSE
     CALL POSNAM( TPEXSEGFILE, 'NAM_FMOUT', GFOUND )
@@ -630,26 +612,8 @@ IF (KMI == 1) THEN
   CALL POSNAM( TPEXSEGFILE, 'NAM_OUTPUT', GFOUND )
   IF (GFOUND) THEN
     !Should have been allocated before in READ_DESFM_n
-    IF (.NOT.ALLOCATED(XBAK_TIME)) THEN
-      ALLOCATE(XBAK_TIME(NMODEL,NFILE_NUM_MAX)) !Allocate *BAK* variables to prevent
-      XBAK_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(XOUT_TIME)) THEN
-      ALLOCATE(XOUT_TIME(NMODEL,NFILE_NUM_MAX))
-      XOUT_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NBAK_STEP)) THEN
-      ALLOCATE(NBAK_STEP(NMODEL,NFILE_NUM_MAX)) !problems if NAM_BACKUP does not exist
-      NBAK_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NOUT_STEP)) THEN
-      ALLOCATE(NOUT_STEP(NMODEL,NFILE_NUM_MAX))
-      NOUT_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(COUT_VAR)) THEN
-      ALLOCATE(COUT_VAR (NMODEL,JPOUTVARMAX))
-      COUT_VAR(:,:)  = ''
-    END IF
+    CALL BACKUP_NML_ALLOCATE() !Allocate *BAK* variables to prevent problems if NAM_BACKUP does not exist
+    CALL OUTPUT_NML_ALLOCATE()
     READ(UNIT=ILUSEG,NML=NAM_OUTPUT)
   END IF
   CALL POSNAM( TPEXSEGFILE, 'NAM_BUDGET', GFOUND )
@@ -1000,6 +964,31 @@ IF (.NOT. LHARAT .AND. LSTATNW) THEN
   CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'READ_EXSEGN', &
                 &'LSTATNW only tested in combination with HARATU and EDMFm!')
 ENDIF
+
+! Check that CSEG and CEXP does not contain unauthorized characters ('.' and ' ')
+IF ( KMI == 1 ) THEN
+  DO JI = 1, LEN_TRIM(CSEG)
+    IF ( CSEG(JI:JI) == '.' ) THEN
+      CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CSEG may not contain . character (replaced by _)' )
+      CSEG(JI:JI) = '_'
+    END IF
+    IF ( CSEG(JI:JI) == ' ' ) THEN
+      CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CSEG may not contain space character (replaced by _)' )
+      CSEG(JI:JI) = '_'
+    END IF
+  END DO
+
+  DO JI = 1, LEN_TRIM(CEXP)
+    IF ( CEXP(JI:JI) == '.' ) THEN
+      CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CEXP may not contain . character (replaced by _)' )
+      CEXP(JI:JI) = '_'
+    END IF
+    IF ( CEXP(JI:JI) == ' ' ) THEN
+      CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CEXP may not contain space character (replaced by _)' )
+      CEXP(JI:JI) = '_'
+    END IF
+  END DO
+END IF
 !
 !-------------------------------------------------------------------------------!
 !*       2.    FIRST INITIALIZATIONS
@@ -2453,33 +2442,7 @@ END IF
 !
 !*       4.    CHECK COHERENCE BETWEEN EXSEG VARIABLES
 !              ---------------------------------------
-!        
-!*       4.1  coherence between coupling variables in EXSEG file  
-!                      
-IF (KMI == 1) THEN
-  NCPL_NBR = 0
-  DO JCI = 1,JPCPLFILEMAX
-    IF (LEN_TRIM(CCPLFILE(JCI)) /= 0) THEN        ! Finds the number 
-      NCPL_NBR = NCPL_NBR + 1                     ! of coupling files
-    ENDIF
-    IF (JCI/=JPCPLFILEMAX) THEN                   ! Deplaces the coupling files
-      IF ((LEN_TRIM(CCPLFILE(JCI)) == 0) .AND.   &! names if one missing
-          (LEN_TRIM(CCPLFILE(JCI+1)) /= 0)) THEN
-        DO JI=JCI,JPCPLFILEMAX-1
-          CCPLFILE(JI)=CCPLFILE(JI+1)
-        END DO
-        CCPLFILE(JPCPLFILEMAX)='    '
-      END IF
-    END IF
-  END DO
 !
-  IF (NCPL_NBR /= 0) THEN         
-    LSTEADYLS = .FALSE.
-  ELSE
-    LSTEADYLS = .TRUE.
-  ENDIF 
-END IF
-!        
 !*       4.3   check consistency in forcing switches
 !
 IF ( LFORCING ) THEN
@@ -3027,7 +2990,22 @@ IF (.NOT. LNUMDIFTH .AND. LZDIFFU) THEN
   LNUMDIFTH=.TRUE.
 END IF
 !
-!*       4.8  Other
+!*       4.8 Consistency with multi-level coupling
+!
+IF (NLEV_COUPLE > 1) THEN
+  IF (.NOT. LDRAGBLDG .AND. .NOT. LFLUXBLDG .AND. .NOT. LDRAGURBVEG) THEN
+    WRITE(UNIT=ILUOUT,FMT=9002) KMI
+    WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE MULTI-LEVEL SURF-ATM COUPLING'
+    WRITE(ILUOUT,FMT=*) '(NAM_COUPLING_LEVELSn NLEV_COUPLE = ',NLEV_COUPLE
+    WRITE(ILUOUT,FMT=*) 'BUT ANY DRAG FROM BUILDING OR TREES ARE ACTIVATED.'
+    WRITE(ILUOUT,FMT=*) 'YOU MUST TURN TRUE ONE OR MORE OF THE DRAGS FROM NAM_DRAGBLDGn :'
+    WRITE(ILUOUT,FMT=*) 'LDRAGBLDG, LFLUXBLDG OR LDRAGURBVEG'
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n', &
+          'WITH NLEV_COUPLE>1, YOU MUST USE AT LEAST ONE OR MORE OF LDRAGBLDG, LFLUXBLDG OR LDRAGURBVEG')
+  END IF
+END IF
+!
+!*       4.9  Other
 !
 IF (XTNUDGING < 4.*XTSTEP) THEN
   XTNUDGING = 4.*XTSTEP
@@ -3063,8 +3041,8 @@ END IF
 IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN
   IF ( CINIFILEPGD/=HINIFILEPGD ) THEN 
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',CINIFILEPGD
-    WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',HINIFILEPGD
+    WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',TRIM(CINIFILEPGD)
+    WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',TRIM(HINIFILEPGD)
     WRITE(ILUOUT,FMT=*) ' Please check your Namelist '
     WRITE(ILUOUT,FMT=*) ' For example, you may have specified the un-nested PGD file instead of the nested PGD file '
     WRITE(ILUOUT,FMT=*) 
@@ -3086,7 +3064,14 @@ END IF
 !*       5.    WE DO NOT FORGET TO UPDATE ALL DOLLARN NAMELIST VARIABLES
 !              ---------------------------------------------------------
 !
-CALL UPDATE_NAM_LUNITN
+CALL UPDATE_NAM_LUNITN(KMI)
+IF ( KMI == 1 ) THEN
+  IF (NCPL_NBR /= 0) THEN !To be done after UPDATE_NAM_LUNITN
+    LSTEADYLS = .FALSE.
+  ELSE
+    LSTEADYLS = .TRUE.
+  END IF
+END IF
 CALL UPDATE_NAM_CONFN
 CALL UPDATE_NAM_DRAGTREEN
 CALL UPDATE_NAM_DRAGBLDGN
diff --git a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90 b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90
index b443205f0..1e6a3d957 100644
--- a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90
+++ b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90
@@ -272,6 +272,7 @@ USE MODD_NETCDF
 USE MODD_OCEANH
 USE MODD_PARAMETERS, ONLY: JPHEXT
 USE MODD_TYPE_DATE
+USE MODD_TIME_n,     ONLY : TDTCUR
 !
 USE MODE_ll
 USE MODE_MSG
@@ -403,7 +404,8 @@ REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_DEPTH
 REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_LE,ZOC_H
 REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_SW_DOWN,ZOC_SW_UP,ZOC_LW_DOWN,ZOC_LW_UP
 REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_TAUX,ZOC_TAUY
-
+!
+REAL  :: ZJZTIME ! TIME(HOUR) READ in PRE_IDEA1.NAM
 !--------------------------------------------------------------------------------
 !
 !*	 1.     PROLOGUE : INITIALIZE SOME CONSTANTS, RETRIEVE LOGICAL
@@ -568,9 +570,10 @@ SELECT CASE(YKIND)
       TFRCLT(JKT)= ZFRCLT(JKT)
       XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN
       XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN
-      ! working in SI
-      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN)
-      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN)
+                 
+    ! working in SI
+      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(XCL*XRH00OCEAN)
+      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(XCL*XRH00OCEAN)
     END DO   
     DEALLOCATE(ZFRCLT)
     DEALLOCATE(ZSSUFL_T)
@@ -582,11 +585,12 @@ SELECT CASE(YKIND)
 ! 2.0.2  Ocean standard initialize from netcdf files
 !        U,V,T,S at Z levels + Forcings at model TOP (sea surface) 
 !--------------------------------------------------------------------------------   
-!
+!  WRITTEN TO READ NETCDF file for a DWL case of DYNAMO-CINDY
   CASE ('STANDOCE')
-!   
     XP00=XP00OCEAN
-    READ(ILUPRE,*) ZPTOP           ! P_atmosphere at sfc =P top domain
+! HOUR OF FIRST FORCING on 14/11 TO USE AS READ in PRE_IDEA1.NAM
+    ZJZTIME= INT(TDTCUR%xtime)
+    READ(ILUPRE,*) ZPTOP           ! P_atmosphere at sfc =P top ocean domain
     READ(ILUPRE,*) YINFILE, YINFISF
     WRITE(ILUOUT,FMT=*) 'Netcdf files to read:', YINFILE, YINFISF
     ! Open file containing initial profiles
@@ -673,6 +677,8 @@ SELECT CASE(YKIND)
       ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model
       ! Z oriented in same time to have a model domain axis going
       ! from 0m (ocean bottom/model bottom) towards H (ocean sfc/model top)
+      WRITE(ILUOUT,FMT=*) 'End gridmodel comput in trans domain: JKM  U V ZHEIGHTU', &
+      JKM,ZU(JKM),ZV(JKM),ZHEIGHTU(JKM)
     END DO
 !
     DEALLOCATE(ZOC_TEMPERATURE)
@@ -731,30 +737,36 @@ SELECT CASE(YKIND)
       WRITE(ILUOUT,FMT=*) JKM, ZOC_LE(JKM), ZOC_H(JKM),ZOC_SW_DOWN(JKM),ZOC_SW_UP(JKM),&
                           ZOC_LW_DOWN(JKM),ZOC_LW_UP(JKM),ZOC_TAUX(JKM),ZOC_TAUY(JKM)   
     ENDDO
-    ! IFRCLT FORCINGS at sea surface
-    IFRCLT=idimlen
+    ! IFRCLT FORCINGS at sea surface are givean each 10 min (6/hour)
+! start at ZJZTIME read in PRE_IDEA1.nam; skip forcings given from 13/11 22LT
+ZJZTIME=(ZJZTIME+2)*6
+   IFRCLT=idimlen-ZJZTIME
+WRITE(ILUOUT,FMT=*) 'FORCINGS GIVEN FROM 13/11/11 22LT;  FORCING Number USED ZJZTIME=', ZJZTIME
+WRITE(ILUOUT,FMT=*) idimlen,'NB of given forcing', 'nb of first used forcing= ',IFRCLT
     ALLOCATE(ZFRCLT(IFRCLT)) 
     ALLOCATE(ZSSUFL_T(IFRCLT)); ZSSUFL_T = 0.0
     ALLOCATE(ZSSVFL_T(IFRCLT)); ZSSVFL_T = 0.0
     ALLOCATE(ZSSTFL_T(IFRCLT)); ZSSTFL_T = 0.0
     ALLOCATE(ZSSOLA_T(IFRCLT)); ZSSOLA_T = 0.0
-    DO JKT=1,IFRCLT
+    DO JKM=1,IFRCLT
+    JKT=JKM +ZJZTIME
       ! Initial file for CINDY-DYNAMO: all fluxes correspond to the absolute value (>0)
       ! modele ocean: axe z dirigé du bas vers la sfc de l'océan
       ! => flux dirigé vers le haut (positif ocean vers l'atmopshere i.e. bas vers le haut)
-      ZSSOLA_T(JKT)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT)
-      ZSSTFL_T(JKT)=(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT))
+      ZSSOLA_T(JKM)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT)
+      ZSSTFL_T(JKM)=-(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT))
       ! assume that Tau given on file is along Ox
       ! rho_air UW_air = rho_ocean UW_ocean= N/m2
       ! uw_ocean
-      ZSSUFL_T(JKT)=ZOC_TAUX(JKT)
-      ZSSVFL_T(JKT)=ZOC_TAUY(JKT)
-      WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',&
-                          JKT,ZSSOLA_T(JKT),ZSSTFL_T(JKT),ZSSUFL_T(JKT),ZSSVFL_T(JKT) 
+      ZSSUFL_T(JKM)=ZOC_TAUX(JKT)
+      ZSSVFL_T(JKM)=ZOC_TAUY(JKT) 
+     WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',&
+                          JKM,ZSSOLA_T(JKM),ZSSTFL_T(JKM),ZSSUFL_T(JKM),ZSSVFL_T(JKM) 
     ENDDO
     ! Allocate and Writing the corresponding variables in module MODD_OCEAN_FRC
     NFRCLT=IFRCLT
     ! value to read later on file ? 
+! interval in s between 2 given forcings
     NINFRT=600
     ALLOCATE(TFRCLT(NFRCLT))
     ALLOCATE(XSSUFL_T(NFRCLT));XSSUFL_T(:)=0.
@@ -762,14 +774,13 @@ SELECT CASE(YKIND)
     ALLOCATE(XSSTFL_T(NFRCLT));XSSTFL_T(:)=0.
     ALLOCATE(XSSOLA_T(NFRCLT));XSSOLA_T(:)=0.
     ! on passe en unités SI, signe, etc pour le modele ocean
-    !  W/m2 => SI :  /(CP_mer * rho_mer)
-    ! a revoir dans tt le code pour mettre de svaleurs plus exactes
+    !  W/m2 => SI : m/S *K  /(CP_mer * rho_mer)
     DO JKT=1,NFRCLT
       TFRCLT(JKT)= ZFRCLT(JKT)
       XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN
       XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN
-      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN)
-      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN)
+      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(XCL  *XRH00OCEAN)
+      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(XCL  *XRH00OCEAN)
     END DO   
     DEALLOCATE(ZFRCLT)
     DEALLOCATE(ZSSUFL_T)
-- 
GitLab