Skip to content
Snippets Groups Projects
read_exsegn.f90 120 KiB
Newer Older
  • Learn to ignore specific revisions
  •          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
           ENDIF
    END IF
    !
    
    !-------------------------------------------------------------------------------!
    !*       2.    FIRST INITIALIZATIONS
    !              ---------------------
    !
    !*       2.1   Time step in gridnesting case
    !
    IF (KMI /= 1 .AND. NDAD(KMI) /= KMI)  THEN
      XTSTEP = PTSTEP_ALL(NDAD(KMI)) / NDTRATIO(KMI)
    END IF
    PTSTEP_ALL(KMI) = XTSTEP
    !
    !*       2.2    Fill the global configuration module 
    !
    ! Check coherence between the microphysical scheme and water species and 
    !initialize the logicals LUSERn 
    !
    SELECT CASE ( CCLOUD )
      CASE ( 'NONE' )
        IF (.NOT. ( (.NOT. LUSERC) .AND. (.NOT. LUSERR) .AND. (.NOT. LUSERI) .AND. &
                    (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH)       &
                  ) .AND. CPROGRAM=='MESONH' )  THEN
    !
          LUSERC=.FALSE.
          LUSERR=.FALSE.; LUSERI=.FALSE.
          LUSERS=.FALSE.; LUSERG=.FALSE. 
          LUSERH=.FALSE.
    !
        END IF
    !
        IF (CSUBG_AUCV == 'SIGM')  THEN
    !
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE THE SUBGRID AUTOCONVERSION SCHEME '                                         
          WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT MICROPHYSICS'                         
          WRITE(UNIT=ILUOUT,FMT=*) ' CSUBG_AUCV IS PUT TO "NONE"'                            
    !
          CSUBG_AUCV = 'NONE'
    !
        END IF
    !
      CASE ( 'REVE' ) 
        IF (.NOT. ( LUSERV .AND. LUSERC .AND. (.NOT. LUSERR) .AND. (.NOT. LUSERI) &
                   .AND. (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH) &
                  ) )  THEN
    !
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A REVERSIBLE MICROPHYSICAL "   ,&
          &" SCHEME. YOU WILL ONLY HAVE VAPOR AND CLOUD WATER ",/,                 &
          &" LUSERV AND LUSERC ARE TO TRUE AND THE OTHERS TO FALSE ")') 
    !
          LUSERV=.TRUE. ; LUSERC=.TRUE.
          LUSERR=.FALSE.; LUSERI=.FALSE.
          LUSERS=.FALSE.; LUSERG=.FALSE. 
          LUSERH=.FALSE.
        END IF
    !
        IF (CSUBG_AUCV == 'SIGM')  THEN
    !
          WRITE(UNIT=ILUOUT,FMT=9003) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH A REVERSIBLE MICROPHYSICAL SCHEME '
          WRITE(UNIT=ILUOUT,FMT=*) ' AND THE SUBGRID AUTOCONVERSION SCHEME '       
          WRITE(UNIT=ILUOUT,FMT=*) 'BUT YOU DO NOT HAVE RAIN in the "REVE" SCHEME'
          WRITE(UNIT=ILUOUT,FMT=*) ' CSUBG_AUCV IS PUT TO "NONE"'                            
    !
          CSUBG_AUCV = 'NONE'
    !
        END IF
    !
      CASE ( 'KESS' )
        IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. (.NOT. LUSERI) .AND. &
                  (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH)      &
                  ) )  THEN
    !
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A KESSLER MICROPHYSICAL "   , &
          &" SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER AND RAIN ",/,           &
          &" LUSERV, LUSERC AND LUSERR ARE SET TO TRUE AND THE OTHERS TO FALSE ")') 
    !
          LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
          LUSERI=.FALSE.; LUSERS=.FALSE.
          LUSERG=.FALSE.; LUSERH=.FALSE.
        END IF
    !
        IF (CSUBG_AUCV == 'SIGM')  THEN
    !
          WRITE(UNIT=ILUOUT,FMT=9003) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH A KESSLER MICROPHYSICAL SCHEME '
          WRITE(UNIT=ILUOUT,FMT=*) ' AND THE SUBGRID AUTOCONVERSION SCHEME USING'
          WRITE(UNIT=ILUOUT,FMT=*) 'SIGMA_RC.'
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE.'
          WRITE(UNIT=ILUOUT,FMT=*) 'SET CSUBG_AUCV TO "CLFR" or "NONE"  OR CCLOUD TO "ICE3"'
    !
     !callabortstop
    
          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
        END IF
    !
      CASE ( 'ICE3' )
        IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. LUSECI &
                           .AND. LUSERS .AND. LUSERG .AND. (.NOT. LUSERH))     &
                    .AND. CPROGRAM=='MESONH' )  THEN
          !
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE THE ice3 SIMPLE MIXED PHASE'
          WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYSICAL SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER,'
          WRITE(UNIT=ILUOUT,FMT=*) 'RAIN WATER, CLOUD ICE (MIXING RATIO AND CONCENTRATION)'
          WRITE(UNIT=ILUOUT,FMT=*) 'SNOW-AGGREGATES AND GRAUPELN.'
          WRITE(UNIT=ILUOUT,FMT=*) 'LUSERV,LUSERC,LUSERR,LUSERI,LUSECI,LUSERS,LUSERG ARE SET TO TRUE'
          WRITE(UNIT=ILUOUT,FMT=*) 'AND LUSERH TO FALSE'
    !
          LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
          LUSERI=.TRUE. ; LUSECI=.TRUE.
          LUSERS=.TRUE. ; LUSERG=.TRUE. 
          LUSERH=.FALSE.
        END IF    
    !
        IF (CSUBG_AUCV == 'SIGM' .AND. .NOT. LSUBG_COND)  THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID AUTOCONVERSION SCHEME'
          WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT THE SUBGRID CONDENSATION SCHEME.'
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV is SET to NONE' 
          CSUBG_AUCV='NONE' 
        END IF
    !
        IF (CSUBG_AUCV == 'CLFR' .AND. CSCONV /= 'EDKF')  THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID AUTOCONVERSION SCHEME'
          WRITE(UNIT=ILUOUT,FMT=*) 'WITH THE CONVECTIVE CLOUD FRACTION WITHOUT EDKF'
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV is SET to NONE' 
          CSUBG_AUCV='NONE' 
        END IF
    !
      CASE ( 'ICE4' )
        IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. LUSECI &
                           .AND. LUSERS .AND. LUSERG .AND. LUSERH)             &
                    .AND. CPROGRAM=='MESONH' )  THEN
          !
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE THE ice4 SIMPLE MIXED PHASE'
          WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYSICAL SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER,'
          WRITE(UNIT=ILUOUT,FMT=*) 'RAIN WATER, CLOUD ICE (MIXING RATIO AND CONCENTRATION)'
          WRITE(UNIT=ILUOUT,FMT=*) 'SNOW-AGGREGATES, GRAUPELN AND HAILSTONES.'
          WRITE(UNIT=ILUOUT,FMT=*) 'LUSERV,LUSERC,LUSERR,LUSERI,LUSECI,LUSERS,LUSERG'
          WRITE(UNIT=ILUOUT,FMT=*) 'AND LUSERH ARE SET TO TRUE'
    !
          LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
          LUSERI=.TRUE. ; LUSECI=.TRUE.
          LUSERS=.TRUE. ; LUSERG=.TRUE. ; LUSERH=.TRUE.
        END IF
    !
        IF (CSUBG_AUCV /= 'NONE' .AND. .NOT. LSUBG_COND)  THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID AUTOCONVERSION SCHEME'
          WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT THE SUBGRID CONDENSATION SCHEME.'
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV is SET to NONE' 
          CSUBG_AUCV='NONE' 
        END IF
    !
      CASE ( 'C2R2','C3R5', 'KHKO' )
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
        IF (( EPARAM_CCN == 'XXX') .OR. (EINI_CCN  == 'XXX')) THEN
    
              WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2-MOMENT MICROPHYSICAL ",    &
             &" SCHEME BUT YOU DIDNT FILL CORRECTLY NAM_PARAM_C2R2", &
             &" YOU HAVE TO FILL HPARAM_CCN and HINI_CCN ")')
     !callabortstop
    
            CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
        END IF
        IF (HCLOUD == 'NONE') THEN
          CGETCLOUD = 'SKIP'
        ELSE IF (HCLOUD == 'REVE' ) THEN
          CGETCLOUD = 'INI1'
        ELSE IF (HCLOUD == 'KESS' ) THEN
          CGETCLOUD = 'INI2'
        ELSE IF (HCLOUD == 'ICE3' ) THEN
          IF (CCLOUD == 'C3R5') THEN
            CGETCLOUD = 'INI2'
          ELSE
            WRITE(UNIT=ILUOUT,FMT=9003) KMI
            WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE WARM MICROPHYSICAL ",    &
            &" SCHEME BUT YOU WERE USING THE ICE3 SCHEME PREVIOUSLY.",/,          &
            &" AS THIS IS A LITTLE BIT STUPID IT IS NOT AUTHORIZED !!!")')
     !callabortstop
    
            CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
          END IF
        ELSE
          CGETCLOUD = 'READ' ! This is automatically done
        END IF
    !
        IF ((CCLOUD == 'C2R2' ).OR. (CCLOUD == 'KHKO' )) THEN
          IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. (.NOT. LUSERI) .AND. &
                    (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH)      &
                    ) )  THEN
            WRITE(UNIT=ILUOUT,FMT=9002) KMI
            WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE C2R2 MICROPHYSICAL ",    &
            &" SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER AND RAIN ",/,        &
            &"LUSERV, LUSERC AND LUSERR ARE SET TO TRUE AND THE OTHERS TO FALSE ")')
    !
            LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
            LUSERI=.FALSE.; LUSERS=.FALSE.
            LUSERG=.FALSE.; LUSERH=.FALSE.
          END IF
        ELSE IF (CCLOUD == 'C3R5') THEN
          IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. &
                      LUSERS .AND. LUSERG .AND. (.NOT. LUSERH)            &
                    ) )  THEN
            WRITE(UNIT=ILUOUT,FMT=9002) KMI
            WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE C3R5 MICROPHYS. SCHEME.",&
            &" YOU WILL HAVE VAPOR, CLOUD WATER/ICE, RAIN, SNOW AND GRAUPEL ",/,  &
    
            &"LUSERV, LUSERC, LUSERR, LUSERI, LUSERS, LUSERG ARE SET TO TRUE")' )
    !
            LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
            LUSERI=.TRUE. ; LUSECI=.TRUE.
            LUSERS=.TRUE. ; LUSERG=.TRUE.
            LUSERH=.FALSE.
          END IF
        ELSE IF (CCLOUD == 'LIMA') THEN
          IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. &
                      LUSERS .AND. LUSERG .AND. (.NOT. LUSERH)            &
                    ) )  THEN
            WRITE(UNIT=ILUOUT,FMT=9002) KMI
            WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LIMA MICROPHYS. SCHEME.",&
            &" YOU WILL HAVE VAPOR, CLOUD WATER/ICE, RAIN, SNOW AND GRAUPEL ",/,  &
    
            &"LUSERV, LUSERC, LUSERR, LUSERI, LUSERS, LUSERG ARE SET TO TRUE")' )
    !
            LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
    
            LUSERI=.TRUE. ; LUSECI=.TRUE.        
    
            LUSERS=.TRUE. ; LUSERG=.TRUE. 
            LUSERH=.FALSE.
          END IF
        END IF
    !
        IF (LSUBG_COND)  THEN
          WRITE(UNIT=ILUOUT,FMT=9003) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH THE SIMPLE MIXED PHASE'
          WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYS. SCHEME AND THE SUBGRID COND. SCHEME.'
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE.'
          WRITE(UNIT=ILUOUT,FMT=*) 'SET LSUBG_COND TO FALSE OR CCLOUD TO "REVE", "KESS"' 
     !callabortstop
    
          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
        END IF
    !
        IF ( CEFRADL /= 'C2R2') THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADL=C2R2 FOR RADIATION'
          WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADL=C2R2 '                       
          WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME'                     
        END IF
    !
        IF ( CCLOUD == 'C3R5' .AND. CEFRADI /= 'C3R5') THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADI=C3R5 FOR RADIATION'
          WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADI=C3R5 '                       
          WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME'                     
        END IF
    !
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
       IF ( WALPHAC /= 3.0 .OR. WNUC /= 2.0) THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'IT IS ADVISED TO USE XALPHAC=3. and XNUC=2.'
          WRITE(UNIT=ILUOUT,FMT=*) 'FOR STRATOCUMULUS WITH KHKO SCHEME. '
       END IF
    !
       IF ( CEFRADL /= 'C2R2') THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADL=C2R2 FOR RADIATION'
          WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADL=C2R2 '   
          WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME'
       END IF
    !
      CASE ( 'LIMA')
        IF ((LACTI .AND. FINI_CCN  == 'XXX')) THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2-MOMENT MICROPHYSICAL ",  &
               &" SCHEME BUT YOU DIDNT FILL CORRECTLY NAM_PARAM_LIMA",             &
               &" YOU HAVE TO FILL FINI_CCN ")')
    
          call Print_msg( NVERB_FATAL, 'GEN', 'READ_EXSEG_n', '' )
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
        END IF
    !
        IF(LACTI .AND. NMOD_CCN == 0) THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
    
          WRITE(UNIT=ILUOUT,FMT='("ACTIVATION OF AEROSOL PARTICLES IS NOT ",      &
               &"POSSIBLE IF NMOD_CCN HAS VALUE ZERO. YOU HAVE TO SET AN UPPER ", &
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
               &"VALUE OF NMOD_CCN IN ORDER TO USE LIMA WARM ACTIVATION SCHEME.")') 
    
          call Print_msg( NVERB_FATAL, 'GEN', 'READ_EXSEG_n', '' )
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
        END IF
    !
        IF(LNUCL .AND. NMOD_IFN == 0 .AND. (.NOT.LMEYERS)) THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
    
          WRITE(UNIT=ILUOUT,FMT='("NUCLEATION BY DEPOSITION AND CONTACT IS NOT ", &
               &"POSSIBLE IF NMOD_IFN HAS VALUE ZERO. YOU HAVE TO SET AN UPPER",  &
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
               &"VALUE OF NMOD_IFN IN ORDER TO USE LIMA COLD NUCLEATION SCHEME.")') 
        END IF
    !
        IF (HCLOUD == 'NONE') THEN
          CGETCLOUD = 'SKIP'
        ELSE IF (HCLOUD == 'REVE' ) THEN
          CGETCLOUD = 'INI1'
        ELSE IF (HCLOUD == 'KESS' ) THEN
          CGETCLOUD = 'INI2'
        ELSE IF (HCLOUD == 'ICE3' ) THEN
          CGETCLOUD = 'INI2'
        ELSE
          CGETCLOUD = 'READ' ! This is automatically done
        END IF
    !
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
          LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
          LUSERI=.FALSE.; LUSERS=.FALSE. ; LUSERG=.FALSE.; LUSERH=.FALSE.
        END IF
    !
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
          LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
    
          LUSERI=.TRUE. ; LUSERS=.TRUE. ; LUSERG=.TRUE.
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
        END IF
    
    VIE Benoît's avatar
    VIE Benoît committed
        !
        IF (LSPRO) LADJ=.FALSE.
        IF (.NOT.LPTSPLIT) THEN
           IF (NMOM_C==1) NMOM_C=2
           IF (NMOM_R==1) NMOM_R=2
           IF (NMOM_I==1) NMOM_I=2
    
           IF (NMOM_S==2 .OR. NMOM_G==2 .OR. NMOM_H==2) THEN
    
    VIE Benoît's avatar
    VIE Benoît committed
              NMOM_S=2
              NMOM_G=2
    
    VIE Benoît's avatar
    VIE Benoît committed
           END IF
        END IF
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
    !
    
    VIE Benoît's avatar
    VIE Benoît committed
        IF (LSUBG_COND .AND. (.NOT. LPTSPLIT)) THEN
    
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU MUST USE LPTSPLIT=T with CCLOUD=LIMA'
          WRITE(UNIT=ILUOUT,FMT=*) 'AND LSUBG_COND '
          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','use LPTSPLIT=T with LIMA and LSUBG_COND=T')
        END IF
    
    VIE Benoît's avatar
    VIE Benoît committed
    !
        IF (LSUBG_COND .AND. (.NOT. LADJ)) THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU MUST USE LADJ=T with CCLOUD=LIMA'
          WRITE(UNIT=ILUOUT,FMT=*) 'AND LSUBG_COND '
          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','use LADJ=T with LIMA and LSUBG_COND=T')
        END IF
    
    VIE Benoît's avatar
    VIE Benoît committed
        IF ( LKHKO .AND. (XALPHAC /= 3.0 .OR. XNUC /= 2.0) ) THEN
    
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) 'IT IS ADVISED TO USE XALPHAC=3. and XNUC=2.'
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
          WRITE(UNIT=ILUOUT,FMT=*) 'FOR STRATOCUMULUS. '
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
        IF ( CEFRADL /= 'LIMA') THEN
    
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
          WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADL=LIMA FOR RADIATION'
          WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADL=LIMA '
          WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME "LIMA"'
    
    VIE Benoît's avatar
    VIE Benoît committed
    !
    
    END SELECT
    !
    LUSERV_G(KMI) = LUSERV
    LUSERC_G(KMI) = LUSERC
    LUSERR_G(KMI) = LUSERR
    LUSERI_G(KMI) = LUSERI
    LUSERS_G(KMI) = LUSERS
    LUSERG_G(KMI) = LUSERG
    LUSERH_G(KMI) = LUSERH
    LUSETKE(KMI) = (CTURB /= 'NONE')
    !
    !-------------------------------------------------------------------------------
    !
    !*       2.3     Chemical and NSV_* variables initializations
    !
    
    CALL UPDATE_NAM_IBM_PARAMN
    CALL UPDATE_NAM_RECYCL_PARAMN
    
    CALL UPDATE_NAM_PARAMN
    CALL UPDATE_NAM_DYNN
    
    CALL UPDATE_NAM_CONFN
    
    !
    IF (LORILAM .AND. .NOT. LUSECHEM) THEN
      WRITE(UNIT=ILUOUT,FMT=9002) KMI
      WRITE(ILUOUT,FMT=*) 'YOU CANNOT USE ORILAM AEROSOL SCHEME WITHOUT  '
      WRITE(ILUOUT,FMT=*) 'CHEMICAL GASEOUS CHEMISTRY                    '
      WRITE(ILUOUT,FMT=*) 'THEREFORE LUSECHEM IS SET TO TRUE    '
      LUSECHEM=.TRUE.
    END IF
    !
    IF (LUSECHAQ.AND.(.NOT.LUSECHEM))  THEN
      WRITE(UNIT=ILUOUT,FMT=9003) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE AQUEOUS PHASE CHEMISTRY'
      WRITE(UNIT=ILUOUT,FMT=*) 'BUT THE CHEMISTRY IS NOT ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHEM TO TRUE IF YOU WANT REALLY USE CHEMISTRY' 
      WRITE(UNIT=ILUOUT,FMT=*) 'OR SET LUSECHAQ TO FALSE IF YOU DO NOT WANT USE IT' 
     !callabortstop
    
      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
    END IF
    IF (LUSECHAQ.AND.(.NOT.LUSERC).AND.CPROGRAM=='MESONH')  THEN
      WRITE(UNIT=ILUOUT,FMT=9003) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE AQUEOUS PHASE CHEMISTRY'
      WRITE(UNIT=ILUOUT,FMT=*) 'BUT CLOUD MICROPHYSICS IS NOT ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'LUSECHAQ IS SET TO FALSE' 
      LUSECHAQ = .FALSE.
    END IF
    IF (LUSECHAQ.AND.CCLOUD(1:3) == 'ICE'.AND. .NOT. LUSECHIC) THEN
      WRITE(UNIT=ILUOUT,FMT=9002) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE AQUEOUS PHASE CHEMISTRY'
      WRITE(UNIT=ILUOUT,FMT=*) 'WITH MIXED PHASE CLOUD MICROPHYSICS'
      WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHIC TO TRUE IF YOU WANT TO ACTIVATE'
      WRITE(UNIT=ILUOUT,FMT=*) 'ICE PHASE CHEMICAL SPECIES'
      IF (LCH_RET_ICE) THEN
        WRITE(UNIT=ILUOUT,FMT=*) 'LCH_RET_ICE TRUE MEANS ALL SOLUBLE'
        WRITE(UNIT=ILUOUT,FMT=*) 'GASES ARE RETAINED IN ICE PHASE'
        WRITE(UNIT=ILUOUT,FMT=*) 'WHEN SUPERCOOLED WATER FREEZES'
      ELSE
        WRITE(UNIT=ILUOUT,FMT=*) 'LCH_RET_ICE FALSE MEANS ALL SOLUBLE'
        WRITE(UNIT=ILUOUT,FMT=*) 'GASES GO BACK TO THE GAS PHASE WHEN'
        WRITE(UNIT=ILUOUT,FMT=*) 'SUPERCOOLED WATER FREEZES'
      ENDIF
    ENDIF
    
    IF (LUSECHIC.AND. .NOT. CCLOUD(1:3) == 'ICE'.AND.CPROGRAM=='MESONH') THEN
    
      WRITE(UNIT=ILUOUT,FMT=9003) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE ICE PHASE CHEMISTRY'
      WRITE(UNIT=ILUOUT,FMT=*) 'BUT MIXED PHASE CLOUD MICROPHYSICS IS NOT ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'LUSECHIC IS SET TO FALSE'  
      LUSECHIC= .FALSE.
    ENDIF
    IF (LCH_PH.AND. (.NOT. LUSECHAQ)) THEN
      WRITE(UNIT=ILUOUT,FMT=9003) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'DIAGNOSTIC PH COMPUTATION IS ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'BUT AQUEOUS PHASE CHEMISTRY IS NOT ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHAQ TO TRUE IF YOU WANT TO ACTIVATE IT'
      WRITE(UNIT=ILUOUT,FMT=*) 'LCH_PH IS SET TO FALSE'
      LCH_PH= .FALSE.
    ENDIF
    IF (LUSECHIC.AND.(.NOT.LUSECHAQ))  THEN
      WRITE(UNIT=ILUOUT,FMT=9003) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE ICE PHASE CHEMISTRY'
      WRITE(UNIT=ILUOUT,FMT=*) 'BUT THE AQUEOUS PHASE CHEMISTRY IS NOT ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHAQ TO TRUE IF YOU WANT REALLY USE CLOUD CHEMISTRY'
      WRITE(UNIT=ILUOUT,FMT=*) 'OR SET LUSECHIC TO FALSE IF YOU DO NOT WANT USE IT'
    !callabortstop
    
      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
    END IF
    IF ((LUSECHIC).AND.(LCH_RET_ICE)) THEN
      WRITE(UNIT=ILUOUT,FMT=9003) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE RETENTION OF SOLUBLE GASES IN ICE'
      WRITE(UNIT=ILUOUT,FMT=*) 'BUT THE ICE PHASE CHEMISTRY IS ACTIVATED'
      WRITE(UNIT=ILUOUT,FMT=*) 'FLAG LCH_RET_ICE IS ONLY USES WHEN LUSECHIC IS SET'
      WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE IE NO CHEMICAL SPECIES IN ICE' 
    ENDIF
    !
    
    CALL UPDATE_NAM_CH_MNHCN
    
    CALL INI_NSV(KMI)
    !
    ! From this point, all NSV* variables contain valid values for model KMI
    ! 
    DO JSV = 1,NSV
     LUSESV(JSV,KMI) = .TRUE.
    END DO
    !
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
    IF ( CAOP=='EXPL' .AND. .NOT.LDUST .AND. .NOT.LORILAM          &
                      .AND. .NOT.LSALT .AND. .NOT.(CCLOUD=='LIMA') ) THEN
    
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT=*) ' YOU WANT TO USE EXPLICIT AEROSOL OPTICAL '       
          WRITE(UNIT=ILUOUT,FMT=*) 'PROPERTIES BUT YOU DONT HAVE DUST OR '            
          WRITE(UNIT=ILUOUT,FMT=*) 'AEROSOL OR SALT THEREFORE CAOP=CLIM'            
          CAOP='CLIM'
    END IF      
    !-------------------------------------------------------------------------------
    !
    !*       3.    CHECK COHERENCE BETWEEN EXSEG VARIABLES AND FMFILE ATTRIBUTES
    !              -------------------------------------------------------------
    !
    !
    !*       3.1  Turbulence variable 
    !
    IF ((CTURB /= 'NONE').AND.(HTURB == 'NONE')) THEN
      CGETTKET ='INIT'
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE TURBULENCE KINETIC ENERGY TKE'
      WRITE(UNIT=ILUOUT,FMT=*)'WHEREAS IT  IS NOT IN INITIAL FMFILE'
      WRITE(UNIT=ILUOUT,FMT=*)'TKE WILL BE INITIALIZED TO ZERO'
    ELSE 
      IF (CTURB /= 'NONE') THEN 
        CGETTKET ='READ'
    
        IF ((CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETTKET='INIT' 
      ELSE
       CGETTKET ='SKIP'
    
    END IF
    
    !
    !
    IF ((CTOM == 'TM06').AND.(HTOM /= 'TM06')) THEN
      CGETBL_DEPTH ='INIT'
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE BL DEPTH FOR THIRD ORDER MOMENTS'
      WRITE(UNIT=ILUOUT,FMT=*)'WHEREAS IT IS NOT IN INITIAL FMFILE'
      WRITE(UNIT=ILUOUT,FMT=*)'IT WILL BE INITIALIZED TO ZERO'
    ELSE 
      IF (CTOM == 'TM06') THEN 
        CGETBL_DEPTH ='READ'
      ELSE 
        CGETBL_DEPTH ='SKIP'
      END IF
    END IF
    !
    IF (LRMC01 .AND. .NOT. ORMC01) THEN
      CGETSBL_DEPTH ='INIT'
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE SBL DEPTH FOR RMC01'
      WRITE(UNIT=ILUOUT,FMT=*)'WHEREAS IT IS NOT IN INITIAL FMFILE'
      WRITE(UNIT=ILUOUT,FMT=*)'IT WILL BE INITIALIZED TO ZERO'
    ELSE 
      IF (LRMC01) THEN 
        CGETSBL_DEPTH ='READ'
      ELSE 
        CGETSBL_DEPTH ='SKIP'
      END IF
    END IF
    !
    !
    !*       3.2  Moist  variables 
    !
    IF (LUSERV.AND. (.NOT.OUSERV)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE VAPOR VARIABLE Rv WHEREAS IT  ", &
                      & "IS NOT IN INITIAL FMFILE",/,                           &
                      & "Rv WILL BE INITIALIZED TO ZERO")')
      CGETRVT='INIT'
    ELSE                                                                
      IF (LUSERV) THEN
        CGETRVT='READ'
      ELSE
        CGETRVT='SKIP'
      END IF
    END IF
    !
    IF (LUSERC.AND. (.NOT.OUSERC)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE CLOUD VARIABLE Rc WHEREAS IT ",  &
                     &   " IS NOT IN INITIAL FMFILE",/,                        &
                     &   "Rc WILL BE INITIALIZED TO ZERO")')
      CGETRCT='INIT'
    ELSE
      IF (LUSERC) THEN
        CGETRCT='READ'
    
    !   IF(CCONF=='START') CGETRCT='INIT' 
    
      ELSE
        CGETRCT='SKIP'
      END IF
    END IF
    !
    IF (LUSERR.AND. (.NOT.OUSERR)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE RAIN VARIABLE Rr WHEREAS IT ", &
                      &  "IS NOT IN INITIAL FMFILE",/,                     &
                      &  " Rr WILL BE INITIALIZED TO ZERO")')
     
      CGETRRT='INIT'
    ELSE
      IF (LUSERR) THEN
        CGETRRT='READ'
    
    !   IF( (CCONF=='START').AND. CPROGRAM /= 'DIAG') CGETRRT='INIT' 
    
      ELSE
        CGETRRT='SKIP'
      END IF
    END IF
    !
    IF (LUSERI.AND. (.NOT.OUSERI)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE ICE VARIABLE Ri WHEREAS IT ", &
                   &    "IS NOT IN INITIAL FMFILE",/,                      &
                   &     " Ri WILL BE INITIALIZED TO ZERO")')
      CGETRIT='INIT'
    ELSE
      IF (LUSERI) THEN
        CGETRIT='READ'
    
    !   IF(CCONF=='START') CGETRIT='INIT' 
    
      ELSE
        CGETRIT='SKIP'
      END IF
    END IF
    !
    IF (LUSECI.AND. (.NOT.OUSECI)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE ICE CONC. VARIABLE Ci WHEREAS IT ",&
                   &          "IS NOT IN INITIAL FMFILE",/,                       &
                   &          "   Ci WILL BE INITIALIZED TO ZERO")')
      CGETCIT='INIT'
    ELSE
      IF (LUSECI) THEN
        CGETCIT='READ'
      ELSE
        CGETCIT='SKIP'
      END IF
    END IF
    !
    IF (LUSERS.AND. (.NOT.OUSERS)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE SNOW VARIABLE Rs WHEREAS IT ",&
                      &  "IS NOT IN INITIAL FMFILE",/,                       &
                      &  " Rs WILL BE INITIALIZED TO ZERO")')
      CGETRST='INIT'
    ELSE
      IF (LUSERS) THEN
        CGETRST='READ'
    
    !   IF ( (CCONF=='START').AND. CPROGRAM /= 'DIAG') CGETRST='INIT' 
    
      ELSE
        CGETRST='SKIP'
      END IF
    END IF
    !
    IF (LUSERG.AND. (.NOT.OUSERG)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE GRAUPEL VARIABLE Rg WHEREAS ",&
                       & " IT IS NOTIN INITIAL FMFILE",/,                    &
                       & "Rg WILL BE INITIALIZED TO ZERO")')
      CGETRGT='INIT'
    ELSE
      IF (LUSERG) THEN
        CGETRGT='READ'
    
    !   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETRGT='INIT' 
    
      ELSE
        CGETRGT='SKIP'
      END IF
    END IF
    !
    IF (LUSERH.AND. (.NOT.OUSERH)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE HAIL VARIABLE Rh WHEREAS",&
                      &  "IT IS NOT IN INITIAL FMFILE",/,                &
                      & " Rh WILL BE INITIALIZED TO ZERO")')
       CGETRHT='INIT'
    ELSE
      IF (LUSERH) THEN
        CGETRHT='READ'
    
    !   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETRHT='INIT' 
    
      ELSE
        CGETRHT='SKIP'
      END IF
    END IF
    !
    IF (LUSERC.AND. (.NOT.OUSERC)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'THE CLOUD FRACTION WILL BE INITIALIZED ACCORDING'
      WRITE(UNIT=ILUOUT,FMT=*) 'TO CLOUD MIXING RATIO VALUE OR SET TO 0'
      CGETCLDFR = 'INIT'
    ELSE
      IF ( LUSERC ) THEN
        CGETCLDFR = 'READ'
    
        IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETCLDFR='INIT' 
    
      ELSE
        CGETCLDFR = 'SKIP'
      END IF
    END IF
    
    IF (LUSERI.AND. (.NOT.OUSERI)) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'THE ICE CLOUD FRACTION WILL BE INITIALIZED ACCORDING'
      WRITE(UNIT=ILUOUT,FMT=*) 'TO CLOUD MIXING RATIO VALUE OR SET TO 0'
      CGETICEFR = 'INIT'
    ELSE
      IF ( LUSERI ) THEN
        CGETICEFR = 'READ'
        IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETICEFR='INIT' 
      ELSE
        CGETICEFR = 'SKIP'
      END IF
    END IF
    !
    
    IF(CTURBLEN=='RM17' .OR. CTURBLEN=='HM21') THEN
    
    !*       3.3  Moist turbulence
    !
    IF ( LUSERC .AND. CTURB /= 'NONE' ) THEN
      IF ( .NOT. (OUSERC .AND. HTURB /= 'NONE') ) THEN
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE MOIST TURBULENCE WHEREAS IT ",/, &
                     &   " WAS NOT THE CASE FOR THE INITIAL FMFILE GENERATION",/, &
                     &    "SRC AND SIGS ARE INITIALIZED TO 0")')
        CGETSRCT ='INIT'
        CGETSIGS ='INIT'
      ELSE
        CGETSRCT ='READ'
    
        IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETSRCT ='INIT'
    
        CGETSIGS ='READ'
      END IF
    ELSE
      CGETSRCT ='SKIP'
      CGETSIGS ='SKIP'
    END IF
    !
    IF(NMODEL_CLOUD==KMI .AND. CTURBLEN_CLOUD/='NONE') THEN
      IF (CTURB=='NONE' .OR. .NOT.LUSERC) THEN
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO COMPUTE A MIXING LENGTH FOR CLOUD=", &
                     &   A4,/, &
                     &   ", WHEREAS YOU DO NOT SPECIFY A TURBULENCE SCHEME OR ",  &
                     &   "USE OF RC,",/," CTURBLEN_CLOUD IS SET TO NONE")')       &
                     CTURBLEN_CLOUD
        CTURBLEN_CLOUD='NONE'
      END IF
      IF( XCEI_MIN > XCEI_MAX ) THEN
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("PROBLEM OF CEI LIMITS FOR CLOUD MIXING  ",/, &
                     &   "LENGTH COMPUTATION: XCEI_MIN=",E9.3,", XCEI_MAX=",E9.3)')&
                     XCEI_MIN,XCEI_MAX
     !callabortstop
    
        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
      END IF
    END IF
    !
    IF ( LSIGMAS ) THEN
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE SIGMA_S FROM TURBULENCE SCHEME",/, &
                     &   " IN ICE SUBGRID CONDENSATION, SO YOUR SIGMA_S"/, &
                     &   " MIGHT BE SMALL ABOVE PBL DEPENDING ON LENGTH SCALE")')
    END IF
    !
    IF (LSUBG_COND .AND. CTURB=='NONE' ) THEN
      WRITE(UNIT=ILUOUT,FMT=9002) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID CONDENSATION'
      WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT TURBULENCE '                           
      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: LSUBG_COND is SET to FALSE'
      LSUBG_COND=.FALSE.
    END IF
    !
    IF (L1D .AND. CTURB/='NONE' .AND. CTURBDIM == '3DIM') THEN
      WRITE(UNIT=ILUOUT,FMT=9002) KMI
      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE 3D TURBULENCE IN 1D CONFIGURATION '
      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT POSSIBLE: CTURBDIM IS SET TO 1DIM'
      CTURBDIM = '1DIM'
    END IF
    !
    !*       3.4  Additional scalar variables 
    !
    IF (NSV_USER == KSV_USER) THEN
      DO  JS = 1,KSV_USER             ! to read all the variables in initial file 
        CGETSVT(JS)='READ'            ! and to initialize them 
    
    !   IF(CCONF=='START')CGETSVT(JS)='INIT'       ! with  these values  
    
      END DO
    ELSEIF (NSV_USER > KSV_USER) THEN
    
     IF (KSV_USER == 0) THEN
        CGETSVT(1:NSV_USER)='INIT'
     ELSE
    
      WRITE(UNIT=ILUOUT,FMT=9001) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE MORE ADDITIONAL SCALAR  " ,&
      &" VARIABLES THAN THERE ARE IN INITIAL FMFILE",/,                  &
      & "THE SUPPLEMENTARY VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
      DO  JS = 1,KSV_USER             ! to read all the variables in initial file 
        CGETSVT(JS)='READ'            ! and to initialize them
    
    !   IF(CCONF=='START')CGETSVT(JS)='INIT'        ! with  these values
    
      END DO
      DO JS = KSV_USER+1, NSV_USER    ! to initialize to zero supplementary
        CGETSVT(JS)='INIT'            ! initial file)
      END DO
    
     END IF
    
    ELSE
      WRITE(UNIT=ILUOUT,FMT=9000) KMI
      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE LESS ADDITIONAL SCALAR  " ,&
      &" VARIABLES THAN THERE ARE IN INITIAL FMFILE")')
      DO  JS = 1,NSV_USER             ! to read the first NSV_USER variables in initial file 
        CGETSVT(JS)='READ'            ! and to initialize with these values
    
      END DO 
      DO  JS = NSV_USER + 1, KSV_USER ! to skip the last (KSV_USER-NSV_USER) variables
        CGETSVT(JS)='SKIP' 
      END DO
    END IF
    !
    ! C2R2 and KHKO SV case
    !
    IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN 
      IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO') THEN
        CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR C2R2 &
             & (or KHKO) SCHEME IN INITIAL FMFILE",/,&
             & "THE C2R2 (or KHKO) VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
      END IF
    END IF
    !
    ! C3R5 SV case
    !
    IF (CCLOUD == 'C3R5') THEN 
      IF (HCLOUD == 'C3R5') THEN
        CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR C3R5 &
             &SCHEME IN INITIAL FMFILE",/,&
             & "THE C1R3 VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
      END IF
    END IF
    !
    
    Gaelle TANGUY's avatar
    Gaelle TANGUY committed
    ! LIMA SV case
    !
    IF (CCLOUD == 'LIMA') THEN
      IF (HCLOUD == 'LIMA') THEN
        CGETSVT(NSV_LIMA_BEG:NSV_LIMA_END)='READ'
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR LIMA &
               & SCHEME IN INITIAL FMFILE",/,&
               & "THE LIMA VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_LIMA_BEG:NSV_LIMA_END)='INIT'
      END IF
    END IF
    !
    
    ! Electrical SV case
    !
    IF (CELEC /= 'NONE') THEN 
      IF (HELEC /= 'NONE') THEN
        CGETSVT(NSV_ELECBEG:NSV_ELECEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR ELECTRICAL &
             &SCHEME IN INITIAL FMFILE",/,&
             & "THE ELECTRICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
      END IF
    END IF
    !
    
    ! (explicit) LINOx SV case 
    !
    IF (CELEC /= 'NONE' .AND. LLNOX_EXPLICIT) THEN
      IF (HELEC /= 'NONE' .AND. OLNOX_EXPLICIT) THEN
        CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='READ' 
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR LINOX &
             & IN INITIAL FMFILE",/,& 
             & "THE LINOX VARIABLES HAVE BEEN INITIALIZED TO ZERO ")')  
        CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='INIT' 
      END IF
    END IF
    !
    
    ! Chemical SV case (excluding aqueous chemical species)
    
    !
    IF (LUSECHEM) THEN
      IF (OUSECHEM) THEN
    
        CGETSVT(NSV_CHGSBEG:NSV_CHGSEND)='READ'
        IF(CCONF=='START' .AND. LCH_INIT_FIELD ) CGETSVT(NSV_CHGSBEG:NSV_CHGSEND)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
             &SCHEME IN INITIAL FMFILE",/,&
             & "THE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
    
        CGETSVT(NSV_CHGSBEG:NSV_CHGSEND)='INIT'
      END IF
    END IF
    ! add aqueous chemical species
    IF (LUSECHAQ) THEN
      IF (OUSECHAQ) THEN
        CGETSVT(NSV_CHACBEG:NSV_CHACEND)='READ'
    !    IF(CCONF=='START') CGETSVT(NSV_CHACBEG:NSV_CHACEND)='INIT'
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
             &SCHEME IN AQUEOUS PHASE IN INITIAL FMFILE",/,&
             & "THE AQUEOUS PHASE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_CHACBEG:NSV_CHACEND)='INIT'
    
      END IF
    END IF
    ! add ice phase chemical species
    IF (LUSECHIC) THEN
      IF (OUSECHIC) THEN
        CGETSVT(NSV_CHICBEG:NSV_CHICEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
             &SPECIES IN ICE PHASE IN INITIAL FMFILE",/,&
             & "THE ICE PHASE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")')
        CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
      END IF
    END IF
    ! pH values = diagnostics
    IF (LCH_PH .AND. .NOT. OCH_PH) THEN
      CGETPHC ='INIT'  !will be initialized to XCH_PHINIT
      IF (LUSERR) THEN
        CGETPHR = 'INIT' !idem
      ELSE 
        CGETPHR = 'SKIP'
      ENDIF
    ELSE
      IF (LCH_PH) THEN
        CGETPHC ='READ'
        IF (LUSERR) THEN
          CGETPHR = 'READ'
        ELSE
          CGETPHR = 'SKIP'
        ENDIF
      ELSE
        CGETPHC ='SKIP'
        CGETPHR ='SKIP'
      END IF
    END IF
    !
    ! Dust case
    !
    IF (LDUST) THEN
      IF (ODUST) THEN
        CGETSVT(NSV_DSTBEG:NSV_DSTEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR DUST &
             &SCHEME IN INITIAL FMFILE",/,&
             & "THE DUST VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
      END IF
      IF (LDEPOS_DST(KMI)) THEN
    
    
      IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
    
      .AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.(CCLOUD /= 'LIMA').AND. &
    
           (CPROGRAM/='SPAWN').AND.(CPROGRAM/='REAL'))  THEN
    
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF DUST IS ONLY CODED FOR THE",/,&
    
             & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO, LIMA and C2R2")') 
              !UPG *PT
    
     !callabortstop
    
        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
      END IF  
    
       IF (ODEPOS_DST(KMI) ) THEN
        CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
    
       ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and CLOUD DUST &
             &  SCHEME IN INITIAL FMFILE",/,&
             & "THE MOIST DUST VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
       END IF
      END IF  
    
    
      IF(NMODE_DST.GT.3 .OR. NMODE_DST.LT.1) THEN
    
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("DUST MODES MUST BE BETWEEN 1 and 3 ")') 
     !callabortstop
    
        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
    !
    ! Sea Salt case
    !
    IF (LSALT) THEN
      IF (OSALT) THEN
        CGETSVT(NSV_SLTBEG:NSV_SLTEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR SALT &
             &SCHEME IN INITIAL FMFILE",/,&
             & "THE SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
    
      END IF
      IF (LDEPOS_SLT(KMI)) THEN
    
    
      IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
    
      !.AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.                &
      .AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.(CCLOUD /= 'LIMA').AND. &
    
           (CPROGRAM/='SPAWN').AND.(CPROGRAM/='REAL'))  THEN
    
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF SEA SALT AEROSOLS IS ONLY CODED FOR THE",/,&
    
             & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO, LIMA and C2R2")') 
              !UPG*PT
    
     !callabortstop
    
        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
    
      END IF  
    
       IF (ODEPOS_SLT(KMI) ) THEN
        CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
    
       ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and CLOUD SEA SALT &
             &  SCHEME IN INITIAL FMFILE",/,&
             & "THE MOIST SEA SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
       END IF
      END IF
    
      IF(NMODE_SLT.GT.8 .OR. NMODE_SLT.LT.1) THEN
    
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
    
        WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 8 ")') 
    
     !callabortstop
    
        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')