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