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