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