File: pick-dir/wr_cr_latex.f90
1 SUBROUTINE WR_CR_LATEX(Fn,Jchan,Species,Cosmicray,NMAXR,NMAXS, &
2 & Nspec,Nkcr,Nlinesperpage)
3 USE KINETIC
4 IMPLICIT NONE
5 !
6 !
7 ! Dummy arguments
8 !
9 CHARACTER(200) :: Fn
10 INTEGER :: Jchan , Nkcr , Nlinesperpage , Nspec
11 INTEGER :: NMAXR , NMAXS
12 TYPE (COSMICRAY_RECORD) , DIMENSION(NMAXR) :: Cosmicray
13 TYPE (SPECIES_RECORD) , DIMENSION(NMAXS) :: Species
14 INTENT (IN) Cosmicray , Fn , Jchan , Nkcr , Nlinesperpage , &
15 & NMAXR , NMAXS
16 !
17 ! Local variables
18 !
19 CHARACTER(200) :: argst , powst , string , string1
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: 29/1/2004
36 !
37 !----------------------------------------------------------------------
38 !
39 CALL BLANK(st_blank)
40 !
41 !----------------------------------------------------------------------
42 !
43 ! cr.
44 WRITE (6,*) TRIM(Fn)
45 OPEN (Jchan,FILE=TRIM(Fn),STATUS="unknown')
46 !
47 !----------------------------------------------------------------------
48 !
49 IF ( Nkcr>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)') "% cr 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 ! cr reaction section.
91 WRITE (Jchan,FMT="(a)') "\section{Bulk Phase Transfer}'
92 WRITE (Jchan,FMT="(a)')
93 WRITE (Jchan,FMT="(a)') "A total of '
94 WRITE (Jchan,FMT="(i6)') Nkcr
95 WRITE (Jchan,FMT="(a)') &
96 &"cr reactions were selected and they are given in '
97 WRITE (Jchan,FMT="(a)') "Table~\ref{Table:cr.reactions}.'
98 WRITE (Jchan,FMT="(a)')
99 !
100 !----------------------------------------------------------------------
101 !
102 ! cr reaction table.
103 !
104 ! Reaction loop.
105 ilines = 0
106 lstart = .TRUE.
107 lfirst = .TRUE.
108 DO i = 1 , Nkcr
109 !
110 WRITE (string,FMT="(i6)') i
111 !
112 IF ( lstart ) THEN
113 !
114 ! Start table.
115 lstart = .FALSE.
116 !
117 WRITE (Jchan,FMT="(a)') "\begin{table*}'
118 WRITE (Jchan,FMT="(a)') "\centering'
119 WRITE (Jchan,FMT="(a)') "\small'
120 WRITE (Jchan,FMT="(a)') "\begin{tabular}{|c|rcl|c|}'
121 WRITE (Jchan,FMT="(a)') "\hline'
122 WRITE (Jchan,FMT="(a)') &
123 &"\# & Reactants & & Products & Rate coefficient \\'
124 WRITE (Jchan,FMT="(a)') "\hline'
125 WRITE (Jchan,FMT="(a)')
126 ! WRITE (Jchan,FMT='(a)') '\vspace{-0.12in}&&&&\\'
127 !
128 ENDIF
129 !
130 ! See the size of the reaction product line and determine
131 ! if we need to split it up.
132 itl = 0
133 DO j = 1 , Cosmicray(i)%iwantp
134 itl = itl + LEN_TRIM(Cosmicray(i)%P(j))
135 !
136 WRITE (st_num,FMT="(f6.3)') Cosmicray(i)%Z(j)
137 i1 = SCAN(TRIM(st_num),"1.000')
138 i2 = SCAN(TRIM(st_num),".000')
139 IF ( i1/=2 ) THEN
140 IF ( i2==3 ) WRITE (st_num,FMT="(i6)') &
141 & INT(Cosmicray(i)%Z(j))
142 st_num = TRIM(st_num)
143 ELSEIF ( i1==2 .AND. i2==2 ) THEN
144 st_num = TRIM(st_num)
145 ELSE
146 st_num = st_blank
147 ENDIF
148 itl = itl + LEN_TRIM(st_num)
149 ENDDO
150 !
151 IF ( ANY(INT(Cosmicray(i)%Z(1:Cosmicray(i)%iwantp))/=1) ) &
152 & THEN
153 nproductsperline = 2
154 ELSE
155 nproductsperline = 3
156 ENDIF
157 IF ( itl>11 ) nproductsperline = 1
158 !
159 ltable = .FALSE.
160 IF ( Cosmicray(i)%iwantp>nproductsperline ) ltable = .TRUE.
161 IF ( ltable ) WRITE (Jchan,FMT="(a)') &
162 & "\vspace{-0.12in}&&&&\\'
163 !
164 WRITE (Jchan,FMT="(i6,a)') i , " & '
165 !
166 DO j = 1 , Cosmicray(i)%iwantr
167 ii = ISPEC(Cosmicray(i)%RE(j),Species,Nspec)
168 WRITE (Jchan,FMT="(a))') "$'//TRIM(Species(ii)%latex) &
169 &//"$'
170 IF ( j<Cosmicray(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 DO j = 1 , Cosmicray(i)%iwantp
186 !
187 WRITE (st_num,FMT="(f6.3)') Cosmicray(i)%Z(j)
188 i1 = SCAN(TRIM(st_num),"1.000')
189 i2 = SCAN(TRIM(st_num),".000')
190 IF ( i1/=2 ) THEN
191 IF ( i2==3 ) WRITE (st_num,FMT="(i6)') &
192 & INT(Cosmicray(i)%Z(j))
193 WRITE (Jchan,FMT="(a)') TRIM(st_num)
194 ELSEIF ( i1==2 .AND. i2==2 ) THEN
195 WRITE (Jchan,FMT="(a)') TRIM(st_num)
196 ENDIF
197 !
198 !
199 ii = ISPEC(Cosmicray(i)%P(j),Species,Nspec)
200 WRITE (Jchan,FMT="(a))') "$'//TRIM(Species(ii)%latex) &
201 &//"$'
202 IF ( j<Cosmicray(i)%iwantp ) THEN
203 IF ( ltable ) WRITE (Jchan,FMT="(a)') "&'
204 WRITE (Jchan,FMT="(a))') "+'
205 ENDIF
206 IF ( ltable ) THEN
207 IF ( MOD(j,nproductsperline)==0 ) THEN
208 WRITE (Jchan,FMT="(a)') "\\'
209 ilines = ilines + 1
210 ELSE
211 WRITE (Jchan,FMT="(a)') "&'
212 ENDIF
213 ENDIF
214 ENDDO
215 IF ( ltable ) WRITE (Jchan,FMT="(a)') "\end{tabular}'
216 !
217 !----------------------------------------------------------------------
218 !
219 ! Rate coeffecient expression
220 WRITE (Jchan,FMT="(a)') "& $\#_{'//TRIM(string)//"}$='
221 !
222 IF ( Cosmicray(i)%formrateperion/=0. ) THEN
223 CALL BLANK(string1)
224 CALL POW_ARG(Cosmicray(i)%formrateperion,zarg,ipow)
225 CALL WR_POW_ARG(zarg,ipow,argst,powst,string1)
226 WRITE (Jchan,FMT="(a)') "$'//TRIM(string1)//"$ '
227 ENDIF
228 !
229 !----------------------------------------------------------------------
230 !
231 WRITE (Jchan,FMT="(a)') "\\'
232 ilines = ilines + 1
233 !
234 lend = (i==Nkcr) .OR. (ilines>Nlinesperpage)
235 !
236 IF ( lend ) THEN
237 !
238 ilines = 0
239 lstart = .TRUE.
240 !
241 ! Close table.
242 WRITE (Jchan,FMT="(a)')
243 WRITE (Jchan,FMT="(a)') "\hline'
244 WRITE (Jchan,FMT="(a)') "\end{tabular}'
245 IF ( lfirst ) THEN
246 WRITE (Jchan,FMT="(a)') &
247 & "\caption{Cosmic Ray reactions.}'
248 WRITE (Jchan,FMT="(a)') "\label{Table:cr.reactions}'
249 lfirst = .FALSE.
250 ELSE
251 WRITE (Jchan,FMT="(a)') &
252 & "\caption{(continued) cr reactions.}'
253 ENDIF
254 WRITE (Jchan,FMT="(a)') "\end{table*}'
255 WRITE (Jchan,FMT="(a)') "\addtocounter{table}{-1}'
256 !
257 ELSE
258 !
259 IF ( ltable ) WRITE (Jchan,FMT="(a)') &
260 & "\vspace{-0.12in}&&&&\\'
261 ! WRITE (Jchan,FMT='(a)') '\vspace{-0.01in}&&&&\\'
262 ENDIF
263 !
264 ENDDO
265 ! End of reaction loop.
266 !
267 !----------------------------------------------------------------------
268 !
269 ! Close LaTeX document.
270 WRITE (Jchan,FMT="(a)')
271 WRITE (Jchan,FMT="(a)') "\end{document}'
272 !
273 !----------------------------------------------------------------------
274 !
275 ENDIF
276 !
277 !----------------------------------------------------------------------
278 !
279 CLOSE (Jchan)
280 !
281 !----------------------------------------------------------------------
282 !
283 END SUBROUTINE WR_CR_LATEX