SURFEX v8.1
General documentation of Surfex
ch_init_names.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6 SUBROUTINE ch_init_names (KLUOUT,HSV, SV, OVARSIGI, OVARSIGJ)
7 !! ###########################################
8 !!
9 !!*** *CH_INIT_NAMES*
10 !!
11 !! PURPOSE
12 !! -------
13 !! Read and filter all chemical species into the CSV array
14 !! initialize NSV_CHSBEG and NSV_CHSEND index for the begin and the ending chemical index
15 !!
16 !!
17 !! REFERENCE
18 !! ---------
19 !!
20 !! AUTHOR
21 !! ------
22 !! P. Tulet *Meteo France*
23 !!
24 !! MODIFICATIONS
25 !! -------------
26 !! Original 16/10/01
27 !! 01/12/03 (D.Gazen) change emissions handling for surf. externalization
28 !! 01/06/05 (P.Tulet) add aerosols list
29 !!
30 !! EXTERNAL
31 !! --------
32 !!
33 !! IMPLICIT ARGUMENTS
34 !! ------------------
35 USE modd_sv_n, ONLY : sv_t
36 !
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
43 USE yomhook ,ONLY : lhook, dr_hook
44 USE parkind1 ,ONLY : jprb
45 !
46 IMPLICIT NONE
47 !
48 !* 0.1 declarations of arguments
49 !
50 
51 INTEGER, INTENT(IN) :: KLUOUT ! output listing channel
52  CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSV ! name of chemical species
53  ! with character # (gas chemistry )
54  ! and character @ (aerosols)
55 TYPE(sv_t), INTENT(INOUT) :: SV
56 !
57 LOGICAL, INTENT(OUT) :: OVARSIGI, OVARSIGJ ! type of standard deviation
58 !
59 !* 0.2 declarations of local variables
60 INTEGER :: JSV !! loop NBEQ
61  CHARACTER :: YRC1
62  CHARACTER(LEN=5) :: YRC2
63 REAL(KIND=JPRB) :: ZHOOK_HANDLE
64 !
65 !-------------------------------------------------------------------------------
66 
67 IF (lhook) CALL dr_hook('CH_INIT_NAMES',0,zhook_handle)
68 sv%NBEQ = 0
69 sv%NAEREQ = 0
70 sv%NSV_CHSBEG = 0
71 sv%NSV_AERBEG = 0
72 sv%NSV_CHSEND = 0
73 sv%NSV_AEREND = 0
74 ovarsigi = .false.
75 ovarsigj = .false.
76 nsoa = 0
77 
78 
79 DO jsv=1, SIZE(hsv)
80 
81  sv%CSV(jsv) = hsv(jsv)
82  yrc1= hsv(jsv)(1:1)
83  yrc2 = hsv(jsv)(2:)
84 
85  IF (yrc1 == '#') THEN
86  sv%CSV(jsv) = trim(yrc2)
87  sv%NBEQ = sv%NBEQ + 1
88  IF (sv%NBEQ == 1) sv%NSV_CHSBEG=jsv
89  ELSE IF (yrc1 == '@') THEN
90  sv%CSV(jsv) = trim(yrc2)
91  sv%NAEREQ = sv%NAEREQ + 1
92  IF (sv%NAEREQ == 1) sv%NSV_AERBEG=jsv
93  IF (sv%CSV(jsv) == "M6I") ovarsigi = .true.
94  IF (sv%CSV(jsv) == "M6J") ovarsigj = .true.
95  IF (sv%CSV(jsv) == "SOA1I") nsoa = 10
96  ENDIF
97 
98 ENDDO
99 
100 sv%NSV_CHSEND = sv%NSV_CHSBEG + sv%NBEQ -1
101 sv%NSV_AEREND = sv%NSV_AERBEG + sv%NAEREQ -1
102 
103 IF (sv%NAEREQ .GT. 0) THEN
104 DO jsv=1, size(sv%CSV)
105  IF (trim(sv%CSV(jsv)) == "M0I") jp_ch_m0i=jsv-sv%NSV_CHSEND
106  IF (trim(sv%CSV(jsv)) == "M0J") jp_ch_m0j=jsv-sv%NSV_CHSEND
107  IF (trim(sv%CSV(jsv)) == "M6I") jp_ch_m6i=jsv-sv%NSV_CHSEND
108  IF (trim(sv%CSV(jsv)) == "M6J") jp_ch_m6j=jsv-sv%NSV_CHSEND
109  IF (trim(sv%CSV(jsv)) == "H2OI") jp_ch_h2oi=jsv-sv%NSV_CHSEND
110  IF (trim(sv%CSV(jsv)) == "H2OJ") jp_ch_h2oj=jsv-sv%NSV_CHSEND
111  IF (trim(sv%CSV(jsv)) == "SO4I") jp_ch_so4i=jsv-sv%NSV_CHSEND
112  IF (trim(sv%CSV(jsv)) == "SO4J") jp_ch_so4j=jsv-sv%NSV_CHSEND
113  IF (trim(sv%CSV(jsv)) == "NO3I") jp_ch_no3i=jsv-sv%NSV_CHSEND
114  IF (trim(sv%CSV(jsv)) == "NO3J") jp_ch_no3j=jsv-sv%NSV_CHSEND
115  IF (trim(sv%CSV(jsv)) == "NH3I") jp_ch_nh3i=jsv-sv%NSV_CHSEND
116  IF (trim(sv%CSV(jsv)) == "NH3J") jp_ch_nh3j=jsv-sv%NSV_CHSEND
117  IF (trim(sv%CSV(jsv)) == "OCI") jp_ch_oci=jsv-sv%NSV_CHSEND
118  IF (trim(sv%CSV(jsv)) == "OCJ") jp_ch_ocj=jsv-sv%NSV_CHSEND
119  IF (trim(sv%CSV(jsv)) == "BCI") jp_ch_bci=jsv-sv%NSV_CHSEND
120  IF (trim(sv%CSV(jsv)) == "BCJ") jp_ch_bcj=jsv-sv%NSV_CHSEND
121  IF (trim(sv%CSV(jsv)) == "DSTI") jp_ch_dsti=jsv-sv%NSV_CHSEND
122  IF (trim(sv%CSV(jsv)) == "DSTJ") jp_ch_dstj=jsv-sv%NSV_CHSEND
123 END DO
124 
125 END IF
126 IF (lhook) CALL dr_hook('CH_INIT_NAMES',1,zhook_handle)
127 
128 !
129 END SUBROUTINE ch_init_names
subroutine ch_init_names(KLUOUT, HSV, SV, OVARSIGI, OVARSIGJ)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15