Newer
Older

WAUTELET Philippe
committed
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
! 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
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
!-------------------------------------------------------------------------------!
!* 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
!

RODIER Quentin
committed
IF (CSUBG_AUCV_RC == '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"'
!

RODIER Quentin
committed
CSUBG_AUCV_RC = '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
!

RODIER Quentin
committed
IF (CSUBG_AUCV_RC == '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'

RODIER Quentin
committed
WRITE(UNIT=ILUOUT,FMT=*) ' CSUBG_AUCV_RC IS PUT TO "NONE"'

RODIER Quentin
committed
CSUBG_AUCV_RC = '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
!

RODIER Quentin
committed
IF (CSUBG_AUCV_RC == '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.'

RODIER Quentin
committed
WRITE(UNIT=ILUOUT,FMT=*) 'SET CSUBG_AUCV_RC TO "CLFR" or "NONE" OR CCLOUD TO "ICE3"'

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
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
!

RODIER Quentin
committed
IF (CSUBG_AUCV_RC == '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.'

RODIER Quentin
committed
WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV_RC is SET to NONE'
CSUBG_AUCV_RC='NONE'

RODIER Quentin
committed
IF (CSUBG_AUCV_RC == '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'

RODIER Quentin
committed
WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV_RC is SET to NONE'
CSUBG_AUCV_RC='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
!

RODIER Quentin
committed
IF (CSUBG_AUCV_RC /= '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.'

RODIER Quentin
committed
WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV_RC is SET to NONE'
CSUBG_AUCV_RC='NONE'
END IF
!
CASE ( 'C2R2','C3R5', 'KHKO' )
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

WAUTELET Philippe
committed
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

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
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.
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

WAUTELET Philippe
committed
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
!
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
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 (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
!
IF (NMOM_C.GE.1) THEN
LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
LUSERI=.FALSE.; LUSERS=.FALSE. ; LUSERG=.FALSE.; LUSERH=.FALSE.
END IF
!
IF (NMOM_I.GE.1) THEN
LUSERI=.TRUE. ; LUSERS=.TRUE. ; LUSERG=.TRUE.
LUSERH= NMOM_H.GE.1
!
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
IF (NMOM_H.GE.1) NMOM_H=2

RODIER Quentin
committed
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
!
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

RODIER Quentin
committed
!
WRITE(UNIT=ILUOUT,FMT=9001) KMI
WRITE(UNIT=ILUOUT,FMT=*) 'IT IS ADVISED TO USE XALPHAC=3. and XNUC=2.'
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"'
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
!

RODIER Quentin
committed
CALL UPDATE_NAM_IBM_PARAMN
CALL UPDATE_NAM_RECYCL_PARAMN
CALL UPDATE_NAM_PARAMN
CALL UPDATE_NAM_DYNN
!
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

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
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
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
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

WAUTELET Philippe
committed
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 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
!
IF ( CAOP=='EXPL' .AND. .NOT.LDUST .AND. .NOT.LORILAM &
.AND. .NOT.LSALT .AND. .NOT.(CCLOUD=='LIMA') ) THEN
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
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'
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
!
!
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'
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'
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
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'

Gaelle Tanguy
committed
IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETCLDFR='INIT'
ELSE
CGETCLDFR = 'SKIP'
END IF
END IF

RODIER Quentin
committed
!
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
!

RODIER Quentin
committed
!
!* 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
!

RODIER Quentin
committed
IF(LCLOUDMODIFLM .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=", &
& ", 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

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
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

Gaelle Tanguy
committed
! 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

Gaelle Tanguy
committed
! 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
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

Gaelle Tanguy
committed
! IF(CCONF=='START') CGETSVT(JS)='INIT'
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'

Gaelle Tanguy
committed
! 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'

Gaelle Tanguy
committed
! 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
!
! 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'

Gaelle Tanguy
committed
! 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
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
!
IF (CCLOUD(1:3) == 'ICE') THEN
IF (.NOT. LRED .AND. CELEC == 'ELE3') THEN
WRITE(UNIT=ILUOUT,FMT='("THIS IS THE OLD VERSION OF THE ELECTRICAL SCHEME",/,&
& "BE AWARE ANOTHER VERSION IS AVAILABLE !")')
ELSE IF (LRED .AND. CELEC == 'ELE4') THEN
WRITE(UNIT=ILUOUT,FMT='("THIS IS THE NEW VERSION OF THE ELECTRICAL SCHEME",/,&
& "BUT WITH THE 1 MOMENT VERSION OF THE MICROPHYSICS SCHEME")')
ELSE
WRITE(UNIT=ILUOUT,FMT='("THIS VERSION OF THE ELECTRICAL SCHEME IS NOT COMPATIBLE",/,&
& "WITH THE ICE3 MICROPHYSICS SCHEME")')
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','') ! error
END IF
IF (LSNOW_T) THEN
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME CANNOT BE USED WITH LSNOW_T")')
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','') ! error
END IF
ELSE IF (CCLOUD == 'LIMA' .AND. LPTSPLIT) THEN
IF (CELEC == 'ELE4' .AND. NMOM_C == 2 .AND. NMOM_R == 2 .AND. NMOM_I == 2 .AND. &
NMOM_S == 1 .AND. NMOM_G == 1 .AND. NMOM_H == 0) THEN
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME IS USED WITH",/,&
& "THE PARTIAL 2-MOMENT MICROPHYSICS SCHEME LIMA")')
ELSE IF (CELEC == 'ELE4' .AND. NMOM_C == 2 .AND. NMOM_R == 2 .AND. NMOM_I == 2 .AND. &
NMOM_S == 2 .AND. NMOM_G == 2 .AND. NMOM_H == 0) THEN
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME IS USED WITH",/,&
& "THE FULL 2-MOMENT MICROPHYSICS SCHEME LIMA",/,&
& "BE CAREFUL: NOT FULLY VALIDATED !!!")')
ELSE IF (CELEC == 'ELE4' .AND. NMOM_C == 2 .AND. NMOM_R == 2 .AND. NMOM_I == 2 .AND. &
NMOM_S == 1 .AND. NMOM_G == 1 .AND. NMOM_H == 1) THEN
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME IS USED WITH",/,&
& "THE PARTIAL 2-MOMENT MICROPHYSICS SCHEME LIMA",/,&
& "WITH HAIL ACTIVATED",/,&
& "BE CAREFUL: NOT TESTED NOR VALIDATED !!!")')
ELSE IF (CELEC == 'ELE4' .AND. NMOM_C == 2 .AND. NMOM_R == 2 .AND. NMOM_I == 2 .AND. &
NMOM_S == 2 .AND. NMOM_G == 2 .AND. NMOM_H == 2) THEN
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME IS USED WITH",/,&
& "THE FULL 2-MOMENT MICROPHYSICS SCHEME LIMA",/,&
& "WITH HAIL ACTIVATED",/,&
& "BE CAREFUL: NOT TESTED NOR VALIDATED !!!")')
ELSE
WRITE(UNIT=ILUOUT,FMT='("THE USE OF THE ELECTRICAL SCHEME IS NOT COMPATIBLE",/,&
& "WITH THE OPTIONS OF THE LIMA MICROPHYSICS SCHEME")')
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','') ! error
END IF
IF (LSNOW_T) THEN
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME CANNOT BE USED WITH LSNOW_T")')
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','') ! error
END IF
ELSE
WRITE(UNIT=ILUOUT,FMT='("THE ELECTRICAL SCHEME IS NOT COMPATIBLE",/,&
& "WITH THE CHOSEN MICROPHYSICS SCHEME")')
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','') ! error
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'

Gaelle Tanguy
committed
! IF(CCONF=='START') CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
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'

Gaelle Tanguy
committed
! 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
!UPG *PT
IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
.AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.(CCLOUD /= 'LIMA').AND. &

Juan Escobar
committed
(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

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
END IF
IF (ODEPOS_DST(KMI) ) THEN
CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='READ'

Gaelle Tanguy
committed
! 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
WRITE(UNIT=ILUOUT,FMT=9003) KMI
WRITE(UNIT=ILUOUT,FMT='("DUST MODES MUST BE BETWEEN 1 and 3 ")')
!callabortstop

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')

WAUTELET Philippe
committed
END IF