SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ch_init_names.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE CH_INIT_NAMES (KLUOUT,HSV,KBEQ,KBAER,HSVO,&
00003                             KSV_CHSBEG,KSV_CHSEND, KSV_AERBEG, KSV_AEREND,&
00004                             OVARSIGI, OVARSIGJ)  
00005 !!    ###########################################
00006 !!
00007 !!*** *CH_INIT_NAMES*
00008 !!
00009 !!    PURPOSE
00010 !!    -------
00011 !!      Read and filter all chemical species into the CSV array
00012 !!     initialize NSV_CHSBEG and  NSV_CHSEND index for the begin and the ending chemical index
00013 !!     
00014 !!
00015 !!    REFERENCE
00016 !!    ---------
00017 !!    
00018 !!    AUTHOR
00019 !!    ------
00020 !!    P. Tulet    *Meteo France*
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!    Original 16/10/01
00025 !!    01/12/03    (D.Gazen) change emissions handling for surf. externalization
00026 !!    01/06/05    (P.Tulet) add aerosols list
00027 !!
00028 !!    EXTERNAL
00029 !!    --------
00030 !!
00031 !!    IMPLICIT ARGUMENTS
00032 !!    ------------------
00033 USE MODD_CHS_AEROSOL
00034 !-------------------------------------------------------------------------------
00035 !
00036 !*       0.     DECLARATIONS
00037 !               ------------
00038 !
00039 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00040 USE PARKIND1  ,ONLY : JPRB
00041 !
00042 IMPLICIT NONE
00043 !
00044 !*      0.1    declarations of arguments
00045 !
00046 
00047 INTEGER,                         INTENT(IN)  :: KLUOUT ! output listing channel
00048  CHARACTER(LEN=6), DIMENSION(:),  INTENT(IN)  :: HSV    ! name of chemical species
00049                                                        ! with character # (gas chemistry )
00050                                                        ! and  character @ (aerosols)
00051 INTEGER,                         INTENT(OUT) :: KBEQ     ! number of chemical variables
00052 INTEGER,                         INTENT(OUT) :: KBAER    ! number of aerosol variables
00053  CHARACTER(LEN=6), DIMENSION(:),  POINTER :: HSVO ! name of scalar species without # and @
00054 INTEGER,                         INTENT(OUT) :: KSV_CHSBEG  ! first chemical var.
00055 INTEGER,                         INTENT(OUT) :: KSV_CHSEND  ! last  chemical var.
00056 INTEGER,                         INTENT(OUT) :: KSV_AERBEG  ! first aerosol var.
00057 INTEGER,                         INTENT(OUT) :: KSV_AEREND  ! last  aerosol var.
00058 LOGICAL,                         INTENT(OUT) :: OVARSIGI, OVARSIGJ ! type of standard deviation
00059 !
00060 !*      0.2    declarations of local variables
00061 INTEGER :: JSV  !! loop  NBEQ
00062  CHARACTER        :: YRC1
00063  CHARACTER(LEN=5) :: YRC2
00064 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00065 !
00066 !-------------------------------------------------------------------------------
00067 
00068 IF (LHOOK) CALL DR_HOOK('CH_INIT_NAMES',0,ZHOOK_HANDLE)
00069 KBEQ = 0
00070 KBAER = 0
00071 KSV_CHSBEG = 0
00072 KSV_AERBEG = 0
00073 KSV_CHSEND = 0
00074 KSV_AEREND = 0
00075 OVARSIGI = .FALSE.
00076 OVARSIGJ = .FALSE.
00077 NSOA = 0
00078 
00079 
00080 DO JSV=1, SIZE(HSV)
00081 
00082   HSVO(JSV) = HSV(JSV)
00083   YRC1= HSV(JSV)(1:1)
00084   YRC2 = HSV(JSV)(2:)
00085 
00086   IF (YRC1 == '#') THEN
00087     HSVO(JSV) = TRIM(YRC2)
00088     KBEQ = KBEQ + 1
00089     IF (KBEQ == 1) KSV_CHSBEG=JSV
00090   ELSE IF (YRC1 == '@') THEN
00091     HSVO(JSV) = TRIM(YRC2)
00092     KBAER = KBAER + 1
00093     IF (KBAER == 1) KSV_AERBEG=JSV
00094     IF (HSVO(JSV) == "M6I") OVARSIGI = .TRUE.
00095     IF (HSVO(JSV) == "M6J") OVARSIGJ = .TRUE.
00096     IF (HSVO(JSV) == "SOA1I") NSOA = 10
00097   ENDIF
00098 
00099 ENDDO
00100 
00101 KSV_CHSEND = KSV_CHSBEG + KBEQ -1
00102 KSV_AEREND = KSV_AERBEG + KBAER -1
00103 
00104 IF (KBAER .GT. 0) THEN
00105 DO JSV=1, size(HSVO)
00106    IF (TRIM(HSVO(JSV)) == "M0I") JP_CH_M0i=JSV-KSV_CHSEND
00107    IF (TRIM(HSVO(JSV)) == "M0J") JP_CH_M0j=JSV-KSV_CHSEND
00108    IF (TRIM(HSVO(JSV)) == "M6I") JP_CH_M6i=JSV-KSV_CHSEND
00109    IF (TRIM(HSVO(JSV)) == "M6J") JP_CH_M6j=JSV-KSV_CHSEND
00110    IF (TRIM(HSVO(JSV)) == "H2OI") JP_CH_H2Oi=JSV-KSV_CHSEND
00111    IF (TRIM(HSVO(JSV)) == "H2OJ") JP_CH_H2Oj=JSV-KSV_CHSEND
00112    IF (TRIM(HSVO(JSV)) == "SO4I") JP_CH_SO4i=JSV-KSV_CHSEND
00113    IF (TRIM(HSVO(JSV)) == "SO4J") JP_CH_SO4j=JSV-KSV_CHSEND
00114    IF (TRIM(HSVO(JSV)) == "NO3I") JP_CH_NO3i=JSV-KSV_CHSEND
00115    IF (TRIM(HSVO(JSV)) == "NO3J") JP_CH_NO3j=JSV-KSV_CHSEND
00116    IF (TRIM(HSVO(JSV)) == "NH3I") JP_CH_NH3i=JSV-KSV_CHSEND
00117    IF (TRIM(HSVO(JSV)) == "NH3J") JP_CH_NH3j=JSV-KSV_CHSEND
00118    IF (TRIM(HSVO(JSV)) == "OCI") JP_CH_OCi=JSV-KSV_CHSEND
00119    IF (TRIM(HSVO(JSV)) == "OCJ") JP_CH_OCj=JSV-KSV_CHSEND
00120    IF (TRIM(HSVO(JSV)) == "BCI") JP_CH_BCi=JSV-KSV_CHSEND
00121    IF (TRIM(HSVO(JSV)) == "BCJ") JP_CH_BCj=JSV-KSV_CHSEND
00122 END DO
00123 
00124 END IF
00125 IF (LHOOK) CALL DR_HOOK('CH_INIT_NAMES',1,ZHOOK_HANDLE)
00126 
00127 !
00128 END SUBROUTINE CH_INIT_NAMES