Skip to content
Snippets Groups Projects
read_exsegn.f90 105 KiB
Newer Older
  • Learn to ignore specific revisions
  • Gaelle TANGUY's avatar
    Gaelle TANGUY committed
        IF (LDUST )  THEN
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND DUSTS '
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LDUST '
          WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
     !callabortstop
          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
          CALL ABORT
          STOP
        END IF   
      IF (LSALT )  THEN
          WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND SEA SALTS '
          WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LSALT '
          WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
     !callabortstop
          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
          CALL ABORT
          STOP
        END IF 
    
    !
    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_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 CLOSE_ll(HLUOUT,IOSTAT=IRESP)
      CALL ABORT
      STOP
    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 CLOSE_ll(HLUOUT,IOSTAT=IRESP)
      CALL ABORT
      STOP
    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
    !
    IF (LUSECHEM) THEN
      CALL CH_INIT_SCHEME_n(KMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB)
      IF (LORILAM) CALL CH_AER_INIT_SOA(ILUOUT, NVERB)
    END IF
    !
    
    
    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
    
    !
    !*       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 CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      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'
    !!JPP    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_LIMA_BEG:NSV_LIMA_END)='INIT'
      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'))  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 and C2R2")') 
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      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 CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      END IF     
      IF(.NOT.ALLOCATED(CDUSTNAMES)) THEN
        IMOMENTS = (NSV_DSTEND - NSV_DSTBEG +1 )/NMODE_DST
        ALLOCATE(CDUSTNAMES(IMOMENTS*NMODE_DST))
        !Loop on all dust modes
        IF (IMOMENTS == 1) THEN
        DO JMODE=1,NMODE_DST
          IMODEIDX=JPDUSTORDER(JMODE)
          JSV_NAME = (IMODEIDX - 1)*3 + 2
          CDUSTNAMES(JMODE) = YPDUST_INI(JSV_NAME)
        END DO
        ELSE
        DO JMODE=1,NMODE_DST  
          !Find which mode we are dealing with
          IMODEIDX=JPDUSTORDER(JMODE)
          DO JMOM=1,IMOMENTS
            !Find which number this is of the list of scalars
            JSV = (JMODE-1)*IMOMENTS + JMOM
            !Find what name this corresponds to, always 3 moments assumed in YPDUST_INI
            JSV_NAME = (IMODEIDX - 1)*3 + JMOM
            !Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT
            CDUSTNAMES(JSV) = YPDUST_INI(JSV_NAME)
          ENDDO ! Loop on moments
        ENDDO    ! Loop on dust modes
        END IF 
      END IF 
      ! Initialization of deposition scheme
      IF (LDEPOS_DST(KMI)) THEN
        IF(.NOT.ALLOCATED(CDEDSTNAMES)) THEN
          ALLOCATE(CDEDSTNAMES(NMODE_DST*2))
          DO JMODE=1,NMODE_DST  
            IMODEIDX=JPDUSTORDER(JMODE)
            CDEDSTNAMES(JMODE) = YPDEDST_INI(IMODEIDX)
            CDEDSTNAMES(NMODE_DST+JMODE) = YPDEDST_INI(NMODE_DST+IMODEIDX)
          ENDDO
        ENDIF    
      ENDIF
    
    END IF 
    !
    ! 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'))  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 and C2R2")') 
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      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.3 .OR. NMODE_SLT.LT.1) THEN
    
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 3 ")') 
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      END IF     
      IF(.NOT.ALLOCATED(CSALTNAMES)) THEN
        IMOMENTS = (NSV_SLTEND - NSV_SLTBEG +1 )/NMODE_SLT
        ALLOCATE(CSALTNAMES(IMOMENTS*NMODE_SLT))
        !Loop on all dust modes
        IF (IMOMENTS == 1) THEN
        DO JMODE=1,NMODE_SLT
          IMODEIDX=JPSALTORDER(JMODE)
          JSV_NAME = (IMODEIDX - 1)*3 + 2
          CSALTNAMES(JMODE) = YPSALT_INI(JSV_NAME)
        END DO
        ELSE
        DO JMODE=1,NMODE_SLT  
          !Find which mode we are dealing with
          IMODEIDX=JPSALTORDER(JMODE)
          DO JMOM=1,IMOMENTS
            !Find which number this is of the list of scalars
            JSV = (JMODE-1)*IMOMENTS + JMOM
            !Find what name this corresponds to, always 3 moments assumed in YPSALT_INI
            JSV_NAME = (IMODEIDX - 1)*3 + JMOM
            !Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT
            CSALTNAMES(JSV) = YPSALT_INI(JSV_NAME)
          ENDDO ! Loop on moments
        ENDDO    ! Loop on dust modes
        END IF
      END IF 
      ! Initialization of deposition scheme
      IF (LDEPOS_SLT(KMI)) THEN
        IF(.NOT.ALLOCATED(CDESLTNAMES)) THEN
          ALLOCATE(CDESLTNAMES(NMODE_SLT*2))
          DO JMODE=1,NMODE_SLT  
            IMODEIDX=JPDUSTORDER(JMODE)
            CDESLTNAMES(JMODE) = YPDESLT_INI(IMODEIDX)
            CDESLTNAMES(NMODE_SLT+JMODE) = YPDESLT_INI(NMODE_SLT+IMODEIDX)
          ENDDO
        ENDIF    
      ENDIF
    END IF 
    !
    ! Orilam SV case
    !
    IF (LORILAM) THEN
      IF (OORILAM) THEN
        CGETSVT(NSV_AERBEG:NSV_AEREND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR AEROSOL &
             &SCHEME IN INITIAL FMFILE",/,&
             & "THE AEROSOLS VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
      END IF
      IF (LDEPOS_AER(KMI)) THEN
    
      IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
      .AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2'))  THEN
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF ORILAM AEROSOLS IS ONLY CODED FOR THE",/,&
             & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      END IF  
    
       IF (ODEPOS_AER(KMI) ) THEN
        CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
    
       ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and IN CLOUD  &
             &  AEROSOL SCHEME IN INITIAL FMFILE",/,&
             & "THE MOIST AEROSOL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
        CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
       END IF
      END IF
    ! Initialization of deposition scheme
      IF (LDEPOS_AER(KMI)) THEN
        IF(.NOT.ALLOCATED(CDEAERNAMES)) THEN
          ALLOCATE(CDEAERNAMES(JPMODE*2))
            CDEAERNAMES(:) = YPDEAER_INI(:)
        ENDIF    
      ENDIF
    END IF
    !
    ! Lagrangian variables
    !
    IF (LINIT_LG .AND. .NOT.(LLG)) THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT='("IT IS INCOHERENT TO HAVE LINIT_LG=.T. AND LLG=.F.",/,&
          & "IF YOU WANT LAGRANGIAN TRACERS CHANGE LLG TO .T. ")')
    ENDIF
    IF (LLG) THEN
      IF (OLG .AND. .NOT.(LINIT_LG .AND. CPROGRAM=='MESONH')) THEN
        CGETSVT(NSV_LGBEG:NSV_LGEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
    
      ELSE
        IF(.NOT.(LINIT_LG) .AND. CPROGRAM=='MESONH') THEN
          WRITE(UNIT=ILUOUT,FMT=9001) KMI
          WRITE(UNIT=ILUOUT,FMT='("THERE IS NO LAGRANGIAN VARIABLES IN INITIAL FMFILE",/,&
                           & "THE LAGRANGIAN VARIABLES HAVE BEEN REINITIALIZED")')
          LINIT_LG=.TRUE.
        ENDIF
        CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
      END IF
    END IF
    !
    !
    ! LINOx SV case
    !
    IF (.NOT.LUSECHEM .AND. LCH_CONV_LINOX) THEN
      IF (.NOT.OUSECHEM .AND. OCH_CONV_LINOX) THEN
        CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='READ'
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9002) 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
    !
    ! Passive pollutant case
    !
    IF (LPASPOL) THEN
      IF (OPASPOL) THEN
        CGETSVT(NSV_PPBEG:NSV_PPEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'    
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO PASSIVE SCALAR VARIABLES IN INITIAL FMFILE",/,&
                           & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
        CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'
      END IF
    END IF
    !
    
    #ifdef MNH_FOREFIRE
    ! ForeFire
    !
    IF (LFOREFIRE) THEN
      IF (OFOREFIRE) THEN
        CGETSVT(NSV_FFBEG:NSV_FFEND)='READ'
        IF(HSTORAGE_TYPE=='TT') THEN
          CGETSVT(NSV_FFBEG:NSV_FFEND)='INIT'
        END IF
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO FOREFIRE SCALAR VARIABLES IN INITIAL FMFILE",/,&
                           & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
        CGETSVT(NSV_FFBEG:NSV_FFEND)='INIT'
      END IF
    END IF
    #endif
    !
    
    ! Conditional sampling case
    !
    IF (LCONDSAMP) THEN
      IF (OCONDSAMP) THEN
        CGETSVT(NSV_CSBEG:NSV_CSEND)='READ'
    
    !   IF(CCONF=='START') CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'       
    
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT='("THERE IS NO PASSIVE SCALAR VARIABLES IN INITIAL FMFILE",/,&
                           & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
        CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'
      END IF
    END IF
    !
    !
    !*       3.5  Check coherence between the radiation control parameters
    !
    IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
      IF(CLW == 'RRTM' .AND. COPILW == 'SMSH') THEN
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'the SMSH parametrisation of LW optical properties for cloud ice'
        WRITE(UNIT=ILUOUT,FMT=*) '(COPILW) can not be used with RRTM radiation scheme'
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      ENDIF
      IF(CLW == 'MORC' .AND. COPWLW == 'LILI') THEN
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'the LILI parametrisation of LW optical properties for cloud water'
        WRITE(UNIT=ILUOUT,FMT=*) '(COPWLW) can not be used with MORC radiation scheme'
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      ENDIF
      IF( .NOT. LSUBG_COND) THEN
        WRITE(UNIT=ILUOUT,FMT=9000) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'YOU DO NOT WANT TO USE SUBGRID CONDENSATION'             
        WRITE(UNIT=ILUOUT,FMT=*) 'THE OVERLAP OPTION IS NOVLP=5 IN ini_radconf.f90'
      ELSE IF (CLW == 'MORC') THEN
        WRITE(UNIT=ILUOUT,FMT=9000) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE MORCRETTE LW SCHEME'                   
        WRITE(UNIT=ILUOUT,FMT=*) 'THE OVERLAP OPTION IS NOVLP=5 IN ini_radconf.f90'
      ELSE
        WRITE(UNIT=ILUOUT,FMT=9000) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'THE OVERLAP OPTION IS NOVLP=6 IN ini_radconf.f90'
      ENDIF
    !
      IF( LCLEAR_SKY .AND. XDTRAD_CLONLY /= XDTRAD) THEN
        ! Check the validity of the LCLEAR_SKY approximation
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH THE CLEAR-SKY APPROXIMATION'
        WRITE(UNIT=ILUOUT,FMT=*) '(i.e. AVERAGE THE WHOLE CLOUDFREE VERTICALS BUT KEEP'
        WRITE(UNIT=ILUOUT,FMT=*) 'ALL THE CLOUDY VERTICALS) AND'
        WRITE(UNIT=ILUOUT,FMT=*) 'THE CLOUD-ONLY APPROXIMATION (i.e. YOU CALL MORE OFTEN THE'
        WRITE(UNIT=ILUOUT,FMT=*) 'RADIATIONS FOR THE CLOUDY VERTICALS THAN FOR CLOUDFREE ONES).'
        WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT POSSIBLE, SO CHOOSE BETWEEN :'
        WRITE(UNIT=ILUOUT,FMT=*) 'XDTRAD_CLONLY = XDTRAD and LCLEAR_SKY = FALSE'
    !
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      END IF
    !
      IF( XDTRAD_CLONLY > XDTRAD ) THEN
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("BAD USE OF THE CLOUD-ONLY APPROXIMATION   " ,&
        &" XDTRAD SHOULD BE LARGER THAN XDTRAD_CLONLY                      ")')
    !
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      END IF
    !
      IF(( XDTRAD < XTSTEP ).OR. ( XDTRAD_CLONLY < XTSTEP )) THEN
        WRITE(UNIT=ILUOUT,FMT=9003) KMI
        WRITE(UNIT=ILUOUT,FMT='("THE RADIATION CALL XDTRAD OR XDTRAD_CLONLY " ,&
        &" IS MORE FREQUENT THAN THE TIME STEP SO ADJUST XDTRAD OR XDTRAD_CLONLY ")')
    !
     !callabortstop
        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
        CALL ABORT
        STOP
      END IF
    END IF
    !
    
    IF ( CRAD /= 'NONE' .AND. CPROGRAM=='MESONH' ) THEN
    
      CGETRAD='READ'
      IF( HRAD == 'NONE' .AND. CCONF=='RESTA') THEN
        WRITE(UNIT=ILUOUT,FMT=9001) KMI
        WRITE(UNIT=ILUOUT,FMT=*) 'YOU ARE PERFORMING A RESTART. FOR THIS SEGMENT, YOU ARE USING A RADIATION'
        WRITE(UNIT=ILUOUT,FMT=*) 'SCHEME AND NO RADIATION SCHEME WAS USED FOR THE PREVIOUS SEGMENT.'
        CGETRAD='INIT'
      END IF
      IF(CCONF=='START') THEN
        CGETRAD='INIT'
      END IF
    END IF
    !
    !        3.6  check the initialization of the deep convection scheme
    !
    IF ( (CDCONV /= 'KAFR') .AND. &
          (CSCONV /= 'KAFR') .AND. LCHTRANS ) THEN
       WRITE(UNIT=ILUOUT,FMT=9003) KMI
       WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LCHTRANS OPTION= ",&
        &"CONVECTIVE TRANSPORT OF TRACERS BUT  IT CAN ONLY",&
        &"BE USED FOR THE KAIN FRITSCH SCHEME ")')
     !callabortstop
       CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
       CALL ABORT
       STOP
    END IF
    !
    SELECT CASE ( CDCONV )
      CASE( 'KAFR' )
        IF (.NOT. ( LUSERV ) ) THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH DEEP CONV. ",&
          &" SCHEME. YOU MUST HAVE VAPOR ",/,"LUSERV IS SET TO TRUE ")')
          LUSERV=.TRUE.
        ELSE IF (.NOT. ( LUSERI ) ) THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH",&
          &" DEEP CONV. SCHEME. BUT THE DETRAINED CLOUD ICE WILL BE ADDED TO   ",&
          &" THE CLOUD WATER  ")')
        ELSE IF (.NOT. ( LUSERI.AND.LUSERC ) ) THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH",&
          &" DEEP CONV. SCHEME. BUT THE DETRAINED CLOUD WATER AND CLOUD ICE    ",&
          &" WILL BE ADDED TO THE WATER VAPOR FIELD  ")')
        END IF
        IF ( LCHTRANS .AND. NSV == 0 ) THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI
          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LCHTRANS OPTION= ",&
          &"CONVECTIVE TRANSPORT OF TRACERS BUT YOUR TRACER ",&
          &"NUMBER NSV IS ZERO ",/,"LCHTRANS IS SET TO FALSE")')
          LCHTRANS=.FALSE.
        END IF
    END SELECT
    !
    
    IF ( CDCONV == 'KAFR' .AND. LCHTRANS .AND. NSV > 0 ) THEN
      IF( OCHTRANS ) THEN
        CGETSVCONV='READ'
      ELSE  
        CGETSVCONV='INIT'
      END IF
    END IF
    !
    
    SELECT CASE ( CSCONV )
      CASE( 'KAFR' )
        IF (.NOT. ( LUSERV ) ) THEN
          WRITE(UNIT=ILUOUT,FMT=9002) KMI