File: pick-dir/wr_photolysis_latex.f90
1 SUBROUTINE WR_PHOTOLYSIS_LATEX(Fn,Jchan,Species,Photolysis,NMAXR, &
2 & NMAXS,Nspec,Nkj,Nlinesperpage)
3 USE KINETIC
4 IMPLICIT NONE
5 !
6 ! Dummy arguments
7 !
8 CHARACTER(200) :: Fn
9 INTEGER :: Jchan , Nkj , Nlinesperpage , Nspec
10 INTEGER :: NMAXR , NMAXS
11 TYPE (PHOTOLYSIS_RECORD) , DIMENSION(NMAXR) :: Photolysis
12 TYPE (SPECIES_RECORD) , DIMENSION(NMAXS) :: Species
13 INTENT (IN) Fn , Jchan , Nkj , Nlinesperpage , NMAXR , NMAXS , &
14 & Photolysis
15 !
16 ! Local variables
17 !
18 INTEGER :: i , i1 , i2 , ii , ilines , itl , iwantp , j , &
19 & nproductsperline
20 INTEGER :: INT
21 INTEGER :: ISPEC
22 LOGICAL :: lend , lfirst , lstart , ltable
23 CHARACTER(200) :: string , string_m1
24 CHARACTER(20) :: st_blank , st_hv
25 CHARACTER(10) :: st_num
26 !
27 !-----------------------------------------------------------------------
28 !
29 ! Written by: David Lary
30 !
31 ! Started: 7/1/1993
32 !
33 ! Last updated: 29/1/2004
34 !
35 !----------------------------------------------------------------------
36 !
37 CALL BLANK(st_blank)
38 CALL BLANK(st_hv)
39 st_hv(1:7) = "Photon '
40 !
41 !----------------------------------------------------------------------
42 !
43 ! photolysis.
44 WRITE (6,*) TRIM(Fn)
45 OPEN (Jchan,FILE=TRIM(Fn),STATUS="unknown')
46 !
47 !----------------------------------------------------------------------
48 !
49 ! LaTeX document header.
50 WRITE (Jchan,FMT="(a)') "\documentclass[10pt,a4]{article}'
51 WRITE (Jchan,FMT="(a)')
52 WRITE (Jchan,FMT="(73a)') "%' , ("-',i=1,72)
53 WRITE (Jchan,FMT="(a)') "%'
54 WRITE (Jchan,FMT="(a)') &
55 &"% LaTeX document automatically generated by the AutoChem Programm&
56 &e "Pick"."
57 WRITE (Jchan,FMT="(a)') "%'
58 WRITE (Jchan,FMT="(a)') "% by David Lary 1993-2004.'
59 WRITE (Jchan,FMT="(a)') "%'
60 WRITE (Jchan,FMT="(a)') "% photolysis reaction list.'
61 WRITE (Jchan,FMT="(a)') "%'
62 WRITE (Jchan,FMT="(73a)') "%' , ("-',i=1,72)
63 WRITE (Jchan,FMT="(a)')
64 WRITE (Jchan,FMT="(a)') "% Margins.'
65 WRITE (Jchan,FMT="(a)') "\textwidth 5.9in '
66 WRITE (Jchan,FMT="(a)') "\oddsidemargin -0.12in '
67 WRITE (Jchan,FMT="(a)') "\evensidemargin .3in'
68 WRITE (Jchan,FMT="(a)') "\marginparwidth 1.3in '
69 WRITE (Jchan,FMT="(a)') "\topmargin -.9in '
70 WRITE (Jchan,FMT="(a)') "\textheight 9.4in'
71 WRITE (Jchan,FMT="(a)')
72 WRITE (Jchan,FMT="(a)') "% Package definitions.'
73 WRITE (Jchan,FMT="(a)') "\usepackage{hyperref}'
74 WRITE (Jchan,FMT="(a)') "\usepackage{times}'
75 WRITE (Jchan,FMT="(a)')
76 WRITE (Jchan,FMT="(a)') &
77 &"% Make sure equations will not be in italic.'
78 WRITE (Jchan,FMT="(a)') "\everymath={\fam0 }'
79 WRITE (Jchan,FMT="(a)')
80 WRITE (Jchan,FMT="(a)') "% Begin Document.'
81 WRITE (Jchan,FMT="(a)') "\begin{document}'
82 WRITE (Jchan,FMT="(a)')
83 !
84 !----------------------------------------------------------------------
85 !
86 ! photolysis reaction section.
87 WRITE (Jchan,FMT="(a)') "\section{photolysis Reactions}'
88 WRITE (Jchan,FMT="(a)')
89 WRITE (Jchan,FMT="(a)') "A total of '
90 WRITE (Jchan,FMT="(i6)') Nkj
91 WRITE (Jchan,FMT="(a)') &
92 &"photolysis reactions were selected and they are given in '
93 WRITE (Jchan,FMT="(a)') "Table~\ref{Table:photolysis.reactions}.'
94 WRITE (Jchan,FMT="(a)')
95 !
96 !----------------------------------------------------------------------
97 !
98 ! photolysis reaction table.
99 !
100 ! Reaction loop.
101 ilines = 0
102 lstart = .TRUE.
103 lfirst = .TRUE.
104 DO i = 1 , Nkj
105 !
106 WRITE (string,FMT="(i6)') i
107 WRITE (string_m1,FMT="(i6)') i - 1
108 !
109 IF ( lstart ) THEN
110 !
111 ! Start table.
112 lstart = .FALSE.
113 !
114 WRITE (Jchan,FMT="(a)') "\begin{table*}'
115 WRITE (Jchan,FMT="(a)') "\centering'
116 ! WRITE (Jchan,FMT='(a)') '\small'
117 WRITE (Jchan,FMT="(a)') "\begin{tabular}{|c|rcl|c|}'
118 WRITE (Jchan,FMT="(a)') "\hline'
119 WRITE (Jchan,FMT="(a)') &
120 &"\# & Reactants & & Products & Rate coefficient \\'
121 WRITE (Jchan,FMT="(a)') "\hline'
122 WRITE (Jchan,FMT="(a)')
123 WRITE (Jchan,FMT="(a)') "\vspace{-0.12in}&&&&\\'
124 !
125 ENDIF
126 !
127 ! See the size of the reaction product line and determine
128 ! if we need to split it up.
129 itl = 0
130 DO j = 1 , Photolysis(i)%iwantp
131 itl = itl + LEN_TRIM(Photolysis(i)%P(j))
132 !
133 WRITE (st_num,FMT="(f6.3)') Photolysis(i)%Z(j)
134 i1 = SCAN(TRIM(st_num),"1.000')
135 i2 = SCAN(TRIM(st_num),".000')
136 IF ( i1/=2 ) THEN
137 IF ( i2==3 ) WRITE (st_num,FMT="(i6)') &
138 & INT(Photolysis(i)%Z(j))
139 st_num = TRIM(st_num)
140 ELSEIF ( i1==2 .AND. i2==2 ) THEN
141 st_num = TRIM(st_num)
142 ELSE
143 st_num = st_blank
144 ENDIF
145 itl = itl + LEN_TRIM(st_num)
146 ENDDO
147 !
148 IF ( ANY(INT(Photolysis(i)%Z(1:Photolysis(i)%iwantp))/=1) ) &
149 & THEN
150 nproductsperline = 2
151 ELSE
152 nproductsperline = 3
153 ENDIF
154 IF ( itl>11 ) nproductsperline = 1
155 !
156 ltable = .FALSE.
157 IF ( Photolysis(i)%iwantp>nproductsperline ) ltable = .TRUE.
158 IF ( ltable ) WRITE (Jchan,FMT="(a)') "\vspace{-0.12in}&&&&\\'
159 !
160 WRITE (Jchan,FMT="(i6,a)') i , " & '
161 !
162 DO j = 1 , Photolysis(i)%iwantr
163 ii = ISPEC(Photolysis(i)%RE(j),Species,Nspec)
164 IF ( Photolysis(i)%RE(j)==st_hv ) THEN
165 WRITE (Jchan,FMT="(a))') "$h\nu$'
166 ELSE
167 WRITE (Jchan,FMT="(a))') "$'//TRIM(Species(ii)%latex) &
168 &//"$'
169 ENDIF
170 IF ( j<Photolysis(i)%iwantr ) WRITE (Jchan,FMT="(a))') "+'
171 ENDDO
172 !
173 WRITE (Jchan,FMT="(a)') "& $\longrightarrow$ &'
174 !
175 IF ( ltable ) THEN
176 WRITE (Jchan,FMT="(a)') "\vline \ '
177 IF ( nproductsperline==3 ) THEN
178 WRITE (Jchan,FMT="(a)') "\begin{tabular}{lclclc}'
179 ELSEIF ( nproductsperline==2 ) THEN
180 WRITE (Jchan,FMT="(a)') "\begin{tabular}{lclc}'
181 ELSEIF ( nproductsperline==1 ) THEN
182 WRITE (Jchan,FMT="(a)') "\begin{tabular}{lc}'
183 ENDIF
184 ENDIF
185 iwantp = Photolysis(i)%iwantp
186 IF ( Photolysis(i)%P(iwantp)==st_hv ) iwantp = iwantp - 1
187 DO j = 1 , iwantp
188 !
189 WRITE (st_num,FMT="(f6.3)') Photolysis(i)%Z(j)
190 i1 = SCAN(TRIM(st_num),"1.000')
191 i2 = SCAN(TRIM(st_num),".000')
192 IF ( i1/=2 ) THEN
193 IF ( i2==3 ) WRITE (st_num,FMT="(i6)') &
194 & INT(Photolysis(i)%Z(j))
195 WRITE (Jchan,FMT="(a)') TRIM(st_num)
196 ELSEIF ( i1==2 .AND. i2==2 ) THEN
197 WRITE (Jchan,FMT="(a)') TRIM(st_num)
198 ENDIF
199 !
200 !
201 ii = ISPEC(Photolysis(i)%P(j),Species,Nspec)
202 WRITE (Jchan,FMT="(a))') "$'//TRIM(Species(ii)%latex)//"$'
203 IF ( j<iwantp ) THEN
204 IF ( ltable ) WRITE (Jchan,FMT="(a)') "&'
205 WRITE (Jchan,FMT="(a))') "+'
206 ENDIF
207 IF ( ltable ) THEN
208 IF ( MOD(j,nproductsperline)==0 ) THEN
209 WRITE (Jchan,FMT="(a)') "\\'
210 ilines = ilines + 1
211 ELSE
212 WRITE (Jchan,FMT="(a)') "&'
213 ENDIF
214 ENDIF
215 ENDDO
216 IF ( ltable ) WRITE (Jchan,FMT="(a)') "\end{tabular}'
217 !
218 !----------------------------------------------------------------------
219 !
220 ! Rate coeffecient expression
221 !
222 !----------------------------------------------------------------------
223 !
224 WRITE (Jchan,FMT="(a)') "&'
225 WRITE (Jchan,FMT="(a)') "\\'
226 ilines = ilines + 1
227 !
228 lend = (i==Nkj) .OR. (ilines>Nlinesperpage)
229 !
230 IF ( lend ) THEN
231 !
232 ilines = 0
233 lstart = .TRUE.
234 !
235 ! Close table.
236 WRITE (Jchan,FMT="(a)')
237 WRITE (Jchan,FMT="(a)') "\vspace{-0.01in}&&&&\\'
238 WRITE (Jchan,FMT="(a)') "\hline'
239 WRITE (Jchan,FMT="(a)') "\end{tabular}'
240 IF ( lfirst ) THEN
241 WRITE (Jchan,FMT="(a)') "\caption{photolysis reactions.}'
242 WRITE (Jchan,FMT="(a)') &
243 &"\label{Table:photolysis.reactions}'
244 lfirst = .FALSE.
245 ELSE
246 WRITE (Jchan,FMT="(a)') &
247 &"\caption{(continued) photolysis reactions.}'
248 ENDIF
249 WRITE (Jchan,FMT="(a)') "\end{table*}'
250 WRITE (Jchan,FMT="(a)') "\addtocounter{table}{-1}'
251 !
252 ENDIF
253 !
254 ENDDO
255 ! End of reaction loop.
256 !
257 !----------------------------------------------------------------------
258 !
259 ! Close LaTeX document.
260 WRITE (Jchan,FMT="(a)')
261 WRITE (Jchan,FMT="(a)') "\end{document}'
262 CLOSE (Jchan)
263 !
264 !----------------------------------------------------------------------
265 !
266 END SUBROUTINE WR_PHOTOLYSIS_LATEX