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