added README_changes.txt
[wrffire.git] / wrfv2_fire / chem / module_cbmz_rodas_prep.F
blobd686efb9640ef2dade6095eaefa20a9ba9cd3803
1 !**********************************************************************************  
2 ! This computer software was prepared by Battelle Memorial Institute, hereinafter
3 ! the Contractor, under Contract No. DE-AC05-76RL0 1830 with the Department of 
4 ! Energy (DOE). NEITHER THE GOVERNMENT NOR THE CONTRACTOR MAKES ANY WARRANTY,
5 ! EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.
7 ! CBMZ module: see module_cbmz.F for information and terms of use
8 !**********************************************************************************  
9       module module_cbmz_rodas_prep
12       contains
15 !-----------------------------------------------------------------------
16 !   cbmz_v02r01_torodas.f - created on 18-nov-2003 from previous
17 !        cbmz_v02r01_torodas.f        cbmz_v02r01_mapconcs.f
18 !        cbmz_v02r01_maprates.f       cbmz_v02r01_dydt.f
19 !        cbmz_v02r01_jacob.f          cbmz_v02r01_decomp.f
20 !        cbmz_v02r01_solve.f
21 !   so now everything is in a single file
22 !-----------------------------------------------------------------------
24       subroutine cbmz_v02r01_torodas(   &
25           ngas, taa, tzz,   &
26           stot, atol, rtol, yposlimit, yneglimit,   &
27           sfixedkpp, rconstkpp,   &
28           hmin, hstart,   &
29           info_rodas, iok, lunerr, idydt_sngldble )
31 !   interfaces to rodas3 solver formechanism-version-regime =cbmz_v02r01
33 !   *** do not include any pegasus common blocks ***
35       use module_data_cbmz
36       use module_cbmz_rodas3_solver, only:  rodas3_ff_x2
37       implicit none
39 !   subr parameters
40       integer ngas, iok, lunerr, idydt_sngldble
41       integer info_rodas(6)
42       real taa, tzz, hmin, hstart
43       real stot(ngas), atol(ngas), rtol(ngas)
44       real yposlimit(ngas), yneglimit(ngas)
45       real sfixedkpp(nfixed_kppmax), rconstkpp(nreact_kppmax)
47 !   local variables
49 !     external cbmz_v02r01_dydt
50 !     external cbmz_v02r01_jacob
51 !     external cbmz_v02r01_decomp
52 !     external cbmz_v02r01_solve
54       integer i
56       real hmax
58       integer lu_crow_v(nvar_r01_kpp + 1)
59       save    lu_crow_v
60       integer lu_diag_v(nvar_r01_kpp + 1)
61       save    lu_diag_v
62       integer lu_icol_v(lu_nonzero_v_r01_kpp)
63       save    lu_icol_v
65       data lu_icol_v /   &
66         1,  4, 25,  2, 22, 24,  3, 26,  4, 25,  5, 25,   &
67         6, 24, 25,  7, 19, 25,  8, 22, 28,  9, 23, 28,   &
68        10, 21, 25, 11, 18, 20, 23, 25, 12, 24, 25, 28,   &
69        13, 24, 25, 27, 28, 14, 21, 24, 25, 15, 19, 24,   &
70        25,  3, 16, 23, 26, 27, 28,  9, 17, 18, 20, 23,   &
71        24, 25, 28, 10, 14, 18, 21, 23, 24, 25, 27,  7,   &
72        15, 19, 23, 24, 25, 27,  5, 15, 19, 20, 23, 24,   &
73        25, 27, 14, 20, 21, 22, 23, 24, 25, 27,  8, 20,   &
74        22, 23, 24, 25, 27, 28,  9, 16, 17, 18, 19, 20,   &
75        21, 22, 23, 24, 25, 26, 27, 28,  4,  5,  6, 10,   &
76        11, 12, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25,   &
77        26, 27, 28,  3,  4,  5,  6,  7, 10, 11, 12, 13,   &
78        14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,   &
79        27, 28, 16, 22, 23, 24, 25, 26, 27, 28, 13, 16,   &
80        19, 21, 22, 23, 24, 25, 26, 27, 28,  8,  9, 12,   &
81        13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,   &
82        27, 28 /
84       data lu_crow_v /   &
85         1,  4,  7,  9, 11, 13, 16, 19, 22, 25, 28, 33,   &
86        37, 42, 46, 50, 56, 64, 72, 79, 87, 95,103,117,   &
87       136,159,167,178,195 /
89       data lu_diag_v /   &
90         1,  4,  7,  9, 11, 13, 16, 19, 22, 25, 28, 33,   &
91        37, 42, 46, 51, 57, 66, 74, 82, 89, 97,111,131,   &
92       155,164,176,194,195 /
96       info_rodas(1) = 1
97       do i = 2, 6
98           info_rodas(i) = 0
99       end do
100       hmax = tzz - taa
102 !   do not integrate if hmax is less/equal to hmin
103 !   because hmin is generally 0.1 s or less
104       if (hmax .le. 1.001*hmin) then
105           iok = 11
106           return
107       end if
109       call rodas3_ff_x2(   &
110            nvar_r01_kpp, taa, tzz, hmin, hmax, hstart,   &
111            stot, atol, rtol, yposlimit, yneglimit,   &
112            sfixedkpp, rconstkpp,   &
113            lu_nonzero_v_r01_kpp, lu_crow_v, lu_diag_v, lu_icol_v,   &
114            info_rodas, iok, lunerr,   &
115            cbmz_v02r01_dydt,   &
116            cbmz_v02r01_jacob,   &
117            cbmz_v02r01_decomp,   &
118            cbmz_v02r01_solve )
120       return
121       end subroutine cbmz_v02r01_torodas 
124 !-----------------------------------------------------------------------------
125       subroutine cbmz_v02r01_mapconcs( imap, nyy, yy, yyfixed, cbox )
127 !   maps species concentrations (gaschemistry cbox array <--> kpp yy array)
128 !   for mechanism-version-regime = cbmz_v02r01
130       use module_data_cbmz
131       implicit none
133 !   subr parameters
134 !     imap = mapping direction flag [input]
135 !         0 = map cbox --> yy and yyfixed
136 !         1 = map yy --> cbox
137       integer imap
138 !     nyy = number of kpp "variable" species [output]
139       integer nyy
140 !     yy = kpp species concentrations array [input/output]
141       real yy(nvar_r01_kpp)
142 !     yyfixed = kpp species concentrations array [input/output]
143       real yyfixed(nfixed_kppmax)
144 !     cbox = main gaschemistry species conc array [input/output]
145       real cbox(ngas_z)
147 !   local variables
148       integer ih2so4_kpp
149       parameter ( ih2so4_kpp = 1 )
150       integer ircooh_kpp
151       parameter ( ircooh_kpp = 2 )
152       integer io1d_kpp
153       parameter ( io1d_kpp = 3 )
154       integer iso2_kpp
155       parameter ( iso2_kpp = 4 )
156       integer ic2h5oh_kpp
157       parameter ( ic2h5oh_kpp = 5 )
158       integer ih2o2_kpp
159       parameter ( ih2o2_kpp = 6 )
160       integer ic2h6_kpp
161       parameter ( ic2h6_kpp = 7 )
162       integer ipan_kpp
163       parameter ( ipan_kpp = 8 )
164       integer in2o5_kpp
165       parameter ( in2o5_kpp = 9 )
166       integer ich3oh_kpp
167       parameter ( ich3oh_kpp = 10 )
168       integer ico_kpp
169       parameter ( ico_kpp = 11 )
170       integer ihno4_kpp
171       parameter ( ihno4_kpp = 12 )
172       integer ihono_kpp
173       parameter ( ihono_kpp = 13 )
174       integer ich3ooh_kpp
175       parameter ( ich3ooh_kpp = 14 )
176       integer iethooh_kpp
177       parameter ( iethooh_kpp = 15 )
178       integer io3p_kpp
179       parameter ( io3p_kpp = 16 )
180       integer ihno3_kpp
181       parameter ( ihno3_kpp = 17 )
182       integer ihcho_kpp
183       parameter ( ihcho_kpp = 18 )
184       integer iethp_kpp
185       parameter ( iethp_kpp = 19 )
186       integer iald2_kpp
187       parameter ( iald2_kpp = 20 )
188       integer ich3o2_kpp
189       parameter ( ich3o2_kpp = 21 )
190       integer ic2o3_kpp
191       parameter ( ic2o3_kpp = 22 )
192       integer ino3_kpp
193       parameter ( ino3_kpp = 23 )
194       integer iho2_kpp
195       parameter ( iho2_kpp = 24 )
196       integer ioh_kpp
197       parameter ( ioh_kpp = 25 )
198       integer io3_kpp
199       parameter ( io3_kpp = 26 )
200       integer ino_kpp
201       parameter ( ino_kpp = 27 )
202       integer ino2_kpp
203       parameter ( ino2_kpp = 28 )
205 ! indexes declaration for fixed species
206       integer ich4_kpp
207       parameter ( ich4_kpp = 1 )
208       integer ih2o_kpp
209       parameter ( ih2o_kpp = 2 )
210       integer ih2_kpp
211       parameter ( ih2_kpp = 3 )
212       integer io2_kpp
213       parameter ( io2_kpp = 4 )
214       integer in2_kpp
215       parameter ( in2_kpp = 5 )
219       nyy = nvar_r01_kpp
221       if (imap .le. 0) goto 1000
222       if (imap .ge. 1) goto 2000
226 !   map cbox values into yyvarkpp and yyfixkpp
228 1000  continue
229       yy(ih2so4_kpp)    = cbox(ih2so4_z)
230       yy(ircooh_kpp)    = cbox(ircooh_z)
231       yy(io1d_kpp)      = cbox(io1d_z)
232       yy(iso2_kpp)      = cbox(iso2_z)
233       yy(ic2h5oh_kpp)   = cbox(ic2h5oh_z)
234       yy(ih2o2_kpp)     = cbox(ih2o2_z)
235       yy(ic2h6_kpp)     = cbox(ic2h6_z)
236       yy(ipan_kpp)      = cbox(ipan_z)
237       yy(in2o5_kpp)     = cbox(in2o5_z)
238       yy(ich3oh_kpp)    = cbox(ich3oh_z)
239       yy(ico_kpp)       = cbox(ico_z)
240       yy(ihno4_kpp)     = cbox(ihno4_z)
241       yy(ihono_kpp)     = cbox(ihono_z)
242       yy(ich3ooh_kpp)   = cbox(ich3ooh_z)
243       yy(iethooh_kpp)   = cbox(iethooh_z)
244       yy(io3p_kpp)      = cbox(io3p_z)
245       yy(ihno3_kpp)     = cbox(ihno3_z)
246       yy(ihcho_kpp)     = cbox(ihcho_z)
247       yy(iethp_kpp)     = cbox(iethp_z)
248       yy(iald2_kpp)     = cbox(iald2_z)
249       yy(ich3o2_kpp)    = cbox(ich3o2_z)
250       yy(ic2o3_kpp)     = cbox(ic2o3_z)
251       yy(ino3_kpp)      = cbox(ino3_z)
252       yy(iho2_kpp)      = cbox(iho2_z)
253       yy(ioh_kpp)       = cbox(ioh_z)
254       yy(io3_kpp)       = cbox(io3_z)
255       yy(ino_kpp)       = cbox(ino_z)
256       yy(ino2_kpp)      = cbox(ino2_z)
258       yyfixed(ich4_kpp) = cbox(ich4_z)
259       yyfixed(ih2o_kpp) = cbox(ih2o_z)
260       yyfixed(ih2_kpp) = cbox(ih2_z)
261       yyfixed(io2_kpp) = cbox(io2_z)
262       yyfixed(in2_kpp) = cbox(in2_z)
265 !   map yyvarkpp values into cbox
267 2000  continue
268       cbox(ih2so4_z)    = yy(ih2so4_kpp)
269       cbox(ircooh_z)    = yy(ircooh_kpp)
270       cbox(io1d_z)      = yy(io1d_kpp)
271       cbox(iso2_z)      = yy(iso2_kpp)
272       cbox(ic2h5oh_z)   = yy(ic2h5oh_kpp)
273       cbox(ih2o2_z)     = yy(ih2o2_kpp)
274       cbox(ic2h6_z)     = yy(ic2h6_kpp)
275       cbox(ipan_z)      = yy(ipan_kpp)
276       cbox(in2o5_z)     = yy(in2o5_kpp)
277       cbox(ich3oh_z)    = yy(ich3oh_kpp)
278       cbox(ico_z)       = yy(ico_kpp)
279       cbox(ihno4_z)     = yy(ihno4_kpp)
280       cbox(ihono_z)     = yy(ihono_kpp)
281       cbox(ich3ooh_z)   = yy(ich3ooh_kpp)
282       cbox(iethooh_z)   = yy(iethooh_kpp)
283       cbox(io3p_z)      = yy(io3p_kpp)
284       cbox(ihno3_z)     = yy(ihno3_kpp)
285       cbox(ihcho_z)     = yy(ihcho_kpp)
286       cbox(iethp_z)     = yy(iethp_kpp)
287       cbox(iald2_z)     = yy(iald2_kpp)
288       cbox(ich3o2_z)    = yy(ich3o2_kpp)
289       cbox(ic2o3_z)     = yy(ic2o3_kpp)
290       cbox(ino3_z)      = yy(ino3_kpp)
291       cbox(iho2_z)      = yy(iho2_kpp)
292       cbox(ioh_z)       = yy(ioh_kpp)
293       cbox(io3_z)       = yy(io3_kpp)
294       cbox(ino_z)       = yy(ino_kpp)
295       cbox(ino2_z)      = yy(ino2_kpp)
297       return
298       end subroutine cbmz_v02r01_mapconcs                                
301 !-----------------------------------------------------------------------------
302       subroutine cbmz_v02r01_maprates(   &
303           rk_m1,   &
304           rk_m2,   &
305           rk_m3,   &
306           rk_m4,   &
307           rconst )
309 !   maps reaction rate constants (host code array --> kpp rconst array)
310 !   for mechanism-version-regime = cbmz_v02r01
312       use module_data_cbmz
313       implicit none
315 !   subr parameters
316 !     all are host-code reaction-rate-constant arrays [input]
317       real rk_m1(*)
318       real rk_m2(*)
319       real rk_m3(*)
320       real rk_m4(*)
321       real rconst(nreact_kppmax)
323 !   local variables
324       integer i
326       do i = 1, nreact_kppmax
327           rconst(i) = 0.
328       end do
331       rconst(1) = (rk_m1(1))
332       rconst(2) = (rk_m1(2))
333       rconst(3) = (rk_m1(3))
334       rconst(4) = (rk_m1(4))
335       rconst(5) = (rk_m1(5))
336       rconst(6) = (rk_m1(6))
337       rconst(7) = (rk_m1(7))
338       rconst(8) = (rk_m1(8))
339       rconst(9) = (rk_m1(9))
340       rconst(10) = (rk_m1(10))
341       rconst(11) = (rk_m1(11))
342       rconst(12) = (rk_m1(12))
343       rconst(13) = (rk_m1(13))
344       rconst(14) = (rk_m1(14))
345       rconst(15) = (rk_m1(15))
346       rconst(16) = (rk_m1(16))
347       rconst(17) = (rk_m1(17))
348       rconst(18) = (rk_m1(18))
349       rconst(19) = (rk_m1(19))
350       rconst(20) = (rk_m1(20))
351       rconst(21) = (rk_m1(21))
352       rconst(22) = (rk_m1(22))
353       rconst(23) = (rk_m1(23))
354       rconst(24) = (rk_m1(24))
355       rconst(25) = (rk_m1(25))
356       rconst(26) = (rk_m1(26))
357       rconst(27) = (rk_m1(27))
358       rconst(28) = (rk_m1(28))
359       rconst(29) = (rk_m1(29))
360       rconst(30) = (rk_m1(30))
361       rconst(31) = (rk_m1(31))
362       rconst(32) = (rk_m1(32))
363       rconst(33) = (rk_m1(33))
364       rconst(34) = (rk_m1(34))
365       rconst(35) = (rk_m1(35))
366       rconst(36) = (rk_m1(36))
367       rconst(37) = (rk_m1(37))
368       rconst(38) = (rk_m1(38))
369       rconst(39) = (rk_m1(39))
370       rconst(40) = (rk_m1(40))
371       rconst(41) = (rk_m1(41))
372       rconst(42) = (rk_m1(42))
373       rconst(43) = (rk_m1(43))
374       rconst(44) = (rk_m1(44))
375       rconst(45) = (rk_m1(45))
376       rconst(46) = (rk_m1(46))
377       rconst(47) = (rk_m1(47))
378       rconst(48) = (rk_m1(48))
379       rconst(49) = (rk_m1(49))
380       rconst(50) = (rk_m1(50))
381       rconst(51) = (rk_m1(51))
382       rconst(52) = (rk_m1(52))
383       rconst(53) = (rk_m1(53))
384       rconst(54) = (rk_m1(54))
385       rconst(55) = (rk_m1(55))
386       rconst(56) = (rk_m1(56))
387       rconst(57) = (rk_m1(57))
388       rconst(58) = (rk_m1(58))
389       rconst(59) = (rk_m1(59))
390       rconst(60) = (rk_m1(60))
391       rconst(61) = (rk_m1(61))
392       rconst(62) = (rk_m1(62))
393       rconst(63) = (rk_m1(63))
394       rconst(64) = (rk_m1(64))
395       rconst(65) = (rk_m1(65))
396       rconst(66) = (rk_m2(2))
397       rconst(67) = (rk_m2(3))
398       rconst(68) = (rk_m2(4))
399       rconst(69) = (rk_m2(31))
400       rconst(70) = (rk_m2(32))
401       rconst(71) = (rk_m2(34))
402       rconst(72) = (rk_m2(39))
403       rconst(73) = (rk_m2(44))
404       rconst(74) = (rk_m2(49))
405       return
406       end subroutine cbmz_v02r01_maprates 
409 !-----------------------------------------------------------------------------
410       subroutine cbmz_v02r01_dydt( nvardum, tdum, v, a_var, f, rconst )
412 !   computes rates of change for mechanism-version-regime = cbmz_v02r01
414       use module_data_cbmz
415       implicit none
417 !   subr parameters
418 !     nvardum = number of variable species [input]
419       integer nvardum
420 !     tdum = time [input]
421       real tdum
422 !     v = concentrations of variable species [input]
423       real v(nvar_r01_kpp)
424 !     a_var = dydt for each species [output]
425       real a_var(nvar_r01_kpp)
426 !     f = concentrations of fixed species [input]
427       real f(nfixed_kppmax)
428 !     rconst = reaction rate constants [input]
429       real rconst(nreact_r01_kpp)
431 !   local variables
432 !     a = rate for each reaction
433       real a(nreact_r01_kpp)
435 ! computation of equation rates
436       a(1) = rconst(1)*v(28)
437       a(2) = rconst(2)*v(23)
438       a(3) = rconst(3)*v(13)
439       a(4) = rconst(4)*v(17)
440       a(5) = rconst(5)*v(12)
441       a(6) = rconst(6)*v(9)
442       a(7) = rconst(7)*v(26)
443       a(8) = rconst(8)*v(26)
444       a(9) = rconst(9)*v(6)
445       a(10) = rconst(10)*v(3)*f(4)
446       a(11) = rconst(11)*v(3)*f(5)
447       a(12) = rconst(12)*v(3)*f(2)
448       a(13) = rconst(13)*v(16)*f(4)
449       a(14) = rconst(14)*v(16)*v(26)
450       a(15) = rconst(15)*v(16)*v(28)
451       a(16) = rconst(16)*v(16)*v(28)
452       a(17) = rconst(17)*v(16)*v(27)
453       a(18) = rconst(18)*v(26)*v(27)
454       a(19) = rconst(19)*v(26)*v(28)
455       a(20) = rconst(20)*v(25)*v(26)
456       a(21) = rconst(21)*v(24)*v(26)
457       a(22) = rconst(22)*v(25)*f(3)
458       a(23) = rconst(23)*v(25)*v(27)
459       a(24) = rconst(24)*v(25)*v(28)
460       a(25) = rconst(25)*v(23)*v(25)
461       a(26) = rconst(26)*v(13)*v(25)
462       a(27) = rconst(27)*v(17)*v(25)
463       a(28) = rconst(28)*v(12)*v(25)
464       a(29) = rconst(29)*v(24)*v(25)
465       a(30) = rconst(30)*v(6)*v(25)
466       a(31) = rconst(31)*v(24)*v(24)
467       a(32) = rconst(32)*v(24)*v(24)*f(2)
468       a(33) = rconst(33)*v(24)*v(27)
469       a(34) = rconst(34)*v(24)*v(28)
470       a(35) = rconst(35)*v(24)*v(28)
471       a(36) = rconst(36)*v(12)
472       a(37) = rconst(37)*v(23)*v(27)
473       a(38) = rconst(38)*v(23)*v(28)
474       a(39) = rconst(39)*v(23)*v(28)
475       a(40) = rconst(40)*v(23)*v(23)
476       a(41) = rconst(41)*v(23)*v(24)
477       a(42) = rconst(42)*v(9)*f(2)
478       a(43) = rconst(43)*v(9)
479       a(44) = rconst(44)*v(11)*v(25)
480       a(45) = rconst(45)*v(4)*v(25)
481       a(46) = rconst(46)*v(25)*f(1)
482       a(47) = rconst(47)*v(7)*v(25)
483       a(48) = rconst(48)*v(10)*v(25)
484       a(49) = rconst(49)*v(18)
485       a(50) = rconst(50)*v(18)
486       a(51) = rconst(51)*v(18)*v(25)
487       a(52) = rconst(52)*v(18)*v(23)
488       a(53) = rconst(53)*v(14)
489       a(54) = rconst(54)*v(15)
490       a(55) = rconst(55)*v(14)*v(25)
491       a(56) = rconst(56)*v(15)*v(25)
492       a(57) = rconst(57)*v(21)*v(27)
493       a(58) = rconst(58)*v(19)*v(27)
494       a(59) = rconst(59)*v(21)*v(23)
495       a(60) = rconst(60)*v(19)*v(23)
496       a(61) = rconst(61)*v(21)*v(24)
497       a(62) = rconst(62)*v(19)*v(24)
498       a(63) = rconst(63)*v(21)
499       a(64) = rconst(64)*v(19)
500       a(65) = rconst(65)*v(5)*v(25)
501       a(66) = rconst(66)*v(20)
502       a(67) = rconst(67)*v(20)*v(25)
503       a(68) = rconst(68)*v(20)*v(23)
504       a(69) = rconst(69)*v(22)*v(28)
505       a(70) = rconst(70)*v(8)
506       a(71) = rconst(71)*v(22)*v(27)
507       a(72) = rconst(72)*v(22)*v(23)
508       a(73) = rconst(73)*v(22)*v(24)
509       a(74) = rconst(74)*v(22)
511 ! aggregate function
512       a_var(1) = a(45)
513       a_var(2) = 0.4*a(73)
514       a_var(3) = a(8)-a(10)-a(11)-a(12)
515       a_var(4) = -a(45)
516       a_var(5) = -a(65)
517       a_var(6) = -a(9)-a(30)+a(31)+a(32)
518       a_var(7) = -a(47)+0.2*a(64)
519       a_var(8) = a(69)-a(70)
520       a_var(9) = -a(6)+a(39)-a(42)-a(43)
521       a_var(10) = -a(48)+0.34*a(63)
522       a_var(11) = -a(44)+a(49)+a(50)+a(51)+a(52)+a(66)
523       a_var(12) = -a(5)-a(28)+a(34)-a(36)
524       a_var(13) = -a(3)+a(23)-a(26)+a(35)
525       a_var(14) = -a(53)-a(55)+a(61)
526       a_var(15) = -a(54)-a(56)+a(62)
527       a_var(16) = a(1)+0.89*a(2)+a(7)+a(10)+a(11)-a(13)-a(14)-a(15)   &
528                  -a(16)-a(17)
529       a_var(17) = -a(4)+a(24)-a(27)+0.3*a(41)+2*a(42)+a(52)+a(68)
530       a_var(18) = a(48)-a(49)-a(50)-a(51)-a(52)+a(53)+0.3*a(55)+a(57)   &
531                  +a(59)+0.66*a(63)
532       a_var(19) = a(47)+0.5*a(56)-a(58)-a(60)-a(62)-a(64)
533       a_var(20) = a(54)+0.5*a(56)+a(58)+a(60)+0.8*a(64)+a(65)-a(66)   &
534                  -a(67)-a(68)
535       a_var(21) = a(46)+0.7*a(55)-a(57)-a(59)-a(61)-a(63)+a(66)+a(71)   &
536                  +a(72)+a(74)
537       a_var(22) = a(67)+a(68)-a(69)+a(70)-a(71)-a(72)-a(73)-a(74)
538       a_var(23) = -a(2)+a(6)+a(16)+a(19)-a(25)+a(27)-a(37)-a(38)-a(39)   &
539                  -2*a(40)-a(41)+a(43)-a(52)-a(59)-a(60)-a(68)-a(72)
540       a_var(24) = a(5)+a(20)-a(21)+a(22)+a(25)-a(29)+a(30)-2*a(31)-2   &
541                  *a(32)-a(33)-a(34)-a(35)+a(36)-a(41)+a(44)+a(45)   &
542                  +a(48)+2*a(49)+a(51)+a(52)+a(53)+a(54)+a(57)+a(58)   &
543                  +a(59)+a(60)-a(61)-a(62)+0.32*a(63)+0.6*a(64)+a(65)   &
544                  +a(66)-a(73)
545       a_var(25) = a(3)+a(4)+2*a(9)+2*a(12)-a(20)+a(21)-a(22)-a(23)   &
546                  -a(24)-a(25)-a(26)-a(27)-a(28)-a(29)-a(30)+a(33)+0.7   &
547                  *a(41)-a(44)-a(45)-a(46)-a(47)-a(48)-a(51)+a(53)   &
548                  +a(54)-0.7*a(55)-0.5*a(56)-a(65)-a(67)
549       a_var(26) = -a(7)-a(8)+a(13)-a(14)-a(18)-a(19)-a(20)-a(21)+0.4   &
550                  *a(73)
551       a_var(27) = a(1)+0.11*a(2)+a(3)+a(15)-a(17)-a(18)-a(23)-a(33)   &
552                  -a(37)+a(38)-a(57)-a(58)-a(71)
553       a_var(28) = -a(1)+0.89*a(2)+a(4)+a(5)+a(6)-a(15)-a(16)+a(17)   &
554                  +a(18)-a(19)-a(24)+a(25)+a(26)+a(28)+a(33)-a(34)   &
555                  -a(35)+a(36)+2*a(37)-a(39)+2*a(40)+0.7*a(41)+a(43)   &
556                  +a(57)+a(58)+a(59)+a(60)-a(69)+a(70)+a(71)+a(72)
557       return
558       end subroutine cbmz_v02r01_dydt                                      
561 !-----------------------------------------------------------------------------
562       subroutine cbmz_v02r01_jacob( nvardum, tdum, v, jvs, f, rconst )
564 !   computes jacobian for mechanism-version-regime = cbmz_v02r01
566       use module_data_cbmz
567       implicit none
569 !   subr parameters
570 !     nvardum = number of variable species [input]
571       integer nvardum
572 !     tdum = time [input]
573       real tdum
574 !     v = concentrations of variable species [input]
575       real v(nvar_r01_kpp)
576 !     jvs = non-zero jacobian elements [output]
577       real jvs(lu_nonzero_v_r01_kpp)
578 !     f = concentrations of fixed species [input]
579       real f(nfixed_kppmax)
580 !     rconst = reaction rate constants [input]
581       real rconst(nreact_r01_kpp)
583 !   local variables
584 !     b(i,j) = d[reaction_rate(i)] / d[species_conc(j)]
585       real b(nreact_r01_kpp,nvar_r01_kpp)
587 ! computation of b(i,j) = da(i)/dv(j)
588       b(1,28) = rconst(1)
589       b(2,23) = rconst(2)
590       b(3,13) = rconst(3)
591       b(4,17) = rconst(4)
592       b(5,12) = rconst(5)
593       b(6,9) = rconst(6)
594       b(7,26) = rconst(7)
595       b(8,26) = rconst(8)
596       b(9,6) = rconst(9)
597       b(10,3) = rconst(10)*f(4)
598       b(11,3) = rconst(11)*f(5)
599       b(12,3) = rconst(12)*f(2)
600       b(13,16) = rconst(13)*f(4)
601       b(14,16) = rconst(14)*v(26)
602       b(14,26) = rconst(14)*v(16)
603       b(15,16) = rconst(15)*v(28)
604       b(15,28) = rconst(15)*v(16)
605       b(16,16) = rconst(16)*v(28)
606       b(16,28) = rconst(16)*v(16)
607       b(17,16) = rconst(17)*v(27)
608       b(17,27) = rconst(17)*v(16)
609       b(18,26) = rconst(18)*v(27)
610       b(18,27) = rconst(18)*v(26)
611       b(19,26) = rconst(19)*v(28)
612       b(19,28) = rconst(19)*v(26)
613       b(20,25) = rconst(20)*v(26)
614       b(20,26) = rconst(20)*v(25)
615       b(21,24) = rconst(21)*v(26)
616       b(21,26) = rconst(21)*v(24)
617       b(22,25) = rconst(22)*f(3)
618       b(23,25) = rconst(23)*v(27)
619       b(23,27) = rconst(23)*v(25)
620       b(24,25) = rconst(24)*v(28)
621       b(24,28) = rconst(24)*v(25)
622       b(25,23) = rconst(25)*v(25)
623       b(25,25) = rconst(25)*v(23)
624       b(26,13) = rconst(26)*v(25)
625       b(26,25) = rconst(26)*v(13)
626       b(27,17) = rconst(27)*v(25)
627       b(27,25) = rconst(27)*v(17)
628       b(28,12) = rconst(28)*v(25)
629       b(28,25) = rconst(28)*v(12)
630       b(29,24) = rconst(29)*v(25)
631       b(29,25) = rconst(29)*v(24)
632       b(30,6) = rconst(30)*v(25)
633       b(30,25) = rconst(30)*v(6)
634       b(31,24) = rconst(31)*2*v(24)
635       b(32,24) = rconst(32)*2*v(24)*f(2)
636       b(33,24) = rconst(33)*v(27)
637       b(33,27) = rconst(33)*v(24)
638       b(34,24) = rconst(34)*v(28)
639       b(34,28) = rconst(34)*v(24)
640       b(35,24) = rconst(35)*v(28)
641       b(35,28) = rconst(35)*v(24)
642       b(36,12) = rconst(36)
643       b(37,23) = rconst(37)*v(27)
644       b(37,27) = rconst(37)*v(23)
645       b(38,23) = rconst(38)*v(28)
646       b(38,28) = rconst(38)*v(23)
647       b(39,23) = rconst(39)*v(28)
648       b(39,28) = rconst(39)*v(23)
649       b(40,23) = rconst(40)*2*v(23)
650       b(41,23) = rconst(41)*v(24)
651       b(41,24) = rconst(41)*v(23)
652       b(42,9) = rconst(42)*f(2)
653       b(43,9) = rconst(43)
654       b(44,11) = rconst(44)*v(25)
655       b(44,25) = rconst(44)*v(11)
656       b(45,4) = rconst(45)*v(25)
657       b(45,25) = rconst(45)*v(4)
658       b(46,25) = rconst(46)*f(1)
659       b(47,7) = rconst(47)*v(25)
660       b(47,25) = rconst(47)*v(7)
661       b(48,10) = rconst(48)*v(25)
662       b(48,25) = rconst(48)*v(10)
663       b(49,18) = rconst(49)
664       b(50,18) = rconst(50)
665       b(51,18) = rconst(51)*v(25)
666       b(51,25) = rconst(51)*v(18)
667       b(52,18) = rconst(52)*v(23)
668       b(52,23) = rconst(52)*v(18)
669       b(53,14) = rconst(53)
670       b(54,15) = rconst(54)
671       b(55,14) = rconst(55)*v(25)
672       b(55,25) = rconst(55)*v(14)
673       b(56,15) = rconst(56)*v(25)
674       b(56,25) = rconst(56)*v(15)
675       b(57,21) = rconst(57)*v(27)
676       b(57,27) = rconst(57)*v(21)
677       b(58,19) = rconst(58)*v(27)
678       b(58,27) = rconst(58)*v(19)
679       b(59,21) = rconst(59)*v(23)
680       b(59,23) = rconst(59)*v(21)
681       b(60,19) = rconst(60)*v(23)
682       b(60,23) = rconst(60)*v(19)
683       b(61,21) = rconst(61)*v(24)
684       b(61,24) = rconst(61)*v(21)
685       b(62,19) = rconst(62)*v(24)
686       b(62,24) = rconst(62)*v(19)
687       b(63,21) = rconst(63)
688       b(64,19) = rconst(64)
689       b(65,5) = rconst(65)*v(25)
690       b(65,25) = rconst(65)*v(5)
691       b(66,20) = rconst(66)
692       b(67,20) = rconst(67)*v(25)
693       b(67,25) = rconst(67)*v(20)
694       b(68,20) = rconst(68)*v(23)
695       b(68,23) = rconst(68)*v(20)
696       b(69,22) = rconst(69)*v(28)
697       b(69,28) = rconst(69)*v(22)
698       b(70,8) = rconst(70)
699       b(71,22) = rconst(71)*v(27)
700       b(71,27) = rconst(71)*v(22)
701       b(72,22) = rconst(72)*v(23)
702       b(72,23) = rconst(72)*v(22)
703       b(73,22) = rconst(73)*v(24)
704       b(73,24) = rconst(73)*v(22)
705       b(74,22) = rconst(74)
707 ! construct the jacobian terms from b's
708       jvs(1) = 0
709       jvs(2) = b(45,4)
710       jvs(3) = b(45,25)
711       jvs(4) = 0
712       jvs(5) = 0.4*b(73,22)
713       jvs(6) = 0.4*b(73,24)
714       jvs(7) = -b(10,3)-b(11,3)-b(12,3)
715       jvs(8) = b(8,26)
716       jvs(9) = -b(45,4)
717       jvs(10) = -b(45,25)
718       jvs(11) = -b(65,5)
719       jvs(12) = -b(65,25)
720       jvs(13) = -b(9,6)-b(30,6)
721       jvs(14) = b(31,24)+b(32,24)
722       jvs(15) = -b(30,25)
723       jvs(16) = -b(47,7)
724       jvs(17) = 0.2*b(64,19)
725       jvs(18) = -b(47,25)
726       jvs(19) = -b(70,8)
727       jvs(20) = b(69,22)
728       jvs(21) = b(69,28)
729       jvs(22) = -b(6,9)-b(42,9)-b(43,9)
730       jvs(23) = b(39,23)
731       jvs(24) = b(39,28)
732       jvs(25) = -b(48,10)
733       jvs(26) = 0.34*b(63,21)
734       jvs(27) = -b(48,25)
735       jvs(28) = -b(44,11)
736       jvs(29) = b(49,18)+b(50,18)+b(51,18)+b(52,18)
737       jvs(30) = b(66,20)
738       jvs(31) = b(52,23)
739       jvs(32) = -b(44,25)+b(51,25)
740       jvs(33) = -b(5,12)-b(28,12)-b(36,12)
741       jvs(34) = b(34,24)
742       jvs(35) = -b(28,25)
743       jvs(36) = b(34,28)
744       jvs(37) = -b(3,13)-b(26,13)
745       jvs(38) = b(35,24)
746       jvs(39) = b(23,25)-b(26,25)
747       jvs(40) = b(23,27)
748       jvs(41) = b(35,28)
749       jvs(42) = -b(53,14)-b(55,14)
750       jvs(43) = b(61,21)
751       jvs(44) = b(61,24)
752       jvs(45) = -b(55,25)
753       jvs(46) = -b(54,15)-b(56,15)
754       jvs(47) = b(62,19)
755       jvs(48) = b(62,24)
756       jvs(49) = -b(56,25)
757       jvs(50) = b(10,3)+b(11,3)
758       jvs(51) = -b(13,16)-b(14,16)-b(15,16)-b(16,16)-b(17,16)
759       jvs(52) = 0.89*b(2,23)
760       jvs(53) = b(7,26)-b(14,26)
761       jvs(54) = -b(17,27)
762       jvs(55) = b(1,28)-b(15,28)-b(16,28)
763       jvs(56) = 2*b(42,9)
764       jvs(57) = -b(4,17)-b(27,17)
765       jvs(58) = b(52,18)
766       jvs(59) = b(68,20)
767       jvs(60) = 0.3*b(41,23)+b(52,23)+b(68,23)
768       jvs(61) = 0.3*b(41,24)
769       jvs(62) = b(24,25)-b(27,25)
770       jvs(63) = b(24,28)
771       jvs(64) = b(48,10)
772       jvs(65) = b(53,14)+0.3*b(55,14)
773       jvs(66) = -b(49,18)-b(50,18)-b(51,18)-b(52,18)
774       jvs(67) = b(57,21)+b(59,21)+0.66*b(63,21)
775       jvs(68) = -b(52,23)+b(59,23)
776       jvs(69) = 0
777       jvs(70) = b(48,25)-b(51,25)+0.3*b(55,25)
778       jvs(71) = b(57,27)
779       jvs(72) = b(47,7)
780       jvs(73) = 0.5*b(56,15)
781       jvs(74) = -b(58,19)-b(60,19)-b(62,19)-b(64,19)
782       jvs(75) = -b(60,23)
783       jvs(76) = -b(62,24)
784       jvs(77) = b(47,25)+0.5*b(56,25)
785       jvs(78) = -b(58,27)
786       jvs(79) = b(65,5)
787       jvs(80) = b(54,15)+0.5*b(56,15)
788       jvs(81) = b(58,19)+b(60,19)+0.8*b(64,19)
789       jvs(82) = -b(66,20)-b(67,20)-b(68,20)
790       jvs(83) = b(60,23)-b(68,23)
791       jvs(84) = 0
792       jvs(85) = 0.5*b(56,25)+b(65,25)-b(67,25)
793       jvs(86) = b(58,27)
794       jvs(87) = 0.7*b(55,14)
795       jvs(88) = b(66,20)
796       jvs(89) = -b(57,21)-b(59,21)-b(61,21)-b(63,21)
797       jvs(90) = b(71,22)+b(72,22)+b(74,22)
798       jvs(91) = -b(59,23)+b(72,23)
799       jvs(92) = -b(61,24)
800       jvs(93) = b(46,25)+0.7*b(55,25)
801       jvs(94) = -b(57,27)+b(71,27)
802       jvs(95) = b(70,8)
803       jvs(96) = b(67,20)+b(68,20)
804       jvs(97) = -b(69,22)-b(71,22)-b(72,22)-b(73,22)-b(74,22)
805       jvs(98) = b(68,23)-b(72,23)
806       jvs(99) = -b(73,24)
807       jvs(100) = b(67,25)
808       jvs(101) = -b(71,27)
809       jvs(102) = -b(69,28)
810       jvs(103) = b(6,9)+b(43,9)
811       jvs(104) = b(16,16)
812       jvs(105) = b(27,17)
813       jvs(106) = -b(52,18)
814       jvs(107) = -b(60,19)
815       jvs(108) = -b(68,20)
816       jvs(109) = -b(59,21)
817       jvs(110) = -b(72,22)
818       jvs(111) = -b(2,23)-b(25,23)-b(37,23)-b(38,23)-b(39,23)-2   &
819                 *b(40,23)-b(41,23)-b(52,23)-b(59,23)-b(60,23)-b(68,23)   &
820                 -b(72,23)
821       jvs(112) = -b(41,24)
822       jvs(113) = -b(25,25)+b(27,25)
823       jvs(114) = b(19,26)
824       jvs(115) = -b(37,27)
825       jvs(116) = b(16,28)+b(19,28)-b(38,28)-b(39,28)
826       jvs(117) = b(45,4)
827       jvs(118) = b(65,5)
828       jvs(119) = b(30,6)
829       jvs(120) = b(48,10)
830       jvs(121) = b(44,11)
831       jvs(122) = b(5,12)+b(36,12)
832       jvs(123) = b(53,14)
833       jvs(124) = b(54,15)
834       jvs(125) = 2*b(49,18)+b(51,18)+b(52,18)
835       jvs(126) = b(58,19)+b(60,19)-b(62,19)+0.6*b(64,19)
836       jvs(127) = b(66,20)
837       jvs(128) = b(57,21)+b(59,21)-b(61,21)+0.32*b(63,21)
838       jvs(129) = -b(73,22)
839       jvs(130) = b(25,23)-b(41,23)+b(52,23)+b(59,23)+b(60,23)
840       jvs(131) = -b(21,24)-b(29,24)-2*b(31,24)-2*b(32,24)-b(33,24)   &
841                 -b(34,24)-b(35,24)-b(41,24)-b(61,24)-b(62,24)-b(73,24)
842       jvs(132) = b(20,25)+b(22,25)+b(25,25)-b(29,25)+b(30,25)+b(44,25)   &
843                 +b(45,25)+b(48,25)+b(51,25)+b(65,25)
844       jvs(133) = b(20,26)-b(21,26)
845       jvs(134) = -b(33,27)+b(57,27)+b(58,27)
846       jvs(135) = -b(34,28)-b(35,28)
847       jvs(136) = 2*b(12,3)
848       jvs(137) = -b(45,4)
849       jvs(138) = -b(65,5)
850       jvs(139) = 2*b(9,6)-b(30,6)
851       jvs(140) = -b(47,7)
852       jvs(141) = -b(48,10)
853       jvs(142) = -b(44,11)
854       jvs(143) = -b(28,12)
855       jvs(144) = b(3,13)-b(26,13)
856       jvs(145) = b(53,14)-0.7*b(55,14)
857       jvs(146) = b(54,15)-0.5*b(56,15)
858       jvs(147) = b(4,17)-b(27,17)
859       jvs(148) = -b(51,18)
860       jvs(149) = 0
861       jvs(150) = -b(67,20)
862       jvs(151) = 0
863       jvs(152) = 0
864       jvs(153) = -b(25,23)+0.7*b(41,23)
865       jvs(154) = b(21,24)-b(29,24)+b(33,24)+0.7*b(41,24)
866       jvs(155) = -b(20,25)-b(22,25)-b(23,25)-b(24,25)-b(25,25)   &
867                 -b(26,25)-b(27,25)-b(28,25)-b(29,25)-b(30,25)-b(44,25)   &
868                 -b(45,25)-b(46,25)-b(47,25)-b(48,25)-b(51,25)-0.7   &
869                 *b(55,25)-0.5*b(56,25)-b(65,25)-b(67,25)
870       jvs(156) = -b(20,26)+b(21,26)
871       jvs(157) = -b(23,27)+b(33,27)
872       jvs(158) = -b(24,28)
873       jvs(159) = b(13,16)-b(14,16)
874       jvs(160) = 0.4*b(73,22)
875       jvs(161) = 0
876       jvs(162) = -b(21,24)+0.4*b(73,24)
877       jvs(163) = -b(20,25)
878       jvs(164) = -b(7,26)-b(8,26)-b(14,26)-b(18,26)-b(19,26)-b(20,26)   &
879                 -b(21,26)
880       jvs(165) = -b(18,27)
881       jvs(166) = -b(19,28)
882       jvs(167) = b(3,13)
883       jvs(168) = b(15,16)-b(17,16)
884       jvs(169) = -b(58,19)
885       jvs(170) = -b(57,21)
886       jvs(171) = -b(71,22)
887       jvs(172) = 0.11*b(2,23)-b(37,23)+b(38,23)
888       jvs(173) = -b(33,24)
889       jvs(174) = -b(23,25)
890       jvs(175) = -b(18,26)
891       jvs(176) = -b(17,27)-b(18,27)-b(23,27)-b(33,27)-b(37,27)   &
892                 -b(57,27)-b(58,27)-b(71,27)
893       jvs(177) = b(1,28)+b(15,28)+b(38,28)
894       jvs(178) = b(70,8)
895       jvs(179) = b(6,9)+b(43,9)
896       jvs(180) = b(5,12)+b(28,12)+b(36,12)
897       jvs(181) = b(26,13)
898       jvs(182) = -b(15,16)-b(16,16)+b(17,16)
899       jvs(183) = b(4,17)
900       jvs(184) = 0
901       jvs(185) = b(58,19)+b(60,19)
902       jvs(186) = 0
903       jvs(187) = b(57,21)+b(59,21)
904       jvs(188) = -b(69,22)+b(71,22)+b(72,22)
905       jvs(189) = 0.89*b(2,23)+b(25,23)+2*b(37,23)-b(39,23)+2*b(40,23)   &
906                 +0.7*b(41,23)+b(59,23)+b(60,23)+b(72,23)
907       jvs(190) = b(33,24)-b(34,24)-b(35,24)+0.7*b(41,24)
908       jvs(191) = -b(24,25)+b(25,25)+b(26,25)+b(28,25)
909       jvs(192) = b(18,26)-b(19,26)
910       jvs(193) = b(17,27)+b(18,27)+b(33,27)+2*b(37,27)+b(57,27)   &
911                 +b(58,27)+b(71,27)
912       jvs(194) = -b(1,28)-b(15,28)-b(16,28)-b(19,28)-b(24,28)-b(34,28)   &
913                 -b(35,28)-b(39,28)-b(69,28)
914       return
915       end subroutine cbmz_v02r01_jacob                                    
918 !-----------------------------------------------------------------------------
919       subroutine cbmz_v02r01_decomp( n, v, ier,   &
920           lu_crow_v, lu_diag_v, lu_icol_v )
922 !   computes l-u-decomposition of sparse jacobian
923 !   for mechanism-version-regime = cbmz_v02r01
925       use module_data_cbmz
926       implicit none
928 !   subr parameters
929 !     n = number of variable species [input]
930       integer n
931 !     ier = status flag [output]
932 !         0 = success    other = failure [output]
933       integer ier
935 !     v = non-zero elements of the sparse jacobian [input]
936       real v(lu_nonzero_v_r01_kpp)
938       integer lu_crow_v(nvar_r01_kpp + 1)
939       integer lu_diag_v(nvar_r01_kpp + 1)
940       integer lu_icol_v(lu_nonzero_v_r01_kpp)
942 !   local variables
943       integer k, kk, j, jj
944       real a, w(nvar_r01_kpp + 1)
946       ier = 0
947       do k=1,n
948         if ( v( lu_diag_v(k) ) .eq. 0. ) then
949             ier = k
950             return
951         end if
952         do kk = lu_crow_v(k), lu_crow_v(k+1)-1
953               w( lu_icol_v(kk) ) = v(kk)
954         end do
955         do kk = lu_crow_v(k), lu_diag_v(k)-1
956             j = lu_icol_v(kk)
957             a = -w(j) / v( lu_diag_v(j) )
958             w(j) = -a
959             do jj = lu_diag_v(j)+1, lu_crow_v(j+1)-1
960                w( lu_icol_v(jj) ) = w( lu_icol_v(jj) ) + a*v(jj)
961             end do
962          end do
963          do kk = lu_crow_v(k), lu_crow_v(k+1)-1
964             v(kk) = w( lu_icol_v(kk) )
965          end do
966       end do
967       return
968       end subroutine cbmz_v02r01_decomp            
971 !-----------------------------------------------------------------------------
972       subroutine cbmz_v02r01_solve( jvs, x )
974 !   does back-solve for mechanism-version-regime = cbmz_v02r01
976       implicit none
978 !   subr parameters
979 !     jvs = the non-zero elements of the l-u-decomposition
980 !           of the augmented jacobian [input]
981       real jvs(*)
982 !     x = the right-hand side of the linear equation set being solved [on input]
983 !     x = concentrations of variable species [on output]
984       real x(*)
987       x(16) = x(16)-jvs(50)*x(3)
988       x(17) = x(17)-jvs(56)*x(9)
989       x(18) = x(18)-jvs(64)*x(10)-jvs(65)*x(14)
990       x(19) = x(19)-jvs(72)*x(7)-jvs(73)*x(15)
991       x(20) = x(20)-jvs(79)*x(5)-jvs(80)*x(15)-jvs(81)*x(19)
992       x(21) = x(21)-jvs(87)*x(14)-jvs(88)*x(20)
993       x(22) = x(22)-jvs(95)*x(8)-jvs(96)*x(20)
994       x(23) = x(23)-jvs(103)*x(9)-jvs(104)*x(16)-jvs(105)*x(17)   &
995              -jvs(106)*x(18)-jvs(107)*x(19)-jvs(108)*x(20)-jvs(109)   &
996              *x(21)-jvs(110)*x(22)
997       x(24) = x(24)-jvs(117)*x(4)-jvs(118)*x(5)-jvs(119)*x(6)-jvs(120)   &
998              *x(10)-jvs(121)*x(11)-jvs(122)*x(12)-jvs(123)*x(14)   &
999              -jvs(124)*x(15)-jvs(125)*x(18)-jvs(126)*x(19)-jvs(127)   &
1000              *x(20)-jvs(128)*x(21)-jvs(129)*x(22)-jvs(130)*x(23)
1001       x(25) = x(25)-jvs(136)*x(3)-jvs(137)*x(4)-jvs(138)*x(5)-jvs(139)   &
1002              *x(6)-jvs(140)*x(7)-jvs(141)*x(10)-jvs(142)*x(11)   &
1003              -jvs(143)*x(12)-jvs(144)*x(13)-jvs(145)*x(14)-jvs(146)   &
1004              *x(15)-jvs(147)*x(17)-jvs(148)*x(18)-jvs(149)*x(19)   &
1005              -jvs(150)*x(20)-jvs(151)*x(21)-jvs(152)*x(22)-jvs(153)   &
1006              *x(23)-jvs(154)*x(24)
1007       x(26) = x(26)-jvs(159)*x(16)-jvs(160)*x(22)-jvs(161)*x(23)   &
1008              -jvs(162)*x(24)-jvs(163)*x(25)
1009       x(27) = x(27)-jvs(167)*x(13)-jvs(168)*x(16)-jvs(169)*x(19)   &
1010              -jvs(170)*x(21)-jvs(171)*x(22)-jvs(172)*x(23)-jvs(173)   &
1011              *x(24)-jvs(174)*x(25)-jvs(175)*x(26)
1012       x(28) = x(28)-jvs(178)*x(8)-jvs(179)*x(9)-jvs(180)*x(12)   &
1013              -jvs(181)*x(13)-jvs(182)*x(16)-jvs(183)*x(17)-jvs(184)   &
1014              *x(18)-jvs(185)*x(19)-jvs(186)*x(20)-jvs(187)*x(21)   &
1015              -jvs(188)*x(22)-jvs(189)*x(23)-jvs(190)*x(24)-jvs(191)   &
1016              *x(25)-jvs(192)*x(26)-jvs(193)*x(27)
1017       x(28) = x(28)/jvs(194)
1018       x(27) = (x(27)-jvs(177)*x(28))/(jvs(176))
1019       x(26) = (x(26)-jvs(165)*x(27)-jvs(166)*x(28))/(jvs(164))
1020       x(25) = (x(25)-jvs(156)*x(26)-jvs(157)*x(27)-jvs(158)*x(28))/   &
1021              (jvs(155))
1022       x(24) = (x(24)-jvs(132)*x(25)-jvs(133)*x(26)-jvs(134)*x(27)   &
1023              -jvs(135)*x(28))/(jvs(131))
1024       x(23) = (x(23)-jvs(112)*x(24)-jvs(113)*x(25)-jvs(114)*x(26)   &
1025              -jvs(115)*x(27)-jvs(116)*x(28))/(jvs(111))
1026       x(22) = (x(22)-jvs(98)*x(23)-jvs(99)*x(24)-jvs(100)*x(25)   &
1027              -jvs(101)*x(27)-jvs(102)*x(28))/(jvs(97))
1028       x(21) = (x(21)-jvs(90)*x(22)-jvs(91)*x(23)-jvs(92)*x(24)-jvs(93)   &
1029              *x(25)-jvs(94)*x(27))/(jvs(89))
1030       x(20) = (x(20)-jvs(83)*x(23)-jvs(84)*x(24)-jvs(85)*x(25)-jvs(86)   &
1031              *x(27))/(jvs(82))
1032       x(19) = (x(19)-jvs(75)*x(23)-jvs(76)*x(24)-jvs(77)*x(25)-jvs(78)   &
1033              *x(27))/(jvs(74))
1034       x(18) = (x(18)-jvs(67)*x(21)-jvs(68)*x(23)-jvs(69)*x(24)-jvs(70)   &
1035              *x(25)-jvs(71)*x(27))/(jvs(66))
1036       x(17) = (x(17)-jvs(58)*x(18)-jvs(59)*x(20)-jvs(60)*x(23)-jvs(61)   &
1037              *x(24)-jvs(62)*x(25)-jvs(63)*x(28))/(jvs(57))
1038       x(16) = (x(16)-jvs(52)*x(23)-jvs(53)*x(26)-jvs(54)*x(27)-jvs(55)   &
1039              *x(28))/(jvs(51))
1040       x(15) = (x(15)-jvs(47)*x(19)-jvs(48)*x(24)-jvs(49)*x(25))/   &
1041              (jvs(46))
1042       x(14) = (x(14)-jvs(43)*x(21)-jvs(44)*x(24)-jvs(45)*x(25))/   &
1043              (jvs(42))
1044       x(13) = (x(13)-jvs(38)*x(24)-jvs(39)*x(25)-jvs(40)*x(27)-jvs(41)   &
1045              *x(28))/(jvs(37))
1046       x(12) = (x(12)-jvs(34)*x(24)-jvs(35)*x(25)-jvs(36)*x(28))/   &
1047              (jvs(33))
1048       x(11) = (x(11)-jvs(29)*x(18)-jvs(30)*x(20)-jvs(31)*x(23)-jvs(32)   &
1049              *x(25))/(jvs(28))
1050       x(10) = (x(10)-jvs(26)*x(21)-jvs(27)*x(25))/(jvs(25))
1051       x(9) = (x(9)-jvs(23)*x(23)-jvs(24)*x(28))/(jvs(22))
1052       x(8) = (x(8)-jvs(20)*x(22)-jvs(21)*x(28))/(jvs(19))
1053       x(7) = (x(7)-jvs(17)*x(19)-jvs(18)*x(25))/(jvs(16))
1054       x(6) = (x(6)-jvs(14)*x(24)-jvs(15)*x(25))/(jvs(13))
1055       x(5) = (x(5)-jvs(12)*x(25))/(jvs(11))
1056       x(4) = (x(4)-jvs(10)*x(25))/(jvs(9))
1057       x(3) = (x(3)-jvs(8)*x(26))/(jvs(7))
1058       x(2) = (x(2)-jvs(5)*x(22)-jvs(6)*x(24))/(jvs(4))
1059       x(1) = (x(1)-jvs(2)*x(4)-jvs(3)*x(25))/(jvs(1))
1060       return
1061       end subroutine cbmz_v02r01_solve          
1064 !   cbmz_v02r02_torodas.f - created on 17-nov-2003 from previous
1065 !        cbmz_v02r02_torodas.f        cbmz_v02r02_mapconcs.f
1066 !        cbmz_v02r02_maprates.f       cbmz_v02r02_dydt.f
1067 !        cbmz_v02r02_jacob.f          cbmz_v02r02_decomp.f
1068 !        cbmz_v02r02_solve.f
1069 !   so now everything is in a single file
1070 !-----------------------------------------------------------------------
1072       subroutine cbmz_v02r02_torodas(   &
1073           ngas, taa, tzz,   &
1074           stot, atol, rtol, yposlimit, yneglimit,   &
1075           sfixedkpp, rconstkpp,   &
1076           hmin, hstart,   &
1077           info_rodas, iok, lunerr, idydt_sngldble )
1079 !   interfaces to rodas3 solver formechanism-version-regime =cbmz_v02r02
1081 !   *** do not include any pegasus common blocks ***
1083       use module_data_cbmz
1084       use module_cbmz_rodas3_solver, only:  rodas3_ff_x2
1085       implicit none
1087 !   subr parameters
1088       integer ngas, iok, lunerr, idydt_sngldble
1089       integer info_rodas(6)
1090       real taa, tzz, hmin, hstart
1091       real stot(ngas), atol(ngas), rtol(ngas)
1092       real yposlimit(ngas), yneglimit(ngas)
1093       real sfixedkpp(nfixed_kppmax), rconstkpp(nreact_kppmax)
1095 !   local variables
1097 !     external cbmz_v02r02_dydt
1098 !     external cbmz_v02r02_jacob
1099 !     external cbmz_v02r02_decomp
1100 !     external cbmz_v02r02_solve
1102       integer i
1104       real hmax
1106       integer lu_crow_v(nvar_r02_kpp + 1)
1107       save    lu_crow_v
1108       integer lu_diag_v(nvar_r02_kpp + 1)
1109       save    lu_diag_v
1110       integer lu_icol_v(lu_nonzero_v_r02_kpp)
1111       save    lu_icol_v
1113       data( lu_icol_v(i), i = 1, 252 ) /   &
1114         1,  5, 44,  2, 20, 30, 43,  3, 30, 33, 42, 43,   &
1115        45,  4, 43,  5, 44,  6, 44,  7, 42, 44,  8, 35,   &
1116        44,  9, 45, 47, 10, 44, 11, 47, 48, 12, 44, 12,   &
1117        13, 25, 44, 14, 23, 44, 47, 48, 15, 42, 44, 47,   &
1118        10, 12, 16, 44, 46, 17, 38, 42, 44, 18, 35, 42,   &
1119        44, 19, 42, 44, 46, 47, 20, 43, 44, 21, 30, 33,   &
1120        38, 43, 44,  4, 22, 43, 46, 47, 48, 10, 12, 23,   &
1121        44, 48, 20, 24, 27, 30, 31, 33, 34, 37, 43, 44,   &
1122        48, 13, 25, 28, 30, 33, 36, 40, 41, 43, 44, 46,   &
1123        48, 11, 23, 26, 31, 34, 37, 42, 44, 47, 48, 16,   &
1124        23, 27, 43, 44, 46, 48, 28, 39, 40, 42, 44, 28,   &
1125        29, 33, 39, 40, 41, 42, 43, 44, 46, 48, 30, 43,   &
1126        44, 48, 17, 20, 21, 27, 30, 31, 33, 36, 38, 39,   &
1127        42, 43, 44, 46, 48, 10, 12, 20, 23, 27, 28, 30,   &
1128        32, 33, 34, 39, 40, 41, 42, 43, 44, 46, 48, 33,   &
1129        43, 44, 48, 12, 27, 28, 30, 33, 34, 39, 40, 42,   &
1130        43, 44, 46, 48,  8, 18, 28, 30, 33, 35, 39, 40,   &
1131        41, 42, 43, 44, 46, 48, 30, 33, 36, 41, 42, 43,   &
1132        44, 46, 48,  6, 18, 20, 27, 28, 30, 33, 35, 36,   &
1133        37, 39, 40, 41, 42, 43, 44, 46, 48, 17, 29, 30,   &
1134        33, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48 /
1136       data( lu_icol_v(i), i = 253, 459 ) /   &
1137        29, 33, 39, 40, 41, 42, 43, 44, 46, 48, 13, 25,   &
1138        28, 30, 33, 36, 39, 40, 41, 42, 43, 44, 46, 48,   &
1139        14, 16, 23, 36, 40, 41, 42, 43, 44, 46, 47, 48,   &
1140         5,  6,  7, 10, 12, 15, 16, 17, 18, 20, 21, 23,   &
1141        24, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38,   &
1142        39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 20, 22,   &
1143        27, 30, 33, 42, 43, 44, 45, 46, 47, 48,  4,  5,   &
1144         6,  7,  8, 10, 12, 13, 15, 17, 18, 19, 20, 21,   &
1145        23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35,   &
1146        36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,   &
1147        48,  9, 27, 29, 30, 33, 34, 37, 39, 40, 41, 42,   &
1148        43, 44, 45, 46, 47, 48, 16, 19, 22, 32, 33, 34,   &
1149        35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,   &
1150        48,  9, 11, 14, 15, 16, 19, 22, 23, 26, 31, 32,   &
1151        33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,   &
1152        45, 46, 47, 48, 11, 22, 23, 26, 30, 31, 32, 33,   &
1153        34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,   &
1154        46, 47, 48 /
1156       data lu_crow_v /   &
1157         1,  4,  8, 14, 16, 18, 20, 23, 26, 29, 31, 34,   &
1158        36, 40, 45, 49, 54, 58, 62, 67, 70, 76, 82, 87,   &
1159        98,110,120,127,132,143,147,162,180,184,197,211,   &
1160       220,238,253,263,277,289,323,335,374,391,410,437,   &
1161       460 /
1163       data lu_diag_v /   &
1164         1,  4,  8, 14, 16, 18, 20, 23, 26, 29, 31, 34,   &
1165        37, 40, 45, 51, 54, 58, 62, 67, 70, 77, 84, 88,   &
1166        99,112,122,127,133,143,152,169,180,189,202,213,   &
1167       229,243,255,270,282,316,329,369,387,407,435,459,   &
1168       460 /
1172       info_rodas(1) = 1
1173       do i = 2, 6
1174           info_rodas(i) = 0
1175       end do
1176       hmax = tzz - taa
1178 !   do not integrate if hmax is less/equal to hmin
1179 !   because hmin is generally 0.1 s or less
1180       if (hmax .le. 1.001*hmin) then
1181           iok = 11
1182           return
1183       end if
1185       call rodas3_ff_x2(   &
1186            nvar_r02_kpp, taa, tzz, hmin, hmax, hstart,   &
1187            stot, atol, rtol, yposlimit, yneglimit,   &
1188            sfixedkpp, rconstkpp,   &
1189            lu_nonzero_v_r02_kpp, lu_crow_v, lu_diag_v, lu_icol_v,   &
1190            info_rodas, iok, lunerr,   &
1191            cbmz_v02r02_dydt,   &
1192            cbmz_v02r02_jacob,   &
1193            cbmz_v02r02_decomp,   &
1194            cbmz_v02r02_solve )
1196       return
1197       end subroutine cbmz_v02r02_torodas 
1200 !-----------------------------------------------------------------------------
1201       subroutine cbmz_v02r02_mapconcs( imap, nyy, yy, yyfixed, cbox )
1203 !   maps species concentrations (gaschemistry cbox array <--> kpp yy array)
1204 !   for mechanism-version-regime = cbmz_v02r02
1206       use module_data_cbmz
1207       implicit none
1209 !   subr parameters
1210 !     imap = mapping direction flag [input]
1211 !         0 = map cbox --> yy and yyfixed
1212 !         1 = map yy --> cbox
1213       integer imap
1214 !     nyy = number of kpp "variable" species [output]
1215       integer nyy
1216 !     yy = kpp species concentrations array [input/output]
1217       real yy(nvar_r02_kpp)
1218 !     yyfixed = kpp species concentrations array [input/output]
1219       real yyfixed(nfixed_kppmax)
1220 !     cbox = main gaschemistry species conc array [input/output]
1221       real cbox(ngas_z)
1223 !   local variables
1224       integer ih2so4_kpp
1225       parameter ( ih2so4_kpp = 1 )
1226       integer ihcooh_kpp
1227       parameter ( ihcooh_kpp = 2 )
1228       integer ircooh_kpp
1229       parameter ( ircooh_kpp = 3 )
1230       integer io1d_kpp
1231       parameter ( io1d_kpp = 4 )
1232       integer iso2_kpp
1233       parameter ( iso2_kpp = 5 )
1234       integer ic2h5oh_kpp
1235       parameter ( ic2h5oh_kpp = 6 )
1236       integer ih2o2_kpp
1237       parameter ( ih2o2_kpp = 7 )
1238       integer ic2h6_kpp
1239       parameter ( ic2h6_kpp = 8 )
1240       integer ipan_kpp
1241       parameter ( ipan_kpp = 9 )
1242       integer itol_kpp
1243       parameter ( itol_kpp = 10 )
1244       integer in2o5_kpp
1245       parameter ( in2o5_kpp = 11 )
1246       integer ixyl_kpp
1247       parameter ( ixyl_kpp = 12 )
1248       integer ipar_kpp
1249       parameter ( ipar_kpp = 13 )
1250       integer icro_kpp
1251       parameter ( icro_kpp = 14 )
1252       integer ihno4_kpp
1253       parameter ( ihno4_kpp = 15 )
1254       integer ito2_kpp
1255       parameter ( ito2_kpp = 16 )
1256       integer ich3ooh_kpp
1257       parameter ( ich3ooh_kpp = 17 )
1258       integer iethooh_kpp
1259       parameter ( iethooh_kpp = 18 )
1260       integer ihono_kpp
1261       parameter ( ihono_kpp = 19 )
1262       integer ieth_kpp
1263       parameter ( ieth_kpp = 20 )
1264       integer ich3oh_kpp
1265       parameter ( ich3oh_kpp = 21 )
1266       integer io3p_kpp
1267       parameter ( io3p_kpp = 22 )
1268       integer icres_kpp
1269       parameter ( icres_kpp = 23 )
1270       integer ico_kpp
1271       parameter ( ico_kpp = 24 )
1272       integer ixpar_kpp
1273       parameter ( ixpar_kpp = 25 )
1274       integer ihno3_kpp
1275       parameter ( ihno3_kpp = 26 )
1276       integer iopen_kpp
1277       parameter ( iopen_kpp = 27 )
1278       integer irooh_kpp
1279       parameter ( irooh_kpp = 28 )
1280       integer iaone_kpp
1281       parameter ( iaone_kpp = 29 )
1282       integer iolet_kpp
1283       parameter ( iolet_kpp = 30 )
1284       integer ihcho_kpp
1285       parameter ( ihcho_kpp = 31 )
1286       integer ixo2_kpp
1287       parameter ( ixo2_kpp = 32 )
1288       integer iolei_kpp
1289       parameter ( iolei_kpp = 33 )
1290       integer imgly_kpp
1291       parameter ( imgly_kpp = 34 )
1292       integer iethp_kpp
1293       parameter ( iethp_kpp = 35 )
1294       integer inap_kpp
1295       parameter ( inap_kpp = 36 )
1296       integer iald2_kpp
1297       parameter ( iald2_kpp = 37 )
1298       integer ich3o2_kpp
1299       parameter ( ich3o2_kpp = 38 )
1300       integer iano2_kpp
1301       parameter ( iano2_kpp = 39 )
1302       integer iro2_kpp
1303       parameter ( iro2_kpp = 40 )
1304       integer ionit_kpp
1305       parameter ( ionit_kpp = 41 )
1306       integer iho2_kpp
1307       parameter ( iho2_kpp = 42 )
1308       integer io3_kpp
1309       parameter ( io3_kpp = 43 )
1310       integer ioh_kpp
1311       parameter ( ioh_kpp = 44 )
1312       integer ic2o3_kpp
1313       parameter ( ic2o3_kpp = 45 )
1314       integer ino_kpp
1315       parameter ( ino_kpp = 46 )
1316       integer ino2_kpp
1317       parameter ( ino2_kpp = 47 )
1318       integer ino3_kpp
1319       parameter ( ino3_kpp = 48 )
1321 ! indexes declaration for fixed species
1323       integer ich4_kpp
1324       parameter ( ich4_kpp = 1 )
1325       integer ih2o_kpp
1326       parameter ( ih2o_kpp = 2 )
1327       integer ih2_kpp
1328       parameter ( ih2_kpp = 3 )
1329       integer io2_kpp
1330       parameter ( io2_kpp = 4 )
1331       integer in2_kpp
1332       parameter ( in2_kpp = 5 )
1335       nyy = nvar_r02_kpp
1337       if (imap .le. 0) goto 1000
1338       if (imap .ge. 1) goto 2000
1342 !   map cbox values into yyvarkpp and yyfixkpp
1344 1000  continue
1345       yy(ih2so4_kpp)    = cbox(ih2so4_z)
1346       yy(ihcooh_kpp)    = cbox(ihcooh_z)
1347       yy(ircooh_kpp)    = cbox(ircooh_z)
1348       yy(io1d_kpp)      = cbox(io1d_z)
1349       yy(iso2_kpp)      = cbox(iso2_z)
1350       yy(ic2h5oh_kpp)   = cbox(ic2h5oh_z)
1351       yy(ih2o2_kpp)     = cbox(ih2o2_z)
1352       yy(ic2h6_kpp)     = cbox(ic2h6_z)
1353       yy(ipan_kpp)      = cbox(ipan_z)
1354       yy(itol_kpp)      = cbox(itol_z)
1355       yy(in2o5_kpp)     = cbox(in2o5_z)
1356       yy(ixyl_kpp)      = cbox(ixyl_z)
1357       yy(ipar_kpp)      = cbox(ipar_z)
1358       yy(icro_kpp)      = cbox(icro_z)
1359       yy(ihno4_kpp)     = cbox(ihno4_z)
1360       yy(ito2_kpp)      = cbox(ito2_z)
1361       yy(ich3ooh_kpp)   = cbox(ich3ooh_z)
1362       yy(iethooh_kpp)   = cbox(iethooh_z)
1363       yy(ihono_kpp)     = cbox(ihono_z)
1364       yy(ieth_kpp)      = cbox(ieth_z)
1365       yy(ich3oh_kpp)    = cbox(ich3oh_z)
1366       yy(io3p_kpp)      = cbox(io3p_z)
1367       yy(icres_kpp)     = cbox(icres_z)
1368       yy(ico_kpp)       = cbox(ico_z)
1369       yy(ixpar_kpp)     = cbox(ixpar_z)
1370       yy(ihno3_kpp)     = cbox(ihno3_z)
1371       yy(iopen_kpp)     = cbox(iopen_z)
1372       yy(irooh_kpp)     = cbox(irooh_z)
1373       yy(iaone_kpp)     = cbox(iaone_z)
1374       yy(iolet_kpp)     = cbox(iolet_z)
1375       yy(ihcho_kpp)     = cbox(ihcho_z)
1376       yy(ixo2_kpp)      = cbox(ixo2_z)
1377       yy(iolei_kpp)     = cbox(iolei_z)
1378       yy(imgly_kpp)     = cbox(imgly_z)
1379       yy(iethp_kpp)     = cbox(iethp_z)
1380       yy(inap_kpp)      = cbox(inap_z)
1381       yy(iald2_kpp)     = cbox(iald2_z)
1382       yy(ich3o2_kpp)    = cbox(ich3o2_z)
1383       yy(iano2_kpp)     = cbox(iano2_z)
1384       yy(iro2_kpp)      = cbox(iro2_z)
1385       yy(ionit_kpp)     = cbox(ionit_z)
1386       yy(iho2_kpp)      = cbox(iho2_z)
1387       yy(io3_kpp)       = cbox(io3_z)
1388       yy(ioh_kpp)       = cbox(ioh_z)
1389       yy(ic2o3_kpp)     = cbox(ic2o3_z)
1390       yy(ino_kpp)       = cbox(ino_z)
1391       yy(ino2_kpp)      = cbox(ino2_z)
1392       yy(ino3_kpp)      = cbox(ino3_z)
1394       yyfixed(ich4_kpp) = cbox(ich4_z)
1395       yyfixed(ih2o_kpp) = cbox(ih2o_z)
1396       yyfixed(ih2_kpp) = cbox(ih2_z)
1397       yyfixed(io2_kpp) = cbox(io2_z)
1398       yyfixed(in2_kpp) = cbox(in2_z)
1401 !   map yyvarkpp values into cbox
1403 2000  continue
1404       cbox(ih2so4_z)    = yy(ih2so4_kpp)
1405       cbox(ihcooh_z)    = yy(ihcooh_kpp)
1406       cbox(ircooh_z)    = yy(ircooh_kpp)
1407       cbox(io1d_z)      = yy(io1d_kpp)
1408       cbox(iso2_z)      = yy(iso2_kpp)
1409       cbox(ic2h5oh_z)   = yy(ic2h5oh_kpp)
1410       cbox(ih2o2_z)     = yy(ih2o2_kpp)
1411       cbox(ic2h6_z)     = yy(ic2h6_kpp)
1412       cbox(ipan_z)      = yy(ipan_kpp)
1413       cbox(itol_z)      = yy(itol_kpp)
1414       cbox(in2o5_z)     = yy(in2o5_kpp)
1415       cbox(ixyl_z)      = yy(ixyl_kpp)
1416       cbox(ipar_z)      = yy(ipar_kpp)
1417       cbox(icro_z)      = yy(icro_kpp)
1418       cbox(ihno4_z)     = yy(ihno4_kpp)
1419       cbox(ito2_z)      = yy(ito2_kpp)
1420       cbox(ich3ooh_z)   = yy(ich3ooh_kpp)
1421       cbox(iethooh_z)   = yy(iethooh_kpp)
1422       cbox(ihono_z)     = yy(ihono_kpp)
1423       cbox(ieth_z)      = yy(ieth_kpp)
1424       cbox(ich3oh_z)    = yy(ich3oh_kpp)
1425       cbox(io3p_z)      = yy(io3p_kpp)
1426       cbox(icres_z)     = yy(icres_kpp)
1427       cbox(ico_z)       = yy(ico_kpp)
1428       cbox(ixpar_z)     = yy(ixpar_kpp)
1429       cbox(ihno3_z)     = yy(ihno3_kpp)
1430       cbox(iopen_z)     = yy(iopen_kpp)
1431       cbox(irooh_z)     = yy(irooh_kpp)
1432       cbox(iaone_z)     = yy(iaone_kpp)
1433       cbox(iolet_z)     = yy(iolet_kpp)
1434       cbox(ihcho_z)     = yy(ihcho_kpp)
1435       cbox(ixo2_z)      = yy(ixo2_kpp)
1436       cbox(iolei_z)     = yy(iolei_kpp)
1437       cbox(imgly_z)     = yy(imgly_kpp)
1438       cbox(iethp_z)     = yy(iethp_kpp)
1439       cbox(inap_z)      = yy(inap_kpp)
1440       cbox(iald2_z)     = yy(iald2_kpp)
1441       cbox(ich3o2_z)    = yy(ich3o2_kpp)
1442       cbox(iano2_z)     = yy(iano2_kpp)
1443       cbox(iro2_z)      = yy(iro2_kpp)
1444       cbox(ionit_z)     = yy(ionit_kpp)
1445       cbox(iho2_z)      = yy(iho2_kpp)
1446       cbox(io3_z)       = yy(io3_kpp)
1447       cbox(ioh_z)       = yy(ioh_kpp)
1448       cbox(ic2o3_z)     = yy(ic2o3_kpp)
1449       cbox(ino_z)       = yy(ino_kpp)
1450       cbox(ino2_z)      = yy(ino2_kpp)
1451       cbox(ino3_z)      = yy(ino3_kpp)
1453       return
1454       end subroutine cbmz_v02r02_mapconcs                                
1457 !-----------------------------------------------------------------------------
1458       subroutine cbmz_v02r02_maprates(   &
1459           rk_m1,   &
1460           rk_m2,   &
1461           rk_m3,   &
1462           rk_m4,   &
1463           rconst )
1465 !   maps reaction rate constants (host code array --> kpp rconst array)
1466 !   for mechanism-version-regime = cbmz_v02r02
1468       use module_data_cbmz
1469       implicit none
1471 !   subr parameters
1472 !     all are host-code reaction-rate-constant arrays [input]
1473       real rk_m1(*)
1474       real rk_m2(*)
1475       real rk_m3(*)
1476       real rk_m4(*)
1478       real rconst(nreact_kppmax)
1480 !   local variables
1481       integer i
1483       do i = 1, nreact_kppmax
1484           rconst(i) = 0.
1485       end do
1488       rconst(1) = (rk_m1(1))
1489       rconst(2) = (rk_m1(2))
1490       rconst(3) = (rk_m1(3))
1491       rconst(4) = (rk_m1(4))
1492       rconst(5) = (rk_m1(5))
1493       rconst(6) = (rk_m1(6))
1494       rconst(7) = (rk_m1(7))
1495       rconst(8) = (rk_m1(8))
1496       rconst(9) = (rk_m1(9))
1497       rconst(10) = (rk_m1(10))
1498       rconst(11) = (rk_m1(11))
1499       rconst(12) = (rk_m1(12))
1500       rconst(13) = (rk_m1(13))
1501       rconst(14) = (rk_m1(14))
1502       rconst(15) = (rk_m1(15))
1503       rconst(16) = (rk_m1(16))
1504       rconst(17) = (rk_m1(17))
1505       rconst(18) = (rk_m1(18))
1506       rconst(19) = (rk_m1(19))
1507       rconst(20) = (rk_m1(20))
1508       rconst(21) = (rk_m1(21))
1509       rconst(22) = (rk_m1(22))
1510       rconst(23) = (rk_m1(23))
1511       rconst(24) = (rk_m1(24))
1512       rconst(25) = (rk_m1(25))
1513       rconst(26) = (rk_m1(26))
1514       rconst(27) = (rk_m1(27))
1515       rconst(28) = (rk_m1(28))
1516       rconst(29) = (rk_m1(29))
1517       rconst(30) = (rk_m1(30))
1518       rconst(31) = (rk_m1(31))
1519       rconst(32) = (rk_m1(32))
1520       rconst(33) = (rk_m1(33))
1521       rconst(34) = (rk_m1(34))
1522       rconst(35) = (rk_m1(35))
1523       rconst(36) = (rk_m1(36))
1524       rconst(37) = (rk_m1(37))
1525       rconst(38) = (rk_m1(38))
1526       rconst(39) = (rk_m1(39))
1527       rconst(40) = (rk_m1(40))
1528       rconst(41) = (rk_m1(41))
1529       rconst(42) = (rk_m1(42))
1530       rconst(43) = (rk_m1(43))
1531       rconst(44) = (rk_m1(44))
1532       rconst(45) = (rk_m1(45))
1533       rconst(46) = (rk_m1(46))
1534       rconst(47) = (rk_m1(47))
1535       rconst(48) = (rk_m1(48))
1536       rconst(49) = (rk_m1(49))
1537       rconst(50) = (rk_m1(50))
1538       rconst(51) = (rk_m1(51))
1539       rconst(52) = (rk_m1(52))
1540       rconst(53) = (rk_m1(53))
1541       rconst(54) = (rk_m1(54))
1542       rconst(55) = (rk_m1(55))
1543       rconst(56) = (rk_m1(56))
1544       rconst(57) = (rk_m1(57))
1545       rconst(58) = (rk_m1(58))
1546       rconst(59) = (rk_m1(59))
1547       rconst(60) = (rk_m1(60))
1548       rconst(61) = (rk_m1(61))
1549       rconst(62) = (rk_m1(62))
1550       rconst(63) = (rk_m1(63))
1551       rconst(64) = (rk_m1(64))
1552       rconst(65) = (rk_m1(65))
1553       rconst(66) = (rk_m2(2))
1554       rconst(67) = (rk_m2(3))
1555       rconst(68) = (rk_m2(4))
1556       rconst(69) = (rk_m2(31))
1557       rconst(70) = (rk_m2(32))
1558       rconst(71) = (rk_m2(34))
1559       rconst(72) = (rk_m2(39))
1560       rconst(73) = (rk_m2(44))
1561       rconst(74) = (rk_m2(49))
1562       rconst(75) = (rk_m2(1))
1563       rconst(76) = (rk_m2(5))
1564       rconst(77) = (rk_m2(6))
1565       rconst(78) = (rk_m2(7))
1566       rconst(79) = (rk_m2(8))
1567       rconst(80) = (rk_m2(9))
1568       rconst(81) = (rk_m2(10))
1569       rconst(82) = (rk_m2(11))
1570       rconst(83) = (rk_m2(12))
1571       rconst(84) = (rk_m2(13))
1572       rconst(85) = (rk_m2(14))
1573       rconst(86) = (rk_m2(15))
1574       rconst(87) = (rk_m2(16))
1575       rconst(88) = (rk_m2(17))
1576       rconst(89) = (rk_m2(18))
1577       rconst(90) = (rk_m2(19))
1578       rconst(91) = (rk_m2(20))
1579       rconst(92) = (rk_m2(21))
1580       rconst(93) = (rk_m2(22))
1581       rconst(94) = (rk_m2(23))
1582       rconst(95) = (rk_m2(24))
1583       rconst(96) = (rk_m2(25))
1584       rconst(97) = (rk_m2(26))
1585       rconst(98) = (rk_m2(27))
1586       rconst(99) = (rk_m2(28))
1587       rconst(100) = (rk_m2(29))
1588       rconst(101) = (rk_m2(30))
1589       rconst(102) = (rk_m2(33))
1590       rconst(103) = (rk_m2(35))
1591       rconst(104) = (rk_m2(36))
1592       rconst(105) = (rk_m2(37))
1593       rconst(106) = (rk_m2(38))
1594       rconst(107) = (rk_m2(40))
1595       rconst(108) = (rk_m2(41))
1596       rconst(109) = (rk_m2(42))
1597       rconst(110) = (rk_m2(43))
1598       rconst(111) = (rk_m2(45))
1599       rconst(112) = (rk_m2(46))
1600       rconst(113) = (rk_m2(47))
1601       rconst(114) = (rk_m2(48))
1602       rconst(115) = (rk_m2(50))
1603       rconst(116) = (rk_m2(51))
1604       rconst(117) = (rk_m2(52))
1605       rconst(118) = (rk_m2(53))
1606       return
1607       end subroutine cbmz_v02r02_maprates 
1610 !-----------------------------------------------------------------------------
1611       subroutine cbmz_v02r02_dydt( nvardum, tdum, v, a_var, f, rconst )
1613 !   computes rates of change for mechanism-version-regime = cbmz_v02r02
1615       use module_data_cbmz
1616       implicit none
1618 !   subr parameters
1619 !     nvardum = number of variable species [input]
1620       integer nvardum
1621 !     tdum = time [input]
1622       real tdum
1623 !     v = concentrations of variable species [input]
1624       real v(nvar_r02_kpp)
1625 !     a_var = dydt for each species [output]
1626       real a_var(nvar_r02_kpp)
1627 !     f = concentrations of fixed species [input]
1628       real f(nfixed_kppmax)
1629 !     rconst = reaction rate constants [input]
1630       real rconst(nreact_r02_kpp)
1632 !   local variables
1633 !     a = rate for each reaction
1634       real a(nreact_r02_kpp)
1636 ! computation of equation rates
1637       a(1) = rconst(1)*v(47)
1638       a(2) = rconst(2)*v(48)
1639       a(3) = rconst(3)*v(19)
1640       a(4) = rconst(4)*v(26)
1641       a(5) = rconst(5)*v(15)
1642       a(6) = rconst(6)*v(11)
1643       a(7) = rconst(7)*v(43)
1644       a(8) = rconst(8)*v(43)
1645       a(9) = rconst(9)*v(7)
1646       a(10) = rconst(10)*v(4)*f(4)
1647       a(11) = rconst(11)*v(4)*f(5)
1648       a(12) = rconst(12)*v(4)*f(2)
1649       a(13) = rconst(13)*v(22)*f(4)
1650       a(14) = rconst(14)*v(22)*v(43)
1651       a(15) = rconst(15)*v(22)*v(47)
1652       a(16) = rconst(16)*v(22)*v(47)
1653       a(17) = rconst(17)*v(22)*v(46)
1654       a(18) = rconst(18)*v(43)*v(46)
1655       a(19) = rconst(19)*v(43)*v(47)
1656       a(20) = rconst(20)*v(43)*v(44)
1657       a(21) = rconst(21)*v(42)*v(43)
1658       a(22) = rconst(22)*v(44)*f(3)
1659       a(23) = rconst(23)*v(44)*v(46)
1660       a(24) = rconst(24)*v(44)*v(47)
1661       a(25) = rconst(25)*v(44)*v(48)
1662       a(26) = rconst(26)*v(19)*v(44)
1663       a(27) = rconst(27)*v(26)*v(44)
1664       a(28) = rconst(28)*v(15)*v(44)
1665       a(29) = rconst(29)*v(42)*v(44)
1666       a(30) = rconst(30)*v(7)*v(44)
1667       a(31) = rconst(31)*v(42)*v(42)
1668       a(32) = rconst(32)*v(42)*v(42)*f(2)
1669       a(33) = rconst(33)*v(42)*v(46)
1670       a(34) = rconst(34)*v(42)*v(47)
1671       a(35) = rconst(35)*v(42)*v(47)
1672       a(36) = rconst(36)*v(15)
1673       a(37) = rconst(37)*v(46)*v(48)
1674       a(38) = rconst(38)*v(47)*v(48)
1675       a(39) = rconst(39)*v(47)*v(48)
1676       a(40) = rconst(40)*v(48)*v(48)
1677       a(41) = rconst(41)*v(42)*v(48)
1678       a(42) = rconst(42)*v(11)*f(2)
1679       a(43) = rconst(43)*v(11)
1680       a(44) = rconst(44)*v(24)*v(44)
1681       a(45) = rconst(45)*v(5)*v(44)
1682       a(46) = rconst(46)*v(44)*f(1)
1683       a(47) = rconst(47)*v(8)*v(44)
1684       a(48) = rconst(48)*v(21)*v(44)
1685       a(49) = rconst(49)*v(31)
1686       a(50) = rconst(50)*v(31)
1687       a(51) = rconst(51)*v(31)*v(44)
1688       a(52) = rconst(52)*v(31)*v(48)
1689       a(53) = rconst(53)*v(17)
1690       a(54) = rconst(54)*v(18)
1691       a(55) = rconst(55)*v(17)*v(44)
1692       a(56) = rconst(56)*v(18)*v(44)
1693       a(57) = rconst(57)*v(38)*v(46)
1694       a(58) = rconst(58)*v(35)*v(46)
1695       a(59) = rconst(59)*v(38)*v(48)
1696       a(60) = rconst(60)*v(35)*v(48)
1697       a(61) = rconst(61)*v(38)*v(42)
1698       a(62) = rconst(62)*v(35)*v(42)
1699       a(63) = rconst(63)*v(38)
1700       a(64) = rconst(64)*v(35)
1701       a(65) = rconst(65)*v(6)*v(44)
1702       a(66) = rconst(66)*v(37)
1703       a(67) = rconst(67)*v(37)*v(44)
1704       a(68) = rconst(68)*v(37)*v(48)
1705       a(69) = rconst(69)*v(45)*v(47)
1706       a(70) = rconst(70)*v(9)
1707       a(71) = rconst(71)*v(45)*v(46)
1708       a(72) = rconst(72)*v(45)*v(48)
1709       a(73) = rconst(73)*v(42)*v(45)
1710       a(74) = rconst(74)*v(45)
1711       a(75) = rconst(75)*v(13)*v(44)
1712       a(76) = rconst(76)*v(29)
1713       a(77) = rconst(77)*v(29)*v(44)
1714       a(78) = rconst(78)*v(34)
1715       a(79) = rconst(79)*v(34)*v(44)
1716       a(80) = rconst(80)*v(34)*v(48)
1717       a(81) = rconst(81)*v(20)*v(43)
1718       a(82) = rconst(82)*v(20)*v(44)
1719       a(83) = rconst(83)*v(30)*v(43)
1720       a(84) = rconst(84)*v(33)*v(43)
1721       a(85) = rconst(85)*v(30)*v(44)
1722       a(86) = rconst(86)*v(33)*v(44)
1723       a(87) = rconst(87)*v(30)*v(48)
1724       a(88) = rconst(88)*v(33)*v(48)
1725       a(89) = rconst(89)*v(10)*v(44)
1726       a(90) = rconst(90)*v(12)*v(44)
1727       a(91) = rconst(91)*v(16)*v(46)
1728       a(92) = rconst(92)*v(23)*v(44)
1729       a(93) = rconst(93)*v(23)*v(48)
1730       a(94) = rconst(94)*v(14)*v(47)
1731       a(95) = rconst(95)*v(27)*v(44)
1732       a(96) = rconst(96)*v(27)
1733       a(97) = rconst(97)*v(27)*v(43)
1734       a(98) = rconst(98)*v(28)
1735       a(99) = rconst(99)*v(28)*v(44)
1736       a(100) = rconst(100)*v(41)*v(44)
1737       a(101) = rconst(101)*v(41)
1738       a(102) = rconst(102)*v(40)*v(46)
1739       a(103) = rconst(103)*v(39)*v(46)
1740       a(104) = rconst(104)*v(36)*v(46)
1741       a(105) = rconst(105)*v(32)*v(46)
1742       a(106) = rconst(106)*v(40)*v(48)
1743       a(107) = rconst(107)*v(39)*v(48)
1744       a(108) = rconst(108)*v(36)*v(48)
1745       a(109) = rconst(109)*v(32)*v(48)
1746       a(110) = rconst(110)*v(40)*v(42)
1747       a(111) = rconst(111)*v(39)*v(42)
1748       a(112) = rconst(112)*v(36)*v(42)
1749       a(113) = rconst(113)*v(32)*v(42)
1750       a(114) = rconst(114)*v(40)
1751       a(115) = rconst(115)*v(39)
1752       a(116) = rconst(116)*v(36)
1753       a(117) = rconst(117)*v(32)
1754       a(118) = rconst(118)*v(13)*v(25)
1756 ! aggregate function
1757       a_var(1) = a(45)
1758       a_var(2) = 0.52*a(81)+0.22*a(83)
1759       a_var(3) = 0.4*a(73)+0.09*a(83)+0.16*a(84)
1760       a_var(4) = a(8)-a(10)-a(11)-a(12)
1761       a_var(5) = -a(45)
1762       a_var(6) = -a(65)
1763       a_var(7) = -a(9)-a(30)+a(31)+a(32)
1764       a_var(8) = -a(47)+0.2*a(64)
1765       a_var(9) = a(69)-a(70)
1766       a_var(10) = -a(89)
1767       a_var(11) = -a(6)+a(39)-a(42)-a(43)
1768       a_var(12) = -a(90)
1769       a_var(13) = -a(75)+1.1*a(90)-a(118)
1770       a_var(14) = 0.4*a(92)+a(93)-a(94)
1771       a_var(15) = -a(5)-a(28)+a(34)-a(36)
1772       a_var(16) = 0.8*a(89)+0.45*a(90)-a(91)
1773       a_var(17) = -a(53)-a(55)+a(61)
1774       a_var(18) = -a(54)-a(56)+a(62)
1775       a_var(19) = -a(3)+a(23)-a(26)+a(35)
1776       a_var(20) = -a(81)-a(82)
1777       a_var(21) = -a(48)+0.34*a(63)+0.03*a(83)+0.04*a(84)
1778       a_var(22) = a(1)+0.89*a(2)+a(7)+a(10)+a(11)-a(13)-a(14)-a(15)   &
1779                  -a(16)-a(17)
1780       a_var(23) = 0.12*a(89)+0.05*a(90)-a(92)-a(93)
1781       a_var(24) = -a(44)+a(49)+a(50)+a(51)+a(52)+a(66)+a(78)+a(80)   &
1782                  +0.24*a(81)+0.31*a(83)+0.3*a(84)+2*a(95)+a(96)+0.69   &
1783                  *a(97)
1784       a_var(25) = 1.06*a(83)+2.26*a(84)+a(85)+2.23*a(86)+1.98*a(98)   &
1785                  +0.42*a(99)+1.98*a(101)+1.68*a(102)+a(104)+1.98   &
1786                  *a(106)+a(108)+1.25*a(114)+a(116)-a(118)
1787       a_var(26) = -a(4)+a(24)-a(27)+0.3*a(41)+2*a(42)+a(52)+a(68)   &
1788                  +a(80)+a(93)
1789       a_var(27) = 0.95*a(91)+0.3*a(92)-a(95)-a(96)-a(97)
1790       a_var(28) = -a(98)-a(99)+a(110)+a(111)
1791       a_var(29) = -a(76)-a(77)+0.07*a(84)+0.23*a(86)+0.74*a(98)+0.74   &
1792                  *a(101)+0.62*a(102)+0.74*a(106)+0.57*a(114)+0.15   &
1793                  *a(115)
1794       a_var(30) = -a(83)-a(85)-a(87)
1795       a_var(31) = a(48)-a(49)-a(50)-a(51)-a(52)+a(53)+0.3*a(55)+a(57)   &
1796                  +a(59)+0.66*a(63)+a(81)+1.56*a(82)+0.57*a(83)+a(85)   &
1797                  +a(95)+0.7*a(97)+a(103)+0.5*a(104)+a(107)+0.5*a(108)   &
1798                  +0.7*a(115)+0.5*a(116)
1799       a_var(32) = a(79)+a(82)+a(85)+a(86)+0.08*a(89)+0.5*a(90)+0.6   &
1800                  *a(92)+a(95)+0.03*a(97)+0.4*a(98)+0.4*a(101)+0.34   &
1801                  *a(102)-a(105)+0.4*a(106)-a(109)-a(113)+0.24*a(114)   &
1802                  -a(117)
1803       a_var(33) = -a(84)-a(86)-a(88)
1804       a_var(34) = -a(78)-a(79)-a(80)+0.04*a(83)+0.07*a(84)+0.8*a(90)   &
1805                  +0.2*a(97)+0.19*a(99)+0.15*a(115)
1806       a_var(35) = a(47)+0.5*a(56)-a(58)-a(60)-a(62)-a(64)+0.06*a(83)   &
1807                  +0.05*a(84)+0.1*a(98)+0.1*a(101)+0.08*a(102)+0.1   &
1808                  *a(106)+0.06*a(114)
1809       a_var(36) = a(87)+a(88)+a(100)-a(104)-a(108)-a(112)-a(116)
1810       a_var(37) = a(54)+0.5*a(56)+a(58)+a(60)+0.8*a(64)+a(65)-a(66)   &
1811                  -a(67)-a(68)+0.22*a(82)+0.47*a(83)+1.03*a(84)+a(85)   &
1812                  +1.77*a(86)+0.03*a(97)+0.3*a(98)+0.04*a(99)+0.3   &
1813                  *a(101)+0.25*a(102)+0.5*a(104)+0.3*a(106)+0.5*a(108)   &
1814                  +0.21*a(114)+0.5*a(116)
1815       a_var(38) = a(46)+0.7*a(55)-a(57)-a(59)-a(61)-a(63)+a(66)+a(71)   &
1816                  +a(72)+a(74)+a(76)+0.07*a(83)+0.1*a(84)
1817       a_var(39) = a(77)+0.11*a(84)-a(103)-a(107)-a(111)-a(115)
1818       a_var(40) = a(75)+0.03*a(83)+0.09*a(84)+0.77*a(99)-a(102)-a(106)   &
1819                  -a(110)-a(114)
1820       a_var(41) = 0.05*a(91)+a(94)-a(100)-a(101)+0.16*a(102)+0.5   &
1821                  *a(104)+0.5*a(108)+a(112)+0.5*a(116)
1822       a_var(42) = a(5)+a(20)-a(21)+a(22)+a(25)-a(29)+a(30)-2*a(31)-2   &
1823                  *a(32)-a(33)-a(34)-a(35)+a(36)-a(41)+a(44)+a(45)   &
1824                  +a(48)+2*a(49)+a(51)+a(52)+a(53)+a(54)+a(57)+a(58)   &
1825                  +a(59)+a(60)-a(61)-a(62)+0.32*a(63)+0.6*a(64)+a(65)   &
1826                  +a(66)-a(73)+a(78)+0.22*a(81)+a(82)+0.26*a(83)+0.22   &
1827                  *a(84)+a(85)+a(86)+0.2*a(89)+0.55*a(90)+0.95*a(91)   &
1828                  +0.6*a(92)+2*a(95)+a(96)+0.76*a(97)+0.9*a(98)+0.9   &
1829                  *a(101)+0.76*a(102)+0.5*a(104)+0.9*a(106)+0.5*a(108)   &
1830                  -a(110)-a(111)-a(112)-a(113)+0.54*a(114)
1831       a_var(43) = -a(7)-a(8)+a(13)-a(14)-a(18)-a(19)-a(20)-a(21)+0.4   &
1832                  *a(73)-a(81)-a(83)-a(84)-a(97)
1833       a_var(44) = a(3)+a(4)+2*a(9)+2*a(12)-a(20)+a(21)-a(22)-a(23)   &
1834                  -a(24)-a(25)-a(26)-a(27)-a(28)-a(29)-a(30)+a(33)+0.7   &
1835                  *a(41)-a(44)-a(45)-a(46)-a(47)-a(48)-a(51)+a(53)   &
1836                  +a(54)-0.7*a(55)-0.5*a(56)-a(65)-a(67)-a(75)-a(77)   &
1837                  -a(79)+0.12*a(81)-a(82)+0.33*a(83)+0.6*a(84)-a(85)   &
1838                  -a(86)-a(89)-a(90)-a(92)-a(95)+0.08*a(97)+a(98)-0.77   &
1839                  *a(99)-a(100)
1840       a_var(45) = a(67)+a(68)-a(69)+a(70)-a(71)-a(72)-a(73)-a(74)   &
1841                  +a(76)+a(78)+a(79)+a(80)+0.13*a(83)+0.19*a(84)+a(95)   &
1842                  +a(96)+0.62*a(97)+a(103)+a(107)+0.7*a(115)
1843       a_var(46) = a(1)+0.11*a(2)+a(3)+a(15)-a(17)-a(18)-a(23)-a(33)   &
1844                  -a(37)+a(38)-a(57)-a(58)-a(71)-a(91)-a(102)-a(103)   &
1845                  -a(104)-a(105)
1846       a_var(47) = -a(1)+0.89*a(2)+a(4)+a(5)+a(6)-a(15)-a(16)+a(17)   &
1847                  +a(18)-a(19)-a(24)+a(25)+a(26)+a(28)+a(33)-a(34)   &
1848                  -a(35)+a(36)+2*a(37)-a(39)+2*a(40)+0.7*a(41)+a(43)   &
1849                  +a(57)+a(58)+a(59)+a(60)-a(69)+a(70)+a(71)+a(72)+0.95   &
1850                  *a(91)-a(94)+a(101)+0.84*a(102)+a(103)+1.5*a(104)   &
1851                  +a(105)+a(106)+a(107)+1.5*a(108)+a(109)+0.5*a(116)
1852       a_var(48) = -a(2)+a(6)+a(16)+a(19)-a(25)+a(27)-a(37)-a(38)-a(39)   &
1853                  -2*a(40)-a(41)+a(43)-a(52)-a(59)-a(60)-a(68)-a(72)   &
1854                  -a(80)-a(87)-a(88)-a(93)-a(106)-a(107)-a(108)-a(109)
1855       return
1856       end subroutine cbmz_v02r02_dydt                                      
1859 !-----------------------------------------------------------------------------
1860       subroutine cbmz_v02r02_jacob( nvardum, tdum, v, jvs, f, rconst )
1862 !   computes jacobian for mechanism-version-regime = cbmz_v02r02
1864       use module_data_cbmz
1865       implicit none
1867 !   subr parameters
1868 !     nvardum = number of variable species [input]
1869       integer nvardum
1870 !     tdum = time [input]
1871       real tdum
1872 !     v = concentrations of variable species [input]
1873       real v(nvar_r02_kpp)
1874 !     jvs = non-zero jacobian elements [output]
1875       real jvs(lu_nonzero_v_r02_kpp)
1876 !     f = concentrations of fixed species [input]
1877       real f(nfixed_kppmax)
1878 !     rconst = reaction rate constants [input]
1879       real rconst(nreact_r02_kpp)
1881 !   local variables
1882 !     b(i,j) = d[reaction_rate(i)] / d[species_conc(j)]
1883       real b(nreact_r02_kpp,nvar_r02_kpp)
1885 ! computation of b(i,j) = da(i)/dv(j)
1886       b(1,47) = rconst(1)
1887       b(2,48) = rconst(2)
1888       b(3,19) = rconst(3)
1889       b(4,26) = rconst(4)
1890       b(5,15) = rconst(5)
1891       b(6,11) = rconst(6)
1892       b(7,43) = rconst(7)
1893       b(8,43) = rconst(8)
1894       b(9,7) = rconst(9)
1895       b(10,4) = rconst(10)*f(4)
1896       b(11,4) = rconst(11)*f(5)
1897       b(12,4) = rconst(12)*f(2)
1898       b(13,22) = rconst(13)*f(4)
1899       b(14,22) = rconst(14)*v(43)
1900       b(14,43) = rconst(14)*v(22)
1901       b(15,22) = rconst(15)*v(47)
1902       b(15,47) = rconst(15)*v(22)
1903       b(16,22) = rconst(16)*v(47)
1904       b(16,47) = rconst(16)*v(22)
1905       b(17,22) = rconst(17)*v(46)
1906       b(17,46) = rconst(17)*v(22)
1907       b(18,43) = rconst(18)*v(46)
1908       b(18,46) = rconst(18)*v(43)
1909       b(19,43) = rconst(19)*v(47)
1910       b(19,47) = rconst(19)*v(43)
1911       b(20,43) = rconst(20)*v(44)
1912       b(20,44) = rconst(20)*v(43)
1913       b(21,42) = rconst(21)*v(43)
1914       b(21,43) = rconst(21)*v(42)
1915       b(22,44) = rconst(22)*f(3)
1916       b(23,44) = rconst(23)*v(46)
1917       b(23,46) = rconst(23)*v(44)
1918       b(24,44) = rconst(24)*v(47)
1919       b(24,47) = rconst(24)*v(44)
1920       b(25,44) = rconst(25)*v(48)
1921       b(25,48) = rconst(25)*v(44)
1922       b(26,19) = rconst(26)*v(44)
1923       b(26,44) = rconst(26)*v(19)
1924       b(27,26) = rconst(27)*v(44)
1925       b(27,44) = rconst(27)*v(26)
1926       b(28,15) = rconst(28)*v(44)
1927       b(28,44) = rconst(28)*v(15)
1928       b(29,42) = rconst(29)*v(44)
1929       b(29,44) = rconst(29)*v(42)
1930       b(30,7) = rconst(30)*v(44)
1931       b(30,44) = rconst(30)*v(7)
1932       b(31,42) = rconst(31)*2*v(42)
1933       b(32,42) = rconst(32)*2*v(42)*f(2)
1934       b(33,42) = rconst(33)*v(46)
1935       b(33,46) = rconst(33)*v(42)
1936       b(34,42) = rconst(34)*v(47)
1937       b(34,47) = rconst(34)*v(42)
1938       b(35,42) = rconst(35)*v(47)
1939       b(35,47) = rconst(35)*v(42)
1940       b(36,15) = rconst(36)
1941       b(37,46) = rconst(37)*v(48)
1942       b(37,48) = rconst(37)*v(46)
1943       b(38,47) = rconst(38)*v(48)
1944       b(38,48) = rconst(38)*v(47)
1945       b(39,47) = rconst(39)*v(48)
1946       b(39,48) = rconst(39)*v(47)
1947       b(40,48) = rconst(40)*2*v(48)
1948       b(41,42) = rconst(41)*v(48)
1949       b(41,48) = rconst(41)*v(42)
1950       b(42,11) = rconst(42)*f(2)
1951       b(43,11) = rconst(43)
1952       b(44,24) = rconst(44)*v(44)
1953       b(44,44) = rconst(44)*v(24)
1954       b(45,5) = rconst(45)*v(44)
1955       b(45,44) = rconst(45)*v(5)
1956       b(46,44) = rconst(46)*f(1)
1957       b(47,8) = rconst(47)*v(44)
1958       b(47,44) = rconst(47)*v(8)
1959       b(48,21) = rconst(48)*v(44)
1960       b(48,44) = rconst(48)*v(21)
1961       b(49,31) = rconst(49)
1962       b(50,31) = rconst(50)
1963       b(51,31) = rconst(51)*v(44)
1964       b(51,44) = rconst(51)*v(31)
1965       b(52,31) = rconst(52)*v(48)
1966       b(52,48) = rconst(52)*v(31)
1967       b(53,17) = rconst(53)
1968       b(54,18) = rconst(54)
1969       b(55,17) = rconst(55)*v(44)
1970       b(55,44) = rconst(55)*v(17)
1971       b(56,18) = rconst(56)*v(44)
1972       b(56,44) = rconst(56)*v(18)
1973       b(57,38) = rconst(57)*v(46)
1974       b(57,46) = rconst(57)*v(38)
1975       b(58,35) = rconst(58)*v(46)
1976       b(58,46) = rconst(58)*v(35)
1977       b(59,38) = rconst(59)*v(48)
1978       b(59,48) = rconst(59)*v(38)
1979       b(60,35) = rconst(60)*v(48)
1980       b(60,48) = rconst(60)*v(35)
1981       b(61,38) = rconst(61)*v(42)
1982       b(61,42) = rconst(61)*v(38)
1983       b(62,35) = rconst(62)*v(42)
1984       b(62,42) = rconst(62)*v(35)
1985       b(63,38) = rconst(63)
1986       b(64,35) = rconst(64)
1987       b(65,6) = rconst(65)*v(44)
1988       b(65,44) = rconst(65)*v(6)
1989       b(66,37) = rconst(66)
1990       b(67,37) = rconst(67)*v(44)
1991       b(67,44) = rconst(67)*v(37)
1992       b(68,37) = rconst(68)*v(48)
1993       b(68,48) = rconst(68)*v(37)
1994       b(69,45) = rconst(69)*v(47)
1995       b(69,47) = rconst(69)*v(45)
1996       b(70,9) = rconst(70)
1997       b(71,45) = rconst(71)*v(46)
1998       b(71,46) = rconst(71)*v(45)
1999       b(72,45) = rconst(72)*v(48)
2000       b(72,48) = rconst(72)*v(45)
2001       b(73,42) = rconst(73)*v(45)
2002       b(73,45) = rconst(73)*v(42)
2003       b(74,45) = rconst(74)
2004       b(75,13) = rconst(75)*v(44)
2005       b(75,44) = rconst(75)*v(13)
2006       b(76,29) = rconst(76)
2007       b(77,29) = rconst(77)*v(44)
2008       b(77,44) = rconst(77)*v(29)
2009       b(78,34) = rconst(78)
2010       b(79,34) = rconst(79)*v(44)
2011       b(79,44) = rconst(79)*v(34)
2012       b(80,34) = rconst(80)*v(48)
2013       b(80,48) = rconst(80)*v(34)
2014       b(81,20) = rconst(81)*v(43)
2015       b(81,43) = rconst(81)*v(20)
2016       b(82,20) = rconst(82)*v(44)
2017       b(82,44) = rconst(82)*v(20)
2018       b(83,30) = rconst(83)*v(43)
2019       b(83,43) = rconst(83)*v(30)
2020       b(84,33) = rconst(84)*v(43)
2021       b(84,43) = rconst(84)*v(33)
2022       b(85,30) = rconst(85)*v(44)
2023       b(85,44) = rconst(85)*v(30)
2024       b(86,33) = rconst(86)*v(44)
2025       b(86,44) = rconst(86)*v(33)
2026       b(87,30) = rconst(87)*v(48)
2027       b(87,48) = rconst(87)*v(30)
2028       b(88,33) = rconst(88)*v(48)
2029       b(88,48) = rconst(88)*v(33)
2030       b(89,10) = rconst(89)*v(44)
2031       b(89,44) = rconst(89)*v(10)
2032       b(90,12) = rconst(90)*v(44)
2033       b(90,44) = rconst(90)*v(12)
2034       b(91,16) = rconst(91)*v(46)
2035       b(91,46) = rconst(91)*v(16)
2036       b(92,23) = rconst(92)*v(44)
2037       b(92,44) = rconst(92)*v(23)
2038       b(93,23) = rconst(93)*v(48)
2039       b(93,48) = rconst(93)*v(23)
2040       b(94,14) = rconst(94)*v(47)
2041       b(94,47) = rconst(94)*v(14)
2042       b(95,27) = rconst(95)*v(44)
2043       b(95,44) = rconst(95)*v(27)
2044       b(96,27) = rconst(96)
2045       b(97,27) = rconst(97)*v(43)
2046       b(97,43) = rconst(97)*v(27)
2047       b(98,28) = rconst(98)
2048       b(99,28) = rconst(99)*v(44)
2049       b(99,44) = rconst(99)*v(28)
2050       b(100,41) = rconst(100)*v(44)
2051       b(100,44) = rconst(100)*v(41)
2052       b(101,41) = rconst(101)
2053       b(102,40) = rconst(102)*v(46)
2054       b(102,46) = rconst(102)*v(40)
2055       b(103,39) = rconst(103)*v(46)
2056       b(103,46) = rconst(103)*v(39)
2057       b(104,36) = rconst(104)*v(46)
2058       b(104,46) = rconst(104)*v(36)
2059       b(105,32) = rconst(105)*v(46)
2060       b(105,46) = rconst(105)*v(32)
2061       b(106,40) = rconst(106)*v(48)
2062       b(106,48) = rconst(106)*v(40)
2063       b(107,39) = rconst(107)*v(48)
2064       b(107,48) = rconst(107)*v(39)
2065       b(108,36) = rconst(108)*v(48)
2066       b(108,48) = rconst(108)*v(36)
2067       b(109,32) = rconst(109)*v(48)
2068       b(109,48) = rconst(109)*v(32)
2069       b(110,40) = rconst(110)*v(42)
2070       b(110,42) = rconst(110)*v(40)
2071       b(111,39) = rconst(111)*v(42)
2072       b(111,42) = rconst(111)*v(39)
2073       b(112,36) = rconst(112)*v(42)
2074       b(112,42) = rconst(112)*v(36)
2075       b(113,32) = rconst(113)*v(42)
2076       b(113,42) = rconst(113)*v(32)
2077       b(114,40) = rconst(114)
2078       b(115,39) = rconst(115)
2079       b(116,36) = rconst(116)
2080       b(117,32) = rconst(117)
2081       b(118,13) = rconst(118)*v(25)
2082       b(118,25) = rconst(118)*v(13)
2084 ! construct the jacobian terms from b's
2085       jvs(1) = 0
2086       jvs(2) = b(45,5)
2087       jvs(3) = b(45,44)
2088       jvs(4) = 0
2089       jvs(5) = 0.52*b(81,20)
2090       jvs(6) = 0.22*b(83,30)
2091       jvs(7) = 0.52*b(81,43)+0.22*b(83,43)
2092       jvs(8) = 0
2093       jvs(9) = 0.09*b(83,30)
2094       jvs(10) = 0.16*b(84,33)
2095       jvs(11) = 0.4*b(73,42)
2096       jvs(12) = 0.09*b(83,43)+0.16*b(84,43)
2097       jvs(13) = 0.4*b(73,45)
2098       jvs(14) = -b(10,4)-b(11,4)-b(12,4)
2099       jvs(15) = b(8,43)
2100       jvs(16) = -b(45,5)
2101       jvs(17) = -b(45,44)
2102       jvs(18) = -b(65,6)
2103       jvs(19) = -b(65,44)
2104       jvs(20) = -b(9,7)-b(30,7)
2105       jvs(21) = b(31,42)+b(32,42)
2106       jvs(22) = -b(30,44)
2107       jvs(23) = -b(47,8)
2108       jvs(24) = 0.2*b(64,35)
2109       jvs(25) = -b(47,44)
2110       jvs(26) = -b(70,9)
2111       jvs(27) = b(69,45)
2112       jvs(28) = b(69,47)
2113       jvs(29) = -b(89,10)
2114       jvs(30) = -b(89,44)
2115       jvs(31) = -b(6,11)-b(42,11)-b(43,11)
2116       jvs(32) = b(39,47)
2117       jvs(33) = b(39,48)
2118       jvs(34) = -b(90,12)
2119       jvs(35) = -b(90,44)
2120       jvs(36) = 1.1*b(90,12)
2121       jvs(37) = -b(75,13)-b(118,13)
2122       jvs(38) = -b(118,25)
2123       jvs(39) = -b(75,44)+1.1*b(90,44)
2124       jvs(40) = -b(94,14)
2125       jvs(41) = 0.4*b(92,23)+b(93,23)
2126       jvs(42) = 0.4*b(92,44)
2127       jvs(43) = -b(94,47)
2128       jvs(44) = b(93,48)
2129       jvs(45) = -b(5,15)-b(28,15)-b(36,15)
2130       jvs(46) = b(34,42)
2131       jvs(47) = -b(28,44)
2132       jvs(48) = b(34,47)
2133       jvs(49) = 0.8*b(89,10)
2134       jvs(50) = 0.45*b(90,12)
2135       jvs(51) = -b(91,16)
2136       jvs(52) = 0.8*b(89,44)+0.45*b(90,44)
2137       jvs(53) = -b(91,46)
2138       jvs(54) = -b(53,17)-b(55,17)
2139       jvs(55) = b(61,38)
2140       jvs(56) = b(61,42)
2141       jvs(57) = -b(55,44)
2142       jvs(58) = -b(54,18)-b(56,18)
2143       jvs(59) = b(62,35)
2144       jvs(60) = b(62,42)
2145       jvs(61) = -b(56,44)
2146       jvs(62) = -b(3,19)-b(26,19)
2147       jvs(63) = b(35,42)
2148       jvs(64) = b(23,44)-b(26,44)
2149       jvs(65) = b(23,46)
2150       jvs(66) = b(35,47)
2151       jvs(67) = -b(81,20)-b(82,20)
2152       jvs(68) = -b(81,43)
2153       jvs(69) = -b(82,44)
2154       jvs(70) = -b(48,21)
2155       jvs(71) = 0.03*b(83,30)
2156       jvs(72) = 0.04*b(84,33)
2157       jvs(73) = 0.34*b(63,38)
2158       jvs(74) = 0.03*b(83,43)+0.04*b(84,43)
2159       jvs(75) = -b(48,44)
2160       jvs(76) = b(10,4)+b(11,4)
2161       jvs(77) = -b(13,22)-b(14,22)-b(15,22)-b(16,22)-b(17,22)
2162       jvs(78) = b(7,43)-b(14,43)
2163       jvs(79) = -b(17,46)
2164       jvs(80) = b(1,47)-b(15,47)-b(16,47)
2165       jvs(81) = 0.89*b(2,48)
2166       jvs(82) = 0.12*b(89,10)
2167       jvs(83) = 0.05*b(90,12)
2168       jvs(84) = -b(92,23)-b(93,23)
2169       jvs(85) = 0.12*b(89,44)+0.05*b(90,44)-b(92,44)
2170       jvs(86) = -b(93,48)
2171       jvs(87) = 0.24*b(81,20)
2172       jvs(88) = -b(44,24)
2173       jvs(89) = 2*b(95,27)+b(96,27)+0.69*b(97,27)
2174       jvs(90) = 0.31*b(83,30)
2175       jvs(91) = b(49,31)+b(50,31)+b(51,31)+b(52,31)
2176       jvs(92) = 0.3*b(84,33)
2177       jvs(93) = b(78,34)+b(80,34)
2178       jvs(94) = b(66,37)
2179       jvs(95) = 0.24*b(81,43)+0.31*b(83,43)+0.3*b(84,43)+0.69*b(97,43)
2180       jvs(96) = -b(44,44)+b(51,44)+2*b(95,44)
2181       jvs(97) = b(52,48)+b(80,48)
2182       jvs(98) = -b(118,13)
2183       jvs(99) = -b(118,25)
2184       jvs(100) = 1.98*b(98,28)+0.42*b(99,28)
2185       jvs(101) = 1.06*b(83,30)+b(85,30)
2186       jvs(102) = 2.26*b(84,33)+2.23*b(86,33)
2187       jvs(103) = b(104,36)+b(108,36)+b(116,36)
2188       jvs(104) = 1.68*b(102,40)+1.98*b(106,40)+1.25*b(114,40)
2189       jvs(105) = 1.98*b(101,41)
2190       jvs(106) = 1.06*b(83,43)+2.26*b(84,43)
2191       jvs(107) = b(85,44)+2.23*b(86,44)+0.42*b(99,44)
2192       jvs(108) = 1.68*b(102,46)+b(104,46)
2193       jvs(109) = 1.98*b(106,48)+b(108,48)
2194       jvs(110) = 2*b(42,11)
2195       jvs(111) = b(93,23)
2196       jvs(112) = -b(4,26)-b(27,26)
2197       jvs(113) = b(52,31)
2198       jvs(114) = b(80,34)
2199       jvs(115) = b(68,37)
2200       jvs(116) = 0.3*b(41,42)
2201       jvs(117) = b(24,44)-b(27,44)
2202       jvs(118) = b(24,47)
2203       jvs(119) = 0.3*b(41,48)+b(52,48)+b(68,48)+b(80,48)+b(93,48)
2204       jvs(120) = 0.95*b(91,16)
2205       jvs(121) = 0.3*b(92,23)
2206       jvs(122) = -b(95,27)-b(96,27)-b(97,27)
2207       jvs(123) = -b(97,43)
2208       jvs(124) = 0.3*b(92,44)-b(95,44)
2209       jvs(125) = 0.95*b(91,46)
2210       jvs(126) = 0
2211       jvs(127) = -b(98,28)-b(99,28)
2212       jvs(128) = b(111,39)
2213       jvs(129) = b(110,40)
2214       jvs(130) = b(110,42)+b(111,42)
2215       jvs(131) = -b(99,44)
2216       jvs(132) = 0.74*b(98,28)
2217       jvs(133) = -b(76,29)-b(77,29)
2218       jvs(134) = 0.07*b(84,33)+0.23*b(86,33)
2219       jvs(135) = 0.15*b(115,39)
2220       jvs(136) = 0.62*b(102,40)+0.74*b(106,40)+0.57*b(114,40)
2221       jvs(137) = 0.74*b(101,41)
2222       jvs(138) = 0
2223       jvs(139) = 0.07*b(84,43)
2224       jvs(140) = -b(77,44)+0.23*b(86,44)
2225       jvs(141) = 0.62*b(102,46)
2226       jvs(142) = 0.74*b(106,48)
2227       jvs(143) = -b(83,30)-b(85,30)-b(87,30)
2228       jvs(144) = -b(83,43)
2229       jvs(145) = -b(85,44)
2230       jvs(146) = -b(87,48)
2231       jvs(147) = b(53,17)+0.3*b(55,17)
2232       jvs(148) = b(81,20)+1.56*b(82,20)
2233       jvs(149) = b(48,21)
2234       jvs(150) = b(95,27)+0.7*b(97,27)
2235       jvs(151) = 0.57*b(83,30)+b(85,30)
2236       jvs(152) = -b(49,31)-b(50,31)-b(51,31)-b(52,31)
2237       jvs(153) = 0
2238       jvs(154) = 0.5*b(104,36)+0.5*b(108,36)+0.5*b(116,36)
2239       jvs(155) = b(57,38)+b(59,38)+0.66*b(63,38)
2240       jvs(156) = b(103,39)+b(107,39)+0.7*b(115,39)
2241       jvs(157) = 0
2242       jvs(158) = b(81,43)+0.57*b(83,43)+0.7*b(97,43)
2243       jvs(159) = b(48,44)-b(51,44)+0.3*b(55,44)+1.56*b(82,44)+b(85,44)   &
2244                 +b(95,44)
2245       jvs(160) = b(57,46)+b(103,46)+0.5*b(104,46)
2246       jvs(161) = -b(52,48)+b(59,48)+b(107,48)+0.5*b(108,48)
2247       jvs(162) = 0.08*b(89,10)
2248       jvs(163) = 0.5*b(90,12)
2249       jvs(164) = b(82,20)
2250       jvs(165) = 0.6*b(92,23)
2251       jvs(166) = b(95,27)+0.03*b(97,27)
2252       jvs(167) = 0.4*b(98,28)
2253       jvs(168) = b(85,30)
2254       jvs(169) = -b(105,32)-b(109,32)-b(113,32)-b(117,32)
2255       jvs(170) = b(86,33)
2256       jvs(171) = b(79,34)
2257       jvs(172) = 0
2258       jvs(173) = 0.34*b(102,40)+0.4*b(106,40)+0.24*b(114,40)
2259       jvs(174) = 0.4*b(101,41)
2260       jvs(175) = -b(113,42)
2261       jvs(176) = 0.03*b(97,43)
2262       jvs(177) = b(79,44)+b(82,44)+b(85,44)+b(86,44)+0.08*b(89,44)+0.5   &
2263                 *b(90,44)+0.6*b(92,44)+b(95,44)
2264       jvs(178) = 0.34*b(102,46)-b(105,46)
2265       jvs(179) = 0.4*b(106,48)-b(109,48)
2266       jvs(180) = -b(84,33)-b(86,33)-b(88,33)
2267       jvs(181) = -b(84,43)
2268       jvs(182) = -b(86,44)
2269       jvs(183) = -b(88,48)
2270       jvs(184) = 0.8*b(90,12)
2271       jvs(185) = 0.2*b(97,27)
2272       jvs(186) = 0.19*b(99,28)
2273       jvs(187) = 0.04*b(83,30)
2274       jvs(188) = 0.07*b(84,33)
2275       jvs(189) = -b(78,34)-b(79,34)-b(80,34)
2276       jvs(190) = 0.15*b(115,39)
2277       jvs(191) = 0
2278       jvs(192) = 0
2279       jvs(193) = 0.04*b(83,43)+0.07*b(84,43)+0.2*b(97,43)
2280       jvs(194) = -b(79,44)+0.8*b(90,44)+0.19*b(99,44)
2281       jvs(195) = 0
2282       jvs(196) = -b(80,48)
2283       jvs(197) = b(47,8)
2284       jvs(198) = 0.5*b(56,18)
2285       jvs(199) = 0.1*b(98,28)
2286       jvs(200) = 0.06*b(83,30)
2287       jvs(201) = 0.05*b(84,33)
2288       jvs(202) = -b(58,35)-b(60,35)-b(62,35)-b(64,35)
2289       jvs(203) = 0
2290       jvs(204) = 0.08*b(102,40)+0.1*b(106,40)+0.06*b(114,40)
2291       jvs(205) = 0.1*b(101,41)
2292       jvs(206) = -b(62,42)
2293       jvs(207) = 0.06*b(83,43)+0.05*b(84,43)
2294       jvs(208) = b(47,44)+0.5*b(56,44)
2295       jvs(209) = -b(58,46)+0.08*b(102,46)
2296       jvs(210) = -b(60,48)+0.1*b(106,48)
2297       jvs(211) = b(87,30)
2298       jvs(212) = b(88,33)
2299       jvs(213) = -b(104,36)-b(108,36)-b(112,36)-b(116,36)
2300       jvs(214) = b(100,41)
2301       jvs(215) = -b(112,42)
2302       jvs(216) = 0
2303       jvs(217) = b(100,44)
2304       jvs(218) = -b(104,46)
2305       jvs(219) = b(87,48)+b(88,48)-b(108,48)
2306       jvs(220) = b(65,6)
2307       jvs(221) = b(54,18)+0.5*b(56,18)
2308       jvs(222) = 0.22*b(82,20)
2309       jvs(223) = 0.03*b(97,27)
2310       jvs(224) = 0.3*b(98,28)+0.04*b(99,28)
2311       jvs(225) = 0.47*b(83,30)+b(85,30)
2312       jvs(226) = 1.03*b(84,33)+1.77*b(86,33)
2313       jvs(227) = b(58,35)+b(60,35)+0.8*b(64,35)
2314       jvs(228) = 0.5*b(104,36)+0.5*b(108,36)+0.5*b(116,36)
2315       jvs(229) = -b(66,37)-b(67,37)-b(68,37)
2316       jvs(230) = 0
2317       jvs(231) = 0.25*b(102,40)+0.3*b(106,40)+0.21*b(114,40)
2318       jvs(232) = 0.3*b(101,41)
2319       jvs(233) = 0
2320       jvs(234) = 0.47*b(83,43)+1.03*b(84,43)+0.03*b(97,43)
2321       jvs(235) = 0.5*b(56,44)+b(65,44)-b(67,44)+0.22*b(82,44)+b(85,44)   &
2322                 +1.77*b(86,44)+0.04*b(99,44)
2323       jvs(236) = b(58,46)+0.25*b(102,46)+0.5*b(104,46)
2324       jvs(237) = b(60,48)-b(68,48)+0.3*b(106,48)+0.5*b(108,48)
2325       jvs(238) = 0.7*b(55,17)
2326       jvs(239) = b(76,29)
2327       jvs(240) = 0.07*b(83,30)
2328       jvs(241) = 0.1*b(84,33)
2329       jvs(242) = b(66,37)
2330       jvs(243) = -b(57,38)-b(59,38)-b(61,38)-b(63,38)
2331       jvs(244) = 0
2332       jvs(245) = 0
2333       jvs(246) = 0
2334       jvs(247) = -b(61,42)
2335       jvs(248) = 0.07*b(83,43)+0.1*b(84,43)
2336       jvs(249) = b(46,44)+0.7*b(55,44)
2337       jvs(250) = b(71,45)+b(72,45)+b(74,45)
2338       jvs(251) = -b(57,46)+b(71,46)
2339       jvs(252) = -b(59,48)+b(72,48)
2340       jvs(253) = b(77,29)
2341       jvs(254) = 0.11*b(84,33)
2342       jvs(255) = -b(103,39)-b(107,39)-b(111,39)-b(115,39)
2343       jvs(256) = 0
2344       jvs(257) = 0
2345       jvs(258) = -b(111,42)
2346       jvs(259) = 0.11*b(84,43)
2347       jvs(260) = b(77,44)
2348       jvs(261) = -b(103,46)
2349       jvs(262) = -b(107,48)
2350       jvs(263) = b(75,13)
2351       jvs(264) = 0
2352       jvs(265) = 0.77*b(99,28)
2353       jvs(266) = 0.03*b(83,30)
2354       jvs(267) = 0.09*b(84,33)
2355       jvs(268) = 0
2356       jvs(269) = 0
2357       jvs(270) = -b(102,40)-b(106,40)-b(110,40)-b(114,40)
2358       jvs(271) = 0
2359       jvs(272) = -b(110,42)
2360       jvs(273) = 0.03*b(83,43)+0.09*b(84,43)
2361       jvs(274) = b(75,44)+0.77*b(99,44)
2362       jvs(275) = -b(102,46)
2363       jvs(276) = -b(106,48)
2364       jvs(277) = b(94,14)
2365       jvs(278) = 0.05*b(91,16)
2366       jvs(279) = 0
2367       jvs(280) = 0.5*b(104,36)+0.5*b(108,36)+b(112,36)+0.5*b(116,36)
2368       jvs(281) = 0.16*b(102,40)
2369       jvs(282) = -b(100,41)-b(101,41)
2370       jvs(283) = b(112,42)
2371       jvs(284) = 0
2372       jvs(285) = -b(100,44)
2373       jvs(286) = 0.05*b(91,46)+0.16*b(102,46)+0.5*b(104,46)
2374       jvs(287) = b(94,47)
2375       jvs(288) = 0.5*b(108,48)
2376       jvs(289) = b(45,5)
2377       jvs(290) = b(65,6)
2378       jvs(291) = b(30,7)
2379       jvs(292) = 0.2*b(89,10)
2380       jvs(293) = 0.55*b(90,12)
2381       jvs(294) = b(5,15)+b(36,15)
2382       jvs(295) = 0.95*b(91,16)
2383       jvs(296) = b(53,17)
2384       jvs(297) = b(54,18)
2385       jvs(298) = 0.22*b(81,20)+b(82,20)
2386       jvs(299) = b(48,21)
2387       jvs(300) = 0.6*b(92,23)
2388       jvs(301) = b(44,24)
2389       jvs(302) = 2*b(95,27)+b(96,27)+0.76*b(97,27)
2390       jvs(303) = 0.9*b(98,28)
2391       jvs(304) = 0.26*b(83,30)+b(85,30)
2392       jvs(305) = 2*b(49,31)+b(51,31)+b(52,31)
2393       jvs(306) = -b(113,32)
2394       jvs(307) = 0.22*b(84,33)+b(86,33)
2395       jvs(308) = b(78,34)
2396       jvs(309) = b(58,35)+b(60,35)-b(62,35)+0.6*b(64,35)
2397       jvs(310) = 0.5*b(104,36)+0.5*b(108,36)-b(112,36)
2398       jvs(311) = b(66,37)
2399       jvs(312) = b(57,38)+b(59,38)-b(61,38)+0.32*b(63,38)
2400       jvs(313) = -b(111,39)
2401       jvs(314) = 0.76*b(102,40)+0.9*b(106,40)-b(110,40)+0.54*b(114,40)
2402       jvs(315) = 0.9*b(101,41)
2403       jvs(316) = -b(21,42)-b(29,42)-2*b(31,42)-2*b(32,42)-b(33,42)   &
2404                 -b(34,42)-b(35,42)-b(41,42)-b(61,42)-b(62,42)-b(73,42)   &
2405                 -b(110,42)-b(111,42)-b(112,42)-b(113,42)
2406       jvs(317) = b(20,43)-b(21,43)+0.22*b(81,43)+0.26*b(83,43)+0.22   &
2407                 *b(84,43)+0.76*b(97,43)
2408       jvs(318) = b(20,44)+b(22,44)+b(25,44)-b(29,44)+b(30,44)+b(44,44)   &
2409                 +b(45,44)+b(48,44)+b(51,44)+b(65,44)+b(82,44)+b(85,44)   &
2410                 +b(86,44)+0.2*b(89,44)+0.55*b(90,44)+0.6*b(92,44)+2   &
2411                 *b(95,44)
2412       jvs(319) = -b(73,45)
2413       jvs(320) = -b(33,46)+b(57,46)+b(58,46)+0.95*b(91,46)+0.76   &
2414                 *b(102,46)+0.5*b(104,46)
2415       jvs(321) = -b(34,47)-b(35,47)
2416       jvs(322) = b(25,48)-b(41,48)+b(52,48)+b(59,48)+b(60,48)+0.9   &
2417                 *b(106,48)+0.5*b(108,48)
2418       jvs(323) = -b(81,20)
2419       jvs(324) = b(13,22)-b(14,22)
2420       jvs(325) = -b(97,27)
2421       jvs(326) = -b(83,30)
2422       jvs(327) = -b(84,33)
2423       jvs(328) = -b(21,42)+0.4*b(73,42)
2424       jvs(329) = -b(7,43)-b(8,43)-b(14,43)-b(18,43)-b(19,43)-b(20,43)   &
2425                 -b(21,43)-b(81,43)-b(83,43)-b(84,43)-b(97,43)
2426       jvs(330) = -b(20,44)
2427       jvs(331) = 0.4*b(73,45)
2428       jvs(332) = -b(18,46)
2429       jvs(333) = -b(19,47)
2430       jvs(334) = 0
2431       jvs(335) = 2*b(12,4)
2432       jvs(336) = -b(45,5)
2433       jvs(337) = -b(65,6)
2434       jvs(338) = 2*b(9,7)-b(30,7)
2435       jvs(339) = -b(47,8)
2436       jvs(340) = -b(89,10)
2437       jvs(341) = -b(90,12)
2438       jvs(342) = -b(75,13)
2439       jvs(343) = -b(28,15)
2440       jvs(344) = b(53,17)-0.7*b(55,17)
2441       jvs(345) = b(54,18)-0.5*b(56,18)
2442       jvs(346) = b(3,19)-b(26,19)
2443       jvs(347) = 0.12*b(81,20)-b(82,20)
2444       jvs(348) = -b(48,21)
2445       jvs(349) = -b(92,23)
2446       jvs(350) = -b(44,24)
2447       jvs(351) = 0
2448       jvs(352) = b(4,26)-b(27,26)
2449       jvs(353) = -b(95,27)+0.08*b(97,27)
2450       jvs(354) = b(98,28)-0.77*b(99,28)
2451       jvs(355) = -b(77,29)
2452       jvs(356) = 0.33*b(83,30)-b(85,30)
2453       jvs(357) = -b(51,31)
2454       jvs(358) = 0.6*b(84,33)-b(86,33)
2455       jvs(359) = -b(79,34)
2456       jvs(360) = 0
2457       jvs(361) = 0
2458       jvs(362) = -b(67,37)
2459       jvs(363) = 0
2460       jvs(364) = 0
2461       jvs(365) = 0
2462       jvs(366) = -b(100,41)
2463       jvs(367) = b(21,42)-b(29,42)+b(33,42)+0.7*b(41,42)
2464       jvs(368) = -b(20,43)+b(21,43)+0.12*b(81,43)+0.33*b(83,43)+0.6   &
2465                 *b(84,43)+0.08*b(97,43)
2466       jvs(369) = -b(20,44)-b(22,44)-b(23,44)-b(24,44)-b(25,44)   &
2467                 -b(26,44)-b(27,44)-b(28,44)-b(29,44)-b(30,44)-b(44,44)   &
2468                 -b(45,44)-b(46,44)-b(47,44)-b(48,44)-b(51,44)-0.7   &
2469                 *b(55,44)-0.5*b(56,44)-b(65,44)-b(67,44)-b(75,44)   &
2470                 -b(77,44)-b(79,44)-b(82,44)-b(85,44)-b(86,44)-b(89,44)   &
2471                 -b(90,44)-b(92,44)-b(95,44)-0.77*b(99,44)-b(100,44)
2472       jvs(370) = 0
2473       jvs(371) = -b(23,46)+b(33,46)
2474       jvs(372) = -b(24,47)
2475       jvs(373) = -b(25,48)+0.7*b(41,48)
2476       jvs(374) = b(70,9)
2477       jvs(375) = b(95,27)+b(96,27)+0.62*b(97,27)
2478       jvs(376) = b(76,29)
2479       jvs(377) = 0.13*b(83,30)
2480       jvs(378) = 0.19*b(84,33)
2481       jvs(379) = b(78,34)+b(79,34)+b(80,34)
2482       jvs(380) = b(67,37)+b(68,37)
2483       jvs(381) = b(103,39)+b(107,39)+0.7*b(115,39)
2484       jvs(382) = 0
2485       jvs(383) = 0
2486       jvs(384) = -b(73,42)
2487       jvs(385) = 0.13*b(83,43)+0.19*b(84,43)+0.62*b(97,43)
2488       jvs(386) = b(67,44)+b(79,44)+b(95,44)
2489       jvs(387) = -b(69,45)-b(71,45)-b(72,45)-b(73,45)-b(74,45)
2490       jvs(388) = -b(71,46)+b(103,46)
2491       jvs(389) = -b(69,47)
2492       jvs(390) = b(68,48)-b(72,48)+b(80,48)+b(107,48)
2493       jvs(391) = -b(91,16)
2494       jvs(392) = b(3,19)
2495       jvs(393) = b(15,22)-b(17,22)
2496       jvs(394) = -b(105,32)
2497       jvs(395) = 0
2498       jvs(396) = 0
2499       jvs(397) = -b(58,35)
2500       jvs(398) = -b(104,36)
2501       jvs(399) = -b(57,38)
2502       jvs(400) = -b(103,39)
2503       jvs(401) = -b(102,40)
2504       jvs(402) = 0
2505       jvs(403) = -b(33,42)
2506       jvs(404) = -b(18,43)
2507       jvs(405) = -b(23,44)
2508       jvs(406) = -b(71,45)
2509       jvs(407) = -b(17,46)-b(18,46)-b(23,46)-b(33,46)-b(37,46)   &
2510                 -b(57,46)-b(58,46)-b(71,46)-b(91,46)-b(102,46)   &
2511                 -b(103,46)-b(104,46)-b(105,46)
2512       jvs(408) = b(1,47)+b(15,47)+b(38,47)
2513       jvs(409) = 0.11*b(2,48)-b(37,48)+b(38,48)
2514       jvs(410) = b(70,9)
2515       jvs(411) = b(6,11)+b(43,11)
2516       jvs(412) = -b(94,14)
2517       jvs(413) = b(5,15)+b(28,15)+b(36,15)
2518       jvs(414) = 0.95*b(91,16)
2519       jvs(415) = b(26,19)
2520       jvs(416) = -b(15,22)-b(16,22)+b(17,22)
2521       jvs(417) = 0
2522       jvs(418) = b(4,26)
2523       jvs(419) = 0
2524       jvs(420) = b(105,32)+b(109,32)
2525       jvs(421) = 0
2526       jvs(422) = 0
2527       jvs(423) = b(58,35)+b(60,35)
2528       jvs(424) = 1.5*b(104,36)+1.5*b(108,36)+0.5*b(116,36)
2529       jvs(425) = 0
2530       jvs(426) = b(57,38)+b(59,38)
2531       jvs(427) = b(103,39)+b(107,39)
2532       jvs(428) = 0.84*b(102,40)+b(106,40)
2533       jvs(429) = b(101,41)
2534       jvs(430) = b(33,42)-b(34,42)-b(35,42)+0.7*b(41,42)
2535       jvs(431) = b(18,43)-b(19,43)
2536       jvs(432) = -b(24,44)+b(25,44)+b(26,44)+b(28,44)
2537       jvs(433) = -b(69,45)+b(71,45)+b(72,45)
2538       jvs(434) = b(17,46)+b(18,46)+b(33,46)+2*b(37,46)+b(57,46)   &
2539                 +b(58,46)+b(71,46)+0.95*b(91,46)+0.84*b(102,46)   &
2540                 +b(103,46)+1.5*b(104,46)+b(105,46)
2541       jvs(435) = -b(1,47)-b(15,47)-b(16,47)-b(19,47)-b(24,47)-b(34,47)   &
2542                 -b(35,47)-b(39,47)-b(69,47)-b(94,47)
2543       jvs(436) = 0.89*b(2,48)+b(25,48)+2*b(37,48)-b(39,48)+2*b(40,48)   &
2544                 +0.7*b(41,48)+b(59,48)+b(60,48)+b(72,48)+b(106,48)   &
2545                 +b(107,48)+1.5*b(108,48)+b(109,48)
2546       jvs(437) = b(6,11)+b(43,11)
2547       jvs(438) = b(16,22)
2548       jvs(439) = -b(93,23)
2549       jvs(440) = b(27,26)
2550       jvs(441) = -b(87,30)
2551       jvs(442) = -b(52,31)
2552       jvs(443) = -b(109,32)
2553       jvs(444) = -b(88,33)
2554       jvs(445) = -b(80,34)
2555       jvs(446) = -b(60,35)
2556       jvs(447) = -b(108,36)
2557       jvs(448) = -b(68,37)
2558       jvs(449) = -b(59,38)
2559       jvs(450) = -b(107,39)
2560       jvs(451) = -b(106,40)
2561       jvs(452) = 0
2562       jvs(453) = -b(41,42)
2563       jvs(454) = b(19,43)
2564       jvs(455) = -b(25,44)+b(27,44)
2565       jvs(456) = -b(72,45)
2566       jvs(457) = -b(37,46)
2567       jvs(458) = b(16,47)+b(19,47)-b(38,47)-b(39,47)
2568       jvs(459) = -b(2,48)-b(25,48)-b(37,48)-b(38,48)-b(39,48)-2   &
2569                 *b(40,48)-b(41,48)-b(52,48)-b(59,48)-b(60,48)-b(68,48)   &
2570                 -b(72,48)-b(80,48)-b(87,48)-b(88,48)-b(93,48)   &
2571                 -b(106,48)-b(107,48)-b(108,48)-b(109,48)
2572       return
2573       end subroutine cbmz_v02r02_jacob                                    
2576 !-----------------------------------------------------------------------------
2577       subroutine cbmz_v02r02_decomp( n, v, ier,   &
2578           lu_crow_v, lu_diag_v, lu_icol_v )
2580 !   computes l-u-decomposition of sparse jacobian
2581 !   for mechanism-version-regime = cbmz_v02r02
2583       use module_data_cbmz
2584       implicit none
2586 !   subr parameters
2587 !     n = number of variable species [input]
2588       integer n
2589 !     ier = status flag [output]
2590 !         0 = success    other = failure [output]
2591       integer ier
2593 !     v = non-zero elements of the sparse jacobian [input]
2594       real v(lu_nonzero_v_r02_kpp)
2596       integer lu_crow_v(nvar_r02_kpp + 1)
2597       integer lu_diag_v(nvar_r02_kpp + 1)
2598       integer lu_icol_v(lu_nonzero_v_r02_kpp)
2600 !   local variables
2601       integer k, kk, j, jj
2602       real a, w(nvar_r02_kpp + 1)
2604       ier = 0
2605       do k=1,n
2606         if ( v( lu_diag_v(k) ) .eq. 0. ) then
2607             ier = k
2608             return
2609         end if
2610         do kk = lu_crow_v(k), lu_crow_v(k+1)-1
2611               w( lu_icol_v(kk) ) = v(kk)
2612         end do
2613         do kk = lu_crow_v(k), lu_diag_v(k)-1
2614             j = lu_icol_v(kk)
2615             a = -w(j) / v( lu_diag_v(j) )
2616             w(j) = -a
2617             do jj = lu_diag_v(j)+1, lu_crow_v(j+1)-1
2618                w( lu_icol_v(jj) ) = w( lu_icol_v(jj) ) + a*v(jj)
2619             end do
2620          end do
2621          do kk = lu_crow_v(k), lu_crow_v(k+1)-1
2622             v(kk) = w( lu_icol_v(kk) )
2623          end do
2624       end do
2625       return
2626       end subroutine cbmz_v02r02_decomp            
2629 !-----------------------------------------------------------------------------
2630       subroutine cbmz_v02r02_solve( jvs, x )
2632 !   does back-solve for mechanism-version-regime = cbmz_v02r02
2634       implicit none
2636 !   subr parameters
2637 !     jvs = the non-zero elements of the l-u-decomposition
2638 !           of the augmented jacobian [input]
2639       real jvs(*)
2640 !     x = the right-hand side of the linear equation set being solved [on input]
2641 !     x = concentrations of variable species [on output]
2642       real x(*)
2645       x(13) = x(13)-jvs(36)*x(12)
2646       x(16) = x(16)-jvs(49)*x(10)-jvs(50)*x(12)
2647       x(22) = x(22)-jvs(76)*x(4)
2648       x(23) = x(23)-jvs(82)*x(10)-jvs(83)*x(12)
2649       x(24) = x(24)-jvs(87)*x(20)
2650       x(25) = x(25)-jvs(98)*x(13)
2651       x(26) = x(26)-jvs(110)*x(11)-jvs(111)*x(23)
2652       x(27) = x(27)-jvs(120)*x(16)-jvs(121)*x(23)
2653       x(29) = x(29)-jvs(132)*x(28)
2654       x(31) = x(31)-jvs(147)*x(17)-jvs(148)*x(20)-jvs(149)*x(21)   &
2655              -jvs(150)*x(27)-jvs(151)*x(30)
2656       x(32) = x(32)-jvs(162)*x(10)-jvs(163)*x(12)-jvs(164)*x(20)   &
2657              -jvs(165)*x(23)-jvs(166)*x(27)-jvs(167)*x(28)-jvs(168)   &
2658              *x(30)
2659       x(34) = x(34)-jvs(184)*x(12)-jvs(185)*x(27)-jvs(186)*x(28)   &
2660              -jvs(187)*x(30)-jvs(188)*x(33)
2661       x(35) = x(35)-jvs(197)*x(8)-jvs(198)*x(18)-jvs(199)*x(28)   &
2662              -jvs(200)*x(30)-jvs(201)*x(33)
2663       x(36) = x(36)-jvs(211)*x(30)-jvs(212)*x(33)
2664       x(37) = x(37)-jvs(220)*x(6)-jvs(221)*x(18)-jvs(222)*x(20)   &
2665              -jvs(223)*x(27)-jvs(224)*x(28)-jvs(225)*x(30)-jvs(226)   &
2666              *x(33)-jvs(227)*x(35)-jvs(228)*x(36)
2667       x(38) = x(38)-jvs(238)*x(17)-jvs(239)*x(29)-jvs(240)*x(30)   &
2668              -jvs(241)*x(33)-jvs(242)*x(37)
2669       x(39) = x(39)-jvs(253)*x(29)-jvs(254)*x(33)
2670       x(40) = x(40)-jvs(263)*x(13)-jvs(264)*x(25)-jvs(265)*x(28)   &
2671              -jvs(266)*x(30)-jvs(267)*x(33)-jvs(268)*x(36)-jvs(269)   &
2672              *x(39)
2673       x(41) = x(41)-jvs(277)*x(14)-jvs(278)*x(16)-jvs(279)*x(23)   &
2674              -jvs(280)*x(36)-jvs(281)*x(40)
2675       x(42) = x(42)-jvs(289)*x(5)-jvs(290)*x(6)-jvs(291)*x(7)-jvs(292)   &
2676              *x(10)-jvs(293)*x(12)-jvs(294)*x(15)-jvs(295)*x(16)   &
2677              -jvs(296)*x(17)-jvs(297)*x(18)-jvs(298)*x(20)-jvs(299)   &
2678              *x(21)-jvs(300)*x(23)-jvs(301)*x(24)-jvs(302)*x(27)   &
2679              -jvs(303)*x(28)-jvs(304)*x(30)-jvs(305)*x(31)-jvs(306)   &
2680              *x(32)-jvs(307)*x(33)-jvs(308)*x(34)-jvs(309)*x(35)   &
2681              -jvs(310)*x(36)-jvs(311)*x(37)-jvs(312)*x(38)-jvs(313)   &
2682              *x(39)-jvs(314)*x(40)-jvs(315)*x(41)
2683       x(43) = x(43)-jvs(323)*x(20)-jvs(324)*x(22)-jvs(325)*x(27)   &
2684              -jvs(326)*x(30)-jvs(327)*x(33)-jvs(328)*x(42)
2685       x(44) = x(44)-jvs(335)*x(4)-jvs(336)*x(5)-jvs(337)*x(6)-jvs(338)   &
2686              *x(7)-jvs(339)*x(8)-jvs(340)*x(10)-jvs(341)*x(12)   &
2687              -jvs(342)*x(13)-jvs(343)*x(15)-jvs(344)*x(17)-jvs(345)   &
2688              *x(18)-jvs(346)*x(19)-jvs(347)*x(20)-jvs(348)*x(21)   &
2689              -jvs(349)*x(23)-jvs(350)*x(24)-jvs(351)*x(25)-jvs(352)   &
2690              *x(26)-jvs(353)*x(27)-jvs(354)*x(28)-jvs(355)*x(29)   &
2691              -jvs(356)*x(30)-jvs(357)*x(31)-jvs(358)*x(33)-jvs(359)   &
2692              *x(34)-jvs(360)*x(35)-jvs(361)*x(36)-jvs(362)*x(37)   &
2693              -jvs(363)*x(38)-jvs(364)*x(39)-jvs(365)*x(40)-jvs(366)   &
2694              *x(41)-jvs(367)*x(42)-jvs(368)*x(43)
2695       x(45) = x(45)-jvs(374)*x(9)-jvs(375)*x(27)-jvs(376)*x(29)   &
2696              -jvs(377)*x(30)-jvs(378)*x(33)-jvs(379)*x(34)-jvs(380)   &
2697              *x(37)-jvs(381)*x(39)-jvs(382)*x(40)-jvs(383)*x(41)   &
2698              -jvs(384)*x(42)-jvs(385)*x(43)-jvs(386)*x(44)
2699       x(46) = x(46)-jvs(391)*x(16)-jvs(392)*x(19)-jvs(393)*x(22)   &
2700              -jvs(394)*x(32)-jvs(395)*x(33)-jvs(396)*x(34)-jvs(397)   &
2701              *x(35)-jvs(398)*x(36)-jvs(399)*x(38)-jvs(400)*x(39)   &
2702              -jvs(401)*x(40)-jvs(402)*x(41)-jvs(403)*x(42)-jvs(404)   &
2703              *x(43)-jvs(405)*x(44)-jvs(406)*x(45)
2704       x(47) = x(47)-jvs(410)*x(9)-jvs(411)*x(11)-jvs(412)*x(14)   &
2705              -jvs(413)*x(15)-jvs(414)*x(16)-jvs(415)*x(19)-jvs(416)   &
2706              *x(22)-jvs(417)*x(23)-jvs(418)*x(26)-jvs(419)*x(31)   &
2707              -jvs(420)*x(32)-jvs(421)*x(33)-jvs(422)*x(34)-jvs(423)   &
2708              *x(35)-jvs(424)*x(36)-jvs(425)*x(37)-jvs(426)*x(38)   &
2709              -jvs(427)*x(39)-jvs(428)*x(40)-jvs(429)*x(41)-jvs(430)   &
2710              *x(42)-jvs(431)*x(43)-jvs(432)*x(44)-jvs(433)*x(45)   &
2711              -jvs(434)*x(46)
2712       x(48) = x(48)-jvs(437)*x(11)-jvs(438)*x(22)-jvs(439)*x(23)   &
2713              -jvs(440)*x(26)-jvs(441)*x(30)-jvs(442)*x(31)-jvs(443)   &
2714              *x(32)-jvs(444)*x(33)-jvs(445)*x(34)-jvs(446)*x(35)   &
2715              -jvs(447)*x(36)-jvs(448)*x(37)-jvs(449)*x(38)-jvs(450)   &
2716              *x(39)-jvs(451)*x(40)-jvs(452)*x(41)-jvs(453)*x(42)   &
2717              -jvs(454)*x(43)-jvs(455)*x(44)-jvs(456)*x(45)-jvs(457)   &
2718              *x(46)-jvs(458)*x(47)
2719       x(48) = x(48)/jvs(459)
2720       x(47) = (x(47)-jvs(436)*x(48))/(jvs(435))
2721       x(46) = (x(46)-jvs(408)*x(47)-jvs(409)*x(48))/(jvs(407))
2722       x(45) = (x(45)-jvs(388)*x(46)-jvs(389)*x(47)-jvs(390)*x(48))/   &
2723              (jvs(387))
2724       x(44) = (x(44)-jvs(370)*x(45)-jvs(371)*x(46)-jvs(372)*x(47)   &
2725              -jvs(373)*x(48))/(jvs(369))
2726       x(43) = (x(43)-jvs(330)*x(44)-jvs(331)*x(45)-jvs(332)*x(46)   &
2727              -jvs(333)*x(47)-jvs(334)*x(48))/(jvs(329))
2728       x(42) = (x(42)-jvs(317)*x(43)-jvs(318)*x(44)-jvs(319)*x(45)   &
2729              -jvs(320)*x(46)-jvs(321)*x(47)-jvs(322)*x(48))/(jvs(316))
2730       x(41) = (x(41)-jvs(283)*x(42)-jvs(284)*x(43)-jvs(285)*x(44)   &
2731              -jvs(286)*x(46)-jvs(287)*x(47)-jvs(288)*x(48))/(jvs(282))
2732       x(40) = (x(40)-jvs(271)*x(41)-jvs(272)*x(42)-jvs(273)*x(43)   &
2733              -jvs(274)*x(44)-jvs(275)*x(46)-jvs(276)*x(48))/(jvs(270))
2734       x(39) = (x(39)-jvs(256)*x(40)-jvs(257)*x(41)-jvs(258)*x(42)   &
2735              -jvs(259)*x(43)-jvs(260)*x(44)-jvs(261)*x(46)-jvs(262)   &
2736              *x(48))/(jvs(255))
2737       x(38) = (x(38)-jvs(244)*x(39)-jvs(245)*x(40)-jvs(246)*x(41)   &
2738              -jvs(247)*x(42)-jvs(248)*x(43)-jvs(249)*x(44)-jvs(250)   &
2739              *x(45)-jvs(251)*x(46)-jvs(252)*x(48))/(jvs(243))
2740       x(37) = (x(37)-jvs(230)*x(39)-jvs(231)*x(40)-jvs(232)*x(41)   &
2741              -jvs(233)*x(42)-jvs(234)*x(43)-jvs(235)*x(44)-jvs(236)   &
2742              *x(46)-jvs(237)*x(48))/(jvs(229))
2743       x(36) = (x(36)-jvs(214)*x(41)-jvs(215)*x(42)-jvs(216)*x(43)   &
2744              -jvs(217)*x(44)-jvs(218)*x(46)-jvs(219)*x(48))/(jvs(213))
2745       x(35) = (x(35)-jvs(203)*x(39)-jvs(204)*x(40)-jvs(205)*x(41)   &
2746              -jvs(206)*x(42)-jvs(207)*x(43)-jvs(208)*x(44)-jvs(209)   &
2747              *x(46)-jvs(210)*x(48))/(jvs(202))
2748       x(34) = (x(34)-jvs(190)*x(39)-jvs(191)*x(40)-jvs(192)*x(42)   &
2749              -jvs(193)*x(43)-jvs(194)*x(44)-jvs(195)*x(46)-jvs(196)   &
2750              *x(48))/(jvs(189))
2751       x(33) = (x(33)-jvs(181)*x(43)-jvs(182)*x(44)-jvs(183)*x(48))/   &
2752              (jvs(180))
2753       x(32) = (x(32)-jvs(170)*x(33)-jvs(171)*x(34)-jvs(172)*x(39)   &
2754              -jvs(173)*x(40)-jvs(174)*x(41)-jvs(175)*x(42)-jvs(176)   &
2755              *x(43)-jvs(177)*x(44)-jvs(178)*x(46)-jvs(179)*x(48))/   &
2756              (jvs(169))
2757       x(31) = (x(31)-jvs(153)*x(33)-jvs(154)*x(36)-jvs(155)*x(38)   &
2758              -jvs(156)*x(39)-jvs(157)*x(42)-jvs(158)*x(43)-jvs(159)   &
2759              *x(44)-jvs(160)*x(46)-jvs(161)*x(48))/(jvs(152))
2760       x(30) = (x(30)-jvs(144)*x(43)-jvs(145)*x(44)-jvs(146)*x(48))/   &
2761              (jvs(143))
2762       x(29) = (x(29)-jvs(134)*x(33)-jvs(135)*x(39)-jvs(136)*x(40)   &
2763              -jvs(137)*x(41)-jvs(138)*x(42)-jvs(139)*x(43)-jvs(140)   &
2764              *x(44)-jvs(141)*x(46)-jvs(142)*x(48))/(jvs(133))
2765       x(28) = (x(28)-jvs(128)*x(39)-jvs(129)*x(40)-jvs(130)*x(42)   &
2766              -jvs(131)*x(44))/(jvs(127))
2767       x(27) = (x(27)-jvs(123)*x(43)-jvs(124)*x(44)-jvs(125)*x(46)   &
2768              -jvs(126)*x(48))/(jvs(122))
2769       x(26) = (x(26)-jvs(113)*x(31)-jvs(114)*x(34)-jvs(115)*x(37)   &
2770              -jvs(116)*x(42)-jvs(117)*x(44)-jvs(118)*x(47)-jvs(119)   &
2771              *x(48))/(jvs(112))
2772       x(25) = (x(25)-jvs(100)*x(28)-jvs(101)*x(30)-jvs(102)*x(33)   &
2773              -jvs(103)*x(36)-jvs(104)*x(40)-jvs(105)*x(41)-jvs(106)   &
2774              *x(43)-jvs(107)*x(44)-jvs(108)*x(46)-jvs(109)*x(48))/   &
2775              (jvs(99))
2776       x(24) = (x(24)-jvs(89)*x(27)-jvs(90)*x(30)-jvs(91)*x(31)-jvs(92)   &
2777              *x(33)-jvs(93)*x(34)-jvs(94)*x(37)-jvs(95)*x(43)-jvs(96)   &
2778              *x(44)-jvs(97)*x(48))/(jvs(88))
2779       x(23) = (x(23)-jvs(85)*x(44)-jvs(86)*x(48))/(jvs(84))
2780       x(22) = (x(22)-jvs(78)*x(43)-jvs(79)*x(46)-jvs(80)*x(47)-jvs(81)   &
2781              *x(48))/(jvs(77))
2782       x(21) = (x(21)-jvs(71)*x(30)-jvs(72)*x(33)-jvs(73)*x(38)-jvs(74)   &
2783              *x(43)-jvs(75)*x(44))/(jvs(70))
2784       x(20) = (x(20)-jvs(68)*x(43)-jvs(69)*x(44))/(jvs(67))
2785       x(19) = (x(19)-jvs(63)*x(42)-jvs(64)*x(44)-jvs(65)*x(46)-jvs(66)   &
2786              *x(47))/(jvs(62))
2787       x(18) = (x(18)-jvs(59)*x(35)-jvs(60)*x(42)-jvs(61)*x(44))/   &
2788              (jvs(58))
2789       x(17) = (x(17)-jvs(55)*x(38)-jvs(56)*x(42)-jvs(57)*x(44))/   &
2790              (jvs(54))
2791       x(16) = (x(16)-jvs(52)*x(44)-jvs(53)*x(46))/(jvs(51))
2792       x(15) = (x(15)-jvs(46)*x(42)-jvs(47)*x(44)-jvs(48)*x(47))/   &
2793              (jvs(45))
2794       x(14) = (x(14)-jvs(41)*x(23)-jvs(42)*x(44)-jvs(43)*x(47)-jvs(44)   &
2795              *x(48))/(jvs(40))
2796       x(13) = (x(13)-jvs(38)*x(25)-jvs(39)*x(44))/(jvs(37))
2797       x(12) = (x(12)-jvs(35)*x(44))/(jvs(34))
2798       x(11) = (x(11)-jvs(32)*x(47)-jvs(33)*x(48))/(jvs(31))
2799       x(10) = (x(10)-jvs(30)*x(44))/(jvs(29))
2800       x(9) = (x(9)-jvs(27)*x(45)-jvs(28)*x(47))/(jvs(26))
2801       x(8) = (x(8)-jvs(24)*x(35)-jvs(25)*x(44))/(jvs(23))
2802       x(7) = (x(7)-jvs(21)*x(42)-jvs(22)*x(44))/(jvs(20))
2803       x(6) = (x(6)-jvs(19)*x(44))/(jvs(18))
2804       x(5) = (x(5)-jvs(17)*x(44))/(jvs(16))
2805       x(4) = (x(4)-jvs(15)*x(43))/(jvs(14))
2806       x(3) = (x(3)-jvs(9)*x(30)-jvs(10)*x(33)-jvs(11)*x(42)-jvs(12)   &
2807             *x(43)-jvs(13)*x(45))/(jvs(8))
2808       x(2) = (x(2)-jvs(5)*x(20)-jvs(6)*x(30)-jvs(7)*x(43))/(jvs(4))
2809       x(1) = (x(1)-jvs(2)*x(5)-jvs(3)*x(44))/(jvs(1))
2810       return
2811       end subroutine cbmz_v02r02_solve          
2814 !   cbmz_v02r03_torodas.f - created on 17-nov-2003 from previous
2815 !        cbmz_v02r03_torodas.f        cbmz_v02r03_mapconcs.f
2816 !        cbmz_v02r03_maprates.f       cbmz_v02r03_dydt.f
2817 !        cbmz_v02r03_jacob.f          cbmz_v02r03_decomp.f
2818 !        cbmz_v02r03_solve.f
2819 !   so now everything is in a single file
2820 !-----------------------------------------------------------------------
2822       subroutine cbmz_v02r03_torodas(   &
2823           ngas, taa, tzz,   &
2824           stot, atol, rtol, yposlimit, yneglimit,   &
2825           sfixedkpp, rconstkpp,   &
2826           hmin, hstart,   &
2827           info_rodas, iok, lunerr, idydt_sngldble )
2829 !   interfaces to rodas3 solver formechanism-version-regime =cbmz_v02r03
2831 !   *** do not include any pegasus common blocks ***
2833       use module_data_cbmz
2834       use module_cbmz_rodas3_solver, only:  rodas3_ff_x2
2835       implicit none
2837 !   subr parameters
2838       integer ngas, iok, lunerr, idydt_sngldble
2839       integer info_rodas(6)
2840       real taa, tzz, hmin, hstart
2841       real stot(ngas), atol(ngas), rtol(ngas)
2842       real yposlimit(ngas), yneglimit(ngas)
2843       real sfixedkpp(nfixed_kppmax), rconstkpp(nreact_kppmax)
2845 !   local variables
2847 !     external cbmz_v02r03_dydt
2848 !     external cbmz_v02r03_jacob
2849 !     external cbmz_v02r03_decomp
2850 !     external cbmz_v02r03_solve
2852       integer i
2854       real hmax
2855       integer lu_crow_v(nvar_r03_kpp + 1)
2856       save    lu_crow_v
2857       integer lu_diag_v(nvar_r03_kpp + 1)
2858       save    lu_diag_v
2859       integer lu_icol_v(lu_nonzero_v_r03_kpp)
2860       save    lu_icol_v
2862       data( lu_icol_v(i), i = 1, 252 ) /   &
2863         1,  5, 48,  2, 20, 31, 32, 42, 49,  3, 31, 36,   &
2864        47, 49, 50,  4, 49,  5, 48,  6, 48,  7, 48, 50,   &
2865         8, 39, 48,  9, 47, 52, 10, 48, 11, 52, 53, 12,   &
2866        48, 13, 23, 48, 52, 53, 14, 48, 50, 52, 10, 12,   &
2867        15, 48, 51, 16, 26, 31, 36, 37, 44, 45, 46, 48,   &
2868        49, 51, 53, 17, 41, 48, 50, 18, 39, 48, 50, 19,   &
2869        48, 50, 51, 52, 20, 48, 49, 21, 31, 36, 41, 48,   &
2870        49,  4, 22, 49, 51, 52, 53, 10, 12, 23, 48, 53,   &
2871        11, 23, 24, 33, 38, 40, 42, 48, 50, 52, 53, 20,   &
2872        25, 27, 30, 31, 32, 33, 36, 38, 40, 42, 48, 49,   &
2873        51, 53, 12, 16, 26, 28, 29, 31, 36, 37, 42, 44,   &
2874        45, 46, 48, 49, 50, 51, 53, 15, 23, 27, 48, 49,   &
2875        51, 53, 28, 32, 50, 51, 53, 29, 32, 48, 50, 51,   &
2876        30, 42, 48, 50, 51, 31, 48, 49, 53, 32, 48, 49,   &
2877        53, 17, 20, 21, 27, 29, 30, 31, 32, 33, 36, 37,   &
2878        41, 42, 43, 48, 49, 50, 51, 53, 10, 12, 20, 23,   &
2879        27, 31, 32, 34, 36, 38, 42, 44, 45, 46, 48, 49,   &
2880        50, 51, 53, 30, 35, 36, 42, 43, 44, 45, 46, 48,   &
2881        49, 50, 51, 53, 36, 48, 49, 53, 31, 36, 37, 46,   &
2882        48, 49, 50, 51, 53, 12, 27, 30, 31, 36, 38, 42,   &
2883        43, 44, 48, 49, 50, 51, 53,  8, 18, 31, 36, 39 /
2885       data( lu_icol_v(i), i = 253, 504 ) /   &
2886        44, 45, 46, 48, 49, 50, 51, 53,  6, 18, 20, 27,   &
2887        28, 30, 31, 32, 36, 37, 39, 40, 42, 44, 45, 46,   &
2888        48, 49, 50, 51, 53, 17, 31, 35, 36, 40, 41, 42,   &
2889        43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 28, 29,   &
2890        32, 42, 48, 49, 50, 51, 53, 35, 36, 42, 43, 44,   &
2891        45, 46, 48, 49, 50, 51, 53, 29, 30, 32, 42, 43,   &
2892        44, 45, 46, 48, 49, 50, 51, 53, 26, 28, 29, 31,   &
2893        32, 36, 37, 42, 44, 45, 46, 48, 49, 50, 51, 53,   &
2894        13, 15, 23, 28, 29, 32, 37, 42, 45, 46, 48, 49,   &
2895        50, 51, 52, 53,  9, 27, 31, 32, 35, 36, 38, 40,   &
2896        42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,   &
2897         4,  5,  6,  7,  8, 10, 12, 14, 17, 18, 19, 20,   &
2898        21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,   &
2899        35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,   &
2900        47, 48, 49, 50, 51, 52, 53, 20, 22, 27, 31, 32,   &
2901        36, 42, 47, 48, 49, 50, 51, 52, 53,  5,  6,  7,   &
2902        10, 12, 14, 15, 17, 18, 20, 21, 23, 25, 27, 28,   &
2903        29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41,   &
2904        42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,   &
2905        15, 19, 22, 28, 29, 30, 32, 34, 36, 37, 38, 39,   &
2906        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 /
2908       data( lu_icol_v(i), i = 505, 564 ) /   &
2909        53,  9, 11, 13, 14, 15, 19, 22, 23, 24, 28, 29,   &
2910        30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43,   &
2911        44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 11, 22,   &
2912        23, 24, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41,   &
2913        42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 /
2915       data lu_crow_v /   &
2916         1,  4, 10, 16, 18, 20, 22, 25, 28, 31, 33, 36,   &
2917        38, 43, 47, 52, 64, 68, 72, 77, 80, 86, 92, 97,   &
2918       108,123,140,147,152,157,162,166,170,189,208,221,   &
2919       225,234,248,261,282,299,308,320,333,349,365,385,   &
2920       428,442,481,506,539,565 /
2922       data lu_diag_v /   &
2923         1,  4, 10, 16, 18, 20, 22, 25, 28, 31, 33, 36,   &
2924        38, 43, 49, 52, 64, 68, 72, 77, 80, 87, 94, 99,   &
2925       109,125,142,147,152,157,162,166,178,196,209,221,   &
2926       227,239,252,272,287,302,311,325,342,358,378,422,   &
2927       437,477,503,537,564,565 /
2931       info_rodas(1) = 1
2932       do i = 2, 6
2933           info_rodas(i) = 0
2934       end do
2935       hmax = tzz - taa
2937 !   do not integrate if hmax is less/equal to hmin
2938 !   because hmin is generally 0.1 s or less
2939       if (hmax .le. 1.001*hmin) then
2940           iok = 11
2941           return
2942       end if
2944       call rodas3_ff_x2(   &
2945            nvar_r03_kpp, taa, tzz, hmin, hmax, hstart,   &
2946            stot, atol, rtol, yposlimit, yneglimit,   &
2947            sfixedkpp, rconstkpp,   &
2948            lu_nonzero_v_r03_kpp, lu_crow_v, lu_diag_v, lu_icol_v,   &
2949            info_rodas, iok, lunerr,   &
2950            cbmz_v02r03_dydt,   &
2951            cbmz_v02r03_jacob,   &
2952            cbmz_v02r03_decomp,   &
2953            cbmz_v02r03_solve )
2955       return
2956       end subroutine cbmz_v02r03_torodas 
2959 !-----------------------------------------------------------------------------
2960       subroutine cbmz_v02r03_mapconcs( imap, nyy, yy, yyfixed, cbox )
2962 !   maps species concentrations (gaschemistry cbox array <--> kpp yy array)
2963 !   for mechanism-version-regime = cbmz_v02r03
2965       use module_data_cbmz
2966       implicit none
2968 !   subr parameters
2969 !     imap = mapping direction flag [input]
2970 !         0 = map cbox --> yy and yyfixed
2971 !         1 = map yy --> cbox
2972       integer imap
2973 !     nyy = number of kpp "variable" species [output]
2974       integer nyy
2975 !     yy = kpp species concentrations array [input/output]
2976       real yy(nvar_r03_kpp)
2977 !     yyfixed = kpp species concentrations array [input/output]
2978       real yyfixed(nfixed_kppmax)
2979 !     cbox = main gaschemistry species conc array [input/output]
2980       real cbox(ngas_z)
2982 !   local variables
2983       integer ih2so4_kpp
2984       parameter ( ih2so4_kpp = 1 )
2985       integer ihcooh_kpp
2986       parameter ( ihcooh_kpp = 2 )
2987       integer ircooh_kpp
2988       parameter ( ircooh_kpp = 3 )
2989       integer io1d_kpp
2990       parameter ( io1d_kpp = 4 )
2991       integer iso2_kpp
2992       parameter ( iso2_kpp = 5 )
2993       integer ic2h5oh_kpp
2994       parameter ( ic2h5oh_kpp = 6 )
2995       integer ih2o2_kpp
2996       parameter ( ih2o2_kpp = 7 )
2997       integer ic2h6_kpp
2998       parameter ( ic2h6_kpp = 8 )
2999       integer ipan_kpp
3000       parameter ( ipan_kpp = 9 )
3001       integer itol_kpp
3002       parameter ( itol_kpp = 10 )
3003       integer in2o5_kpp
3004       parameter ( in2o5_kpp = 11 )
3005       integer ixyl_kpp
3006       parameter ( ixyl_kpp = 12 )
3007       integer icro_kpp
3008       parameter ( icro_kpp = 13 )
3009       integer ihno4_kpp
3010       parameter ( ihno4_kpp = 14 )
3011       integer ito2_kpp
3012       parameter ( ito2_kpp = 15 )
3013       integer ixpar_kpp
3014       parameter ( ixpar_kpp = 16 )
3015       integer ich3ooh_kpp
3016       parameter ( ich3ooh_kpp = 17 )
3017       integer iethooh_kpp
3018       parameter ( iethooh_kpp = 18 )
3019       integer ihono_kpp
3020       parameter ( ihono_kpp = 19 )
3021       integer ieth_kpp
3022       parameter ( ieth_kpp = 20 )
3023       integer ich3oh_kpp
3024       parameter ( ich3oh_kpp = 21 )
3025       integer io3p_kpp
3026       parameter ( io3p_kpp = 22 )
3027       integer icres_kpp
3028       parameter ( icres_kpp = 23 )
3029       integer ihno3_kpp
3030       parameter ( ihno3_kpp = 24 )
3031       integer ico_kpp
3032       parameter ( ico_kpp = 25 )
3033       integer ipar_kpp
3034       parameter ( ipar_kpp = 26 )
3035       integer iopen_kpp
3036       parameter ( iopen_kpp = 27 )
3037       integer iisopn_kpp
3038       parameter ( iisopn_kpp = 28 )
3039       integer iisopp_kpp
3040       parameter ( iisopp_kpp = 29 )
3041       integer iisopo2_kpp
3042       parameter ( iisopo2_kpp = 30 )
3043       integer iolet_kpp
3044       parameter ( iolet_kpp = 31 )
3045       integer iisop_kpp
3046       parameter ( iisop_kpp = 32 )
3047       integer ihcho_kpp
3048       parameter ( ihcho_kpp = 33 )
3049       integer ixo2_kpp
3050       parameter ( ixo2_kpp = 34 )
3051       integer iaone_kpp
3052       parameter ( iaone_kpp = 35 )
3053       integer iolei_kpp
3054       parameter ( iolei_kpp = 36 )
3055       integer inap_kpp
3056       parameter ( inap_kpp = 37 )
3057       integer imgly_kpp
3058       parameter ( imgly_kpp = 38 )
3059       integer iethp_kpp
3060       parameter ( iethp_kpp = 39 )
3061       integer iald2_kpp
3062       parameter ( iald2_kpp = 40 )
3063       integer ich3o2_kpp
3064       parameter ( ich3o2_kpp = 41 )
3065       integer iisoprd_kpp
3066       parameter ( iisoprd_kpp = 42 )
3067       integer iano2_kpp
3068       parameter ( iano2_kpp = 43 )
3069       integer irooh_kpp
3070       parameter ( irooh_kpp = 44 )
3071       integer iro2_kpp
3072       parameter ( iro2_kpp = 45 )
3073       integer ionit_kpp
3074       parameter ( ionit_kpp = 46 )
3075       integer ic2o3_kpp
3076       parameter ( ic2o3_kpp = 47 )
3077       integer ioh_kpp
3078       parameter ( ioh_kpp = 48 )
3079       integer io3_kpp
3080       parameter ( io3_kpp = 49 )
3081       integer iho2_kpp
3082       parameter ( iho2_kpp = 50 )
3083       integer ino_kpp
3084       parameter ( ino_kpp = 51 )
3085       integer ino2_kpp
3086       parameter ( ino2_kpp = 52 )
3087       integer ino3_kpp
3088       parameter ( ino3_kpp = 53 )
3090 ! indexes declaration for fixed species
3092       integer ich4_kpp
3093       parameter ( ich4_kpp = 1 )
3094       integer ih2o_kpp
3095       parameter ( ih2o_kpp = 2 )
3096       integer ih2_kpp
3097       parameter ( ih2_kpp = 3 )
3098       integer io2_kpp
3099       parameter ( io2_kpp = 4 )
3100       integer in2_kpp
3101       parameter ( in2_kpp = 5 )
3104       nyy = nvar_r03_kpp
3106       if (imap .le. 0) goto 1000
3107       if (imap .ge. 1) goto 2000
3111 !   map cbox values into yyvarkpp and yyfixkpp
3113 1000  continue
3114       yy(ih2so4_kpp)    = cbox(ih2so4_z)
3115       yy(ihcooh_kpp)    = cbox(ihcooh_z)
3116       yy(ircooh_kpp)    = cbox(ircooh_z)
3117       yy(io1d_kpp)      = cbox(io1d_z)
3118       yy(iso2_kpp)      = cbox(iso2_z)
3119       yy(ic2h5oh_kpp)   = cbox(ic2h5oh_z)
3120       yy(ih2o2_kpp)     = cbox(ih2o2_z)
3121       yy(ic2h6_kpp)     = cbox(ic2h6_z)
3122       yy(ipan_kpp)      = cbox(ipan_z)
3123       yy(itol_kpp)      = cbox(itol_z)
3124       yy(in2o5_kpp)     = cbox(in2o5_z)
3125       yy(ixyl_kpp)      = cbox(ixyl_z)
3126       yy(icro_kpp)      = cbox(icro_z)
3127       yy(ihno4_kpp)     = cbox(ihno4_z)
3128       yy(ito2_kpp)      = cbox(ito2_z)
3129       yy(ixpar_kpp)     = cbox(ixpar_z)
3130       yy(ich3ooh_kpp)   = cbox(ich3ooh_z)
3131       yy(iethooh_kpp)   = cbox(iethooh_z)
3132       yy(ihono_kpp)     = cbox(ihono_z)
3133       yy(ieth_kpp)      = cbox(ieth_z)
3134       yy(ich3oh_kpp)    = cbox(ich3oh_z)
3135       yy(io3p_kpp)      = cbox(io3p_z)
3136       yy(icres_kpp)     = cbox(icres_z)
3137       yy(ihno3_kpp)     = cbox(ihno3_z)
3138       yy(ico_kpp)       = cbox(ico_z)
3139       yy(ipar_kpp)      = cbox(ipar_z)
3140       yy(iopen_kpp)     = cbox(iopen_z)
3141       yy(iisopn_kpp)    = cbox(iisopn_z)
3142       yy(iisopp_kpp)    = cbox(iisopp_z)
3143       yy(iisopo2_kpp)   = cbox(iisopo2_z)
3144       yy(iolet_kpp)     = cbox(iolet_z)
3145       yy(iisop_kpp)     = cbox(iisop_z)
3146       yy(ihcho_kpp)     = cbox(ihcho_z)
3147       yy(ixo2_kpp)      = cbox(ixo2_z)
3148       yy(iaone_kpp)     = cbox(iaone_z)
3149       yy(iolei_kpp)     = cbox(iolei_z)
3150       yy(inap_kpp)      = cbox(inap_z)
3151       yy(imgly_kpp)     = cbox(imgly_z)
3152       yy(iethp_kpp)     = cbox(iethp_z)
3153       yy(iald2_kpp)     = cbox(iald2_z)
3154       yy(ich3o2_kpp)    = cbox(ich3o2_z)
3155       yy(iisoprd_kpp)   = cbox(iisoprd_z)
3156       yy(iano2_kpp)     = cbox(iano2_z)
3157       yy(irooh_kpp)     = cbox(irooh_z)
3158       yy(iro2_kpp)      = cbox(iro2_z)
3159       yy(ionit_kpp)     = cbox(ionit_z)
3160       yy(ic2o3_kpp)     = cbox(ic2o3_z)
3161       yy(ioh_kpp)       = cbox(ioh_z)
3162       yy(io3_kpp)       = cbox(io3_z)
3163       yy(iho2_kpp)      = cbox(iho2_z)
3164       yy(ino_kpp)       = cbox(ino_z)
3165       yy(ino2_kpp)      = cbox(ino2_z)
3166       yy(ino3_kpp)      = cbox(ino3_z)
3168       yyfixed(ich4_kpp) = cbox(ich4_z)
3169       yyfixed(ih2o_kpp) = cbox(ih2o_z)
3170       yyfixed(ih2_kpp)  = cbox(ih2_z)
3171       yyfixed(io2_kpp)  = cbox(io2_z)
3172       yyfixed(in2_kpp)  = cbox(in2_z)
3175 !   map yyvarkpp values into cbox
3177 2000  continue
3178       cbox(ih2so4_z)    = yy(ih2so4_kpp)
3179       cbox(ihcooh_z)    = yy(ihcooh_kpp)
3180       cbox(ircooh_z)    = yy(ircooh_kpp)
3181       cbox(io1d_z)      = yy(io1d_kpp)
3182       cbox(iso2_z)      = yy(iso2_kpp)
3183       cbox(ic2h5oh_z)   = yy(ic2h5oh_kpp)
3184       cbox(ih2o2_z)     = yy(ih2o2_kpp)
3185       cbox(ic2h6_z)     = yy(ic2h6_kpp)
3186       cbox(ipan_z)      = yy(ipan_kpp)
3187       cbox(itol_z)      = yy(itol_kpp)
3188       cbox(in2o5_z)     = yy(in2o5_kpp)
3189       cbox(ixyl_z)      = yy(ixyl_kpp)
3190       cbox(icro_z)      = yy(icro_kpp)
3191       cbox(ihno4_z)     = yy(ihno4_kpp)
3192       cbox(ito2_z)      = yy(ito2_kpp)
3193       cbox(ixpar_z)     = yy(ixpar_kpp)
3194       cbox(ich3ooh_z)   = yy(ich3ooh_kpp)
3195       cbox(iethooh_z)   = yy(iethooh_kpp)
3196       cbox(ihono_z)     = yy(ihono_kpp)
3197       cbox(ieth_z)      = yy(ieth_kpp)
3198       cbox(ich3oh_z)    = yy(ich3oh_kpp)
3199       cbox(io3p_z)      = yy(io3p_kpp)
3200       cbox(icres_z)     = yy(icres_kpp)
3201       cbox(ihno3_z)     = yy(ihno3_kpp)
3202       cbox(ico_z)       = yy(ico_kpp)
3203       cbox(ipar_z)      = yy(ipar_kpp)
3204       cbox(iopen_z)     = yy(iopen_kpp)
3205       cbox(iisopn_z)    = yy(iisopn_kpp)
3206       cbox(iisopp_z)    = yy(iisopp_kpp)
3207       cbox(iisopo2_z)   = yy(iisopo2_kpp)
3208       cbox(iolet_z)     = yy(iolet_kpp)
3209       cbox(iisop_z)     = yy(iisop_kpp)
3210       cbox(ihcho_z)     = yy(ihcho_kpp)
3211       cbox(ixo2_z)      = yy(ixo2_kpp)
3212       cbox(iaone_z)     = yy(iaone_kpp)
3213       cbox(iolei_z)     = yy(iolei_kpp)
3214       cbox(inap_z)      = yy(inap_kpp)
3215       cbox(imgly_z)     = yy(imgly_kpp)
3216       cbox(iethp_z)     = yy(iethp_kpp)
3217       cbox(iald2_z)     = yy(iald2_kpp)
3218       cbox(ich3o2_z)    = yy(ich3o2_kpp)
3219       cbox(iisoprd_z)   = yy(iisoprd_kpp)
3220       cbox(iano2_z)     = yy(iano2_kpp)
3221       cbox(irooh_z)     = yy(irooh_kpp)
3222       cbox(iro2_z)      = yy(iro2_kpp)
3223       cbox(ionit_z)     = yy(ionit_kpp)
3224       cbox(ic2o3_z)     = yy(ic2o3_kpp)
3225       cbox(ioh_z)       = yy(ioh_kpp)
3226       cbox(io3_z)       = yy(io3_kpp)
3227       cbox(iho2_z)      = yy(iho2_kpp)
3228       cbox(ino_z)       = yy(ino_kpp)
3229       cbox(ino2_z)      = yy(ino2_kpp)
3230       cbox(ino3_z)      = yy(ino3_kpp)
3232       return
3233       end subroutine cbmz_v02r03_mapconcs                                
3236 !-----------------------------------------------------------------------------
3237       subroutine cbmz_v02r03_maprates(   &
3238           rk_m1,   &
3239           rk_m2,   &
3240           rk_m3,   &
3241           rk_m4,   &
3242           rconst )
3244 !   maps reaction rate constants (host code array --> kpp rconst array)
3245 !   for mechanism-version-regime = cbmz_v02r03
3247       use module_data_cbmz
3248       implicit none
3250 !   subr parameters
3251 !     all are host-code reaction-rate-constant arrays [input]
3252       real rk_m1(*)
3253       real rk_m2(*)
3254       real rk_m3(*)
3255       real rk_m4(*)
3257       real rconst(nreact_kppmax)
3259 !   local variables
3260       integer i
3262       do i = 1, nreact_kppmax
3263           rconst(i) = 0.
3264       end do
3267       rconst(1) = (rk_m1(1))
3268       rconst(2) = (rk_m1(2))
3269       rconst(3) = (rk_m1(3))
3270       rconst(4) = (rk_m1(4))
3271       rconst(5) = (rk_m1(5))
3272       rconst(6) = (rk_m1(6))
3273       rconst(7) = (rk_m1(7))
3274       rconst(8) = (rk_m1(8))
3275       rconst(9) = (rk_m1(9))
3276       rconst(10) = (rk_m1(10))
3277       rconst(11) = (rk_m1(11))
3278       rconst(12) = (rk_m1(12))
3279       rconst(13) = (rk_m1(13))
3280       rconst(14) = (rk_m1(14))
3281       rconst(15) = (rk_m1(15))
3282       rconst(16) = (rk_m1(16))
3283       rconst(17) = (rk_m1(17))
3284       rconst(18) = (rk_m1(18))
3285       rconst(19) = (rk_m1(19))
3286       rconst(20) = (rk_m1(20))
3287       rconst(21) = (rk_m1(21))
3288       rconst(22) = (rk_m1(22))
3289       rconst(23) = (rk_m1(23))
3290       rconst(24) = (rk_m1(24))
3291       rconst(25) = (rk_m1(25))
3292       rconst(26) = (rk_m1(26))
3293       rconst(27) = (rk_m1(27))
3294       rconst(28) = (rk_m1(28))
3295       rconst(29) = (rk_m1(29))
3296       rconst(30) = (rk_m1(30))
3297       rconst(31) = (rk_m1(31))
3298       rconst(32) = (rk_m1(32))
3299       rconst(33) = (rk_m1(33))
3300       rconst(34) = (rk_m1(34))
3301       rconst(35) = (rk_m1(35))
3302       rconst(36) = (rk_m1(36))
3303       rconst(37) = (rk_m1(37))
3304       rconst(38) = (rk_m1(38))
3305       rconst(39) = (rk_m1(39))
3306       rconst(40) = (rk_m1(40))
3307       rconst(41) = (rk_m1(41))
3308       rconst(42) = (rk_m1(42))
3309       rconst(43) = (rk_m1(43))
3310       rconst(44) = (rk_m1(44))
3311       rconst(45) = (rk_m1(45))
3312       rconst(46) = (rk_m1(46))
3313       rconst(47) = (rk_m1(47))
3314       rconst(48) = (rk_m1(48))
3315       rconst(49) = (rk_m1(49))
3316       rconst(50) = (rk_m1(50))
3317       rconst(51) = (rk_m1(51))
3318       rconst(52) = (rk_m1(52))
3319       rconst(53) = (rk_m1(53))
3320       rconst(54) = (rk_m1(54))
3321       rconst(55) = (rk_m1(55))
3322       rconst(56) = (rk_m1(56))
3323       rconst(57) = (rk_m1(57))
3324       rconst(58) = (rk_m1(58))
3325       rconst(59) = (rk_m1(59))
3326       rconst(60) = (rk_m1(60))
3327       rconst(61) = (rk_m1(61))
3328       rconst(62) = (rk_m1(62))
3329       rconst(63) = (rk_m1(63))
3330       rconst(64) = (rk_m1(64))
3331       rconst(65) = (rk_m1(65))
3332       rconst(66) = (rk_m2(2))
3333       rconst(67) = (rk_m2(3))
3334       rconst(68) = (rk_m2(4))
3335       rconst(69) = (rk_m2(31))
3336       rconst(70) = (rk_m2(32))
3337       rconst(71) = (rk_m2(34))
3338       rconst(72) = (rk_m2(39))
3339       rconst(73) = (rk_m2(44))
3340       rconst(74) = (rk_m2(49))
3341       rconst(75) = (rk_m2(1))
3342       rconst(76) = (rk_m2(5))
3343       rconst(77) = (rk_m2(6))
3344       rconst(78) = (rk_m2(7))
3345       rconst(79) = (rk_m2(8))
3346       rconst(80) = (rk_m2(9))
3347       rconst(81) = (rk_m2(10))
3348       rconst(82) = (rk_m2(11))
3349       rconst(83) = (rk_m2(12))
3350       rconst(84) = (rk_m2(13))
3351       rconst(85) = (rk_m2(14))
3352       rconst(86) = (rk_m2(15))
3353       rconst(87) = (rk_m2(16))
3354       rconst(88) = (rk_m2(17))
3355       rconst(89) = (rk_m2(18))
3356       rconst(90) = (rk_m2(19))
3357       rconst(91) = (rk_m2(20))
3358       rconst(92) = (rk_m2(21))
3359       rconst(93) = (rk_m2(22))
3360       rconst(94) = (rk_m2(23))
3361       rconst(95) = (rk_m2(24))
3362       rconst(96) = (rk_m2(25))
3363       rconst(97) = (rk_m2(26))
3364       rconst(98) = (rk_m2(27))
3365       rconst(99) = (rk_m2(28))
3366       rconst(100) = (rk_m2(29))
3367       rconst(101) = (rk_m2(30))
3368       rconst(102) = (rk_m2(33))
3369       rconst(103) = (rk_m2(35))
3370       rconst(104) = (rk_m2(36))
3371       rconst(105) = (rk_m2(37))
3372       rconst(106) = (rk_m2(38))
3373       rconst(107) = (rk_m2(40))
3374       rconst(108) = (rk_m2(41))
3375       rconst(109) = (rk_m2(42))
3376       rconst(110) = (rk_m2(43))
3377       rconst(111) = (rk_m2(45))
3378       rconst(112) = (rk_m2(46))
3379       rconst(113) = (rk_m2(47))
3380       rconst(114) = (rk_m2(48))
3381       rconst(115) = (rk_m2(50))
3382       rconst(116) = (rk_m2(51))
3383       rconst(117) = (rk_m2(52))
3384       rconst(118) = (rk_m2(53))
3385       rconst(119) = (rk_m3(1))
3386       rconst(120) = (rk_m3(2))
3387       rconst(121) = (rk_m3(3))
3388       rconst(122) = (rk_m3(4))
3389       rconst(123) = (rk_m3(5))
3390       rconst(124) = (rk_m3(6))
3391       rconst(125) = (rk_m3(7))
3392       rconst(126) = (rk_m3(8))
3393       rconst(127) = (rk_m3(9))
3394       rconst(128) = (rk_m3(10))
3395       rconst(129) = (rk_m3(11))
3396       rconst(130) = (rk_m3(12))
3397       rconst(131) = (rk_m3(13))
3398       rconst(132) = (rk_m3(14))
3399       rconst(133) = (rk_m3(15))
3400       rconst(134) = (rk_m3(16))
3401       return
3402       end subroutine cbmz_v02r03_maprates 
3405 !-----------------------------------------------------------------------------
3406       subroutine cbmz_v02r03_dydt( nvardum, tdum, v, a_var, f, rconst )
3408 !   computes rates of change for mechanism-version-regime = cbmz_v02r03
3410       use module_data_cbmz
3411       implicit none
3413 !   subr parameters
3414 !     nvardum = number of variable species [input]
3415       integer nvardum
3416 !     tdum = time [input]
3417       real tdum
3418 !     v = concentrations of variable species [input]
3419       real v(nvar_r03_kpp)
3420 !     a_var = dydt for each species [output]
3421       real a_var(nvar_r03_kpp)
3422 !     f = concentrations of fixed species [input]
3423       real f(nfixed_kppmax)
3424 !     rconst = reaction rate constants [input]
3425       real rconst(nreact_r03_kpp)
3427 !   local variables
3428 !     a = rate for each reaction
3429       real a(nreact_r03_kpp)
3431 ! computation of equation rates
3432       a(1) = rconst(1)*v(52)
3433       a(2) = rconst(2)*v(53)
3434       a(3) = rconst(3)*v(19)
3435       a(4) = rconst(4)*v(24)
3436       a(5) = rconst(5)*v(14)
3437       a(6) = rconst(6)*v(11)
3438       a(7) = rconst(7)*v(49)
3439       a(8) = rconst(8)*v(49)
3440       a(9) = rconst(9)*v(7)
3441       a(10) = rconst(10)*v(4)*f(4)
3442       a(11) = rconst(11)*v(4)*f(5)
3443       a(12) = rconst(12)*v(4)*f(2)
3444       a(13) = rconst(13)*v(22)*f(4)
3445       a(14) = rconst(14)*v(22)*v(49)
3446       a(15) = rconst(15)*v(22)*v(52)
3447       a(16) = rconst(16)*v(22)*v(52)
3448       a(17) = rconst(17)*v(22)*v(51)
3449       a(18) = rconst(18)*v(49)*v(51)
3450       a(19) = rconst(19)*v(49)*v(52)
3451       a(20) = rconst(20)*v(48)*v(49)
3452       a(21) = rconst(21)*v(49)*v(50)
3453       a(22) = rconst(22)*v(48)*f(3)
3454       a(23) = rconst(23)*v(48)*v(51)
3455       a(24) = rconst(24)*v(48)*v(52)
3456       a(25) = rconst(25)*v(48)*v(53)
3457       a(26) = rconst(26)*v(19)*v(48)
3458       a(27) = rconst(27)*v(24)*v(48)
3459       a(28) = rconst(28)*v(14)*v(48)
3460       a(29) = rconst(29)*v(48)*v(50)
3461       a(30) = rconst(30)*v(7)*v(48)
3462       a(31) = rconst(31)*v(50)*v(50)
3463       a(32) = rconst(32)*v(50)*v(50)*f(2)
3464       a(33) = rconst(33)*v(50)*v(51)
3465       a(34) = rconst(34)*v(50)*v(52)
3466       a(35) = rconst(35)*v(50)*v(52)
3467       a(36) = rconst(36)*v(14)
3468       a(37) = rconst(37)*v(51)*v(53)
3469       a(38) = rconst(38)*v(52)*v(53)
3470       a(39) = rconst(39)*v(52)*v(53)
3471       a(40) = rconst(40)*v(53)*v(53)
3472       a(41) = rconst(41)*v(50)*v(53)
3473       a(42) = rconst(42)*v(11)*f(2)
3474       a(43) = rconst(43)*v(11)
3475       a(44) = rconst(44)*v(25)*v(48)
3476       a(45) = rconst(45)*v(5)*v(48)
3477       a(46) = rconst(46)*v(48)*f(1)
3478       a(47) = rconst(47)*v(8)*v(48)
3479       a(48) = rconst(48)*v(21)*v(48)
3480       a(49) = rconst(49)*v(33)
3481       a(50) = rconst(50)*v(33)
3482       a(51) = rconst(51)*v(33)*v(48)
3483       a(52) = rconst(52)*v(33)*v(53)
3484       a(53) = rconst(53)*v(17)
3485       a(54) = rconst(54)*v(18)
3486       a(55) = rconst(55)*v(17)*v(48)
3487       a(56) = rconst(56)*v(18)*v(48)
3488       a(57) = rconst(57)*v(41)*v(51)
3489       a(58) = rconst(58)*v(39)*v(51)
3490       a(59) = rconst(59)*v(41)*v(53)
3491       a(60) = rconst(60)*v(39)*v(53)
3492       a(61) = rconst(61)*v(41)*v(50)
3493       a(62) = rconst(62)*v(39)*v(50)
3494       a(63) = rconst(63)*v(41)
3495       a(64) = rconst(64)*v(39)
3496       a(65) = rconst(65)*v(6)*v(48)
3497       a(66) = rconst(66)*v(40)
3498       a(67) = rconst(67)*v(40)*v(48)
3499       a(68) = rconst(68)*v(40)*v(53)
3500       a(69) = rconst(69)*v(47)*v(52)
3501       a(70) = rconst(70)*v(9)
3502       a(71) = rconst(71)*v(47)*v(51)
3503       a(72) = rconst(72)*v(47)*v(53)
3504       a(73) = rconst(73)*v(47)*v(50)
3505       a(74) = rconst(74)*v(47)
3506       a(75) = rconst(75)*v(26)*v(48)
3507       a(76) = rconst(76)*v(35)
3508       a(77) = rconst(77)*v(35)*v(48)
3509       a(78) = rconst(78)*v(38)
3510       a(79) = rconst(79)*v(38)*v(48)
3511       a(80) = rconst(80)*v(38)*v(53)
3512       a(81) = rconst(81)*v(20)*v(49)
3513       a(82) = rconst(82)*v(20)*v(48)
3514       a(83) = rconst(83)*v(31)*v(49)
3515       a(84) = rconst(84)*v(36)*v(49)
3516       a(85) = rconst(85)*v(31)*v(48)
3517       a(86) = rconst(86)*v(36)*v(48)
3518       a(87) = rconst(87)*v(31)*v(53)
3519       a(88) = rconst(88)*v(36)*v(53)
3520       a(89) = rconst(89)*v(10)*v(48)
3521       a(90) = rconst(90)*v(12)*v(48)
3522       a(91) = rconst(91)*v(15)*v(51)
3523       a(92) = rconst(92)*v(23)*v(48)
3524       a(93) = rconst(93)*v(23)*v(53)
3525       a(94) = rconst(94)*v(13)*v(52)
3526       a(95) = rconst(95)*v(27)*v(48)
3527       a(96) = rconst(96)*v(27)
3528       a(97) = rconst(97)*v(27)*v(49)
3529       a(98) = rconst(98)*v(44)
3530       a(99) = rconst(99)*v(44)*v(48)
3531       a(100) = rconst(100)*v(46)*v(48)
3532       a(101) = rconst(101)*v(46)
3533       a(102) = rconst(102)*v(45)*v(51)
3534       a(103) = rconst(103)*v(43)*v(51)
3535       a(104) = rconst(104)*v(37)*v(51)
3536       a(105) = rconst(105)*v(34)*v(51)
3537       a(106) = rconst(106)*v(45)*v(53)
3538       a(107) = rconst(107)*v(43)*v(53)
3539       a(108) = rconst(108)*v(37)*v(53)
3540       a(109) = rconst(109)*v(34)*v(53)
3541       a(110) = rconst(110)*v(45)*v(50)
3542       a(111) = rconst(111)*v(43)*v(50)
3543       a(112) = rconst(112)*v(37)*v(50)
3544       a(113) = rconst(113)*v(34)*v(50)
3545       a(114) = rconst(114)*v(45)
3546       a(115) = rconst(115)*v(43)
3547       a(116) = rconst(116)*v(37)
3548       a(117) = rconst(117)*v(34)
3549       a(118) = rconst(118)*v(16)*v(26)
3550       a(119) = rconst(119)*v(32)*v(48)
3551       a(120) = rconst(120)*v(32)*v(49)
3552       a(121) = rconst(121)*v(32)*v(53)
3553       a(122) = rconst(122)*v(42)
3554       a(123) = rconst(123)*v(42)*v(48)
3555       a(124) = rconst(124)*v(42)*v(49)
3556       a(125) = rconst(125)*v(42)*v(53)
3557       a(126) = rconst(126)*v(29)*v(51)
3558       a(127) = rconst(127)*v(28)*v(51)
3559       a(128) = rconst(128)*v(30)*v(51)
3560       a(129) = rconst(129)*v(29)*v(50)
3561       a(130) = rconst(130)*v(28)*v(50)
3562       a(131) = rconst(131)*v(30)*v(50)
3563       a(132) = rconst(132)*v(29)
3564       a(133) = rconst(133)*v(28)
3565       a(134) = rconst(134)*v(30)
3567 ! aggregate function
3568       a_var(1) = a(45)
3569       a_var(2) = 0.52*a(81)+0.22*a(83)+0.39*a(120)+0.46*a(124)
3570       a_var(3) = 0.4*a(73)+0.09*a(83)+0.16*a(84)
3571       a_var(4) = a(8)-a(10)-a(11)-a(12)
3572       a_var(5) = -a(45)
3573       a_var(6) = -a(65)
3574       a_var(7) = -a(9)-a(30)+a(31)+a(32)
3575       a_var(8) = -a(47)+0.2*a(64)
3576       a_var(9) = a(69)-a(70)
3577       a_var(10) = -a(89)
3578       a_var(11) = -a(6)+a(39)-a(42)-a(43)
3579       a_var(12) = -a(90)
3580       a_var(13) = 0.4*a(92)+a(93)-a(94)
3581       a_var(14) = -a(5)-a(28)+a(34)-a(36)
3582       a_var(15) = 0.8*a(89)+0.45*a(90)-a(91)
3583       a_var(16) = 1.06*a(83)+2.26*a(84)+a(85)+2.23*a(86)+1.98*a(98)   &
3584                  +0.42*a(99)+1.98*a(101)+1.68*a(102)+a(104)+1.98   &
3585                  *a(106)+a(108)+1.25*a(114)+a(116)-a(118)
3586       a_var(17) = -a(53)-a(55)+a(61)
3587       a_var(18) = -a(54)-a(56)+a(62)
3588       a_var(19) = -a(3)+a(23)-a(26)+a(35)
3589       a_var(20) = -a(81)-a(82)
3590       a_var(21) = -a(48)+0.34*a(63)+0.03*a(83)+0.04*a(84)
3591       a_var(22) = a(1)+0.89*a(2)+a(7)+a(10)+a(11)-a(13)-a(14)-a(15)   &
3592                  -a(16)-a(17)
3593       a_var(23) = 0.12*a(89)+0.05*a(90)-a(92)-a(93)
3594       a_var(24) = -a(4)+a(24)-a(27)+0.3*a(41)+2*a(42)+a(52)+a(68)   &
3595                  +a(80)+a(93)+0.07*a(125)
3596       a_var(25) = -a(44)+a(49)+a(50)+a(51)+a(52)+a(66)+a(78)+a(80)   &
3597                  +0.24*a(81)+0.31*a(83)+0.3*a(84)+2*a(95)+a(96)+0.69   &
3598                  *a(97)+0.07*a(120)+0.33*a(122)+0.16*a(124)+0.64   &
3599                  *a(125)+0.59*a(128)
3600       a_var(26) = -a(75)+1.1*a(90)-a(118)+1.86*a(125)+0.18*a(126)+1.6   &
3601                  *a(127)+2*a(130)+2*a(133)
3602       a_var(27) = 0.95*a(91)+0.3*a(92)-a(95)-a(96)-a(97)
3603       a_var(28) = a(121)-a(127)-a(130)-a(133)
3604       a_var(29) = a(119)-a(126)-a(129)-a(132)
3605       a_var(30) = 0.5*a(123)-a(128)-a(131)-a(134)
3606       a_var(31) = -a(83)-a(85)-a(87)
3607       a_var(32) = -a(119)-a(120)-a(121)
3608       a_var(33) = a(48)-a(49)-a(50)-a(51)-a(52)+a(53)+0.3*a(55)+a(57)   &
3609                  +a(59)+0.66*a(63)+a(81)+1.56*a(82)+0.57*a(83)+a(85)   &
3610                  +a(95)+0.7*a(97)+a(103)+0.5*a(104)+a(107)+0.5*a(108)   &
3611                  +0.7*a(115)+0.5*a(116)+0.6*a(120)+0.2*a(122)+0.15   &
3612                  *a(124)+0.28*a(125)+0.63*a(126)+0.25*a(128)
3613       a_var(34) = a(79)+a(82)+a(85)+a(86)+0.08*a(89)+0.5*a(90)+0.6   &
3614                  *a(92)+a(95)+0.03*a(97)+0.4*a(98)+0.4*a(101)+0.34   &
3615                  *a(102)-a(105)+0.4*a(106)-a(109)-a(113)+0.24*a(114)   &
3616                  -a(117)+0.08*a(119)+0.2*a(120)+0.2*a(123)+0.07*a(124)   &
3617                  +0.93*a(125)
3618       a_var(35) = -a(76)-a(77)+0.07*a(84)+0.23*a(86)+0.74*a(98)+0.74   &
3619                  *a(101)+0.62*a(102)+0.74*a(106)+0.57*a(114)+0.15   &
3620                  *a(115)+0.03*a(122)+0.09*a(124)+0.63*a(128)+0.5   &
3621                  *a(134)
3622       a_var(36) = -a(84)-a(86)-a(88)
3623       a_var(37) = a(87)+a(88)+a(100)-a(104)-a(108)-a(112)-a(116)
3624       a_var(38) = -a(78)-a(79)-a(80)+0.04*a(83)+0.07*a(84)+0.8*a(90)   &
3625                  +0.2*a(97)+0.19*a(99)+0.15*a(115)+0.85*a(124)+0.34   &
3626                  *a(128)
3627       a_var(39) = a(47)+0.5*a(56)-a(58)-a(60)-a(62)-a(64)+0.06*a(83)   &
3628                  +0.05*a(84)+0.1*a(98)+0.1*a(101)+0.08*a(102)+0.1   &
3629                  *a(106)+0.06*a(114)
3630       a_var(40) = a(54)+0.5*a(56)+a(58)+a(60)+0.8*a(64)+a(65)-a(66)   &
3631                  -a(67)-a(68)+0.22*a(82)+0.47*a(83)+1.03*a(84)+a(85)   &
3632                  +1.77*a(86)+0.03*a(97)+0.3*a(98)+0.04*a(99)+0.3   &
3633                  *a(101)+0.25*a(102)+0.5*a(104)+0.3*a(106)+0.5*a(108)   &
3634                  +0.21*a(114)+0.5*a(116)+0.15*a(120)+0.07*a(122)+0.02   &
3635                  *a(124)+0.28*a(125)+0.8*a(127)+0.55*a(128)+a(133)+0.5   &
3636                  *a(134)
3637       a_var(41) = a(46)+0.7*a(55)-a(57)-a(59)-a(61)-a(63)+a(66)+a(71)   &
3638                  +a(72)+a(74)+a(76)+0.07*a(83)+0.1*a(84)+0.7*a(122)   &
3639                  +0.05*a(124)
3640       a_var(42) = 0.65*a(120)-a(122)-a(123)-a(124)-a(125)+0.91*a(126)   &
3641                  +0.2*a(127)+a(132)
3642       a_var(43) = a(77)+0.11*a(84)-a(103)-a(107)-a(111)-a(115)
3643       a_var(44) = -a(98)-a(99)+a(110)+a(111)+a(129)+a(131)
3644       a_var(45) = a(75)+0.03*a(83)+0.09*a(84)+0.77*a(99)-a(102)-a(106)   &
3645                  -a(110)-a(114)
3646       a_var(46) = 0.05*a(91)+a(94)-a(100)-a(101)+0.16*a(102)+0.5   &
3647                  *a(104)+0.5*a(108)+a(112)+0.5*a(116)+0.93*a(125)+0.09   &
3648                  *a(126)+0.8*a(127)+a(130)+a(133)
3649       a_var(47) = a(67)+a(68)-a(69)+a(70)-a(71)-a(72)-a(73)-a(74)   &
3650                  +a(76)+a(78)+a(79)+a(80)+0.13*a(83)+0.19*a(84)+a(95)   &
3651                  +a(96)+0.62*a(97)+a(103)+a(107)+0.7*a(115)+0.2*a(120)   &
3652                  +0.97*a(122)+0.5*a(123)+0.11*a(124)+0.07*a(125)
3653       a_var(48) = a(3)+a(4)+2*a(9)+2*a(12)-a(20)+a(21)-a(22)-a(23)   &
3654                  -a(24)-a(25)-a(26)-a(27)-a(28)-a(29)-a(30)+a(33)+0.7   &
3655                  *a(41)-a(44)-a(45)-a(46)-a(47)-a(48)-a(51)+a(53)   &
3656                  +a(54)-0.7*a(55)-0.5*a(56)-a(65)-a(67)-a(75)-a(77)   &
3657                  -a(79)+0.12*a(81)-a(82)+0.33*a(83)+0.6*a(84)-a(85)   &
3658                  -a(86)-a(89)-a(90)-a(92)-a(95)+0.08*a(97)+a(98)-0.77   &
3659                  *a(99)-a(100)-a(119)+0.27*a(120)-a(123)+0.27*a(124)
3660       a_var(49) = -a(7)-a(8)+a(13)-a(14)-a(18)-a(19)-a(20)-a(21)+0.4   &
3661                  *a(73)-a(81)-a(83)-a(84)-a(97)-a(120)-a(124)
3662       a_var(50) = a(5)+a(20)-a(21)+a(22)+a(25)-a(29)+a(30)-2*a(31)-2   &
3663                  *a(32)-a(33)-a(34)-a(35)+a(36)-a(41)+a(44)+a(45)   &
3664                  +a(48)+2*a(49)+a(51)+a(52)+a(53)+a(54)+a(57)+a(58)   &
3665                  +a(59)+a(60)-a(61)-a(62)+0.32*a(63)+0.6*a(64)+a(65)   &
3666                  +a(66)-a(73)+a(78)+0.22*a(81)+a(82)+0.26*a(83)+0.22   &
3667                  *a(84)+a(85)+a(86)+0.2*a(89)+0.55*a(90)+0.95*a(91)   &
3668                  +0.6*a(92)+2*a(95)+a(96)+0.76*a(97)+0.9*a(98)+0.9   &
3669                  *a(101)+0.76*a(102)+0.5*a(104)+0.9*a(106)+0.5*a(108)   &
3670                  -a(110)-a(111)-a(112)-a(113)+0.54*a(114)+0.07*a(120)   &
3671                  +0.33*a(122)+0.1*a(124)+0.93*a(125)+0.91*a(126)+0.8   &
3672                  *a(127)+a(128)-a(129)-a(130)-a(131)
3673       a_var(51) = a(1)+0.11*a(2)+a(3)+a(15)-a(17)-a(18)-a(23)-a(33)   &
3674                  -a(37)+a(38)-a(57)-a(58)-a(71)-a(91)-a(102)-a(103)   &
3675                  -a(104)-a(105)-a(126)-a(127)-a(128)
3676       a_var(52) = -a(1)+0.89*a(2)+a(4)+a(5)+a(6)-a(15)-a(16)+a(17)   &
3677                  +a(18)-a(19)-a(24)+a(25)+a(26)+a(28)+a(33)-a(34)   &
3678                  -a(35)+a(36)+2*a(37)-a(39)+2*a(40)+0.7*a(41)+a(43)   &
3679                  +a(57)+a(58)+a(59)+a(60)-a(69)+a(70)+a(71)+a(72)+0.95   &
3680                  *a(91)-a(94)+a(101)+0.84*a(102)+a(103)+1.5*a(104)   &
3681                  +a(105)+a(106)+a(107)+1.5*a(108)+a(109)+0.5*a(116)   &
3682                  +0.91*a(126)+1.2*a(127)+a(128)
3683       a_var(53) = -a(2)+a(6)+a(16)+a(19)-a(25)+a(27)-a(37)-a(38)-a(39)   &
3684                  -2*a(40)-a(41)+a(43)-a(52)-a(59)-a(60)-a(68)-a(72)   &
3685                  -a(80)-a(87)-a(88)-a(93)-a(106)-a(107)-a(108)-a(109)   &
3686                  -a(121)-a(125)
3687       return
3688       end subroutine cbmz_v02r03_dydt                                      
3691 !-----------------------------------------------------------------------------
3692       subroutine cbmz_v02r03_jacob( nvardum, tdum, v, jvs, f, rconst )
3694 !   computes jacobian for mechanism-version-regime = cbmz_v02r03
3696       use module_data_cbmz
3697       implicit none
3699 !   subr parameters
3700 !     nvardum = number of variable species [input]
3701       integer nvardum
3702 !     tdum = time [input]
3703       real tdum
3704 !     v = concentrations of variable species [input]
3705       real v(nvar_r03_kpp)
3706 !     jvs = non-zero jacobian elements [output]
3707       real jvs(lu_nonzero_v_r03_kpp)
3708 !     f = concentrations of fixed species [input]
3709       real f(nfixed_kppmax)
3710 !     rconst = reaction rate constants [input]
3711       real rconst(nreact_r03_kpp)
3713 !   local variables
3714 !     b(i,j) = d[reaction_rate(i)] / d[species_conc(j)]
3715       real b(nreact_r03_kpp,nvar_r03_kpp)
3717 ! computation of b(i,j) = da(i)/dv(j)
3718       b(1,52) = rconst(1)
3719       b(2,53) = rconst(2)
3720       b(3,19) = rconst(3)
3721       b(4,24) = rconst(4)
3722       b(5,14) = rconst(5)
3723       b(6,11) = rconst(6)
3724       b(7,49) = rconst(7)
3725       b(8,49) = rconst(8)
3726       b(9,7) = rconst(9)
3727       b(10,4) = rconst(10)*f(4)
3728       b(11,4) = rconst(11)*f(5)
3729       b(12,4) = rconst(12)*f(2)
3730       b(13,22) = rconst(13)*f(4)
3731       b(14,22) = rconst(14)*v(49)
3732       b(14,49) = rconst(14)*v(22)
3733       b(15,22) = rconst(15)*v(52)
3734       b(15,52) = rconst(15)*v(22)
3735       b(16,22) = rconst(16)*v(52)
3736       b(16,52) = rconst(16)*v(22)
3737       b(17,22) = rconst(17)*v(51)
3738       b(17,51) = rconst(17)*v(22)
3739       b(18,49) = rconst(18)*v(51)
3740       b(18,51) = rconst(18)*v(49)
3741       b(19,49) = rconst(19)*v(52)
3742       b(19,52) = rconst(19)*v(49)
3743       b(20,48) = rconst(20)*v(49)
3744       b(20,49) = rconst(20)*v(48)
3745       b(21,49) = rconst(21)*v(50)
3746       b(21,50) = rconst(21)*v(49)
3747       b(22,48) = rconst(22)*f(3)
3748       b(23,48) = rconst(23)*v(51)
3749       b(23,51) = rconst(23)*v(48)
3750       b(24,48) = rconst(24)*v(52)
3751       b(24,52) = rconst(24)*v(48)
3752       b(25,48) = rconst(25)*v(53)
3753       b(25,53) = rconst(25)*v(48)
3754       b(26,19) = rconst(26)*v(48)
3755       b(26,48) = rconst(26)*v(19)
3756       b(27,24) = rconst(27)*v(48)
3757       b(27,48) = rconst(27)*v(24)
3758       b(28,14) = rconst(28)*v(48)
3759       b(28,48) = rconst(28)*v(14)
3760       b(29,48) = rconst(29)*v(50)
3761       b(29,50) = rconst(29)*v(48)
3762       b(30,7) = rconst(30)*v(48)
3763       b(30,48) = rconst(30)*v(7)
3764       b(31,50) = rconst(31)*2*v(50)
3765       b(32,50) = rconst(32)*2*v(50)*f(2)
3766       b(33,50) = rconst(33)*v(51)
3767       b(33,51) = rconst(33)*v(50)
3768       b(34,50) = rconst(34)*v(52)
3769       b(34,52) = rconst(34)*v(50)
3770       b(35,50) = rconst(35)*v(52)
3771       b(35,52) = rconst(35)*v(50)
3772       b(36,14) = rconst(36)
3773       b(37,51) = rconst(37)*v(53)
3774       b(37,53) = rconst(37)*v(51)
3775       b(38,52) = rconst(38)*v(53)
3776       b(38,53) = rconst(38)*v(52)
3777       b(39,52) = rconst(39)*v(53)
3778       b(39,53) = rconst(39)*v(52)
3779       b(40,53) = rconst(40)*2*v(53)
3780       b(41,50) = rconst(41)*v(53)
3781       b(41,53) = rconst(41)*v(50)
3782       b(42,11) = rconst(42)*f(2)
3783       b(43,11) = rconst(43)
3784       b(44,25) = rconst(44)*v(48)
3785       b(44,48) = rconst(44)*v(25)
3786       b(45,5) = rconst(45)*v(48)
3787       b(45,48) = rconst(45)*v(5)
3788       b(46,48) = rconst(46)*f(1)
3789       b(47,8) = rconst(47)*v(48)
3790       b(47,48) = rconst(47)*v(8)
3791       b(48,21) = rconst(48)*v(48)
3792       b(48,48) = rconst(48)*v(21)
3793       b(49,33) = rconst(49)
3794       b(50,33) = rconst(50)
3795       b(51,33) = rconst(51)*v(48)
3796       b(51,48) = rconst(51)*v(33)
3797       b(52,33) = rconst(52)*v(53)
3798       b(52,53) = rconst(52)*v(33)
3799       b(53,17) = rconst(53)
3800       b(54,18) = rconst(54)
3801       b(55,17) = rconst(55)*v(48)
3802       b(55,48) = rconst(55)*v(17)
3803       b(56,18) = rconst(56)*v(48)
3804       b(56,48) = rconst(56)*v(18)
3805       b(57,41) = rconst(57)*v(51)
3806       b(57,51) = rconst(57)*v(41)
3807       b(58,39) = rconst(58)*v(51)
3808       b(58,51) = rconst(58)*v(39)
3809       b(59,41) = rconst(59)*v(53)
3810       b(59,53) = rconst(59)*v(41)
3811       b(60,39) = rconst(60)*v(53)
3812       b(60,53) = rconst(60)*v(39)
3813       b(61,41) = rconst(61)*v(50)
3814       b(61,50) = rconst(61)*v(41)
3815       b(62,39) = rconst(62)*v(50)
3816       b(62,50) = rconst(62)*v(39)
3817       b(63,41) = rconst(63)
3818       b(64,39) = rconst(64)
3819       b(65,6) = rconst(65)*v(48)
3820       b(65,48) = rconst(65)*v(6)
3821       b(66,40) = rconst(66)
3822       b(67,40) = rconst(67)*v(48)
3823       b(67,48) = rconst(67)*v(40)
3824       b(68,40) = rconst(68)*v(53)
3825       b(68,53) = rconst(68)*v(40)
3826       b(69,47) = rconst(69)*v(52)
3827       b(69,52) = rconst(69)*v(47)
3828       b(70,9) = rconst(70)
3829       b(71,47) = rconst(71)*v(51)
3830       b(71,51) = rconst(71)*v(47)
3831       b(72,47) = rconst(72)*v(53)
3832       b(72,53) = rconst(72)*v(47)
3833       b(73,47) = rconst(73)*v(50)
3834       b(73,50) = rconst(73)*v(47)
3835       b(74,47) = rconst(74)
3836       b(75,26) = rconst(75)*v(48)
3837       b(75,48) = rconst(75)*v(26)
3838       b(76,35) = rconst(76)
3839       b(77,35) = rconst(77)*v(48)
3840       b(77,48) = rconst(77)*v(35)
3841       b(78,38) = rconst(78)
3842       b(79,38) = rconst(79)*v(48)
3843       b(79,48) = rconst(79)*v(38)
3844       b(80,38) = rconst(80)*v(53)
3845       b(80,53) = rconst(80)*v(38)
3846       b(81,20) = rconst(81)*v(49)
3847       b(81,49) = rconst(81)*v(20)
3848       b(82,20) = rconst(82)*v(48)
3849       b(82,48) = rconst(82)*v(20)
3850       b(83,31) = rconst(83)*v(49)
3851       b(83,49) = rconst(83)*v(31)
3852       b(84,36) = rconst(84)*v(49)
3853       b(84,49) = rconst(84)*v(36)
3854       b(85,31) = rconst(85)*v(48)
3855       b(85,48) = rconst(85)*v(31)
3856       b(86,36) = rconst(86)*v(48)
3857       b(86,48) = rconst(86)*v(36)
3858       b(87,31) = rconst(87)*v(53)
3859       b(87,53) = rconst(87)*v(31)
3860       b(88,36) = rconst(88)*v(53)
3861       b(88,53) = rconst(88)*v(36)
3862       b(89,10) = rconst(89)*v(48)
3863       b(89,48) = rconst(89)*v(10)
3864       b(90,12) = rconst(90)*v(48)
3865       b(90,48) = rconst(90)*v(12)
3866       b(91,15) = rconst(91)*v(51)
3867       b(91,51) = rconst(91)*v(15)
3868       b(92,23) = rconst(92)*v(48)
3869       b(92,48) = rconst(92)*v(23)
3870       b(93,23) = rconst(93)*v(53)
3871       b(93,53) = rconst(93)*v(23)
3872       b(94,13) = rconst(94)*v(52)
3873       b(94,52) = rconst(94)*v(13)
3874       b(95,27) = rconst(95)*v(48)
3875       b(95,48) = rconst(95)*v(27)
3876       b(96,27) = rconst(96)
3877       b(97,27) = rconst(97)*v(49)
3878       b(97,49) = rconst(97)*v(27)
3879       b(98,44) = rconst(98)
3880       b(99,44) = rconst(99)*v(48)
3881       b(99,48) = rconst(99)*v(44)
3882       b(100,46) = rconst(100)*v(48)
3883       b(100,48) = rconst(100)*v(46)
3884       b(101,46) = rconst(101)
3885       b(102,45) = rconst(102)*v(51)
3886       b(102,51) = rconst(102)*v(45)
3887       b(103,43) = rconst(103)*v(51)
3888       b(103,51) = rconst(103)*v(43)
3889       b(104,37) = rconst(104)*v(51)
3890       b(104,51) = rconst(104)*v(37)
3891       b(105,34) = rconst(105)*v(51)
3892       b(105,51) = rconst(105)*v(34)
3893       b(106,45) = rconst(106)*v(53)
3894       b(106,53) = rconst(106)*v(45)
3895       b(107,43) = rconst(107)*v(53)
3896       b(107,53) = rconst(107)*v(43)
3897       b(108,37) = rconst(108)*v(53)
3898       b(108,53) = rconst(108)*v(37)
3899       b(109,34) = rconst(109)*v(53)
3900       b(109,53) = rconst(109)*v(34)
3901       b(110,45) = rconst(110)*v(50)
3902       b(110,50) = rconst(110)*v(45)
3903       b(111,43) = rconst(111)*v(50)
3904       b(111,50) = rconst(111)*v(43)
3905       b(112,37) = rconst(112)*v(50)
3906       b(112,50) = rconst(112)*v(37)
3907       b(113,34) = rconst(113)*v(50)
3908       b(113,50) = rconst(113)*v(34)
3909       b(114,45) = rconst(114)
3910       b(115,43) = rconst(115)
3911       b(116,37) = rconst(116)
3912       b(117,34) = rconst(117)
3913       b(118,16) = rconst(118)*v(26)
3914       b(118,26) = rconst(118)*v(16)
3915       b(119,32) = rconst(119)*v(48)
3916       b(119,48) = rconst(119)*v(32)
3917       b(120,32) = rconst(120)*v(49)
3918       b(120,49) = rconst(120)*v(32)
3919       b(121,32) = rconst(121)*v(53)
3920       b(121,53) = rconst(121)*v(32)
3921       b(122,42) = rconst(122)
3922       b(123,42) = rconst(123)*v(48)
3923       b(123,48) = rconst(123)*v(42)
3924       b(124,42) = rconst(124)*v(49)
3925       b(124,49) = rconst(124)*v(42)
3926       b(125,42) = rconst(125)*v(53)
3927       b(125,53) = rconst(125)*v(42)
3928       b(126,29) = rconst(126)*v(51)
3929       b(126,51) = rconst(126)*v(29)
3930       b(127,28) = rconst(127)*v(51)
3931       b(127,51) = rconst(127)*v(28)
3932       b(128,30) = rconst(128)*v(51)
3933       b(128,51) = rconst(128)*v(30)
3934       b(129,29) = rconst(129)*v(50)
3935       b(129,50) = rconst(129)*v(29)
3936       b(130,28) = rconst(130)*v(50)
3937       b(130,50) = rconst(130)*v(28)
3938       b(131,30) = rconst(131)*v(50)
3939       b(131,50) = rconst(131)*v(30)
3940       b(132,29) = rconst(132)
3941       b(133,28) = rconst(133)
3942       b(134,30) = rconst(134)
3944 ! construct the jacobian terms from b's
3945       jvs(1) = 0
3946       jvs(2) = b(45,5)
3947       jvs(3) = b(45,48)
3948       jvs(4) = 0
3949       jvs(5) = 0.52*b(81,20)
3950       jvs(6) = 0.22*b(83,31)
3951       jvs(7) = 0.39*b(120,32)
3952       jvs(8) = 0.46*b(124,42)
3953       jvs(9) = 0.52*b(81,49)+0.22*b(83,49)+0.39*b(120,49)+0.46   &
3954               *b(124,49)
3955       jvs(10) = 0
3956       jvs(11) = 0.09*b(83,31)
3957       jvs(12) = 0.16*b(84,36)
3958       jvs(13) = 0.4*b(73,47)
3959       jvs(14) = 0.09*b(83,49)+0.16*b(84,49)
3960       jvs(15) = 0.4*b(73,50)
3961       jvs(16) = -b(10,4)-b(11,4)-b(12,4)
3962       jvs(17) = b(8,49)
3963       jvs(18) = -b(45,5)
3964       jvs(19) = -b(45,48)
3965       jvs(20) = -b(65,6)
3966       jvs(21) = -b(65,48)
3967       jvs(22) = -b(9,7)-b(30,7)
3968       jvs(23) = -b(30,48)
3969       jvs(24) = b(31,50)+b(32,50)
3970       jvs(25) = -b(47,8)
3971       jvs(26) = 0.2*b(64,39)
3972       jvs(27) = -b(47,48)
3973       jvs(28) = -b(70,9)
3974       jvs(29) = b(69,47)
3975       jvs(30) = b(69,52)
3976       jvs(31) = -b(89,10)
3977       jvs(32) = -b(89,48)
3978       jvs(33) = -b(6,11)-b(42,11)-b(43,11)
3979       jvs(34) = b(39,52)
3980       jvs(35) = b(39,53)
3981       jvs(36) = -b(90,12)
3982       jvs(37) = -b(90,48)
3983       jvs(38) = -b(94,13)
3984       jvs(39) = 0.4*b(92,23)+b(93,23)
3985       jvs(40) = 0.4*b(92,48)
3986       jvs(41) = -b(94,52)
3987       jvs(42) = b(93,53)
3988       jvs(43) = -b(5,14)-b(28,14)-b(36,14)
3989       jvs(44) = -b(28,48)
3990       jvs(45) = b(34,50)
3991       jvs(46) = b(34,52)
3992       jvs(47) = 0.8*b(89,10)
3993       jvs(48) = 0.45*b(90,12)
3994       jvs(49) = -b(91,15)
3995       jvs(50) = 0.8*b(89,48)+0.45*b(90,48)
3996       jvs(51) = -b(91,51)
3997       jvs(52) = -b(118,16)
3998       jvs(53) = -b(118,26)
3999       jvs(54) = 1.06*b(83,31)+b(85,31)
4000       jvs(55) = 2.26*b(84,36)+2.23*b(86,36)
4001       jvs(56) = b(104,37)+b(108,37)+b(116,37)
4002       jvs(57) = 1.98*b(98,44)+0.42*b(99,44)
4003       jvs(58) = 1.68*b(102,45)+1.98*b(106,45)+1.25*b(114,45)
4004       jvs(59) = 1.98*b(101,46)
4005       jvs(60) = b(85,48)+2.23*b(86,48)+0.42*b(99,48)
4006       jvs(61) = 1.06*b(83,49)+2.26*b(84,49)
4007       jvs(62) = 1.68*b(102,51)+b(104,51)
4008       jvs(63) = 1.98*b(106,53)+b(108,53)
4009       jvs(64) = -b(53,17)-b(55,17)
4010       jvs(65) = b(61,41)
4011       jvs(66) = -b(55,48)
4012       jvs(67) = b(61,50)
4013       jvs(68) = -b(54,18)-b(56,18)
4014       jvs(69) = b(62,39)
4015       jvs(70) = -b(56,48)
4016       jvs(71) = b(62,50)
4017       jvs(72) = -b(3,19)-b(26,19)
4018       jvs(73) = b(23,48)-b(26,48)
4019       jvs(74) = b(35,50)
4020       jvs(75) = b(23,51)
4021       jvs(76) = b(35,52)
4022       jvs(77) = -b(81,20)-b(82,20)
4023       jvs(78) = -b(82,48)
4024       jvs(79) = -b(81,49)
4025       jvs(80) = -b(48,21)
4026       jvs(81) = 0.03*b(83,31)
4027       jvs(82) = 0.04*b(84,36)
4028       jvs(83) = 0.34*b(63,41)
4029       jvs(84) = -b(48,48)
4030       jvs(85) = 0.03*b(83,49)+0.04*b(84,49)
4031       jvs(86) = b(10,4)+b(11,4)
4032       jvs(87) = -b(13,22)-b(14,22)-b(15,22)-b(16,22)-b(17,22)
4033       jvs(88) = b(7,49)-b(14,49)
4034       jvs(89) = -b(17,51)
4035       jvs(90) = b(1,52)-b(15,52)-b(16,52)
4036       jvs(91) = 0.89*b(2,53)
4037       jvs(92) = 0.12*b(89,10)
4038       jvs(93) = 0.05*b(90,12)
4039       jvs(94) = -b(92,23)-b(93,23)
4040       jvs(95) = 0.12*b(89,48)+0.05*b(90,48)-b(92,48)
4041       jvs(96) = -b(93,53)
4042       jvs(97) = 2*b(42,11)
4043       jvs(98) = b(93,23)
4044       jvs(99) = -b(4,24)-b(27,24)
4045       jvs(100) = b(52,33)
4046       jvs(101) = b(80,38)
4047       jvs(102) = b(68,40)
4048       jvs(103) = 0.07*b(125,42)
4049       jvs(104) = b(24,48)-b(27,48)
4050       jvs(105) = 0.3*b(41,50)
4051       jvs(106) = b(24,52)
4052       jvs(107) = 0.3*b(41,53)+b(52,53)+b(68,53)+b(80,53)+b(93,53)+0.07   &
4053                 *b(125,53)
4054       jvs(108) = 0.24*b(81,20)
4055       jvs(109) = -b(44,25)
4056       jvs(110) = 2*b(95,27)+b(96,27)+0.69*b(97,27)
4057       jvs(111) = 0.59*b(128,30)
4058       jvs(112) = 0.31*b(83,31)
4059       jvs(113) = 0.07*b(120,32)
4060       jvs(114) = b(49,33)+b(50,33)+b(51,33)+b(52,33)
4061       jvs(115) = 0.3*b(84,36)
4062       jvs(116) = b(78,38)+b(80,38)
4063       jvs(117) = b(66,40)
4064       jvs(118) = 0.33*b(122,42)+0.16*b(124,42)+0.64*b(125,42)
4065       jvs(119) = -b(44,48)+b(51,48)+2*b(95,48)
4066       jvs(120) = 0.24*b(81,49)+0.31*b(83,49)+0.3*b(84,49)+0.69   &
4067                 *b(97,49)+0.07*b(120,49)+0.16*b(124,49)
4068       jvs(121) = 0.59*b(128,51)
4069       jvs(122) = b(52,53)+b(80,53)+0.64*b(125,53)
4070       jvs(123) = 1.1*b(90,12)
4071       jvs(124) = -b(118,16)
4072       jvs(125) = -b(75,26)-b(118,26)
4073       jvs(126) = 1.6*b(127,28)+2*b(130,28)+2*b(133,28)
4074       jvs(127) = 0.18*b(126,29)
4075       jvs(128) = 0
4076       jvs(129) = 0
4077       jvs(130) = 0
4078       jvs(131) = 1.86*b(125,42)
4079       jvs(132) = 0
4080       jvs(133) = 0
4081       jvs(134) = 0
4082       jvs(135) = -b(75,48)+1.1*b(90,48)
4083       jvs(136) = 0
4084       jvs(137) = 2*b(130,50)
4085       jvs(138) = 0.18*b(126,51)+1.6*b(127,51)
4086       jvs(139) = 1.86*b(125,53)
4087       jvs(140) = 0.95*b(91,15)
4088       jvs(141) = 0.3*b(92,23)
4089       jvs(142) = -b(95,27)-b(96,27)-b(97,27)
4090       jvs(143) = 0.3*b(92,48)-b(95,48)
4091       jvs(144) = -b(97,49)
4092       jvs(145) = 0.95*b(91,51)
4093       jvs(146) = 0
4094       jvs(147) = -b(127,28)-b(130,28)-b(133,28)
4095       jvs(148) = b(121,32)
4096       jvs(149) = -b(130,50)
4097       jvs(150) = -b(127,51)
4098       jvs(151) = b(121,53)
4099       jvs(152) = -b(126,29)-b(129,29)-b(132,29)
4100       jvs(153) = b(119,32)
4101       jvs(154) = b(119,48)
4102       jvs(155) = -b(129,50)
4103       jvs(156) = -b(126,51)
4104       jvs(157) = -b(128,30)-b(131,30)-b(134,30)
4105       jvs(158) = 0.5*b(123,42)
4106       jvs(159) = 0.5*b(123,48)
4107       jvs(160) = -b(131,50)
4108       jvs(161) = -b(128,51)
4109       jvs(162) = -b(83,31)-b(85,31)-b(87,31)
4110       jvs(163) = -b(85,48)
4111       jvs(164) = -b(83,49)
4112       jvs(165) = -b(87,53)
4113       jvs(166) = -b(119,32)-b(120,32)-b(121,32)
4114       jvs(167) = -b(119,48)
4115       jvs(168) = -b(120,49)
4116       jvs(169) = -b(121,53)
4117       jvs(170) = b(53,17)+0.3*b(55,17)
4118       jvs(171) = b(81,20)+1.56*b(82,20)
4119       jvs(172) = b(48,21)
4120       jvs(173) = b(95,27)+0.7*b(97,27)
4121       jvs(174) = 0.63*b(126,29)
4122       jvs(175) = 0.25*b(128,30)
4123       jvs(176) = 0.57*b(83,31)+b(85,31)
4124       jvs(177) = 0.6*b(120,32)
4125       jvs(178) = -b(49,33)-b(50,33)-b(51,33)-b(52,33)
4126       jvs(179) = 0
4127       jvs(180) = 0.5*b(104,37)+0.5*b(108,37)+0.5*b(116,37)
4128       jvs(181) = b(57,41)+b(59,41)+0.66*b(63,41)
4129       jvs(182) = 0.2*b(122,42)+0.15*b(124,42)+0.28*b(125,42)
4130       jvs(183) = b(103,43)+b(107,43)+0.7*b(115,43)
4131       jvs(184) = b(48,48)-b(51,48)+0.3*b(55,48)+1.56*b(82,48)+b(85,48)   &
4132                 +b(95,48)
4133       jvs(185) = b(81,49)+0.57*b(83,49)+0.7*b(97,49)+0.6*b(120,49)   &
4134                 +0.15*b(124,49)
4135       jvs(186) = 0
4136       jvs(187) = b(57,51)+b(103,51)+0.5*b(104,51)+0.63*b(126,51)+0.25   &
4137                 *b(128,51)
4138       jvs(188) = -b(52,53)+b(59,53)+b(107,53)+0.5*b(108,53)+0.28   &
4139                 *b(125,53)
4140       jvs(189) = 0.08*b(89,10)
4141       jvs(190) = 0.5*b(90,12)
4142       jvs(191) = b(82,20)
4143       jvs(192) = 0.6*b(92,23)
4144       jvs(193) = b(95,27)+0.03*b(97,27)
4145       jvs(194) = b(85,31)
4146       jvs(195) = 0.08*b(119,32)+0.2*b(120,32)
4147       jvs(196) = -b(105,34)-b(109,34)-b(113,34)-b(117,34)
4148       jvs(197) = b(86,36)
4149       jvs(198) = b(79,38)
4150       jvs(199) = 0.2*b(123,42)+0.07*b(124,42)+0.93*b(125,42)
4151       jvs(200) = 0.4*b(98,44)
4152       jvs(201) = 0.34*b(102,45)+0.4*b(106,45)+0.24*b(114,45)
4153       jvs(202) = 0.4*b(101,46)
4154       jvs(203) = b(79,48)+b(82,48)+b(85,48)+b(86,48)+0.08*b(89,48)+0.5   &
4155                 *b(90,48)+0.6*b(92,48)+b(95,48)+0.08*b(119,48)+0.2   &
4156                 *b(123,48)
4157       jvs(204) = 0.03*b(97,49)+0.2*b(120,49)+0.07*b(124,49)
4158       jvs(205) = -b(113,50)
4159       jvs(206) = 0.34*b(102,51)-b(105,51)
4160       jvs(207) = 0.4*b(106,53)-b(109,53)+0.93*b(125,53)
4161       jvs(208) = 0.63*b(128,30)+0.5*b(134,30)
4162       jvs(209) = -b(76,35)-b(77,35)
4163       jvs(210) = 0.07*b(84,36)+0.23*b(86,36)
4164       jvs(211) = 0.03*b(122,42)+0.09*b(124,42)
4165       jvs(212) = 0.15*b(115,43)
4166       jvs(213) = 0.74*b(98,44)
4167       jvs(214) = 0.62*b(102,45)+0.74*b(106,45)+0.57*b(114,45)
4168       jvs(215) = 0.74*b(101,46)
4169       jvs(216) = -b(77,48)+0.23*b(86,48)
4170       jvs(217) = 0.07*b(84,49)+0.09*b(124,49)
4171       jvs(218) = 0
4172       jvs(219) = 0.62*b(102,51)+0.63*b(128,51)
4173       jvs(220) = 0.74*b(106,53)
4174       jvs(221) = -b(84,36)-b(86,36)-b(88,36)
4175       jvs(222) = -b(86,48)
4176       jvs(223) = -b(84,49)
4177       jvs(224) = -b(88,53)
4178       jvs(225) = b(87,31)
4179       jvs(226) = b(88,36)
4180       jvs(227) = -b(104,37)-b(108,37)-b(112,37)-b(116,37)
4181       jvs(228) = b(100,46)
4182       jvs(229) = b(100,48)
4183       jvs(230) = 0
4184       jvs(231) = -b(112,50)
4185       jvs(232) = -b(104,51)
4186       jvs(233) = b(87,53)+b(88,53)-b(108,53)
4187       jvs(234) = 0.8*b(90,12)
4188       jvs(235) = 0.2*b(97,27)
4189       jvs(236) = 0.34*b(128,30)
4190       jvs(237) = 0.04*b(83,31)
4191       jvs(238) = 0.07*b(84,36)
4192       jvs(239) = -b(78,38)-b(79,38)-b(80,38)
4193       jvs(240) = 0.85*b(124,42)
4194       jvs(241) = 0.15*b(115,43)
4195       jvs(242) = 0.19*b(99,44)
4196       jvs(243) = -b(79,48)+0.8*b(90,48)+0.19*b(99,48)
4197       jvs(244) = 0.04*b(83,49)+0.07*b(84,49)+0.2*b(97,49)+0.85   &
4198                 *b(124,49)
4199       jvs(245) = 0
4200       jvs(246) = 0.34*b(128,51)
4201       jvs(247) = -b(80,53)
4202       jvs(248) = b(47,8)
4203       jvs(249) = 0.5*b(56,18)
4204       jvs(250) = 0.06*b(83,31)
4205       jvs(251) = 0.05*b(84,36)
4206       jvs(252) = -b(58,39)-b(60,39)-b(62,39)-b(64,39)
4207       jvs(253) = 0.1*b(98,44)
4208       jvs(254) = 0.08*b(102,45)+0.1*b(106,45)+0.06*b(114,45)
4209       jvs(255) = 0.1*b(101,46)
4210       jvs(256) = b(47,48)+0.5*b(56,48)
4211       jvs(257) = 0.06*b(83,49)+0.05*b(84,49)
4212       jvs(258) = -b(62,50)
4213       jvs(259) = -b(58,51)+0.08*b(102,51)
4214       jvs(260) = -b(60,53)+0.1*b(106,53)
4215       jvs(261) = b(65,6)
4216       jvs(262) = b(54,18)+0.5*b(56,18)
4217       jvs(263) = 0.22*b(82,20)
4218       jvs(264) = 0.03*b(97,27)
4219       jvs(265) = 0.8*b(127,28)+b(133,28)
4220       jvs(266) = 0.55*b(128,30)+0.5*b(134,30)
4221       jvs(267) = 0.47*b(83,31)+b(85,31)
4222       jvs(268) = 0.15*b(120,32)
4223       jvs(269) = 1.03*b(84,36)+1.77*b(86,36)
4224       jvs(270) = 0.5*b(104,37)+0.5*b(108,37)+0.5*b(116,37)
4225       jvs(271) = b(58,39)+b(60,39)+0.8*b(64,39)
4226       jvs(272) = -b(66,40)-b(67,40)-b(68,40)
4227       jvs(273) = 0.07*b(122,42)+0.02*b(124,42)+0.28*b(125,42)
4228       jvs(274) = 0.3*b(98,44)+0.04*b(99,44)
4229       jvs(275) = 0.25*b(102,45)+0.3*b(106,45)+0.21*b(114,45)
4230       jvs(276) = 0.3*b(101,46)
4231       jvs(277) = 0.5*b(56,48)+b(65,48)-b(67,48)+0.22*b(82,48)+b(85,48)   &
4232                 +1.77*b(86,48)+0.04*b(99,48)
4233       jvs(278) = 0.47*b(83,49)+1.03*b(84,49)+0.03*b(97,49)+0.15   &
4234                 *b(120,49)+0.02*b(124,49)
4235       jvs(279) = 0
4236       jvs(280) = b(58,51)+0.25*b(102,51)+0.5*b(104,51)+0.8*b(127,51)   &
4237                 +0.55*b(128,51)
4238       jvs(281) = b(60,53)-b(68,53)+0.3*b(106,53)+0.5*b(108,53)+0.28   &
4239                 *b(125,53)
4240       jvs(282) = 0.7*b(55,17)
4241       jvs(283) = 0.07*b(83,31)
4242       jvs(284) = b(76,35)
4243       jvs(285) = 0.1*b(84,36)
4244       jvs(286) = b(66,40)
4245       jvs(287) = -b(57,41)-b(59,41)-b(61,41)-b(63,41)
4246       jvs(288) = 0.7*b(122,42)+0.05*b(124,42)
4247       jvs(289) = 0
4248       jvs(290) = 0
4249       jvs(291) = 0
4250       jvs(292) = 0
4251       jvs(293) = b(71,47)+b(72,47)+b(74,47)
4252       jvs(294) = b(46,48)+0.7*b(55,48)
4253       jvs(295) = 0.07*b(83,49)+0.1*b(84,49)+0.05*b(124,49)
4254       jvs(296) = -b(61,50)
4255       jvs(297) = -b(57,51)+b(71,51)
4256       jvs(298) = -b(59,53)+b(72,53)
4257       jvs(299) = 0.2*b(127,28)
4258       jvs(300) = 0.91*b(126,29)+b(132,29)
4259       jvs(301) = 0.65*b(120,32)
4260       jvs(302) = -b(122,42)-b(123,42)-b(124,42)-b(125,42)
4261       jvs(303) = -b(123,48)
4262       jvs(304) = 0.65*b(120,49)-b(124,49)
4263       jvs(305) = 0
4264       jvs(306) = 0.91*b(126,51)+0.2*b(127,51)
4265       jvs(307) = -b(125,53)
4266       jvs(308) = b(77,35)
4267       jvs(309) = 0.11*b(84,36)
4268       jvs(310) = 0
4269       jvs(311) = -b(103,43)-b(107,43)-b(111,43)-b(115,43)
4270       jvs(312) = 0
4271       jvs(313) = 0
4272       jvs(314) = 0
4273       jvs(315) = b(77,48)
4274       jvs(316) = 0.11*b(84,49)
4275       jvs(317) = -b(111,50)
4276       jvs(318) = -b(103,51)
4277       jvs(319) = -b(107,53)
4278       jvs(320) = b(129,29)
4279       jvs(321) = b(131,30)
4280       jvs(322) = 0
4281       jvs(323) = 0
4282       jvs(324) = b(111,43)
4283       jvs(325) = -b(98,44)-b(99,44)
4284       jvs(326) = b(110,45)
4285       jvs(327) = 0
4286       jvs(328) = -b(99,48)
4287       jvs(329) = 0
4288       jvs(330) = b(110,50)+b(111,50)+b(129,50)+b(131,50)
4289       jvs(331) = 0
4290       jvs(332) = 0
4291       jvs(333) = b(75,26)
4292       jvs(334) = 0
4293       jvs(335) = 0
4294       jvs(336) = 0.03*b(83,31)
4295       jvs(337) = 0
4296       jvs(338) = 0.09*b(84,36)
4297       jvs(339) = 0
4298       jvs(340) = 0
4299       jvs(341) = 0.77*b(99,44)
4300       jvs(342) = -b(102,45)-b(106,45)-b(110,45)-b(114,45)
4301       jvs(343) = 0
4302       jvs(344) = b(75,48)+0.77*b(99,48)
4303       jvs(345) = 0.03*b(83,49)+0.09*b(84,49)
4304       jvs(346) = -b(110,50)
4305       jvs(347) = -b(102,51)
4306       jvs(348) = -b(106,53)
4307       jvs(349) = b(94,13)
4308       jvs(350) = 0.05*b(91,15)
4309       jvs(351) = 0
4310       jvs(352) = 0.8*b(127,28)+b(130,28)+b(133,28)
4311       jvs(353) = 0.09*b(126,29)
4312       jvs(354) = 0
4313       jvs(355) = 0.5*b(104,37)+0.5*b(108,37)+b(112,37)+0.5*b(116,37)
4314       jvs(356) = 0.93*b(125,42)
4315       jvs(357) = 0.16*b(102,45)
4316       jvs(358) = -b(100,46)-b(101,46)
4317       jvs(359) = -b(100,48)
4318       jvs(360) = 0
4319       jvs(361) = b(112,50)+b(130,50)
4320       jvs(362) = 0.05*b(91,51)+0.16*b(102,51)+0.5*b(104,51)+0.09   &
4321                 *b(126,51)+0.8*b(127,51)
4322       jvs(363) = b(94,52)
4323       jvs(364) = 0.5*b(108,53)+0.93*b(125,53)
4324       jvs(365) = b(70,9)
4325       jvs(366) = b(95,27)+b(96,27)+0.62*b(97,27)
4326       jvs(367) = 0.13*b(83,31)
4327       jvs(368) = 0.2*b(120,32)
4328       jvs(369) = b(76,35)
4329       jvs(370) = 0.19*b(84,36)
4330       jvs(371) = b(78,38)+b(79,38)+b(80,38)
4331       jvs(372) = b(67,40)+b(68,40)
4332       jvs(373) = 0.97*b(122,42)+0.5*b(123,42)+0.11*b(124,42)+0.07   &
4333                 *b(125,42)
4334       jvs(374) = b(103,43)+b(107,43)+0.7*b(115,43)
4335       jvs(375) = 0
4336       jvs(376) = 0
4337       jvs(377) = 0
4338       jvs(378) = -b(69,47)-b(71,47)-b(72,47)-b(73,47)-b(74,47)
4339       jvs(379) = b(67,48)+b(79,48)+b(95,48)+0.5*b(123,48)
4340       jvs(380) = 0.13*b(83,49)+0.19*b(84,49)+0.62*b(97,49)+0.2   &
4341                 *b(120,49)+0.11*b(124,49)
4342       jvs(381) = -b(73,50)
4343       jvs(382) = -b(71,51)+b(103,51)
4344       jvs(383) = -b(69,52)
4345       jvs(384) = b(68,53)-b(72,53)+b(80,53)+b(107,53)+0.07*b(125,53)
4346       jvs(385) = 2*b(12,4)
4347       jvs(386) = -b(45,5)
4348       jvs(387) = -b(65,6)
4349       jvs(388) = 2*b(9,7)-b(30,7)
4350       jvs(389) = -b(47,8)
4351       jvs(390) = -b(89,10)
4352       jvs(391) = -b(90,12)
4353       jvs(392) = -b(28,14)
4354       jvs(393) = b(53,17)-0.7*b(55,17)
4355       jvs(394) = b(54,18)-0.5*b(56,18)
4356       jvs(395) = b(3,19)-b(26,19)
4357       jvs(396) = 0.12*b(81,20)-b(82,20)
4358       jvs(397) = -b(48,21)
4359       jvs(398) = -b(92,23)
4360       jvs(399) = b(4,24)-b(27,24)
4361       jvs(400) = -b(44,25)
4362       jvs(401) = -b(75,26)
4363       jvs(402) = -b(95,27)+0.08*b(97,27)
4364       jvs(403) = 0
4365       jvs(404) = 0
4366       jvs(405) = 0
4367       jvs(406) = 0.33*b(83,31)-b(85,31)
4368       jvs(407) = -b(119,32)+0.27*b(120,32)
4369       jvs(408) = -b(51,33)
4370       jvs(409) = -b(77,35)
4371       jvs(410) = 0.6*b(84,36)-b(86,36)
4372       jvs(411) = 0
4373       jvs(412) = -b(79,38)
4374       jvs(413) = 0
4375       jvs(414) = -b(67,40)
4376       jvs(415) = 0
4377       jvs(416) = -b(123,42)+0.27*b(124,42)
4378       jvs(417) = 0
4379       jvs(418) = b(98,44)-0.77*b(99,44)
4380       jvs(419) = 0
4381       jvs(420) = -b(100,46)
4382       jvs(421) = 0
4383       jvs(422) = -b(20,48)-b(22,48)-b(23,48)-b(24,48)-b(25,48)   &
4384                 -b(26,48)-b(27,48)-b(28,48)-b(29,48)-b(30,48)-b(44,48)   &
4385                 -b(45,48)-b(46,48)-b(47,48)-b(48,48)-b(51,48)-0.7   &
4386                 *b(55,48)-0.5*b(56,48)-b(65,48)-b(67,48)-b(75,48)   &
4387                 -b(77,48)-b(79,48)-b(82,48)-b(85,48)-b(86,48)-b(89,48)   &
4388                 -b(90,48)-b(92,48)-b(95,48)-0.77*b(99,48)-b(100,48)   &
4389                 -b(119,48)-b(123,48)
4390       jvs(423) = -b(20,49)+b(21,49)+0.12*b(81,49)+0.33*b(83,49)+0.6   &
4391                 *b(84,49)+0.08*b(97,49)+0.27*b(120,49)+0.27*b(124,49)
4392       jvs(424) = b(21,50)-b(29,50)+b(33,50)+0.7*b(41,50)
4393       jvs(425) = -b(23,51)+b(33,51)
4394       jvs(426) = -b(24,52)
4395       jvs(427) = -b(25,53)+0.7*b(41,53)
4396       jvs(428) = -b(81,20)
4397       jvs(429) = b(13,22)-b(14,22)
4398       jvs(430) = -b(97,27)
4399       jvs(431) = -b(83,31)
4400       jvs(432) = -b(120,32)
4401       jvs(433) = -b(84,36)
4402       jvs(434) = -b(124,42)
4403       jvs(435) = 0.4*b(73,47)
4404       jvs(436) = -b(20,48)
4405       jvs(437) = -b(7,49)-b(8,49)-b(14,49)-b(18,49)-b(19,49)-b(20,49)   &
4406                 -b(21,49)-b(81,49)-b(83,49)-b(84,49)-b(97,49)   &
4407                 -b(120,49)-b(124,49)
4408       jvs(438) = -b(21,50)+0.4*b(73,50)
4409       jvs(439) = -b(18,51)
4410       jvs(440) = -b(19,52)
4411       jvs(441) = 0
4412       jvs(442) = b(45,5)
4413       jvs(443) = b(65,6)
4414       jvs(444) = b(30,7)
4415       jvs(445) = 0.2*b(89,10)
4416       jvs(446) = 0.55*b(90,12)
4417       jvs(447) = b(5,14)+b(36,14)
4418       jvs(448) = 0.95*b(91,15)
4419       jvs(449) = b(53,17)
4420       jvs(450) = b(54,18)
4421       jvs(451) = 0.22*b(81,20)+b(82,20)
4422       jvs(452) = b(48,21)
4423       jvs(453) = 0.6*b(92,23)
4424       jvs(454) = b(44,25)
4425       jvs(455) = 2*b(95,27)+b(96,27)+0.76*b(97,27)
4426       jvs(456) = 0.8*b(127,28)-b(130,28)
4427       jvs(457) = 0.91*b(126,29)-b(129,29)
4428       jvs(458) = b(128,30)-b(131,30)
4429       jvs(459) = 0.26*b(83,31)+b(85,31)
4430       jvs(460) = 0.07*b(120,32)
4431       jvs(461) = 2*b(49,33)+b(51,33)+b(52,33)
4432       jvs(462) = -b(113,34)
4433       jvs(463) = 0.22*b(84,36)+b(86,36)
4434       jvs(464) = 0.5*b(104,37)+0.5*b(108,37)-b(112,37)
4435       jvs(465) = b(78,38)
4436       jvs(466) = b(58,39)+b(60,39)-b(62,39)+0.6*b(64,39)
4437       jvs(467) = b(66,40)
4438       jvs(468) = b(57,41)+b(59,41)-b(61,41)+0.32*b(63,41)
4439       jvs(469) = 0.33*b(122,42)+0.1*b(124,42)+0.93*b(125,42)
4440       jvs(470) = -b(111,43)
4441       jvs(471) = 0.9*b(98,44)
4442       jvs(472) = 0.76*b(102,45)+0.9*b(106,45)-b(110,45)+0.54*b(114,45)
4443       jvs(473) = 0.9*b(101,46)
4444       jvs(474) = -b(73,47)
4445       jvs(475) = b(20,48)+b(22,48)+b(25,48)-b(29,48)+b(30,48)+b(44,48)   &
4446                 +b(45,48)+b(48,48)+b(51,48)+b(65,48)+b(82,48)+b(85,48)   &
4447                 +b(86,48)+0.2*b(89,48)+0.55*b(90,48)+0.6*b(92,48)+2   &
4448                 *b(95,48)
4449       jvs(476) = b(20,49)-b(21,49)+0.22*b(81,49)+0.26*b(83,49)+0.22   &
4450                 *b(84,49)+0.76*b(97,49)+0.07*b(120,49)+0.1*b(124,49)
4451       jvs(477) = -b(21,50)-b(29,50)-2*b(31,50)-2*b(32,50)-b(33,50)   &
4452                 -b(34,50)-b(35,50)-b(41,50)-b(61,50)-b(62,50)-b(73,50)   &
4453                 -b(110,50)-b(111,50)-b(112,50)-b(113,50)-b(129,50)   &
4454                 -b(130,50)-b(131,50)
4455       jvs(478) = -b(33,51)+b(57,51)+b(58,51)+0.95*b(91,51)+0.76   &
4456                 *b(102,51)+0.5*b(104,51)+0.91*b(126,51)+0.8*b(127,51)   &
4457                 +b(128,51)
4458       jvs(479) = -b(34,52)-b(35,52)
4459       jvs(480) = b(25,53)-b(41,53)+b(52,53)+b(59,53)+b(60,53)+0.9   &
4460                 *b(106,53)+0.5*b(108,53)+0.93*b(125,53)
4461       jvs(481) = -b(91,15)
4462       jvs(482) = b(3,19)
4463       jvs(483) = b(15,22)-b(17,22)
4464       jvs(484) = -b(127,28)
4465       jvs(485) = -b(126,29)
4466       jvs(486) = -b(128,30)
4467       jvs(487) = 0
4468       jvs(488) = -b(105,34)
4469       jvs(489) = 0
4470       jvs(490) = -b(104,37)
4471       jvs(491) = 0
4472       jvs(492) = -b(58,39)
4473       jvs(493) = -b(57,41)
4474       jvs(494) = 0
4475       jvs(495) = -b(103,43)
4476       jvs(496) = 0
4477       jvs(497) = -b(102,45)
4478       jvs(498) = 0
4479       jvs(499) = -b(71,47)
4480       jvs(500) = -b(23,48)
4481       jvs(501) = -b(18,49)
4482       jvs(502) = -b(33,50)
4483       jvs(503) = -b(17,51)-b(18,51)-b(23,51)-b(33,51)-b(37,51)   &
4484                 -b(57,51)-b(58,51)-b(71,51)-b(91,51)-b(102,51)   &
4485                 -b(103,51)-b(104,51)-b(105,51)-b(126,51)-b(127,51)   &
4486                 -b(128,51)
4487       jvs(504) = b(1,52)+b(15,52)+b(38,52)
4488       jvs(505) = 0.11*b(2,53)-b(37,53)+b(38,53)
4489       jvs(506) = b(70,9)
4490       jvs(507) = b(6,11)+b(43,11)
4491       jvs(508) = -b(94,13)
4492       jvs(509) = b(5,14)+b(28,14)+b(36,14)
4493       jvs(510) = 0.95*b(91,15)
4494       jvs(511) = b(26,19)
4495       jvs(512) = -b(15,22)-b(16,22)+b(17,22)
4496       jvs(513) = 0
4497       jvs(514) = b(4,24)
4498       jvs(515) = 1.2*b(127,28)
4499       jvs(516) = 0.91*b(126,29)
4500       jvs(517) = b(128,30)
4501       jvs(518) = 0
4502       jvs(519) = 0
4503       jvs(520) = b(105,34)+b(109,34)
4504       jvs(521) = 0
4505       jvs(522) = 1.5*b(104,37)+1.5*b(108,37)+0.5*b(116,37)
4506       jvs(523) = 0
4507       jvs(524) = b(58,39)+b(60,39)
4508       jvs(525) = 0
4509       jvs(526) = b(57,41)+b(59,41)
4510       jvs(527) = 0
4511       jvs(528) = b(103,43)+b(107,43)
4512       jvs(529) = 0
4513       jvs(530) = 0.84*b(102,45)+b(106,45)
4514       jvs(531) = b(101,46)
4515       jvs(532) = -b(69,47)+b(71,47)+b(72,47)
4516       jvs(533) = -b(24,48)+b(25,48)+b(26,48)+b(28,48)
4517       jvs(534) = b(18,49)-b(19,49)
4518       jvs(535) = b(33,50)-b(34,50)-b(35,50)+0.7*b(41,50)
4519       jvs(536) = b(17,51)+b(18,51)+b(33,51)+2*b(37,51)+b(57,51)   &
4520                 +b(58,51)+b(71,51)+0.95*b(91,51)+0.84*b(102,51)   &
4521                 +b(103,51)+1.5*b(104,51)+b(105,51)+0.91*b(126,51)+1.2   &
4522                 *b(127,51)+b(128,51)
4523       jvs(537) = -b(1,52)-b(15,52)-b(16,52)-b(19,52)-b(24,52)-b(34,52)   &
4524                 -b(35,52)-b(39,52)-b(69,52)-b(94,52)
4525       jvs(538) = 0.89*b(2,53)+b(25,53)+2*b(37,53)-b(39,53)+2*b(40,53)   &
4526                 +0.7*b(41,53)+b(59,53)+b(60,53)+b(72,53)+b(106,53)   &
4527                 +b(107,53)+1.5*b(108,53)+b(109,53)
4528       jvs(539) = b(6,11)+b(43,11)
4529       jvs(540) = b(16,22)
4530       jvs(541) = -b(93,23)
4531       jvs(542) = b(27,24)
4532       jvs(543) = -b(87,31)
4533       jvs(544) = -b(121,32)
4534       jvs(545) = -b(52,33)
4535       jvs(546) = -b(109,34)
4536       jvs(547) = -b(88,36)
4537       jvs(548) = -b(108,37)
4538       jvs(549) = -b(80,38)
4539       jvs(550) = -b(60,39)
4540       jvs(551) = -b(68,40)
4541       jvs(552) = -b(59,41)
4542       jvs(553) = -b(125,42)
4543       jvs(554) = -b(107,43)
4544       jvs(555) = 0
4545       jvs(556) = -b(106,45)
4546       jvs(557) = 0
4547       jvs(558) = -b(72,47)
4548       jvs(559) = -b(25,48)+b(27,48)
4549       jvs(560) = b(19,49)
4550       jvs(561) = -b(41,50)
4551       jvs(562) = -b(37,51)
4552       jvs(563) = b(16,52)+b(19,52)-b(38,52)-b(39,52)
4553       jvs(564) = -b(2,53)-b(25,53)-b(37,53)-b(38,53)-b(39,53)-2   &
4554                 *b(40,53)-b(41,53)-b(52,53)-b(59,53)-b(60,53)-b(68,53)   &
4555                 -b(72,53)-b(80,53)-b(87,53)-b(88,53)-b(93,53)   &
4556                 -b(106,53)-b(107,53)-b(108,53)-b(109,53)-b(121,53)   &
4557                 -b(125,53)
4558       return
4559       end subroutine cbmz_v02r03_jacob                                    
4562 !-----------------------------------------------------------------------------
4563       subroutine cbmz_v02r03_decomp( n, v, ier,   &
4564           lu_crow_v, lu_diag_v, lu_icol_v )
4566 !   computes l-u-decomposition of sparse jacobian
4567 !   for mechanism-version-regime = cbmz_v02r03
4569       use module_data_cbmz
4570       implicit none
4572 !   subr parameters
4573 !     n = number of variable species [input]
4574       integer n
4575 !     ier = status flag [output]
4576 !         0 = success    other = failure [output]
4577       integer ier
4579 !     v = non-zero elements of the sparse jacobian [input]
4580       real v(lu_nonzero_v_r03_kpp)
4582       integer lu_crow_v(nvar_r03_kpp + 1)
4583       integer lu_diag_v(nvar_r03_kpp + 1)
4584       integer lu_icol_v(lu_nonzero_v_r03_kpp)
4586 !   local variables
4587       integer k, kk, j, jj
4588       real a, w(nvar_r03_kpp + 1)
4590       ier = 0
4591       do k=1,n
4592         if ( v( lu_diag_v(k) ) .eq. 0. ) then
4593             ier = k
4594             return
4595         end if
4596         do kk = lu_crow_v(k), lu_crow_v(k+1)-1
4597               w( lu_icol_v(kk) ) = v(kk)
4598         end do
4599         do kk = lu_crow_v(k), lu_diag_v(k)-1
4600             j = lu_icol_v(kk)
4601             a = -w(j) / v( lu_diag_v(j) )
4602             w(j) = -a
4603             do jj = lu_diag_v(j)+1, lu_crow_v(j+1)-1
4604                w( lu_icol_v(jj) ) = w( lu_icol_v(jj) ) + a*v(jj)
4605             end do
4606          end do
4607          do kk = lu_crow_v(k), lu_crow_v(k+1)-1
4608             v(kk) = w( lu_icol_v(kk) )
4609          end do
4610       end do
4611       return
4612       end subroutine cbmz_v02r03_decomp            
4615 !-----------------------------------------------------------------------------
4616       subroutine cbmz_v02r03_solve( jvs, x )
4618 !   does back-solve for mechanism-version-regime = cbmz_v02r03
4620       implicit none
4622 !   subr parameters
4623 !     jvs = the non-zero elements of the l-u-decomposition
4624 !           of the augmented jacobian [input]
4625       real jvs(*)
4626 !     x = the right-hand side of the linear equation set being solved [on input]
4627 !     x = concentrations of variable species [on output]
4628       real x(*)
4631       x(15) = x(15)-jvs(47)*x(10)-jvs(48)*x(12)
4632       x(22) = x(22)-jvs(86)*x(4)
4633       x(23) = x(23)-jvs(92)*x(10)-jvs(93)*x(12)
4634       x(24) = x(24)-jvs(97)*x(11)-jvs(98)*x(23)
4635       x(25) = x(25)-jvs(108)*x(20)
4636       x(26) = x(26)-jvs(123)*x(12)-jvs(124)*x(16)
4637       x(27) = x(27)-jvs(140)*x(15)-jvs(141)*x(23)
4638       x(33) = x(33)-jvs(170)*x(17)-jvs(171)*x(20)-jvs(172)*x(21)   &
4639              -jvs(173)*x(27)-jvs(174)*x(29)-jvs(175)*x(30)-jvs(176)   &
4640              *x(31)-jvs(177)*x(32)
4641       x(34) = x(34)-jvs(189)*x(10)-jvs(190)*x(12)-jvs(191)*x(20)   &
4642              -jvs(192)*x(23)-jvs(193)*x(27)-jvs(194)*x(31)-jvs(195)   &
4643              *x(32)
4644       x(35) = x(35)-jvs(208)*x(30)
4645       x(37) = x(37)-jvs(225)*x(31)-jvs(226)*x(36)
4646       x(38) = x(38)-jvs(234)*x(12)-jvs(235)*x(27)-jvs(236)*x(30)   &
4647              -jvs(237)*x(31)-jvs(238)*x(36)
4648       x(39) = x(39)-jvs(248)*x(8)-jvs(249)*x(18)-jvs(250)*x(31)   &
4649              -jvs(251)*x(36)
4650       x(40) = x(40)-jvs(261)*x(6)-jvs(262)*x(18)-jvs(263)*x(20)   &
4651              -jvs(264)*x(27)-jvs(265)*x(28)-jvs(266)*x(30)-jvs(267)   &
4652              *x(31)-jvs(268)*x(32)-jvs(269)*x(36)-jvs(270)*x(37)   &
4653              -jvs(271)*x(39)
4654       x(41) = x(41)-jvs(282)*x(17)-jvs(283)*x(31)-jvs(284)*x(35)   &
4655              -jvs(285)*x(36)-jvs(286)*x(40)
4656       x(42) = x(42)-jvs(299)*x(28)-jvs(300)*x(29)-jvs(301)*x(32)
4657       x(43) = x(43)-jvs(308)*x(35)-jvs(309)*x(36)-jvs(310)*x(42)
4658       x(44) = x(44)-jvs(320)*x(29)-jvs(321)*x(30)-jvs(322)*x(32)   &
4659              -jvs(323)*x(42)-jvs(324)*x(43)
4660       x(45) = x(45)-jvs(333)*x(26)-jvs(334)*x(28)-jvs(335)*x(29)   &
4661              -jvs(336)*x(31)-jvs(337)*x(32)-jvs(338)*x(36)-jvs(339)   &
4662              *x(37)-jvs(340)*x(42)-jvs(341)*x(44)
4663       x(46) = x(46)-jvs(349)*x(13)-jvs(350)*x(15)-jvs(351)*x(23)   &
4664              -jvs(352)*x(28)-jvs(353)*x(29)-jvs(354)*x(32)-jvs(355)   &
4665              *x(37)-jvs(356)*x(42)-jvs(357)*x(45)
4666       x(47) = x(47)-jvs(365)*x(9)-jvs(366)*x(27)-jvs(367)*x(31)   &
4667              -jvs(368)*x(32)-jvs(369)*x(35)-jvs(370)*x(36)-jvs(371)   &
4668              *x(38)-jvs(372)*x(40)-jvs(373)*x(42)-jvs(374)*x(43)   &
4669              -jvs(375)*x(44)-jvs(376)*x(45)-jvs(377)*x(46)
4670       x(48) = x(48)-jvs(385)*x(4)-jvs(386)*x(5)-jvs(387)*x(6)-jvs(388)   &
4671              *x(7)-jvs(389)*x(8)-jvs(390)*x(10)-jvs(391)*x(12)   &
4672              -jvs(392)*x(14)-jvs(393)*x(17)-jvs(394)*x(18)-jvs(395)   &
4673              *x(19)-jvs(396)*x(20)-jvs(397)*x(21)-jvs(398)*x(23)   &
4674              -jvs(399)*x(24)-jvs(400)*x(25)-jvs(401)*x(26)-jvs(402)   &
4675              *x(27)-jvs(403)*x(28)-jvs(404)*x(29)-jvs(405)*x(30)   &
4676              -jvs(406)*x(31)-jvs(407)*x(32)-jvs(408)*x(33)-jvs(409)   &
4677              *x(35)-jvs(410)*x(36)-jvs(411)*x(37)-jvs(412)*x(38)   &
4678              -jvs(413)*x(39)-jvs(414)*x(40)-jvs(415)*x(41)-jvs(416)   &
4679              *x(42)-jvs(417)*x(43)-jvs(418)*x(44)-jvs(419)*x(45)   &
4680              -jvs(420)*x(46)-jvs(421)*x(47)
4681       x(49) = x(49)-jvs(428)*x(20)-jvs(429)*x(22)-jvs(430)*x(27)   &
4682              -jvs(431)*x(31)-jvs(432)*x(32)-jvs(433)*x(36)-jvs(434)   &
4683              *x(42)-jvs(435)*x(47)-jvs(436)*x(48)
4684       x(50) = x(50)-jvs(442)*x(5)-jvs(443)*x(6)-jvs(444)*x(7)-jvs(445)   &
4685              *x(10)-jvs(446)*x(12)-jvs(447)*x(14)-jvs(448)*x(15)   &
4686              -jvs(449)*x(17)-jvs(450)*x(18)-jvs(451)*x(20)-jvs(452)   &
4687              *x(21)-jvs(453)*x(23)-jvs(454)*x(25)-jvs(455)*x(27)   &
4688              -jvs(456)*x(28)-jvs(457)*x(29)-jvs(458)*x(30)-jvs(459)   &
4689              *x(31)-jvs(460)*x(32)-jvs(461)*x(33)-jvs(462)*x(34)   &
4690              -jvs(463)*x(36)-jvs(464)*x(37)-jvs(465)*x(38)-jvs(466)   &
4691              *x(39)-jvs(467)*x(40)-jvs(468)*x(41)-jvs(469)*x(42)   &
4692              -jvs(470)*x(43)-jvs(471)*x(44)-jvs(472)*x(45)-jvs(473)   &
4693              *x(46)-jvs(474)*x(47)-jvs(475)*x(48)-jvs(476)*x(49)
4694       x(51) = x(51)-jvs(481)*x(15)-jvs(482)*x(19)-jvs(483)*x(22)   &
4695              -jvs(484)*x(28)-jvs(485)*x(29)-jvs(486)*x(30)-jvs(487)   &
4696              *x(32)-jvs(488)*x(34)-jvs(489)*x(36)-jvs(490)*x(37)   &
4697              -jvs(491)*x(38)-jvs(492)*x(39)-jvs(493)*x(41)-jvs(494)   &
4698              *x(42)-jvs(495)*x(43)-jvs(496)*x(44)-jvs(497)*x(45)   &
4699              -jvs(498)*x(46)-jvs(499)*x(47)-jvs(500)*x(48)-jvs(501)   &
4700              *x(49)-jvs(502)*x(50)
4701       x(52) = x(52)-jvs(506)*x(9)-jvs(507)*x(11)-jvs(508)*x(13)   &
4702              -jvs(509)*x(14)-jvs(510)*x(15)-jvs(511)*x(19)-jvs(512)   &
4703              *x(22)-jvs(513)*x(23)-jvs(514)*x(24)-jvs(515)*x(28)   &
4704              -jvs(516)*x(29)-jvs(517)*x(30)-jvs(518)*x(32)-jvs(519)   &
4705              *x(33)-jvs(520)*x(34)-jvs(521)*x(36)-jvs(522)*x(37)   &
4706              -jvs(523)*x(38)-jvs(524)*x(39)-jvs(525)*x(40)-jvs(526)   &
4707              *x(41)-jvs(527)*x(42)-jvs(528)*x(43)-jvs(529)*x(44)   &
4708              -jvs(530)*x(45)-jvs(531)*x(46)-jvs(532)*x(47)-jvs(533)   &
4709              *x(48)-jvs(534)*x(49)-jvs(535)*x(50)-jvs(536)*x(51)
4710       x(53) = x(53)-jvs(539)*x(11)-jvs(540)*x(22)-jvs(541)*x(23)   &
4711              -jvs(542)*x(24)-jvs(543)*x(31)-jvs(544)*x(32)-jvs(545)   &
4712              *x(33)-jvs(546)*x(34)-jvs(547)*x(36)-jvs(548)*x(37)   &
4713              -jvs(549)*x(38)-jvs(550)*x(39)-jvs(551)*x(40)-jvs(552)   &
4714              *x(41)-jvs(553)*x(42)-jvs(554)*x(43)-jvs(555)*x(44)   &
4715              -jvs(556)*x(45)-jvs(557)*x(46)-jvs(558)*x(47)-jvs(559)   &
4716              *x(48)-jvs(560)*x(49)-jvs(561)*x(50)-jvs(562)*x(51)   &
4717              -jvs(563)*x(52)
4718       x(53) = x(53)/jvs(564)
4719       x(52) = (x(52)-jvs(538)*x(53))/(jvs(537))
4720       x(51) = (x(51)-jvs(504)*x(52)-jvs(505)*x(53))/(jvs(503))
4721       x(50) = (x(50)-jvs(478)*x(51)-jvs(479)*x(52)-jvs(480)*x(53))/   &
4722              (jvs(477))
4723       x(49) = (x(49)-jvs(438)*x(50)-jvs(439)*x(51)-jvs(440)*x(52)   &
4724              -jvs(441)*x(53))/(jvs(437))
4725       x(48) = (x(48)-jvs(423)*x(49)-jvs(424)*x(50)-jvs(425)*x(51)   &
4726              -jvs(426)*x(52)-jvs(427)*x(53))/(jvs(422))
4727       x(47) = (x(47)-jvs(379)*x(48)-jvs(380)*x(49)-jvs(381)*x(50)   &
4728              -jvs(382)*x(51)-jvs(383)*x(52)-jvs(384)*x(53))/(jvs(378))
4729       x(46) = (x(46)-jvs(359)*x(48)-jvs(360)*x(49)-jvs(361)*x(50)   &
4730              -jvs(362)*x(51)-jvs(363)*x(52)-jvs(364)*x(53))/(jvs(358))
4731       x(45) = (x(45)-jvs(343)*x(46)-jvs(344)*x(48)-jvs(345)*x(49)   &
4732              -jvs(346)*x(50)-jvs(347)*x(51)-jvs(348)*x(53))/(jvs(342))
4733       x(44) = (x(44)-jvs(326)*x(45)-jvs(327)*x(46)-jvs(328)*x(48)   &
4734              -jvs(329)*x(49)-jvs(330)*x(50)-jvs(331)*x(51)-jvs(332)   &
4735              *x(53))/(jvs(325))
4736       x(43) = (x(43)-jvs(312)*x(44)-jvs(313)*x(45)-jvs(314)*x(46)   &
4737              -jvs(315)*x(48)-jvs(316)*x(49)-jvs(317)*x(50)-jvs(318)   &
4738              *x(51)-jvs(319)*x(53))/(jvs(311))
4739       x(42) = (x(42)-jvs(303)*x(48)-jvs(304)*x(49)-jvs(305)*x(50)   &
4740              -jvs(306)*x(51)-jvs(307)*x(53))/(jvs(302))
4741       x(41) = (x(41)-jvs(288)*x(42)-jvs(289)*x(43)-jvs(290)*x(44)   &
4742              -jvs(291)*x(45)-jvs(292)*x(46)-jvs(293)*x(47)-jvs(294)   &
4743              *x(48)-jvs(295)*x(49)-jvs(296)*x(50)-jvs(297)*x(51)   &
4744              -jvs(298)*x(53))/(jvs(287))
4745       x(40) = (x(40)-jvs(273)*x(42)-jvs(274)*x(44)-jvs(275)*x(45)   &
4746              -jvs(276)*x(46)-jvs(277)*x(48)-jvs(278)*x(49)-jvs(279)   &
4747              *x(50)-jvs(280)*x(51)-jvs(281)*x(53))/(jvs(272))
4748       x(39) = (x(39)-jvs(253)*x(44)-jvs(254)*x(45)-jvs(255)*x(46)   &
4749              -jvs(256)*x(48)-jvs(257)*x(49)-jvs(258)*x(50)-jvs(259)   &
4750              *x(51)-jvs(260)*x(53))/(jvs(252))
4751       x(38) = (x(38)-jvs(240)*x(42)-jvs(241)*x(43)-jvs(242)*x(44)   &
4752              -jvs(243)*x(48)-jvs(244)*x(49)-jvs(245)*x(50)-jvs(246)   &
4753              *x(51)-jvs(247)*x(53))/(jvs(239))
4754       x(37) = (x(37)-jvs(228)*x(46)-jvs(229)*x(48)-jvs(230)*x(49)   &
4755              -jvs(231)*x(50)-jvs(232)*x(51)-jvs(233)*x(53))/(jvs(227))
4756       x(36) = (x(36)-jvs(222)*x(48)-jvs(223)*x(49)-jvs(224)*x(53))/   &
4757              (jvs(221))
4758       x(35) = (x(35)-jvs(210)*x(36)-jvs(211)*x(42)-jvs(212)*x(43)   &
4759              -jvs(213)*x(44)-jvs(214)*x(45)-jvs(215)*x(46)-jvs(216)   &
4760              *x(48)-jvs(217)*x(49)-jvs(218)*x(50)-jvs(219)*x(51)   &
4761              -jvs(220)*x(53))/(jvs(209))
4762       x(34) = (x(34)-jvs(197)*x(36)-jvs(198)*x(38)-jvs(199)*x(42)   &
4763              -jvs(200)*x(44)-jvs(201)*x(45)-jvs(202)*x(46)-jvs(203)   &
4764              *x(48)-jvs(204)*x(49)-jvs(205)*x(50)-jvs(206)*x(51)   &
4765              -jvs(207)*x(53))/(jvs(196))
4766       x(33) = (x(33)-jvs(179)*x(36)-jvs(180)*x(37)-jvs(181)*x(41)   &
4767              -jvs(182)*x(42)-jvs(183)*x(43)-jvs(184)*x(48)-jvs(185)   &
4768              *x(49)-jvs(186)*x(50)-jvs(187)*x(51)-jvs(188)*x(53))/   &
4769              (jvs(178))
4770       x(32) = (x(32)-jvs(167)*x(48)-jvs(168)*x(49)-jvs(169)*x(53))/   &
4771              (jvs(166))
4772       x(31) = (x(31)-jvs(163)*x(48)-jvs(164)*x(49)-jvs(165)*x(53))/   &
4773              (jvs(162))
4774       x(30) = (x(30)-jvs(158)*x(42)-jvs(159)*x(48)-jvs(160)*x(50)   &
4775              -jvs(161)*x(51))/(jvs(157))
4776       x(29) = (x(29)-jvs(153)*x(32)-jvs(154)*x(48)-jvs(155)*x(50)   &
4777              -jvs(156)*x(51))/(jvs(152))
4778       x(28) = (x(28)-jvs(148)*x(32)-jvs(149)*x(50)-jvs(150)*x(51)   &
4779              -jvs(151)*x(53))/(jvs(147))
4780       x(27) = (x(27)-jvs(143)*x(48)-jvs(144)*x(49)-jvs(145)*x(51)   &
4781              -jvs(146)*x(53))/(jvs(142))
4782       x(26) = (x(26)-jvs(126)*x(28)-jvs(127)*x(29)-jvs(128)*x(31)   &
4783              -jvs(129)*x(36)-jvs(130)*x(37)-jvs(131)*x(42)-jvs(132)   &
4784              *x(44)-jvs(133)*x(45)-jvs(134)*x(46)-jvs(135)*x(48)   &
4785              -jvs(136)*x(49)-jvs(137)*x(50)-jvs(138)*x(51)-jvs(139)   &
4786              *x(53))/(jvs(125))
4787       x(25) = (x(25)-jvs(110)*x(27)-jvs(111)*x(30)-jvs(112)*x(31)   &
4788              -jvs(113)*x(32)-jvs(114)*x(33)-jvs(115)*x(36)-jvs(116)   &
4789              *x(38)-jvs(117)*x(40)-jvs(118)*x(42)-jvs(119)*x(48)   &
4790              -jvs(120)*x(49)-jvs(121)*x(51)-jvs(122)*x(53))/(jvs(109))
4791       x(24) = (x(24)-jvs(100)*x(33)-jvs(101)*x(38)-jvs(102)*x(40)   &
4792              -jvs(103)*x(42)-jvs(104)*x(48)-jvs(105)*x(50)-jvs(106)   &
4793              *x(52)-jvs(107)*x(53))/(jvs(99))
4794       x(23) = (x(23)-jvs(95)*x(48)-jvs(96)*x(53))/(jvs(94))
4795       x(22) = (x(22)-jvs(88)*x(49)-jvs(89)*x(51)-jvs(90)*x(52)-jvs(91)   &
4796              *x(53))/(jvs(87))
4797       x(21) = (x(21)-jvs(81)*x(31)-jvs(82)*x(36)-jvs(83)*x(41)-jvs(84)   &
4798              *x(48)-jvs(85)*x(49))/(jvs(80))
4799       x(20) = (x(20)-jvs(78)*x(48)-jvs(79)*x(49))/(jvs(77))
4800       x(19) = (x(19)-jvs(73)*x(48)-jvs(74)*x(50)-jvs(75)*x(51)-jvs(76)   &
4801              *x(52))/(jvs(72))
4802       x(18) = (x(18)-jvs(69)*x(39)-jvs(70)*x(48)-jvs(71)*x(50))/   &
4803              (jvs(68))
4804       x(17) = (x(17)-jvs(65)*x(41)-jvs(66)*x(48)-jvs(67)*x(50))/   &
4805              (jvs(64))
4806       x(16) = (x(16)-jvs(53)*x(26)-jvs(54)*x(31)-jvs(55)*x(36)-jvs(56)   &
4807              *x(37)-jvs(57)*x(44)-jvs(58)*x(45)-jvs(59)*x(46)-jvs(60)   &
4808              *x(48)-jvs(61)*x(49)-jvs(62)*x(51)-jvs(63)*x(53))/   &
4809              (jvs(52))
4810       x(15) = (x(15)-jvs(50)*x(48)-jvs(51)*x(51))/(jvs(49))
4811       x(14) = (x(14)-jvs(44)*x(48)-jvs(45)*x(50)-jvs(46)*x(52))/   &
4812              (jvs(43))
4813       x(13) = (x(13)-jvs(39)*x(23)-jvs(40)*x(48)-jvs(41)*x(52)-jvs(42)   &
4814              *x(53))/(jvs(38))
4815       x(12) = (x(12)-jvs(37)*x(48))/(jvs(36))
4816       x(11) = (x(11)-jvs(34)*x(52)-jvs(35)*x(53))/(jvs(33))
4817       x(10) = (x(10)-jvs(32)*x(48))/(jvs(31))
4818       x(9) = (x(9)-jvs(29)*x(47)-jvs(30)*x(52))/(jvs(28))
4819       x(8) = (x(8)-jvs(26)*x(39)-jvs(27)*x(48))/(jvs(25))
4820       x(7) = (x(7)-jvs(23)*x(48)-jvs(24)*x(50))/(jvs(22))
4821       x(6) = (x(6)-jvs(21)*x(48))/(jvs(20))
4822       x(5) = (x(5)-jvs(19)*x(48))/(jvs(18))
4823       x(4) = (x(4)-jvs(17)*x(49))/(jvs(16))
4824       x(3) = (x(3)-jvs(11)*x(31)-jvs(12)*x(36)-jvs(13)*x(47)-jvs(14)   &
4825             *x(49)-jvs(15)*x(50))/(jvs(10))
4826       x(2) = (x(2)-jvs(5)*x(20)-jvs(6)*x(31)-jvs(7)*x(32)-jvs(8)*x(42)   &
4827             -jvs(9)*x(49))/(jvs(4))
4828       x(1) = (x(1)-jvs(2)*x(5)-jvs(3)*x(48))/(jvs(1))
4829       return
4830       end subroutine cbmz_v02r03_solve          
4833 !   cbmz_v02r04_torodas.f - created on 18-nov-2003 from previous
4834 !        cbmz_v02r04_torodas.f        cbmz_v02r04_mapconcs.f
4835 !        cbmz_v02r04_maprates.f       cbmz_v02r04_dydt.f
4836 !        cbmz_v02r04_jacob.f          cbmz_v02r04_decomp.f
4837 !        cbmz_v02r04_solve.f
4838 !   so now everything is in a single file
4839 !-----------------------------------------------------------------------
4841       subroutine cbmz_v02r04_torodas(   &
4842           ngas, taa, tzz,   &
4843           stot, atol, rtol, yposlimit, yneglimit,   &
4844           sfixedkpp, rconstkpp,   &
4845           hmin, hstart,   &
4846           info_rodas, iok, lunerr, idydt_sngldble )
4848 !   interfaces to rodas3 solver formechanism-version-regime =cbmz_v02r04
4850 !   *** do not include any pegasus common blocks ***
4852       use module_data_cbmz
4853       use module_cbmz_rodas3_solver, only:  rodas3_ff_x2
4854       implicit none
4856 !   subr parameters
4857       integer ngas, iok, lunerr, idydt_sngldble
4858       integer info_rodas(6)
4859       real taa, tzz, hmin, hstart
4860       real stot(ngas), atol(ngas), rtol(ngas)
4861       real yposlimit(ngas), yneglimit(ngas)
4862       real sfixedkpp(nfixed_kppmax), rconstkpp(nreact_kppmax)
4864 !   local variables
4866 !     external cbmz_v02r04_dydt
4867 !     external cbmz_v02r04_jacob
4868 !     external cbmz_v02r04_decomp
4869 !     external cbmz_v02r04_solve
4871       integer i
4873       real hmax
4875       integer lu_crow_v(nvar_r04_kpp + 1)
4876       save    lu_crow_v
4877       integer lu_diag_v(nvar_r04_kpp + 1)
4878       save    lu_diag_v
4879       integer lu_icol_v(lu_nonzero_v_r04_kpp)
4880       save    lu_icol_v
4882       data( lu_icol_v(i), i = 1, 252 ) /   &
4883         1,  7, 33, 39,  2, 25, 34,  3, 28, 29, 32, 33,   &
4884        34, 37, 38, 39,  4, 27,  5, 31,  6, 39,  7, 32,   &
4885        39,  8, 21, 39,  9, 25, 37, 10, 16, 39, 11, 29,   &
4886        34, 39, 12, 35, 39, 13, 36, 37, 14, 34, 37, 39,   &
4887        15, 22, 28, 33, 36, 39, 16, 26, 39, 17, 21, 34,   &
4888        39, 18, 33, 34, 37, 38, 39, 19, 29, 34, 35, 39,   &
4889        20, 32, 35, 38,  8, 17, 21, 34, 36, 38, 39,  6,   &
4890        17, 21, 22, 34, 36, 38, 39, 10, 16, 23, 26, 35,   &
4891        38, 39, 13, 22, 24, 26, 28, 29, 33, 34, 36, 37,   &
4892        38, 39,  9, 22, 25, 34, 36, 37, 38, 39, 26, 30,   &
4893        36, 39, 26, 27, 30, 32, 35, 36, 38, 39, 12, 19,   &
4894        20, 23, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36,   &
4895        38, 39, 16, 26, 29, 30, 33, 34, 35, 36, 39,  5,   &
4896        26, 30, 31, 36, 37, 38, 39, 25, 30, 31, 32, 34,   &
4897        36, 37, 38, 39, 20, 23, 26, 27, 29, 30, 31, 32,   &
4898        33, 34, 35, 36, 37, 38, 39, 20, 27, 28, 29, 30,   &
4899        31, 32, 33, 34, 35, 36, 37, 38, 39,  6,  7, 11,   &
4900        12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 25, 26,   &
4901        27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,   &
4902        39, 16, 19, 20, 22, 23, 25, 26, 27, 29, 30, 31,   &
4903        32, 33, 34, 35, 36, 37, 38, 39, 13, 21, 22, 24 /
4905       data( lu_icol_v(i), i = 253, 334 ) /   &
4906        25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,   &
4907        38, 39,  9, 13, 14, 18, 20, 21, 23, 24, 25, 26,   &
4908        27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39,   &
4909        18, 20, 21, 23, 25, 26, 27, 30, 31, 32, 33, 34,   &
4910        35, 36, 37, 38, 39,  5,  6,  7,  8, 10, 11, 12,   &
4911        14, 15, 16, 17, 18, 19, 21, 22, 24, 26, 28, 29,   &
4912        30, 31, 32, 33, 34, 35, 36, 37, 38, 39 /
4914       data lu_crow_v /   &
4915         1,  5,  8, 17, 19, 21, 23, 26, 29, 32, 35, 39,   &
4916        42, 45, 49, 55, 58, 62, 68, 73, 77, 84, 92, 99,   &
4917       111,119,123,131,147,156,164,173,188,202,230,249,   &
4918       267,289,306,335 /
4920       data lu_diag_v /   &
4921         1,  5,  8, 17, 19, 21, 23, 26, 29, 32, 35, 39,   &
4922        42, 45, 49, 55, 58, 62, 68, 73, 79, 87, 94,101,   &
4923       113,119,124,137,149,158,166,180,195,224,244,263,   &
4924       286,304,334,335 /
4928       info_rodas(1) = 1
4929       do i = 2, 6
4930           info_rodas(i) = 0
4931       end do
4932       hmax = tzz - taa
4934 !   do not integrate if hmax is less/equal to hmin
4935 !   because hmin is generally 0.1 s or less
4936       if (hmax .le. 1.001*hmin) then
4937           iok = 11
4938           return
4939       end if
4941       call rodas3_ff_x2(   &
4942            nvar_r04_kpp, taa, tzz, hmin, hmax, hstart,   &
4943            stot, atol, rtol, yposlimit, yneglimit,   &
4944            sfixedkpp, rconstkpp,   &
4945            lu_nonzero_v_r04_kpp, lu_crow_v, lu_diag_v, lu_icol_v,   &
4946            info_rodas, iok, lunerr,   &
4947            cbmz_v02r04_dydt,   &
4948            cbmz_v02r04_jacob,   &
4949            cbmz_v02r04_decomp,   &
4950            cbmz_v02r04_solve )
4952       return
4953       end subroutine cbmz_v02r04_torodas 
4956 !-----------------------------------------------------------------------------
4957       subroutine cbmz_v02r04_mapconcs( imap, nyy, yy, yyfixed, cbox )
4959 !   maps species concentrations (gaschemistry cbox array <--> kpp yy array)
4960 !   for mechanism-version-regime = cbmz_v02r04
4962       use module_data_cbmz
4963       implicit none
4965 !   subr parameters
4966 !     imap = mapping direction flag [input]
4967 !         0 = map cbox --> yy and yyfixed
4968 !         1 = map yy --> cbox
4969       integer imap
4970 !     nyy = number of kpp "variable" species [output]
4971       integer nyy
4972 !     yy = kpp species concentrations array [input/output]
4973       real yy(nvar_r04_kpp)
4974 !     yyfixed = kpp species concentrations array [input/output]
4975       real yyfixed(nfixed_kppmax)
4976 !     cbox = main gaschemistry species conc array [input/output]
4977       real cbox(ngas_z)
4979 !   local variables
4980       integer ih2so4_kpp
4981       parameter ( ih2so4_kpp = 1 )
4982       integer ircooh_kpp
4983       parameter ( ircooh_kpp = 2 )
4984       integer imsa_kpp
4985       parameter ( imsa_kpp = 3 )
4986       integer imtf_kpp
4987       parameter ( imtf_kpp = 4 )
4988       integer io1d_kpp
4989       parameter ( io1d_kpp = 5 )
4990       integer ic2h5oh_kpp
4991       parameter ( ic2h5oh_kpp = 6 )
4992       integer iso2_kpp
4993       parameter ( iso2_kpp = 7 )
4994       integer ic2h6_kpp
4995       parameter ( ic2h6_kpp = 8 )
4996       integer ipan_kpp
4997       parameter ( ipan_kpp = 9 )
4998       integer idmso2_kpp
4999       parameter ( idmso2_kpp = 10 )
5000       integer ih2o2_kpp
5001       parameter ( ih2o2_kpp = 11 )
5002       integer ich3oh_kpp
5003       parameter ( ich3oh_kpp = 12 )
5004       integer in2o5_kpp
5005       parameter ( in2o5_kpp = 13 )
5006       integer ihno4_kpp
5007       parameter ( ihno4_kpp = 14 )
5008       integer ico_kpp
5009       parameter ( ico_kpp = 15 )
5010       integer idmso_kpp
5011       parameter ( idmso_kpp = 16 )
5012       integer iethooh_kpp
5013       parameter ( iethooh_kpp = 17 )
5014       integer ihono_kpp
5015       parameter ( ihono_kpp = 18 )
5016       integer ich3ooh_kpp
5017       parameter ( ich3ooh_kpp = 19 )
5018       integer ich3so2oo_kpp
5019       parameter ( ich3so2oo_kpp = 20 )
5020       integer iethp_kpp
5021       parameter ( iethp_kpp = 21 )
5022       integer iald2_kpp
5023       parameter ( iald2_kpp = 22 )
5024       integer ich3so2ch2oo_kpp
5025       parameter ( ich3so2ch2oo_kpp = 23 )
5026       integer ihno3_kpp
5027       parameter ( ihno3_kpp = 24 )
5028       integer ic2o3_kpp
5029       parameter ( ic2o3_kpp = 25 )
5030       integer idms_kpp
5031       parameter ( idms_kpp = 26 )
5032       integer ich3sch2oo_kpp
5033       parameter ( ich3sch2oo_kpp = 27 )
5034       integer ihcho_kpp
5035       parameter ( ihcho_kpp = 28 )
5036       integer ich3so2h_kpp
5037       parameter ( ich3so2h_kpp = 29 )
5038       integer io3p_kpp
5039       parameter ( io3p_kpp = 30 )
5040       integer io3_kpp
5041       parameter ( io3_kpp = 31 )
5042       integer ich3so2_kpp
5043       parameter ( ich3so2_kpp = 32 )
5044       integer ich3so3_kpp
5045       parameter ( ich3so3_kpp = 33 )
5046       integer iho2_kpp
5047       parameter ( iho2_kpp = 34 )
5048       integer ich3o2_kpp
5049       parameter ( ich3o2_kpp = 35 )
5050       integer ino3_kpp
5051       parameter ( ino3_kpp = 36 )
5052       integer ino2_kpp
5053       parameter ( ino2_kpp = 37 )
5054       integer ino_kpp
5055       parameter ( ino_kpp = 38 )
5056       integer ioh_kpp
5057       parameter ( ioh_kpp = 39 )
5059 ! indexes declaration for fixed species
5060       integer ich4_kpp
5061       parameter ( ich4_kpp = 1 )
5062       integer ih2o_kpp
5063       parameter ( ih2o_kpp = 2 )
5064       integer ih2_kpp
5065       parameter ( ih2_kpp = 3 )
5066       integer io2_kpp
5067       parameter ( io2_kpp = 4 )
5068       integer in2_kpp
5069       parameter ( in2_kpp = 5 )
5072       nyy = nvar_r04_kpp
5074       if (imap .le. 0) goto 1000
5075       if (imap .ge. 1) goto 2000
5079 !   map cbox values into yyvarkpp and yyfixkpp
5081 1000  continue
5082       yy(ih2so4_kpp)    = cbox(ih2so4_z)
5083       yy(ircooh_kpp)    = cbox(ircooh_z)
5084       yy(imsa_kpp)      = cbox(imsa_z)
5085       yy(imtf_kpp)      = cbox(imtf_z)
5086       yy(io1d_kpp)      = cbox(io1d_z)
5087       yy(ic2h5oh_kpp)   = cbox(ic2h5oh_z)
5088       yy(iso2_kpp)      = cbox(iso2_z)
5089       yy(ic2h6_kpp)     = cbox(ic2h6_z)
5090       yy(ipan_kpp)      = cbox(ipan_z)
5091       yy(idmso2_kpp)    = cbox(idmso2_z)
5092       yy(ih2o2_kpp)     = cbox(ih2o2_z)
5093       yy(ich3oh_kpp)    = cbox(ich3oh_z)
5094       yy(in2o5_kpp)     = cbox(in2o5_z)
5095       yy(ihno4_kpp)     = cbox(ihno4_z)
5096       yy(ico_kpp)       = cbox(ico_z)
5097       yy(idmso_kpp)     = cbox(idmso_z)
5098       yy(iethooh_kpp)   = cbox(iethooh_z)
5099       yy(ihono_kpp)     = cbox(ihono_z)
5100       yy(ich3ooh_kpp)   = cbox(ich3ooh_z)
5101       yy(ich3so2oo_kpp) = cbox(ich3so2oo_z)
5102       yy(iethp_kpp)     = cbox(iethp_z)
5103       yy(iald2_kpp)     = cbox(iald2_z)
5104       yy(ich3so2ch2oo_kpp)      = cbox(ich3so2ch2oo_z)
5105       yy(ihno3_kpp)     = cbox(ihno3_z)
5106       yy(ic2o3_kpp)     = cbox(ic2o3_z)
5107       yy(idms_kpp)      = cbox(idms_z)
5108       yy(ich3sch2oo_kpp)        = cbox(ich3sch2oo_z)
5109       yy(ihcho_kpp)     = cbox(ihcho_z)
5110       yy(ich3so2h_kpp)  = cbox(ich3so2h_z)
5111       yy(io3p_kpp)      = cbox(io3p_z)
5112       yy(io3_kpp)       = cbox(io3_z)
5113       yy(ich3so2_kpp)   = cbox(ich3so2_z)
5114       yy(ich3so3_kpp)   = cbox(ich3so3_z)
5115       yy(iho2_kpp)      = cbox(iho2_z)
5116       yy(ich3o2_kpp)    = cbox(ich3o2_z)
5117       yy(ino3_kpp)      = cbox(ino3_z)
5118       yy(ino2_kpp)      = cbox(ino2_z)
5119       yy(ino_kpp)       = cbox(ino_z)
5120       yy(ioh_kpp)       = cbox(ioh_z)
5122       yyfixed(ich4_kpp) = cbox(ich4_z)
5123       yyfixed(ih2o_kpp) = cbox(ih2o_z)
5124       yyfixed(ih2_kpp)  = cbox(ih2_z)
5125       yyfixed(io2_kpp)  = cbox(io2_z)
5126       yyfixed(in2_kpp)  = cbox(in2_z)
5129 !   map yyvarkpp values into cbox
5131 2000  continue
5132       cbox(ih2so4_z)    = yy(ih2so4_kpp)
5133       cbox(ircooh_z)    = yy(ircooh_kpp)
5134       cbox(imsa_z)      = yy(imsa_kpp)
5135       cbox(imtf_z)      = yy(imtf_kpp)
5136       cbox(io1d_z)      = yy(io1d_kpp)
5137       cbox(ic2h5oh_z)   = yy(ic2h5oh_kpp)
5138       cbox(iso2_z)      = yy(iso2_kpp)
5139       cbox(ic2h6_z)     = yy(ic2h6_kpp)
5140       cbox(ipan_z)      = yy(ipan_kpp)
5141       cbox(idmso2_z)    = yy(idmso2_kpp)
5142       cbox(ih2o2_z)     = yy(ih2o2_kpp)
5143       cbox(ich3oh_z)    = yy(ich3oh_kpp)
5144       cbox(in2o5_z)     = yy(in2o5_kpp)
5145       cbox(ihno4_z)     = yy(ihno4_kpp)
5146       cbox(ico_z)       = yy(ico_kpp)
5147       cbox(idmso_z)     = yy(idmso_kpp)
5148       cbox(iethooh_z)   = yy(iethooh_kpp)
5149       cbox(ihono_z)     = yy(ihono_kpp)
5150       cbox(ich3ooh_z)   = yy(ich3ooh_kpp)
5151       cbox(ich3so2oo_z) = yy(ich3so2oo_kpp)
5152       cbox(iethp_z)     = yy(iethp_kpp)
5153       cbox(iald2_z)     = yy(iald2_kpp)
5154       cbox(ich3so2ch2oo_z)      = yy(ich3so2ch2oo_kpp)
5155       cbox(ihno3_z)     = yy(ihno3_kpp)
5156       cbox(ic2o3_z)     = yy(ic2o3_kpp)
5157       cbox(idms_z)      = yy(idms_kpp)
5158       cbox(ich3sch2oo_z)        = yy(ich3sch2oo_kpp)
5159       cbox(ihcho_z)     = yy(ihcho_kpp)
5160       cbox(ich3so2h_z)  = yy(ich3so2h_kpp)
5161       cbox(io3p_z)      = yy(io3p_kpp)
5162       cbox(io3_z)       = yy(io3_kpp)
5163       cbox(ich3so2_z)   = yy(ich3so2_kpp)
5164       cbox(ich3so3_z)   = yy(ich3so3_kpp)
5165       cbox(iho2_z)      = yy(iho2_kpp)
5166       cbox(ich3o2_z)    = yy(ich3o2_kpp)
5167       cbox(ino3_z)      = yy(ino3_kpp)
5168       cbox(ino2_z)      = yy(ino2_kpp)
5169       cbox(ino_z)       = yy(ino_kpp)
5170       cbox(ioh_z)       = yy(ioh_kpp)
5172       return
5173       end subroutine cbmz_v02r04_mapconcs                                
5176 !-----------------------------------------------------------------------------
5177       subroutine cbmz_v02r04_maprates(   &
5178           rk_m1,   &
5179           rk_m2,   &
5180           rk_m3,   &
5181           rk_m4,   &
5182           rconst )
5184 !   maps reaction rate constants (host code array --> kpp rconst array)
5185 !   for mechanism-version-regime = cbmz_v02r04
5187       use module_data_cbmz
5188       implicit none
5190 !   subr parameters
5191 !     all are host-code reaction-rate-constant arrays [input]
5192       real rk_m1(*)
5193       real rk_m2(*)
5194       real rk_m3(*)
5195       real rk_m4(*)
5196       real rconst(nreact_kppmax)
5198 !   local variables
5199       integer i
5201       do i = 1, nreact_kppmax
5202           rconst(i) = 0.
5203       end do
5206       rconst(1) = (rk_m1(1))
5207       rconst(2) = (rk_m1(2))
5208       rconst(3) = (rk_m1(3))
5209       rconst(4) = (rk_m1(4))
5210       rconst(5) = (rk_m1(5))
5211       rconst(6) = (rk_m1(6))
5212       rconst(7) = (rk_m1(7))
5213       rconst(8) = (rk_m1(8))
5214       rconst(9) = (rk_m1(9))
5215       rconst(10) = (rk_m1(10))
5216       rconst(11) = (rk_m1(11))
5217       rconst(12) = (rk_m1(12))
5218       rconst(13) = (rk_m1(13))
5219       rconst(14) = (rk_m1(14))
5220       rconst(15) = (rk_m1(15))
5221       rconst(16) = (rk_m1(16))
5222       rconst(17) = (rk_m1(17))
5223       rconst(18) = (rk_m1(18))
5224       rconst(19) = (rk_m1(19))
5225       rconst(20) = (rk_m1(20))
5226       rconst(21) = (rk_m1(21))
5227       rconst(22) = (rk_m1(22))
5228       rconst(23) = (rk_m1(23))
5229       rconst(24) = (rk_m1(24))
5230       rconst(25) = (rk_m1(25))
5231       rconst(26) = (rk_m1(26))
5232       rconst(27) = (rk_m1(27))
5233       rconst(28) = (rk_m1(28))
5234       rconst(29) = (rk_m1(29))
5235       rconst(30) = (rk_m1(30))
5236       rconst(31) = (rk_m1(31))
5237       rconst(32) = (rk_m1(32))
5238       rconst(33) = (rk_m1(33))
5239       rconst(34) = (rk_m1(34))
5240       rconst(35) = (rk_m1(35))
5241       rconst(36) = (rk_m1(36))
5242       rconst(37) = (rk_m1(37))
5243       rconst(38) = (rk_m1(38))
5244       rconst(39) = (rk_m1(39))
5245       rconst(40) = (rk_m1(40))
5246       rconst(41) = (rk_m1(41))
5247       rconst(42) = (rk_m1(42))
5248       rconst(43) = (rk_m1(43))
5249       rconst(44) = (rk_m1(44))
5250       rconst(45) = (rk_m1(45))
5251       rconst(46) = (rk_m1(46))
5252       rconst(47) = (rk_m1(47))
5253       rconst(48) = (rk_m1(48))
5254       rconst(49) = (rk_m1(49))
5255       rconst(50) = (rk_m1(50))
5256       rconst(51) = (rk_m1(51))
5257       rconst(52) = (rk_m1(52))
5258       rconst(53) = (rk_m1(53))
5259       rconst(54) = (rk_m1(54))
5260       rconst(55) = (rk_m1(55))
5261       rconst(56) = (rk_m1(56))
5262       rconst(57) = (rk_m1(57))
5263       rconst(58) = (rk_m1(58))
5264       rconst(59) = (rk_m1(59))
5265       rconst(60) = (rk_m1(60))
5266       rconst(61) = (rk_m1(61))
5267       rconst(62) = (rk_m1(62))
5268       rconst(63) = (rk_m1(63))
5269       rconst(64) = (rk_m1(64))
5270       rconst(65) = (rk_m1(65))
5271       rconst(66) = (rk_m2(2))
5272       rconst(67) = (rk_m2(3))
5273       rconst(68) = (rk_m2(4))
5274       rconst(69) = (rk_m2(31))
5275       rconst(70) = (rk_m2(32))
5276       rconst(71) = (rk_m2(34))
5277       rconst(72) = (rk_m2(39))
5278       rconst(73) = (rk_m2(44))
5279       rconst(74) = (rk_m2(49))
5280       rconst(75) = (rk_m4(1))
5281       rconst(76) = (rk_m4(2))
5282       rconst(77) = (rk_m4(3))
5283       rconst(78) = (rk_m4(4))
5284       rconst(79) = (rk_m4(5))
5285       rconst(80) = (rk_m4(6))
5286       rconst(81) = (rk_m4(7))
5287       rconst(82) = (rk_m4(8))
5288       rconst(83) = (rk_m4(9))
5289       rconst(84) = (rk_m4(10))
5290       rconst(85) = (rk_m4(11))
5291       rconst(86) = (rk_m4(12))
5292       rconst(87) = (rk_m4(13))
5293       rconst(88) = (rk_m4(14))
5294       rconst(89) = (rk_m4(15))
5295       rconst(90) = (rk_m4(16))
5296       rconst(91) = (rk_m4(17))
5297       rconst(92) = (rk_m4(18))
5298       rconst(93) = (rk_m4(19))
5299       rconst(94) = (rk_m4(20))
5300       rconst(95) = (rk_m4(21))
5301       rconst(96) = (rk_m4(22))
5302       rconst(97) = (rk_m4(23))
5303       rconst(98) = (rk_m4(24))
5304       rconst(99) = (rk_m4(25))
5305       rconst(100) = (rk_m4(26))
5306       rconst(101) = (rk_m4(27))
5307       rconst(102) = (rk_m4(28))
5308       rconst(103) = (rk_m4(29))
5309       rconst(104) = (rk_m4(30))
5310       rconst(105) = (rk_m4(31))
5311       rconst(106) = (rk_m4(32))
5312       return
5313       end subroutine cbmz_v02r04_maprates 
5316 !-----------------------------------------------------------------------------
5317       subroutine cbmz_v02r04_dydt( nvardum, tdum, v, a_var, f, rconst )
5319 !   computes rates of change for mechanism-version-regime = cbmz_v02r04
5321       use module_data_cbmz
5322       implicit none
5324 !   subr parameters
5325 !     nvardum = number of variable species [input]
5326       integer nvardum
5327 !     tdum = time [input]
5328       real tdum
5329 !     v = concentrations of variable species [input]
5330       real v(nvar_r04_kpp)
5331 !     a_var = dydt for each species [output]
5332       real a_var(nvar_r04_kpp)
5333 !     f = concentrations of fixed species [input]
5334       real f(nfixed_kppmax)
5335 !     rconst = reaction rate constants [input]
5336       real rconst(nreact_r04_kpp)
5338 !   local variables
5339 !     a = rate for each reaction
5340       real a(nreact_r04_kpp)
5342 ! computation of equation rates
5343       a(1) = rconst(1)*v(37)
5344       a(2) = rconst(2)*v(36)
5345       a(3) = rconst(3)*v(18)
5346       a(4) = rconst(4)*v(24)
5347       a(5) = rconst(5)*v(14)
5348       a(6) = rconst(6)*v(13)
5349       a(7) = rconst(7)*v(31)
5350       a(8) = rconst(8)*v(31)
5351       a(9) = rconst(9)*v(11)
5352       a(10) = rconst(10)*v(5)*f(4)
5353       a(11) = rconst(11)*v(5)*f(5)
5354       a(12) = rconst(12)*v(5)*f(2)
5355       a(13) = rconst(13)*v(30)*f(4)
5356       a(14) = rconst(14)*v(30)*v(31)
5357       a(15) = rconst(15)*v(30)*v(37)
5358       a(16) = rconst(16)*v(30)*v(37)
5359       a(17) = rconst(17)*v(30)*v(38)
5360       a(18) = rconst(18)*v(31)*v(38)
5361       a(19) = rconst(19)*v(31)*v(37)
5362       a(20) = rconst(20)*v(31)*v(39)
5363       a(21) = rconst(21)*v(31)*v(34)
5364       a(22) = rconst(22)*v(39)*f(3)
5365       a(23) = rconst(23)*v(38)*v(39)
5366       a(24) = rconst(24)*v(37)*v(39)
5367       a(25) = rconst(25)*v(36)*v(39)
5368       a(26) = rconst(26)*v(18)*v(39)
5369       a(27) = rconst(27)*v(24)*v(39)
5370       a(28) = rconst(28)*v(14)*v(39)
5371       a(29) = rconst(29)*v(34)*v(39)
5372       a(30) = rconst(30)*v(11)*v(39)
5373       a(31) = rconst(31)*v(34)*v(34)
5374       a(32) = rconst(32)*v(34)*v(34)*f(2)
5375       a(33) = rconst(33)*v(34)*v(38)
5376       a(34) = rconst(34)*v(34)*v(37)
5377       a(35) = rconst(35)*v(34)*v(37)
5378       a(36) = rconst(36)*v(14)
5379       a(37) = rconst(37)*v(36)*v(38)
5380       a(38) = rconst(38)*v(36)*v(37)
5381       a(39) = rconst(39)*v(36)*v(37)
5382       a(40) = rconst(40)*v(36)*v(36)
5383       a(41) = rconst(41)*v(34)*v(36)
5384       a(42) = rconst(42)*v(13)*f(2)
5385       a(43) = rconst(43)*v(13)
5386       a(44) = rconst(44)*v(15)*v(39)
5387       a(45) = rconst(45)*v(7)*v(39)
5388       a(46) = rconst(46)*v(39)*f(1)
5389       a(47) = rconst(47)*v(8)*v(39)
5390       a(48) = rconst(48)*v(12)*v(39)
5391       a(49) = rconst(49)*v(28)
5392       a(50) = rconst(50)*v(28)
5393       a(51) = rconst(51)*v(28)*v(39)
5394       a(52) = rconst(52)*v(28)*v(36)
5395       a(53) = rconst(53)*v(19)
5396       a(54) = rconst(54)*v(17)
5397       a(55) = rconst(55)*v(19)*v(39)
5398       a(56) = rconst(56)*v(17)*v(39)
5399       a(57) = rconst(57)*v(35)*v(38)
5400       a(58) = rconst(58)*v(21)*v(38)
5401       a(59) = rconst(59)*v(35)*v(36)
5402       a(60) = rconst(60)*v(21)*v(36)
5403       a(61) = rconst(61)*v(34)*v(35)
5404       a(62) = rconst(62)*v(21)*v(34)
5405       a(63) = rconst(63)*v(35)
5406       a(64) = rconst(64)*v(21)
5407       a(65) = rconst(65)*v(6)*v(39)
5408       a(66) = rconst(66)*v(22)
5409       a(67) = rconst(67)*v(22)*v(39)
5410       a(68) = rconst(68)*v(22)*v(36)
5411       a(69) = rconst(69)*v(25)*v(37)
5412       a(70) = rconst(70)*v(9)
5413       a(71) = rconst(71)*v(25)*v(38)
5414       a(72) = rconst(72)*v(25)*v(36)
5415       a(73) = rconst(73)*v(25)*v(34)
5416       a(74) = rconst(74)*v(25)
5417       a(75) = rconst(75)*v(26)*v(39)
5418       a(76) = rconst(76)*v(26)*v(36)
5419       a(77) = rconst(77)*v(26)*v(30)
5420       a(78) = rconst(78)*v(26)*v(39)
5421       a(79) = rconst(79)*v(27)*v(38)
5422       a(80) = rconst(80)*v(27)*v(35)
5423       a(81) = rconst(81)*v(27)*v(32)
5424       a(82) = rconst(82)*v(27)*v(27)
5425       a(83) = rconst(83)*v(16)*v(39)
5426       a(84) = rconst(84)*v(10)*v(39)
5427       a(85) = rconst(85)*v(23)*v(38)
5428       a(86) = rconst(86)*v(23)*v(35)
5429       a(87) = rconst(87)*v(29)*v(34)
5430       a(88) = rconst(88)*v(29)*v(36)
5431       a(89) = rconst(89)*v(29)*v(35)
5432       a(90) = rconst(90)*v(29)*v(39)
5433       a(91) = rconst(91)*v(29)*v(33)
5434       a(92) = rconst(92)*v(32)
5435       a(93) = rconst(93)*v(32)*v(37)
5436       a(94) = rconst(94)*v(31)*v(32)
5437       a(95) = rconst(95)*v(32)*v(34)
5438       a(96) = rconst(96)*v(32)*v(35)
5439       a(97) = rconst(97)*v(32)*v(39)
5440       a(98) = rconst(98)*v(32)*f(4)
5441       a(99) = rconst(99)*v(20)
5442       a(100) = rconst(100)*v(20)*v(38)
5443       a(101) = rconst(101)*v(20)*v(35)
5444       a(102) = rconst(102)*v(33)
5445       a(103) = rconst(103)*v(33)*v(37)
5446       a(104) = rconst(104)*v(33)*v(38)
5447       a(105) = rconst(105)*v(33)*v(34)
5448       a(106) = rconst(106)*v(28)*v(33)
5450 ! aggregate function
5451       a_var(1) = a(45)+a(102)
5452       a_var(2) = 0.4*a(73)
5453       a_var(3) = a(91)+a(97)+a(103)+a(104)+a(105)+a(106)
5454       a_var(4) = 0.15*a(82)
5455       a_var(5) = a(8)-a(10)-a(11)-a(12)
5456       a_var(6) = -a(65)
5457       a_var(7) = -a(45)+a(92)
5458       a_var(8) = -a(47)+0.2*a(64)
5459       a_var(9) = a(69)-a(70)
5460       a_var(10) = 0.27*a(83)-a(84)
5461       a_var(11) = -a(9)-a(30)+a(31)+a(32)+a(87)
5462       a_var(12) = -a(48)+0.34*a(63)
5463       a_var(13) = -a(6)+a(39)-a(42)-a(43)
5464       a_var(14) = -a(5)-a(28)+a(34)-a(36)
5465       a_var(15) = -a(44)+a(49)+a(50)+a(51)+a(52)+a(66)+a(106)
5466       a_var(16) = 0.965*a(78)-a(83)
5467       a_var(17) = -a(54)-a(56)+a(62)
5468       a_var(18) = -a(3)+a(23)-a(26)+a(35)+a(104)
5469       a_var(19) = -a(53)-a(55)+a(61)+a(89)
5470       a_var(20) = a(98)-a(99)-a(100)-a(101)
5471       a_var(21) = a(47)+0.5*a(56)-a(58)-a(60)-a(62)-a(64)
5472       a_var(22) = a(54)+0.5*a(56)+a(58)+a(60)+0.8*a(64)+a(65)-a(66)   &
5473                  -a(67)-a(68)
5474       a_var(23) = a(84)-a(85)-a(86)
5475       a_var(24) = -a(4)+a(24)-a(27)+0.3*a(41)+2*a(42)+a(52)+a(68)   &
5476                  +a(76)+a(88)+a(103)
5477       a_var(25) = a(67)+a(68)-a(69)+a(70)-a(71)-a(72)-a(73)-a(74)
5478       a_var(26) = -a(75)-a(76)-a(77)-a(78)
5479       a_var(27) = a(75)+a(76)-a(79)-a(80)-a(81)-2*a(82)
5480       a_var(28) = a(48)-a(49)-a(50)-a(51)-a(52)+a(53)+0.3*a(55)+a(57)   &
5481                  +a(59)+0.66*a(63)+a(79)+2*a(80)+a(81)+a(85)+2*a(86)   &
5482                  +a(96)+a(101)-a(106)
5483       a_var(29) = 0.73*a(83)-a(87)-a(88)-a(89)-a(90)-a(91)
5484       a_var(30) = a(1)+0.89*a(2)+a(7)+a(10)+a(11)-a(13)-a(14)-a(15)   &
5485                  -a(16)-a(17)-a(77)
5486       a_var(31) = -a(7)-a(8)+a(13)-a(14)-a(18)-a(19)-a(20)-a(21)+0.4   &
5487                  *a(73)-a(94)
5488       a_var(32) = a(77)+0.035*a(78)+a(79)+a(80)+1.85*a(82)+a(85)+a(86)   &
5489                  +a(87)+a(88)+a(89)+a(90)+a(91)-a(92)-a(93)-a(94)   &
5490                  -a(95)-a(96)-a(97)-a(98)+a(99)
5491       a_var(33) = a(81)-a(91)+a(93)+a(94)+a(95)+a(96)+a(100)+a(101)   &
5492                  -a(102)-a(103)-a(104)-a(105)-a(106)
5493       a_var(34) = a(5)+a(20)-a(21)+a(22)+a(25)-a(29)+a(30)-2*a(31)-2   &
5494                  *a(32)-a(33)-a(34)-a(35)+a(36)-a(41)+a(44)+a(45)   &
5495                  +a(48)+2*a(49)+a(51)+a(52)+a(53)+a(54)+a(57)+a(58)   &
5496                  +a(59)+a(60)-a(61)-a(62)+0.32*a(63)+0.6*a(64)+a(65)   &
5497                  +a(66)-a(73)+0.965*a(78)+a(80)+0.27*a(83)+a(86)-a(87)   &
5498                  -a(95)+a(96)+a(101)-a(105)+a(106)
5499       a_var(35) = a(46)+0.7*a(55)-a(57)-a(59)-a(61)-a(63)+a(66)+a(71)   &
5500                  +a(72)+a(74)+a(77)+0.035*a(78)-a(80)+0.73*a(83)-a(86)   &
5501                  -a(89)+a(92)-a(96)-a(101)+a(102)
5502       a_var(36) = -a(2)+a(6)+a(16)+a(19)-a(25)+a(27)-a(37)-a(38)-a(39)   &
5503                  -2*a(40)-a(41)+a(43)-a(52)-a(59)-a(60)-a(68)-a(72)   &
5504                  -a(76)-a(88)
5505       a_var(37) = -a(1)+0.89*a(2)+a(4)+a(5)+a(6)-a(15)-a(16)+a(17)   &
5506                  +a(18)-a(19)-a(24)+a(25)+a(26)+a(28)+a(33)-a(34)   &
5507                  -a(35)+a(36)+2*a(37)-a(39)+2*a(40)+0.7*a(41)+a(43)   &
5508                  +a(57)+a(58)+a(59)+a(60)-a(69)+a(70)+a(71)+a(72)   &
5509                  +a(79)+a(85)-a(93)+a(100)-a(103)
5510       a_var(38) = a(1)+0.11*a(2)+a(3)+a(15)-a(17)-a(18)-a(23)-a(33)   &
5511                  -a(37)+a(38)-a(57)-a(58)-a(71)-a(79)-a(85)+a(93)   &
5512                  -a(100)-a(104)
5513       a_var(39) = a(3)+a(4)+2*a(9)+2*a(12)-a(20)+a(21)-a(22)-a(23)   &
5514                  -a(24)-a(25)-a(26)-a(27)-a(28)-a(29)-a(30)+a(33)+0.7   &
5515                  *a(41)-a(44)-a(45)-a(46)-a(47)-a(48)-a(51)+a(53)   &
5516                  +a(54)-0.7*a(55)-0.5*a(56)-a(65)-a(67)-a(75)-a(78)   &
5517                  -a(83)-a(84)-a(90)+a(95)-a(97)
5518       return
5519       end subroutine cbmz_v02r04_dydt                                      
5522 !-----------------------------------------------------------------------------
5523       subroutine cbmz_v02r04_jacob( nvardum, tdum, v, jvs, f, rconst )
5525 !   computes jacobian for mechanism-version-regime = cbmz_v02r04
5527       use module_data_cbmz
5528       implicit none
5530 !   subr parameters
5531 !     nvardum = number of variable species [input]
5532       integer nvardum
5533 !     tdum = time [input]
5534       real tdum
5535 !     v = concentrations of variable species [input]
5536       real v(nvar_r04_kpp)
5537 !     jvs = non-zero jacobian elements [output]
5538       real jvs(lu_nonzero_v_r04_kpp)
5539 !     f = concentrations of fixed species [input]
5540       real f(nfixed_kppmax)
5541 !     rconst = reaction rate constants [input]
5542       real rconst(nreact_r04_kpp)
5544 !   local variables
5545 !     b(i,j) = d[reaction_rate(i)] / d[species_conc(j)]
5546       real b(nreact_r04_kpp,nvar_r04_kpp)
5548 ! computation of b(i,j) = da(i)/dv(j)
5549       b(1,37) = rconst(1)
5550       b(2,36) = rconst(2)
5551       b(3,18) = rconst(3)
5552       b(4,24) = rconst(4)
5553       b(5,14) = rconst(5)
5554       b(6,13) = rconst(6)
5555       b(7,31) = rconst(7)
5556       b(8,31) = rconst(8)
5557       b(9,11) = rconst(9)
5558       b(10,5) = rconst(10)*f(4)
5559       b(11,5) = rconst(11)*f(5)
5560       b(12,5) = rconst(12)*f(2)
5561       b(13,30) = rconst(13)*f(4)
5562       b(14,30) = rconst(14)*v(31)
5563       b(14,31) = rconst(14)*v(30)
5564       b(15,30) = rconst(15)*v(37)
5565       b(15,37) = rconst(15)*v(30)
5566       b(16,30) = rconst(16)*v(37)
5567       b(16,37) = rconst(16)*v(30)
5568       b(17,30) = rconst(17)*v(38)
5569       b(17,38) = rconst(17)*v(30)
5570       b(18,31) = rconst(18)*v(38)
5571       b(18,38) = rconst(18)*v(31)
5572       b(19,31) = rconst(19)*v(37)
5573       b(19,37) = rconst(19)*v(31)
5574       b(20,31) = rconst(20)*v(39)
5575       b(20,39) = rconst(20)*v(31)
5576       b(21,31) = rconst(21)*v(34)
5577       b(21,34) = rconst(21)*v(31)
5578       b(22,39) = rconst(22)*f(3)
5579       b(23,38) = rconst(23)*v(39)
5580       b(23,39) = rconst(23)*v(38)
5581       b(24,37) = rconst(24)*v(39)
5582       b(24,39) = rconst(24)*v(37)
5583       b(25,36) = rconst(25)*v(39)
5584       b(25,39) = rconst(25)*v(36)
5585       b(26,18) = rconst(26)*v(39)
5586       b(26,39) = rconst(26)*v(18)
5587       b(27,24) = rconst(27)*v(39)
5588       b(27,39) = rconst(27)*v(24)
5589       b(28,14) = rconst(28)*v(39)
5590       b(28,39) = rconst(28)*v(14)
5591       b(29,34) = rconst(29)*v(39)
5592       b(29,39) = rconst(29)*v(34)
5593       b(30,11) = rconst(30)*v(39)
5594       b(30,39) = rconst(30)*v(11)
5595       b(31,34) = rconst(31)*2*v(34)
5596       b(32,34) = rconst(32)*2*v(34)*f(2)
5597       b(33,34) = rconst(33)*v(38)
5598       b(33,38) = rconst(33)*v(34)
5599       b(34,34) = rconst(34)*v(37)
5600       b(34,37) = rconst(34)*v(34)
5601       b(35,34) = rconst(35)*v(37)
5602       b(35,37) = rconst(35)*v(34)
5603       b(36,14) = rconst(36)
5604       b(37,36) = rconst(37)*v(38)
5605       b(37,38) = rconst(37)*v(36)
5606       b(38,36) = rconst(38)*v(37)
5607       b(38,37) = rconst(38)*v(36)
5608       b(39,36) = rconst(39)*v(37)
5609       b(39,37) = rconst(39)*v(36)
5610       b(40,36) = rconst(40)*2*v(36)
5611       b(41,34) = rconst(41)*v(36)
5612       b(41,36) = rconst(41)*v(34)
5613       b(42,13) = rconst(42)*f(2)
5614       b(43,13) = rconst(43)
5615       b(44,15) = rconst(44)*v(39)
5616       b(44,39) = rconst(44)*v(15)
5617       b(45,7) = rconst(45)*v(39)
5618       b(45,39) = rconst(45)*v(7)
5619       b(46,39) = rconst(46)*f(1)
5620       b(47,8) = rconst(47)*v(39)
5621       b(47,39) = rconst(47)*v(8)
5622       b(48,12) = rconst(48)*v(39)
5623       b(48,39) = rconst(48)*v(12)
5624       b(49,28) = rconst(49)
5625       b(50,28) = rconst(50)
5626       b(51,28) = rconst(51)*v(39)
5627       b(51,39) = rconst(51)*v(28)
5628       b(52,28) = rconst(52)*v(36)
5629       b(52,36) = rconst(52)*v(28)
5630       b(53,19) = rconst(53)
5631       b(54,17) = rconst(54)
5632       b(55,19) = rconst(55)*v(39)
5633       b(55,39) = rconst(55)*v(19)
5634       b(56,17) = rconst(56)*v(39)
5635       b(56,39) = rconst(56)*v(17)
5636       b(57,35) = rconst(57)*v(38)
5637       b(57,38) = rconst(57)*v(35)
5638       b(58,21) = rconst(58)*v(38)
5639       b(58,38) = rconst(58)*v(21)
5640       b(59,35) = rconst(59)*v(36)
5641       b(59,36) = rconst(59)*v(35)
5642       b(60,21) = rconst(60)*v(36)
5643       b(60,36) = rconst(60)*v(21)
5644       b(61,34) = rconst(61)*v(35)
5645       b(61,35) = rconst(61)*v(34)
5646       b(62,21) = rconst(62)*v(34)
5647       b(62,34) = rconst(62)*v(21)
5648       b(63,35) = rconst(63)
5649       b(64,21) = rconst(64)
5650       b(65,6) = rconst(65)*v(39)
5651       b(65,39) = rconst(65)*v(6)
5652       b(66,22) = rconst(66)
5653       b(67,22) = rconst(67)*v(39)
5654       b(67,39) = rconst(67)*v(22)
5655       b(68,22) = rconst(68)*v(36)
5656       b(68,36) = rconst(68)*v(22)
5657       b(69,25) = rconst(69)*v(37)
5658       b(69,37) = rconst(69)*v(25)
5659       b(70,9) = rconst(70)
5660       b(71,25) = rconst(71)*v(38)
5661       b(71,38) = rconst(71)*v(25)
5662       b(72,25) = rconst(72)*v(36)
5663       b(72,36) = rconst(72)*v(25)
5664       b(73,25) = rconst(73)*v(34)
5665       b(73,34) = rconst(73)*v(25)
5666       b(74,25) = rconst(74)
5667       b(75,26) = rconst(75)*v(39)
5668       b(75,39) = rconst(75)*v(26)
5669       b(76,26) = rconst(76)*v(36)
5670       b(76,36) = rconst(76)*v(26)
5671       b(77,26) = rconst(77)*v(30)
5672       b(77,30) = rconst(77)*v(26)
5673       b(78,26) = rconst(78)*v(39)
5674       b(78,39) = rconst(78)*v(26)
5675       b(79,27) = rconst(79)*v(38)
5676       b(79,38) = rconst(79)*v(27)
5677       b(80,27) = rconst(80)*v(35)
5678       b(80,35) = rconst(80)*v(27)
5679       b(81,27) = rconst(81)*v(32)
5680       b(81,32) = rconst(81)*v(27)
5681       b(82,27) = rconst(82)*2*v(27)
5682       b(83,16) = rconst(83)*v(39)
5683       b(83,39) = rconst(83)*v(16)
5684       b(84,10) = rconst(84)*v(39)
5685       b(84,39) = rconst(84)*v(10)
5686       b(85,23) = rconst(85)*v(38)
5687       b(85,38) = rconst(85)*v(23)
5688       b(86,23) = rconst(86)*v(35)
5689       b(86,35) = rconst(86)*v(23)
5690       b(87,29) = rconst(87)*v(34)
5691       b(87,34) = rconst(87)*v(29)
5692       b(88,29) = rconst(88)*v(36)
5693       b(88,36) = rconst(88)*v(29)
5694       b(89,29) = rconst(89)*v(35)
5695       b(89,35) = rconst(89)*v(29)
5696       b(90,29) = rconst(90)*v(39)
5697       b(90,39) = rconst(90)*v(29)
5698       b(91,29) = rconst(91)*v(33)
5699       b(91,33) = rconst(91)*v(29)
5700       b(92,32) = rconst(92)
5701       b(93,32) = rconst(93)*v(37)
5702       b(93,37) = rconst(93)*v(32)
5703       b(94,31) = rconst(94)*v(32)
5704       b(94,32) = rconst(94)*v(31)
5705       b(95,32) = rconst(95)*v(34)
5706       b(95,34) = rconst(95)*v(32)
5707       b(96,32) = rconst(96)*v(35)
5708       b(96,35) = rconst(96)*v(32)
5709       b(97,32) = rconst(97)*v(39)
5710       b(97,39) = rconst(97)*v(32)
5711       b(98,32) = rconst(98)*f(4)
5712       b(99,20) = rconst(99)
5713       b(100,20) = rconst(100)*v(38)
5714       b(100,38) = rconst(100)*v(20)
5715       b(101,20) = rconst(101)*v(35)
5716       b(101,35) = rconst(101)*v(20)
5717       b(102,33) = rconst(102)
5718       b(103,33) = rconst(103)*v(37)
5719       b(103,37) = rconst(103)*v(33)
5720       b(104,33) = rconst(104)*v(38)
5721       b(104,38) = rconst(104)*v(33)
5722       b(105,33) = rconst(105)*v(34)
5723       b(105,34) = rconst(105)*v(33)
5724       b(106,28) = rconst(106)*v(33)
5725       b(106,33) = rconst(106)*v(28)
5727 ! construct the jacobian terms from b's
5728       jvs(1) = 0
5729       jvs(2) = b(45,7)
5730       jvs(3) = b(102,33)
5731       jvs(4) = b(45,39)
5732       jvs(5) = 0
5733       jvs(6) = 0.4*b(73,25)
5734       jvs(7) = 0.4*b(73,34)
5735       jvs(8) = 0
5736       jvs(9) = b(106,28)
5737       jvs(10) = b(91,29)
5738       jvs(11) = b(97,32)
5739       jvs(12) = b(91,33)+b(103,33)+b(104,33)+b(105,33)+b(106,33)
5740       jvs(13) = b(105,34)
5741       jvs(14) = b(103,37)
5742       jvs(15) = b(104,38)
5743       jvs(16) = b(97,39)
5744       jvs(17) = 0
5745       jvs(18) = 0.15*b(82,27)
5746       jvs(19) = -b(10,5)-b(11,5)-b(12,5)
5747       jvs(20) = b(8,31)
5748       jvs(21) = -b(65,6)
5749       jvs(22) = -b(65,39)
5750       jvs(23) = -b(45,7)
5751       jvs(24) = b(92,32)
5752       jvs(25) = -b(45,39)
5753       jvs(26) = -b(47,8)
5754       jvs(27) = 0.2*b(64,21)
5755       jvs(28) = -b(47,39)
5756       jvs(29) = -b(70,9)
5757       jvs(30) = b(69,25)
5758       jvs(31) = b(69,37)
5759       jvs(32) = -b(84,10)
5760       jvs(33) = 0.27*b(83,16)
5761       jvs(34) = 0.27*b(83,39)-b(84,39)
5762       jvs(35) = -b(9,11)-b(30,11)
5763       jvs(36) = b(87,29)
5764       jvs(37) = b(31,34)+b(32,34)+b(87,34)
5765       jvs(38) = -b(30,39)
5766       jvs(39) = -b(48,12)
5767       jvs(40) = 0.34*b(63,35)
5768       jvs(41) = -b(48,39)
5769       jvs(42) = -b(6,13)-b(42,13)-b(43,13)
5770       jvs(43) = b(39,36)
5771       jvs(44) = b(39,37)
5772       jvs(45) = -b(5,14)-b(28,14)-b(36,14)
5773       jvs(46) = b(34,34)
5774       jvs(47) = b(34,37)
5775       jvs(48) = -b(28,39)
5776       jvs(49) = -b(44,15)
5777       jvs(50) = b(66,22)
5778       jvs(51) = b(49,28)+b(50,28)+b(51,28)+b(52,28)+b(106,28)
5779       jvs(52) = b(106,33)
5780       jvs(53) = b(52,36)
5781       jvs(54) = -b(44,39)+b(51,39)
5782       jvs(55) = -b(83,16)
5783       jvs(56) = 0.965*b(78,26)
5784       jvs(57) = 0.965*b(78,39)-b(83,39)
5785       jvs(58) = -b(54,17)-b(56,17)
5786       jvs(59) = b(62,21)
5787       jvs(60) = b(62,34)
5788       jvs(61) = -b(56,39)
5789       jvs(62) = -b(3,18)-b(26,18)
5790       jvs(63) = b(104,33)
5791       jvs(64) = b(35,34)
5792       jvs(65) = b(35,37)
5793       jvs(66) = b(23,38)+b(104,38)
5794       jvs(67) = b(23,39)-b(26,39)
5795       jvs(68) = -b(53,19)-b(55,19)
5796       jvs(69) = b(89,29)
5797       jvs(70) = b(61,34)
5798       jvs(71) = b(61,35)+b(89,35)
5799       jvs(72) = -b(55,39)
5800       jvs(73) = -b(99,20)-b(100,20)-b(101,20)
5801       jvs(74) = b(98,32)
5802       jvs(75) = -b(101,35)
5803       jvs(76) = -b(100,38)
5804       jvs(77) = b(47,8)
5805       jvs(78) = 0.5*b(56,17)
5806       jvs(79) = -b(58,21)-b(60,21)-b(62,21)-b(64,21)
5807       jvs(80) = -b(62,34)
5808       jvs(81) = -b(60,36)
5809       jvs(82) = -b(58,38)
5810       jvs(83) = b(47,39)+0.5*b(56,39)
5811       jvs(84) = b(65,6)
5812       jvs(85) = b(54,17)+0.5*b(56,17)
5813       jvs(86) = b(58,21)+b(60,21)+0.8*b(64,21)
5814       jvs(87) = -b(66,22)-b(67,22)-b(68,22)
5815       jvs(88) = 0
5816       jvs(89) = b(60,36)-b(68,36)
5817       jvs(90) = b(58,38)
5818       jvs(91) = 0.5*b(56,39)+b(65,39)-b(67,39)
5819       jvs(92) = b(84,10)
5820       jvs(93) = 0
5821       jvs(94) = -b(85,23)-b(86,23)
5822       jvs(95) = 0
5823       jvs(96) = -b(86,35)
5824       jvs(97) = -b(85,38)
5825       jvs(98) = b(84,39)
5826       jvs(99) = 2*b(42,13)
5827       jvs(100) = b(68,22)
5828       jvs(101) = -b(4,24)-b(27,24)
5829       jvs(102) = b(76,26)
5830       jvs(103) = b(52,28)
5831       jvs(104) = b(88,29)
5832       jvs(105) = b(103,33)
5833       jvs(106) = 0.3*b(41,34)
5834       jvs(107) = 0.3*b(41,36)+b(52,36)+b(68,36)+b(76,36)+b(88,36)
5835       jvs(108) = b(24,37)+b(103,37)
5836       jvs(109) = 0
5837       jvs(110) = b(24,39)-b(27,39)
5838       jvs(111) = b(70,9)
5839       jvs(112) = b(67,22)+b(68,22)
5840       jvs(113) = -b(69,25)-b(71,25)-b(72,25)-b(73,25)-b(74,25)
5841       jvs(114) = -b(73,34)
5842       jvs(115) = b(68,36)-b(72,36)
5843       jvs(116) = -b(69,37)
5844       jvs(117) = -b(71,38)
5845       jvs(118) = b(67,39)
5846       jvs(119) = -b(75,26)-b(76,26)-b(77,26)-b(78,26)
5847       jvs(120) = -b(77,30)
5848       jvs(121) = -b(76,36)
5849       jvs(122) = -b(75,39)-b(78,39)
5850       jvs(123) = b(75,26)+b(76,26)
5851       jvs(124) = -b(79,27)-b(80,27)-b(81,27)-2*b(82,27)
5852       jvs(125) = 0
5853       jvs(126) = -b(81,32)
5854       jvs(127) = -b(80,35)
5855       jvs(128) = b(76,36)
5856       jvs(129) = -b(79,38)
5857       jvs(130) = b(75,39)
5858       jvs(131) = b(48,12)
5859       jvs(132) = b(53,19)+0.3*b(55,19)
5860       jvs(133) = b(101,20)
5861       jvs(134) = b(85,23)+2*b(86,23)
5862       jvs(135) = 0
5863       jvs(136) = b(79,27)+2*b(80,27)+b(81,27)
5864       jvs(137) = -b(49,28)-b(50,28)-b(51,28)-b(52,28)-b(106,28)
5865       jvs(138) = 0
5866       jvs(139) = 0
5867       jvs(140) = b(81,32)+b(96,32)
5868       jvs(141) = -b(106,33)
5869       jvs(142) = 0
5870       jvs(143) = b(57,35)+b(59,35)+0.66*b(63,35)+2*b(80,35)+2*b(86,35)   &
5871                 +b(96,35)+b(101,35)
5872       jvs(144) = -b(52,36)+b(59,36)
5873       jvs(145) = b(57,38)+b(79,38)+b(85,38)
5874       jvs(146) = b(48,39)-b(51,39)+0.3*b(55,39)
5875       jvs(147) = 0.73*b(83,16)
5876       jvs(148) = 0
5877       jvs(149) = -b(87,29)-b(88,29)-b(89,29)-b(90,29)-b(91,29)
5878       jvs(150) = 0
5879       jvs(151) = -b(91,33)
5880       jvs(152) = -b(87,34)
5881       jvs(153) = -b(89,35)
5882       jvs(154) = -b(88,36)
5883       jvs(155) = 0.73*b(83,39)-b(90,39)
5884       jvs(156) = b(10,5)+b(11,5)
5885       jvs(157) = -b(77,26)
5886       jvs(158) = -b(13,30)-b(14,30)-b(15,30)-b(16,30)-b(17,30)   &
5887                 -b(77,30)
5888       jvs(159) = b(7,31)-b(14,31)
5889       jvs(160) = 0.89*b(2,36)
5890       jvs(161) = b(1,37)-b(15,37)-b(16,37)
5891       jvs(162) = -b(17,38)
5892       jvs(163) = 0
5893       jvs(164) = 0.4*b(73,25)
5894       jvs(165) = b(13,30)-b(14,30)
5895       jvs(166) = -b(7,31)-b(8,31)-b(14,31)-b(18,31)-b(19,31)-b(20,31)   &
5896                 -b(21,31)-b(94,31)
5897       jvs(167) = -b(94,32)
5898       jvs(168) = -b(21,34)+0.4*b(73,34)
5899       jvs(169) = 0
5900       jvs(170) = -b(19,37)
5901       jvs(171) = -b(18,38)
5902       jvs(172) = -b(20,39)
5903       jvs(173) = b(99,20)
5904       jvs(174) = b(85,23)+b(86,23)
5905       jvs(175) = b(77,26)+0.035*b(78,26)
5906       jvs(176) = b(79,27)+b(80,27)+1.85*b(82,27)
5907       jvs(177) = b(87,29)+b(88,29)+b(89,29)+b(90,29)+b(91,29)
5908       jvs(178) = b(77,30)
5909       jvs(179) = -b(94,31)
5910       jvs(180) = -b(92,32)-b(93,32)-b(94,32)-b(95,32)-b(96,32)   &
5911                 -b(97,32)-b(98,32)
5912       jvs(181) = b(91,33)
5913       jvs(182) = b(87,34)-b(95,34)
5914       jvs(183) = b(80,35)+b(86,35)+b(89,35)-b(96,35)
5915       jvs(184) = b(88,36)
5916       jvs(185) = -b(93,37)
5917       jvs(186) = b(79,38)+b(85,38)
5918       jvs(187) = 0.035*b(78,39)+b(90,39)-b(97,39)
5919       jvs(188) = b(100,20)+b(101,20)
5920       jvs(189) = b(81,27)
5921       jvs(190) = -b(106,28)
5922       jvs(191) = -b(91,29)
5923       jvs(192) = 0
5924       jvs(193) = b(94,31)
5925       jvs(194) = b(81,32)+b(93,32)+b(94,32)+b(95,32)+b(96,32)
5926       jvs(195) = -b(91,33)-b(102,33)-b(103,33)-b(104,33)-b(105,33)   &
5927                 -b(106,33)
5928       jvs(196) = b(95,34)-b(105,34)
5929       jvs(197) = b(96,35)+b(101,35)
5930       jvs(198) = 0
5931       jvs(199) = b(93,37)-b(103,37)
5932       jvs(200) = b(100,38)-b(104,38)
5933       jvs(201) = 0
5934       jvs(202) = b(65,6)
5935       jvs(203) = b(45,7)
5936       jvs(204) = b(30,11)
5937       jvs(205) = b(48,12)
5938       jvs(206) = b(5,14)+b(36,14)
5939       jvs(207) = b(44,15)
5940       jvs(208) = 0.27*b(83,16)
5941       jvs(209) = b(54,17)
5942       jvs(210) = b(53,19)
5943       jvs(211) = b(101,20)
5944       jvs(212) = b(58,21)+b(60,21)-b(62,21)+0.6*b(64,21)
5945       jvs(213) = b(66,22)
5946       jvs(214) = b(86,23)
5947       jvs(215) = -b(73,25)
5948       jvs(216) = 0.965*b(78,26)
5949       jvs(217) = b(80,27)
5950       jvs(218) = 2*b(49,28)+b(51,28)+b(52,28)+b(106,28)
5951       jvs(219) = -b(87,29)
5952       jvs(220) = 0
5953       jvs(221) = b(20,31)-b(21,31)
5954       jvs(222) = -b(95,32)+b(96,32)
5955       jvs(223) = -b(105,33)+b(106,33)
5956       jvs(224) = -b(21,34)-b(29,34)-2*b(31,34)-2*b(32,34)-b(33,34)   &
5957                 -b(34,34)-b(35,34)-b(41,34)-b(61,34)-b(62,34)-b(73,34)   &
5958                 -b(87,34)-b(95,34)-b(105,34)
5959       jvs(225) = b(57,35)+b(59,35)-b(61,35)+0.32*b(63,35)+b(80,35)   &
5960                 +b(86,35)+b(96,35)+b(101,35)
5961       jvs(226) = b(25,36)-b(41,36)+b(52,36)+b(59,36)+b(60,36)
5962       jvs(227) = -b(34,37)-b(35,37)
5963       jvs(228) = -b(33,38)+b(57,38)+b(58,38)
5964       jvs(229) = b(20,39)+b(22,39)+b(25,39)-b(29,39)+b(30,39)+b(44,39)   &
5965                 +b(45,39)+b(48,39)+b(51,39)+b(65,39)+0.965*b(78,39)   &
5966                 +0.27*b(83,39)
5967       jvs(230) = 0.73*b(83,16)
5968       jvs(231) = 0.7*b(55,19)
5969       jvs(232) = -b(101,20)
5970       jvs(233) = b(66,22)
5971       jvs(234) = -b(86,23)
5972       jvs(235) = b(71,25)+b(72,25)+b(74,25)
5973       jvs(236) = b(77,26)+0.035*b(78,26)
5974       jvs(237) = -b(80,27)
5975       jvs(238) = -b(89,29)
5976       jvs(239) = b(77,30)
5977       jvs(240) = 0
5978       jvs(241) = b(92,32)-b(96,32)
5979       jvs(242) = b(102,33)
5980       jvs(243) = -b(61,34)
5981       jvs(244) = -b(57,35)-b(59,35)-b(61,35)-b(63,35)-b(80,35)   &
5982                 -b(86,35)-b(89,35)-b(96,35)-b(101,35)
5983       jvs(245) = -b(59,36)+b(72,36)
5984       jvs(246) = 0
5985       jvs(247) = -b(57,38)+b(71,38)
5986       jvs(248) = b(46,39)+0.7*b(55,39)+0.035*b(78,39)+0.73*b(83,39)
5987       jvs(249) = b(6,13)+b(43,13)
5988       jvs(250) = -b(60,21)
5989       jvs(251) = -b(68,22)
5990       jvs(252) = b(27,24)
5991       jvs(253) = -b(72,25)
5992       jvs(254) = -b(76,26)
5993       jvs(255) = -b(52,28)
5994       jvs(256) = -b(88,29)
5995       jvs(257) = b(16,30)
5996       jvs(258) = b(19,31)
5997       jvs(259) = 0
5998       jvs(260) = 0
5999       jvs(261) = -b(41,34)
6000       jvs(262) = -b(59,35)
6001       jvs(263) = 0
6002       jvs(264) = b(16,37)+b(19,37)-b(38,37)-b(39,37)
6003       jvs(265) = -b(37,38)
6004       jvs(266) = -b(25,39)+b(27,39)
6005       jvs(267) = b(70,9)
6006       jvs(268) = b(6,13)+b(43,13)
6007       jvs(269) = b(5,14)+b(28,14)+b(36,14)
6008       jvs(270) = b(26,18)
6009       jvs(271) = b(100,20)
6010       jvs(272) = b(58,21)+b(60,21)
6011       jvs(273) = b(85,23)
6012       jvs(274) = b(4,24)
6013       jvs(275) = -b(69,25)+b(71,25)+b(72,25)
6014       jvs(276) = 0
6015       jvs(277) = b(79,27)
6016       jvs(278) = 0
6017       jvs(279) = 0
6018       jvs(280) = -b(15,30)-b(16,30)+b(17,30)
6019       jvs(281) = b(18,31)-b(19,31)
6020       jvs(282) = -b(93,32)
6021       jvs(283) = -b(103,33)
6022       jvs(284) = b(33,34)-b(34,34)-b(35,34)+0.7*b(41,34)
6023       jvs(285) = b(57,35)+b(59,35)
6024       jvs(286) = -b(1,37)-b(15,37)-b(16,37)-b(19,37)-b(24,37)-b(34,37)   &
6025                 -b(35,37)-b(39,37)-b(69,37)-b(93,37)-b(103,37)
6026       jvs(287) = b(17,38)+b(18,38)+b(33,38)+2*b(37,38)+b(57,38)   &
6027                 +b(58,38)+b(71,38)+b(79,38)+b(85,38)+b(100,38)
6028       jvs(288) = -b(24,39)+b(25,39)+b(26,39)+b(28,39)
6029       jvs(289) = b(3,18)
6030       jvs(290) = -b(100,20)
6031       jvs(291) = -b(58,21)
6032       jvs(292) = -b(85,23)
6033       jvs(293) = -b(71,25)
6034       jvs(294) = 0
6035       jvs(295) = -b(79,27)
6036       jvs(296) = b(15,30)-b(17,30)
6037       jvs(297) = -b(18,31)
6038       jvs(298) = b(93,32)
6039       jvs(299) = -b(104,33)
6040       jvs(300) = -b(33,34)
6041       jvs(301) = -b(57,35)
6042       jvs(302) = 0.11*b(2,36)-b(37,36)+b(38,36)
6043       jvs(303) = b(1,37)+b(15,37)+b(38,37)+b(93,37)
6044       jvs(304) = -b(17,38)-b(18,38)-b(23,38)-b(33,38)-b(37,38)   &
6045                 -b(57,38)-b(58,38)-b(71,38)-b(79,38)-b(85,38)   &
6046                 -b(100,38)-b(104,38)
6047       jvs(305) = -b(23,39)
6048       jvs(306) = 2*b(12,5)
6049       jvs(307) = -b(65,6)
6050       jvs(308) = -b(45,7)
6051       jvs(309) = -b(47,8)
6052       jvs(310) = -b(84,10)
6053       jvs(311) = 2*b(9,11)-b(30,11)
6054       jvs(312) = -b(48,12)
6055       jvs(313) = -b(28,14)
6056       jvs(314) = -b(44,15)
6057       jvs(315) = -b(83,16)
6058       jvs(316) = b(54,17)-0.5*b(56,17)
6059       jvs(317) = b(3,18)-b(26,18)
6060       jvs(318) = b(53,19)-0.7*b(55,19)
6061       jvs(319) = 0
6062       jvs(320) = -b(67,22)
6063       jvs(321) = b(4,24)-b(27,24)
6064       jvs(322) = -b(75,26)-b(78,26)
6065       jvs(323) = -b(51,28)
6066       jvs(324) = -b(90,29)
6067       jvs(325) = 0
6068       jvs(326) = -b(20,31)+b(21,31)
6069       jvs(327) = b(95,32)-b(97,32)
6070       jvs(328) = 0
6071       jvs(329) = b(21,34)-b(29,34)+b(33,34)+0.7*b(41,34)+b(95,34)
6072       jvs(330) = 0
6073       jvs(331) = -b(25,36)+0.7*b(41,36)
6074       jvs(332) = -b(24,37)
6075       jvs(333) = -b(23,38)+b(33,38)
6076       jvs(334) = -b(20,39)-b(22,39)-b(23,39)-b(24,39)-b(25,39)   &
6077                 -b(26,39)-b(27,39)-b(28,39)-b(29,39)-b(30,39)-b(44,39)   &
6078                 -b(45,39)-b(46,39)-b(47,39)-b(48,39)-b(51,39)-0.7   &
6079                 *b(55,39)-0.5*b(56,39)-b(65,39)-b(67,39)-b(75,39)   &
6080                 -b(78,39)-b(83,39)-b(84,39)-b(90,39)-b(97,39)
6081       return
6082       end subroutine cbmz_v02r04_jacob                                    
6085 !-----------------------------------------------------------------------------
6086       subroutine cbmz_v02r04_decomp( n, v, ier,   &
6087           lu_crow_v, lu_diag_v, lu_icol_v )
6089 !   computes l-u-decomposition of sparse jacobian
6090 !   for mechanism-version-regime = cbmz_v02r04
6092       use module_data_cbmz
6093       implicit none
6095 !   subr parameters
6096 !     n = number of variable species [input]
6097       integer n
6098 !     ier = status flag [output]
6099 !         0 = success    other = failure [output]
6100       integer ier
6102 !     v = non-zero elements of the sparse jacobian [input]
6103       real v(lu_nonzero_v_r04_kpp)
6105       integer lu_crow_v(nvar_r04_kpp + 1)
6106       integer lu_diag_v(nvar_r04_kpp + 1)
6107       integer lu_icol_v(lu_nonzero_v_r04_kpp)
6109 !   local variables
6110       integer k, kk, j, jj
6111       real a, w(nvar_r04_kpp + 1)
6113       ier = 0
6114       do k=1,n
6115         if ( v( lu_diag_v(k) ) .eq. 0. ) then
6116             ier = k
6117             return
6118         end if
6119         do kk = lu_crow_v(k), lu_crow_v(k+1)-1
6120               w( lu_icol_v(kk) ) = v(kk)
6121         end do
6122         do kk = lu_crow_v(k), lu_diag_v(k)-1
6123             j = lu_icol_v(kk)
6124             a = -w(j) / v( lu_diag_v(j) )
6125             w(j) = -a
6126             do jj = lu_diag_v(j)+1, lu_crow_v(j+1)-1
6127                w( lu_icol_v(jj) ) = w( lu_icol_v(jj) ) + a*v(jj)
6128             end do
6129          end do
6130          do kk = lu_crow_v(k), lu_crow_v(k+1)-1
6131             v(kk) = w( lu_icol_v(kk) )
6132          end do
6133       end do
6134       return
6135       end subroutine cbmz_v02r04_decomp            
6138 !-----------------------------------------------------------------------------
6139       subroutine cbmz_v02r04_solve( jvs, x )
6141 !   does back-solve for mechanism-version-regime = cbmz_v02r04
6143       implicit none
6145 !   subr parameters
6146 !     jvs = the non-zero elements of the l-u-decomposition
6147 !           of the augmented jacobian [input]
6148       real jvs(*)
6149 !     x = the right-hand side of the linear equation set being solved [on input]
6150 !     x = concentrations of variable species [on output]
6151       real x(*)
6154       x(21) = x(21)-jvs(77)*x(8)-jvs(78)*x(17)
6155       x(22) = x(22)-jvs(84)*x(6)-jvs(85)*x(17)-jvs(86)*x(21)
6156       x(23) = x(23)-jvs(92)*x(10)-jvs(93)*x(16)
6157       x(24) = x(24)-jvs(99)*x(13)-jvs(100)*x(22)
6158       x(25) = x(25)-jvs(111)*x(9)-jvs(112)*x(22)
6159       x(27) = x(27)-jvs(123)*x(26)
6160       x(28) = x(28)-jvs(131)*x(12)-jvs(132)*x(19)-jvs(133)*x(20)   &
6161              -jvs(134)*x(23)-jvs(135)*x(26)-jvs(136)*x(27)
6162       x(29) = x(29)-jvs(147)*x(16)-jvs(148)*x(26)
6163       x(30) = x(30)-jvs(156)*x(5)-jvs(157)*x(26)
6164       x(31) = x(31)-jvs(164)*x(25)-jvs(165)*x(30)
6165       x(32) = x(32)-jvs(173)*x(20)-jvs(174)*x(23)-jvs(175)*x(26)   &
6166              -jvs(176)*x(27)-jvs(177)*x(29)-jvs(178)*x(30)-jvs(179)   &
6167              *x(31)
6168       x(33) = x(33)-jvs(188)*x(20)-jvs(189)*x(27)-jvs(190)*x(28)   &
6169              -jvs(191)*x(29)-jvs(192)*x(30)-jvs(193)*x(31)-jvs(194)   &
6170              *x(32)
6171       x(34) = x(34)-jvs(202)*x(6)-jvs(203)*x(7)-jvs(204)*x(11)   &
6172              -jvs(205)*x(12)-jvs(206)*x(14)-jvs(207)*x(15)-jvs(208)   &
6173              *x(16)-jvs(209)*x(17)-jvs(210)*x(19)-jvs(211)*x(20)   &
6174              -jvs(212)*x(21)-jvs(213)*x(22)-jvs(214)*x(23)-jvs(215)   &
6175              *x(25)-jvs(216)*x(26)-jvs(217)*x(27)-jvs(218)*x(28)   &
6176              -jvs(219)*x(29)-jvs(220)*x(30)-jvs(221)*x(31)-jvs(222)   &
6177              *x(32)-jvs(223)*x(33)
6178       x(35) = x(35)-jvs(230)*x(16)-jvs(231)*x(19)-jvs(232)*x(20)   &
6179              -jvs(233)*x(22)-jvs(234)*x(23)-jvs(235)*x(25)-jvs(236)   &
6180              *x(26)-jvs(237)*x(27)-jvs(238)*x(29)-jvs(239)*x(30)   &
6181              -jvs(240)*x(31)-jvs(241)*x(32)-jvs(242)*x(33)-jvs(243)   &
6182              *x(34)
6183       x(36) = x(36)-jvs(249)*x(13)-jvs(250)*x(21)-jvs(251)*x(22)   &
6184              -jvs(252)*x(24)-jvs(253)*x(25)-jvs(254)*x(26)-jvs(255)   &
6185              *x(28)-jvs(256)*x(29)-jvs(257)*x(30)-jvs(258)*x(31)   &
6186              -jvs(259)*x(32)-jvs(260)*x(33)-jvs(261)*x(34)-jvs(262)   &
6187              *x(35)
6188       x(37) = x(37)-jvs(267)*x(9)-jvs(268)*x(13)-jvs(269)*x(14)   &
6189              -jvs(270)*x(18)-jvs(271)*x(20)-jvs(272)*x(21)-jvs(273)   &
6190              *x(23)-jvs(274)*x(24)-jvs(275)*x(25)-jvs(276)*x(26)   &
6191              -jvs(277)*x(27)-jvs(278)*x(28)-jvs(279)*x(29)-jvs(280)   &
6192              *x(30)-jvs(281)*x(31)-jvs(282)*x(32)-jvs(283)*x(33)   &
6193              -jvs(284)*x(34)-jvs(285)*x(35)
6194       x(38) = x(38)-jvs(289)*x(18)-jvs(290)*x(20)-jvs(291)*x(21)   &
6195              -jvs(292)*x(23)-jvs(293)*x(25)-jvs(294)*x(26)-jvs(295)   &
6196              *x(27)-jvs(296)*x(30)-jvs(297)*x(31)-jvs(298)*x(32)   &
6197              -jvs(299)*x(33)-jvs(300)*x(34)-jvs(301)*x(35)-jvs(302)   &
6198              *x(36)-jvs(303)*x(37)
6199       x(39) = x(39)-jvs(306)*x(5)-jvs(307)*x(6)-jvs(308)*x(7)-jvs(309)   &
6200              *x(8)-jvs(310)*x(10)-jvs(311)*x(11)-jvs(312)*x(12)   &
6201              -jvs(313)*x(14)-jvs(314)*x(15)-jvs(315)*x(16)-jvs(316)   &
6202              *x(17)-jvs(317)*x(18)-jvs(318)*x(19)-jvs(319)*x(21)   &
6203              -jvs(320)*x(22)-jvs(321)*x(24)-jvs(322)*x(26)-jvs(323)   &
6204              *x(28)-jvs(324)*x(29)-jvs(325)*x(30)-jvs(326)*x(31)   &
6205              -jvs(327)*x(32)-jvs(328)*x(33)-jvs(329)*x(34)-jvs(330)   &
6206              *x(35)-jvs(331)*x(36)-jvs(332)*x(37)-jvs(333)*x(38)
6207       x(39) = x(39)/jvs(334)
6208       x(38) = (x(38)-jvs(305)*x(39))/(jvs(304))
6209       x(37) = (x(37)-jvs(287)*x(38)-jvs(288)*x(39))/(jvs(286))
6210       x(36) = (x(36)-jvs(264)*x(37)-jvs(265)*x(38)-jvs(266)*x(39))/   &
6211              (jvs(263))
6212       x(35) = (x(35)-jvs(245)*x(36)-jvs(246)*x(37)-jvs(247)*x(38)   &
6213              -jvs(248)*x(39))/(jvs(244))
6214       x(34) = (x(34)-jvs(225)*x(35)-jvs(226)*x(36)-jvs(227)*x(37)   &
6215              -jvs(228)*x(38)-jvs(229)*x(39))/(jvs(224))
6216       x(33) = (x(33)-jvs(196)*x(34)-jvs(197)*x(35)-jvs(198)*x(36)   &
6217              -jvs(199)*x(37)-jvs(200)*x(38)-jvs(201)*x(39))/(jvs(195))
6218       x(32) = (x(32)-jvs(181)*x(33)-jvs(182)*x(34)-jvs(183)*x(35)   &
6219              -jvs(184)*x(36)-jvs(185)*x(37)-jvs(186)*x(38)-jvs(187)   &
6220              *x(39))/(jvs(180))
6221       x(31) = (x(31)-jvs(167)*x(32)-jvs(168)*x(34)-jvs(169)*x(36)   &
6222              -jvs(170)*x(37)-jvs(171)*x(38)-jvs(172)*x(39))/(jvs(166))
6223       x(30) = (x(30)-jvs(159)*x(31)-jvs(160)*x(36)-jvs(161)*x(37)   &
6224              -jvs(162)*x(38)-jvs(163)*x(39))/(jvs(158))
6225       x(29) = (x(29)-jvs(150)*x(30)-jvs(151)*x(33)-jvs(152)*x(34)   &
6226              -jvs(153)*x(35)-jvs(154)*x(36)-jvs(155)*x(39))/(jvs(149))
6227       x(28) = (x(28)-jvs(138)*x(29)-jvs(139)*x(30)-jvs(140)*x(32)   &
6228              -jvs(141)*x(33)-jvs(142)*x(34)-jvs(143)*x(35)-jvs(144)   &
6229              *x(36)-jvs(145)*x(38)-jvs(146)*x(39))/(jvs(137))
6230       x(27) = (x(27)-jvs(125)*x(30)-jvs(126)*x(32)-jvs(127)*x(35)   &
6231              -jvs(128)*x(36)-jvs(129)*x(38)-jvs(130)*x(39))/(jvs(124))
6232       x(26) = (x(26)-jvs(120)*x(30)-jvs(121)*x(36)-jvs(122)*x(39))/   &
6233              (jvs(119))
6234       x(25) = (x(25)-jvs(114)*x(34)-jvs(115)*x(36)-jvs(116)*x(37)   &
6235              -jvs(117)*x(38)-jvs(118)*x(39))/(jvs(113))
6236       x(24) = (x(24)-jvs(102)*x(26)-jvs(103)*x(28)-jvs(104)*x(29)   &
6237              -jvs(105)*x(33)-jvs(106)*x(34)-jvs(107)*x(36)-jvs(108)   &
6238              *x(37)-jvs(109)*x(38)-jvs(110)*x(39))/(jvs(101))
6239       x(23) = (x(23)-jvs(95)*x(26)-jvs(96)*x(35)-jvs(97)*x(38)-jvs(98)   &
6240              *x(39))/(jvs(94))
6241       x(22) = (x(22)-jvs(88)*x(34)-jvs(89)*x(36)-jvs(90)*x(38)-jvs(91)   &
6242              *x(39))/(jvs(87))
6243       x(21) = (x(21)-jvs(80)*x(34)-jvs(81)*x(36)-jvs(82)*x(38)-jvs(83)   &
6244              *x(39))/(jvs(79))
6245       x(20) = (x(20)-jvs(74)*x(32)-jvs(75)*x(35)-jvs(76)*x(38))/   &
6246              (jvs(73))
6247       x(19) = (x(19)-jvs(69)*x(29)-jvs(70)*x(34)-jvs(71)*x(35)-jvs(72)   &
6248              *x(39))/(jvs(68))
6249       x(18) = (x(18)-jvs(63)*x(33)-jvs(64)*x(34)-jvs(65)*x(37)-jvs(66)   &
6250              *x(38)-jvs(67)*x(39))/(jvs(62))
6251       x(17) = (x(17)-jvs(59)*x(21)-jvs(60)*x(34)-jvs(61)*x(39))/   &
6252              (jvs(58))
6253       x(16) = (x(16)-jvs(56)*x(26)-jvs(57)*x(39))/(jvs(55))
6254       x(15) = (x(15)-jvs(50)*x(22)-jvs(51)*x(28)-jvs(52)*x(33)-jvs(53)   &
6255              *x(36)-jvs(54)*x(39))/(jvs(49))
6256       x(14) = (x(14)-jvs(46)*x(34)-jvs(47)*x(37)-jvs(48)*x(39))/   &
6257              (jvs(45))
6258       x(13) = (x(13)-jvs(43)*x(36)-jvs(44)*x(37))/(jvs(42))
6259       x(12) = (x(12)-jvs(40)*x(35)-jvs(41)*x(39))/(jvs(39))
6260       x(11) = (x(11)-jvs(36)*x(29)-jvs(37)*x(34)-jvs(38)*x(39))/   &
6261              (jvs(35))
6262       x(10) = (x(10)-jvs(33)*x(16)-jvs(34)*x(39))/(jvs(32))
6263       x(9) = (x(9)-jvs(30)*x(25)-jvs(31)*x(37))/(jvs(29))
6264       x(8) = (x(8)-jvs(27)*x(21)-jvs(28)*x(39))/(jvs(26))
6265       x(7) = (x(7)-jvs(24)*x(32)-jvs(25)*x(39))/(jvs(23))
6266       x(6) = (x(6)-jvs(22)*x(39))/(jvs(21))
6267       x(5) = (x(5)-jvs(20)*x(31))/(jvs(19))
6268       x(4) = (x(4)-jvs(18)*x(27))/(jvs(17))
6269       x(3) = (x(3)-jvs(9)*x(28)-jvs(10)*x(29)-jvs(11)*x(32)-jvs(12)   &
6270             *x(33)-jvs(13)*x(34)-jvs(14)*x(37)-jvs(15)*x(38)-jvs(16)   &
6271             *x(39))/(jvs(8))
6272       x(2) = (x(2)-jvs(6)*x(25)-jvs(7)*x(34))/(jvs(5))
6273       x(1) = (x(1)-jvs(2)*x(7)-jvs(3)*x(33)-jvs(4)*x(39))/(jvs(1))
6274       return
6275       end subroutine cbmz_v02r04_solve          
6278 !   cbmz_v02r05_torodas.f - created on 18-nov-2003 from previous
6279 !        cbmz_v02r05_torodas.f        cbmz_v02r05_mapconcs.f
6280 !        cbmz_v02r05_maprates.f       cbmz_v02r05_dydt.f
6281 !        cbmz_v02r05_jacob.f          cbmz_v02r05_decomp.f
6282 !        cbmz_v02r05_solve.f
6283 !   so now everything is in a single file
6284 !-----------------------------------------------------------------------
6286       subroutine cbmz_v02r05_torodas(   &
6287           ngas, taa, tzz,   &
6288           stot, atol, rtol, yposlimit, yneglimit,   &
6289           sfixedkpp, rconstkpp,   &
6290           hmin, hstart,   &
6291           info_rodas, iok, lunerr, idydt_sngldble )
6293 !   interfaces to rodas3 solver formechanism-version-regime =cbmz_v02r05
6295 !   *** do not include any pegasus common blocks ***
6297       use module_data_cbmz
6298       use module_cbmz_rodas3_solver, only:  rodas3_ff_x2
6299       implicit none
6301 !   subr parameters
6302       integer ngas, iok, lunerr, idydt_sngldble
6303       integer info_rodas(6)
6304       real taa, tzz, hmin, hstart
6305       real stot(ngas), atol(ngas), rtol(ngas)
6306       real yposlimit(ngas), yneglimit(ngas)
6307       real sfixedkpp(nfixed_kppmax), rconstkpp(nreact_kppmax)
6309 !   local variables
6311 !     external cbmz_v02r05_dydt
6312 !     external cbmz_v02r05_jacob
6313 !     external cbmz_v02r05_decomp
6314 !     external cbmz_v02r05_solve
6316       integer i
6318       real hmax
6320       integer lu_crow_v(nvar_r05_kpp + 1)
6321       save    lu_crow_v
6322       integer lu_diag_v(nvar_r05_kpp + 1)
6323       save    lu_diag_v
6324       integer lu_icol_v(lu_nonzero_v_r05_kpp)
6325       save    lu_icol_v
6327       data( lu_icol_v(i), i = 1, 252 ) /   &
6328         1,  8, 52, 59,  2, 22, 36, 51,  3, 36, 39, 46,   &
6329        51, 56,  4, 42, 47, 52, 53, 54, 55, 56, 59,  5,   &
6330        38,  6, 51,  7, 59,  8, 54, 59,  9, 41, 59, 10,   &
6331        46, 53, 11, 20, 59, 12, 59, 13, 42, 56, 59, 14,   &
6332        53, 57, 15, 59, 15, 16, 27, 59, 17, 26, 53, 57,   &
6333        59, 18, 53, 56, 59, 12, 15, 19, 55, 59, 20, 34,   &
6334        59, 21, 41, 56, 59, 22, 51, 59, 23, 36, 39, 51,   &
6335        58, 59, 24, 52, 53, 55, 56, 59, 25, 42, 56, 58,   &
6336        59, 12, 15, 26, 57, 59, 16, 27, 33, 36, 39, 44,   &
6337        49, 50, 51, 55, 57, 59, 22, 28, 32, 36, 39, 40,   &
6338        45, 47, 51, 52, 57, 59, 29, 54, 55, 58, 11, 20,   &
6339        30, 34, 55, 58, 59, 14, 26, 31, 34, 40, 42, 45,   &
6340        47, 52, 53, 56, 57, 59, 19, 26, 32, 51, 55, 57,   &
6341        59, 33, 48, 49, 56, 59, 34, 43, 57, 59, 33, 35,   &
6342        39, 48, 49, 50, 51, 55, 56, 57, 59, 36, 51, 57,   &
6343        59, 12, 15, 22, 26, 32, 33, 36, 37, 39, 40, 48,   &
6344        49, 50, 51, 55, 56, 57, 59, 34, 38, 43, 54, 55,   &
6345        57, 58, 59, 39, 51, 57, 59, 15, 32, 33, 36, 39,   &
6346        40, 48, 49, 51, 55, 56, 57, 59,  9, 21, 33, 36,   &
6347        39, 41, 48, 49, 50, 51, 55, 56, 57, 59, 20, 34,   &
6348        42, 43, 52, 56, 57, 58, 59,  6, 34, 43, 51, 53 /
6350       data( lu_icol_v(i), i = 253, 504 ) /   &
6351        55, 57, 59, 36, 39, 44, 50, 51, 55, 56, 57, 59,   &
6352         7, 21, 22, 32, 33, 36, 39, 41, 44, 45, 48, 49,   &
6353        50, 51, 55, 56, 57, 59, 10, 32, 35, 36, 39, 40,   &
6354        45, 46, 48, 49, 50, 51, 53, 55, 56, 57, 59, 22,   &
6355        23, 25, 29, 30, 32, 34, 36, 38, 39, 42, 43, 44,   &
6356        47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,   &
6357        35, 39, 48, 49, 50, 51, 55, 56, 57, 59, 16, 27,   &
6358        33, 36, 39, 44, 48, 49, 50, 51, 55, 56, 57, 59,   &
6359        17, 19, 26, 44, 49, 50, 51, 53, 55, 56, 57, 59,   &
6360        22, 32, 36, 39, 43, 46, 48, 49, 50, 51, 53, 54,   &
6361        55, 56, 57, 59, 29, 38, 42, 43, 47, 48, 49, 50,   &
6362        51, 52, 53, 54, 55, 56, 57, 58, 59, 10, 14, 17,   &
6363        18, 19, 24, 26, 29, 30, 31, 34, 37, 38, 39, 40,   &
6364        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,   &
6365        53, 54, 55, 56, 58, 59, 29, 30, 34, 38, 42, 43,   &
6366        51, 52, 53, 54, 55, 56, 57, 58, 59, 19, 24, 29,   &
6367        30, 34, 37, 38, 39, 40, 41, 43, 44, 46, 48, 49,   &
6368        50, 51, 52, 53, 54, 55, 56, 57, 58, 59,  7,  8,   &
6369        12, 13, 15, 18, 19, 20, 21, 22, 23, 25, 26, 28,   &
6370        29, 30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42,   &
6371        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 /
6373       data( lu_icol_v(i), i = 505, 606 ) /   &
6374        55, 56, 57, 58, 59, 14, 26, 31, 34, 36, 37, 39,   &
6375        40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,   &
6376        52, 53, 54, 55, 56, 57, 58, 59, 20, 25, 29, 30,   &
6377        34, 35, 36, 38, 39, 42, 43, 45, 46, 48, 49, 50,   &
6378        51, 52, 53, 54, 55, 56, 57, 58, 59,  6,  7,  8,   &
6379         9, 11, 12, 13, 15, 16, 18, 20, 21, 22, 23, 24,   &
6380        25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40,   &
6381        41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53,   &
6382        54, 55, 56, 57, 58, 59 /
6384       data lu_crow_v /   &
6385         1,  5,  9, 15, 24, 26, 28, 30, 33, 36, 39, 42,   &
6386        44, 48, 51, 53, 57, 62, 66, 71, 74, 78, 81, 87,   &
6387        93, 98,103,115,127,131,138,151,158,163,167,178,   &
6388       182,200,208,212,225,239,248,256,265,283,300,325,   &
6389       335,349,361,377,394,427,442,467,510,537,562,607   &
6390        /
6392       data lu_diag_v /   &
6393         1,  5,  9, 15, 24, 26, 28, 30, 33, 36, 39, 42,   &
6394        44, 48, 51, 54, 57, 62, 68, 71, 74, 78, 81, 87,   &
6395        93,100,104,116,127,133,140,153,158,163,168,178,   &
6396       189,201,208,217,230,241,250,258,274,290,313,327,   &
6397       342,354,370,386,421,436,462,506,534,560,606,607   &
6398        /
6402       info_rodas(1) = 1
6403       do i = 2, 6
6404           info_rodas(i) = 0
6405       end do
6406       hmax = tzz - taa
6408 !   do not integrate if hmax is less/equal to hmin
6409 !   because hmin is generally 0.1 s or less
6410       if (hmax .le. 1.001*hmin) then
6411           iok = 11
6412           return
6413       end if
6415       call rodas3_ff_x2(   &
6416            nvar_r05_kpp, taa, tzz, hmin, hmax, hstart,   &
6417            stot, atol, rtol, yposlimit, yneglimit,   &
6418            sfixedkpp, rconstkpp,   &
6419            lu_nonzero_v_r05_kpp, lu_crow_v, lu_diag_v, lu_icol_v,   &
6420            info_rodas, iok, lunerr,   &
6421            cbmz_v02r05_dydt,   &
6422            cbmz_v02r05_jacob,   &
6423            cbmz_v02r05_decomp,   &
6424            cbmz_v02r05_solve )
6426       return
6427       end subroutine cbmz_v02r05_torodas 
6430 !-----------------------------------------------------------------------------
6431       subroutine cbmz_v02r05_mapconcs( imap, nyy, yy, yyfixed, cbox )
6433 !   maps species concentrations (gaschemistry cbox array <--> kpp yy array)
6434 !   for mechanism-version-regime = cbmz_v02r05
6436       use module_data_cbmz
6437       implicit none
6439 !   subr parameters
6440 !     imap = mapping direction flag [input]
6441 !         0 = map cbox --> yy and yyfixed
6442 !         1 = map yy --> cbox
6443       integer imap
6444 !     nyy = number of kpp "variable" species [output]
6445       integer nyy
6446 !     yy = kpp species concentrations array [input/output]
6447       real yy(nvar_r05_kpp)
6448 !     yyfixed = kpp species concentrations array [input/output]
6449       real yyfixed(nfixed_kppmax)
6450 !     cbox = main gaschemistry species conc array [input/output]
6451       real cbox(ngas_z)
6453 !   local variables
6454       integer ih2so4_kpp
6455       parameter ( ih2so4_kpp = 1 )
6456       integer ihcooh_kpp
6457       parameter ( ihcooh_kpp = 2 )
6458       integer ircooh_kpp
6459       parameter ( ircooh_kpp = 3 )
6460       integer imsa_kpp
6461       parameter ( imsa_kpp = 4 )
6462       integer imtf_kpp
6463       parameter ( imtf_kpp = 5 )
6464       integer io1d_kpp
6465       parameter ( io1d_kpp = 6 )
6466       integer ic2h5oh_kpp
6467       parameter ( ic2h5oh_kpp = 7 )
6468       integer iso2_kpp
6469       parameter ( iso2_kpp = 8 )
6470       integer ic2h6_kpp
6471       parameter ( ic2h6_kpp = 9 )
6472       integer ipan_kpp
6473       parameter ( ipan_kpp = 10 )
6474       integer idmso2_kpp
6475       parameter ( idmso2_kpp = 11 )
6476       integer itol_kpp
6477       parameter ( itol_kpp = 12 )
6478       integer ih2o2_kpp
6479       parameter ( ih2o2_kpp = 13 )
6480       integer in2o5_kpp
6481       parameter ( in2o5_kpp = 14 )
6482       integer ixyl_kpp
6483       parameter ( ixyl_kpp = 15 )
6484       integer ipar_kpp
6485       parameter ( ipar_kpp = 16 )
6486       integer icro_kpp
6487       parameter ( icro_kpp = 17 )
6488       integer ihno4_kpp
6489       parameter ( ihno4_kpp = 18 )
6490       integer ito2_kpp
6491       parameter ( ito2_kpp = 19 )
6492       integer idmso_kpp
6493       parameter ( idmso_kpp = 20 )
6494       integer iethooh_kpp
6495       parameter ( iethooh_kpp = 21 )
6496       integer ieth_kpp
6497       parameter ( ieth_kpp = 22 )
6498       integer ich3oh_kpp
6499       parameter ( ich3oh_kpp = 23 )
6500       integer ihono_kpp
6501       parameter ( ihono_kpp = 24 )
6502       integer ich3ooh_kpp
6503       parameter ( ich3ooh_kpp = 25 )
6504       integer icres_kpp
6505       parameter ( icres_kpp = 26 )
6506       integer ixpar_kpp
6507       parameter ( ixpar_kpp = 27 )
6508       integer ico_kpp
6509       parameter ( ico_kpp = 28 )
6510       integer ich3so2oo_kpp
6511       parameter ( ich3so2oo_kpp = 29 )
6512       integer ich3so2ch2oo_kpp
6513       parameter ( ich3so2ch2oo_kpp = 30 )
6514       integer ihno3_kpp
6515       parameter ( ihno3_kpp = 31 )
6516       integer iopen_kpp
6517       parameter ( iopen_kpp = 32 )
6518       integer irooh_kpp
6519       parameter ( irooh_kpp = 33 )
6520       integer idms_kpp
6521       parameter ( idms_kpp = 34 )
6522       integer iaone_kpp
6523       parameter ( iaone_kpp = 35 )
6524       integer iolet_kpp
6525       parameter ( iolet_kpp = 36 )
6526       integer ixo2_kpp
6527       parameter ( ixo2_kpp = 37 )
6528       integer ich3sch2oo_kpp
6529       parameter ( ich3sch2oo_kpp = 38 )
6530       integer iolei_kpp
6531       parameter ( iolei_kpp = 39 )
6532       integer imgly_kpp
6533       parameter ( imgly_kpp = 40 )
6534       integer iethp_kpp
6535       parameter ( iethp_kpp = 41 )
6536       integer ich3so2h_kpp
6537       parameter ( ich3so2h_kpp = 42 )
6538       integer io3p_kpp
6539       parameter ( io3p_kpp = 43 )
6540       integer inap_kpp
6541       parameter ( inap_kpp = 44 )
6542       integer iald2_kpp
6543       parameter ( iald2_kpp = 45 )
6544       integer ic2o3_kpp
6545       parameter ( ic2o3_kpp = 46 )
6546       integer ihcho_kpp
6547       parameter ( ihcho_kpp = 47 )
6548       integer iano2_kpp
6549       parameter ( iano2_kpp = 48 )
6550       integer iro2_kpp
6551       parameter ( iro2_kpp = 49 )
6552       integer ionit_kpp
6553       parameter ( ionit_kpp = 50 )
6554       integer io3_kpp
6555       parameter ( io3_kpp = 51 )
6556       integer ich3so3_kpp
6557       parameter ( ich3so3_kpp = 52 )
6558       integer ino2_kpp
6559       parameter ( ino2_kpp = 53 )
6560       integer ich3so2_kpp
6561       parameter ( ich3so2_kpp = 54 )
6562       integer ino_kpp
6563       parameter ( ino_kpp = 55 )
6564       integer iho2_kpp
6565       parameter ( iho2_kpp = 56 )
6566       integer ino3_kpp
6567       parameter ( ino3_kpp = 57 )
6568       integer ich3o2_kpp
6569       parameter ( ich3o2_kpp = 58 )
6570       integer ioh_kpp
6571       parameter ( ioh_kpp = 59 )
6573 ! indexes declaration for fixed species
6574       integer ich4_kpp
6575       parameter ( ich4_kpp = 1 )
6576       integer ih2o_kpp
6577       parameter ( ih2o_kpp = 2 )
6578       integer ih2_kpp
6579       parameter ( ih2_kpp = 3 )
6580       integer io2_kpp
6581       parameter ( io2_kpp = 4 )
6582       integer in2_kpp
6583       parameter ( in2_kpp = 5 )
6586       nyy = nvar_r05_kpp
6588       if (imap .le. 0) goto 1000
6589       if (imap .ge. 1) goto 2000
6593 !   map cbox values into yyvarkpp and yyfixkpp
6595 1000  continue
6596       yy(ih2so4_kpp)    = cbox(ih2so4_z)
6597       yy(ihcooh_kpp)    = cbox(ihcooh_z)
6598       yy(ircooh_kpp)    = cbox(ircooh_z)
6599       yy(imsa_kpp)      = cbox(imsa_z)
6600       yy(imtf_kpp)      = cbox(imtf_z)
6601       yy(io1d_kpp)      = cbox(io1d_z)
6602       yy(ic2h5oh_kpp)   = cbox(ic2h5oh_z)
6603       yy(iso2_kpp)      = cbox(iso2_z)
6604       yy(ic2h6_kpp)     = cbox(ic2h6_z)
6605       yy(ipan_kpp)      = cbox(ipan_z)
6606       yy(idmso2_kpp)    = cbox(idmso2_z)
6607       yy(itol_kpp)      = cbox(itol_z)
6608       yy(ih2o2_kpp)     = cbox(ih2o2_z)
6609       yy(in2o5_kpp)     = cbox(in2o5_z)
6610       yy(ixyl_kpp)      = cbox(ixyl_z)
6611       yy(ipar_kpp)      = cbox(ipar_z)
6612       yy(icro_kpp)      = cbox(icro_z)
6613       yy(ihno4_kpp)     = cbox(ihno4_z)
6614       yy(ito2_kpp)      = cbox(ito2_z)
6615       yy(idmso_kpp)     = cbox(idmso_z)
6616       yy(iethooh_kpp)   = cbox(iethooh_z)
6617       yy(ieth_kpp)      = cbox(ieth_z)
6618       yy(ich3oh_kpp)    = cbox(ich3oh_z)
6619       yy(ihono_kpp)     = cbox(ihono_z)
6620       yy(ich3ooh_kpp)   = cbox(ich3ooh_z)
6621       yy(icres_kpp)     = cbox(icres_z)
6622       yy(ixpar_kpp)     = cbox(ixpar_z)
6623       yy(ico_kpp)       = cbox(ico_z)
6624       yy(ich3so2oo_kpp) = cbox(ich3so2oo_z)
6625       yy(ich3so2ch2oo_kpp)      = cbox(ich3so2ch2oo_z)
6626       yy(ihno3_kpp)     = cbox(ihno3_z)
6627       yy(iopen_kpp)     = cbox(iopen_z)
6628       yy(irooh_kpp)     = cbox(irooh_z)
6629       yy(idms_kpp)      = cbox(idms_z)
6630       yy(iaone_kpp)     = cbox(iaone_z)
6631       yy(iolet_kpp)     = cbox(iolet_z)
6632       yy(ixo2_kpp)      = cbox(ixo2_z)
6633       yy(ich3sch2oo_kpp)        = cbox(ich3sch2oo_z)
6634       yy(iolei_kpp)     = cbox(iolei_z)
6635       yy(imgly_kpp)     = cbox(imgly_z)
6636       yy(iethp_kpp)     = cbox(iethp_z)
6637       yy(ich3so2h_kpp)  = cbox(ich3so2h_z)
6638       yy(io3p_kpp)      = cbox(io3p_z)
6639       yy(inap_kpp)      = cbox(inap_z)
6640       yy(iald2_kpp)     = cbox(iald2_z)
6641       yy(ic2o3_kpp)     = cbox(ic2o3_z)
6642       yy(ihcho_kpp)     = cbox(ihcho_z)
6643       yy(iano2_kpp)     = cbox(iano2_z)
6644       yy(iro2_kpp)      = cbox(iro2_z)
6645       yy(ionit_kpp)     = cbox(ionit_z)
6646       yy(io3_kpp)       = cbox(io3_z)
6647       yy(ich3so3_kpp)   = cbox(ich3so3_z)
6648       yy(ino2_kpp)      = cbox(ino2_z)
6649       yy(ich3so2_kpp)   = cbox(ich3so2_z)
6650       yy(ino_kpp)       = cbox(ino_z)
6651       yy(iho2_kpp)      = cbox(iho2_z)
6652       yy(ino3_kpp)      = cbox(ino3_z)
6653       yy(ich3o2_kpp)    = cbox(ich3o2_z)
6654       yy(ioh_kpp)       = cbox(ioh_z)
6656       yyfixed(ich4_kpp) = cbox(ich4_z)
6657       yyfixed(ih2o_kpp) = cbox(ih2o_z)
6658       yyfixed(ih2_kpp)  = cbox(ih2_z)
6659       yyfixed(io2_kpp)  = cbox(io2_z)
6660       yyfixed(in2_kpp)  = cbox(in2_z)
6663 !   map yyvarkpp values into cbox
6665 2000  continue
6666       cbox(ih2so4_z)    = yy(ih2so4_kpp)
6667       cbox(ihcooh_z)    = yy(ihcooh_kpp)
6668       cbox(ircooh_z)    = yy(ircooh_kpp)
6669       cbox(imsa_z)      = yy(imsa_kpp)
6670       cbox(imtf_z)      = yy(imtf_kpp)
6671       cbox(io1d_z)      = yy(io1d_kpp)
6672       cbox(ic2h5oh_z)   = yy(ic2h5oh_kpp)
6673       cbox(iso2_z)      = yy(iso2_kpp)
6674       cbox(ic2h6_z)     = yy(ic2h6_kpp)
6675       cbox(ipan_z)      = yy(ipan_kpp)
6676       cbox(idmso2_z)    = yy(idmso2_kpp)
6677       cbox(itol_z)      = yy(itol_kpp)
6678       cbox(ih2o2_z)     = yy(ih2o2_kpp)
6679       cbox(in2o5_z)     = yy(in2o5_kpp)
6680       cbox(ixyl_z)      = yy(ixyl_kpp)
6681       cbox(ipar_z)      = yy(ipar_kpp)
6682       cbox(icro_z)      = yy(icro_kpp)
6683       cbox(ihno4_z)     = yy(ihno4_kpp)
6684       cbox(ito2_z)      = yy(ito2_kpp)
6685       cbox(idmso_z)     = yy(idmso_kpp)
6686       cbox(iethooh_z)   = yy(iethooh_kpp)
6687       cbox(ieth_z)      = yy(ieth_kpp)
6688       cbox(ich3oh_z)    = yy(ich3oh_kpp)
6689       cbox(ihono_z)     = yy(ihono_kpp)
6690       cbox(ich3ooh_z)   = yy(ich3ooh_kpp)
6691       cbox(icres_z)     = yy(icres_kpp)
6692       cbox(ixpar_z)     = yy(ixpar_kpp)
6693       cbox(ico_z)       = yy(ico_kpp)
6694       cbox(ich3so2oo_z) = yy(ich3so2oo_kpp)
6695       cbox(ich3so2ch2oo_z)      = yy(ich3so2ch2oo_kpp)
6696       cbox(ihno3_z)     = yy(ihno3_kpp)
6697       cbox(iopen_z)     = yy(iopen_kpp)
6698       cbox(irooh_z)     = yy(irooh_kpp)
6699       cbox(idms_z)      = yy(idms_kpp)
6700       cbox(iaone_z)     = yy(iaone_kpp)
6701       cbox(iolet_z)     = yy(iolet_kpp)
6702       cbox(ixo2_z)      = yy(ixo2_kpp)
6703       cbox(ich3sch2oo_z)        = yy(ich3sch2oo_kpp)
6704       cbox(iolei_z)     = yy(iolei_kpp)
6705       cbox(imgly_z)     = yy(imgly_kpp)
6706       cbox(iethp_z)     = yy(iethp_kpp)
6707       cbox(ich3so2h_z)  = yy(ich3so2h_kpp)
6708       cbox(io3p_z)      = yy(io3p_kpp)
6709       cbox(inap_z)      = yy(inap_kpp)
6710       cbox(iald2_z)     = yy(iald2_kpp)
6711       cbox(ic2o3_z)     = yy(ic2o3_kpp)
6712       cbox(ihcho_z)     = yy(ihcho_kpp)
6713       cbox(iano2_z)     = yy(iano2_kpp)
6714       cbox(iro2_z)      = yy(iro2_kpp)
6715       cbox(ionit_z)     = yy(ionit_kpp)
6716       cbox(io3_z)       = yy(io3_kpp)
6717       cbox(ich3so3_z)   = yy(ich3so3_kpp)
6718       cbox(ino2_z)      = yy(ino2_kpp)
6719       cbox(ich3so2_z)   = yy(ich3so2_kpp)
6720       cbox(ino_z)       = yy(ino_kpp)
6721       cbox(iho2_z)      = yy(iho2_kpp)
6722       cbox(ino3_z)      = yy(ino3_kpp)
6723       cbox(ich3o2_z)    = yy(ich3o2_kpp)
6724       cbox(ioh_z)       = yy(ioh_kpp)
6726       return
6727       end subroutine cbmz_v02r05_mapconcs                                
6730 !-----------------------------------------------------------------------------
6731       subroutine cbmz_v02r05_maprates(   &
6732           rk_m1,   &
6733           rk_m2,   &
6734           rk_m3,   &
6735           rk_m4,   &
6736           rconst )
6738 !   maps reaction rate constants (host code array --> kpp rconst array)
6739 !   for mechanism-version-regime = cbmz_v02r05
6741       use module_data_cbmz
6742       implicit none
6744 !   subr parameters
6745 !     all are host-code reaction-rate-constant arrays [input]
6746       real rk_m1(*)
6747       real rk_m2(*)
6748       real rk_m3(*)
6749       real rk_m4(*)
6750       real rconst(nreact_kppmax)
6752 !   local variables
6753       integer i
6755       do i = 1, nreact_kppmax
6756           rconst(i) = 0.
6757       end do
6760       rconst(1) = (rk_m1(1))
6761       rconst(2) = (rk_m1(2))
6762       rconst(3) = (rk_m1(3))
6763       rconst(4) = (rk_m1(4))
6764       rconst(5) = (rk_m1(5))
6765       rconst(6) = (rk_m1(6))
6766       rconst(7) = (rk_m1(7))
6767       rconst(8) = (rk_m1(8))
6768       rconst(9) = (rk_m1(9))
6769       rconst(10) = (rk_m1(10))
6770       rconst(11) = (rk_m1(11))
6771       rconst(12) = (rk_m1(12))
6772       rconst(13) = (rk_m1(13))
6773       rconst(14) = (rk_m1(14))
6774       rconst(15) = (rk_m1(15))
6775       rconst(16) = (rk_m1(16))
6776       rconst(17) = (rk_m1(17))
6777       rconst(18) = (rk_m1(18))
6778       rconst(19) = (rk_m1(19))
6779       rconst(20) = (rk_m1(20))
6780       rconst(21) = (rk_m1(21))
6781       rconst(22) = (rk_m1(22))
6782       rconst(23) = (rk_m1(23))
6783       rconst(24) = (rk_m1(24))
6784       rconst(25) = (rk_m1(25))
6785       rconst(26) = (rk_m1(26))
6786       rconst(27) = (rk_m1(27))
6787       rconst(28) = (rk_m1(28))
6788       rconst(29) = (rk_m1(29))
6789       rconst(30) = (rk_m1(30))
6790       rconst(31) = (rk_m1(31))
6791       rconst(32) = (rk_m1(32))
6792       rconst(33) = (rk_m1(33))
6793       rconst(34) = (rk_m1(34))
6794       rconst(35) = (rk_m1(35))
6795       rconst(36) = (rk_m1(36))
6796       rconst(37) = (rk_m1(37))
6797       rconst(38) = (rk_m1(38))
6798       rconst(39) = (rk_m1(39))
6799       rconst(40) = (rk_m1(40))
6800       rconst(41) = (rk_m1(41))
6801       rconst(42) = (rk_m1(42))
6802       rconst(43) = (rk_m1(43))
6803       rconst(44) = (rk_m1(44))
6804       rconst(45) = (rk_m1(45))
6805       rconst(46) = (rk_m1(46))
6806       rconst(47) = (rk_m1(47))
6807       rconst(48) = (rk_m1(48))
6808       rconst(49) = (rk_m1(49))
6809       rconst(50) = (rk_m1(50))
6810       rconst(51) = (rk_m1(51))
6811       rconst(52) = (rk_m1(52))
6812       rconst(53) = (rk_m1(53))
6813       rconst(54) = (rk_m1(54))
6814       rconst(55) = (rk_m1(55))
6815       rconst(56) = (rk_m1(56))
6816       rconst(57) = (rk_m1(57))
6817       rconst(58) = (rk_m1(58))
6818       rconst(59) = (rk_m1(59))
6819       rconst(60) = (rk_m1(60))
6820       rconst(61) = (rk_m1(61))
6821       rconst(62) = (rk_m1(62))
6822       rconst(63) = (rk_m1(63))
6823       rconst(64) = (rk_m1(64))
6824       rconst(65) = (rk_m1(65))
6825       rconst(66) = (rk_m2(2))
6826       rconst(67) = (rk_m2(3))
6827       rconst(68) = (rk_m2(4))
6828       rconst(69) = (rk_m2(31))
6829       rconst(70) = (rk_m2(32))
6830       rconst(71) = (rk_m2(34))
6831       rconst(72) = (rk_m2(39))
6832       rconst(73) = (rk_m2(44))
6833       rconst(74) = (rk_m2(49))
6834       rconst(75) = (rk_m2(1))
6835       rconst(76) = (rk_m2(5))
6836       rconst(77) = (rk_m2(6))
6837       rconst(78) = (rk_m2(7))
6838       rconst(79) = (rk_m2(8))
6839       rconst(80) = (rk_m2(9))
6840       rconst(81) = (rk_m2(10))
6841       rconst(82) = (rk_m2(11))
6842       rconst(83) = (rk_m2(12))
6843       rconst(84) = (rk_m2(13))
6844       rconst(85) = (rk_m2(14))
6845       rconst(86) = (rk_m2(15))
6846       rconst(87) = (rk_m2(16))
6847       rconst(88) = (rk_m2(17))
6848       rconst(89) = (rk_m2(18))
6849       rconst(90) = (rk_m2(19))
6850       rconst(91) = (rk_m2(20))
6851       rconst(92) = (rk_m2(21))
6852       rconst(93) = (rk_m2(22))
6853       rconst(94) = (rk_m2(23))
6854       rconst(95) = (rk_m2(24))
6855       rconst(96) = (rk_m2(25))
6856       rconst(97) = (rk_m2(26))
6857       rconst(98) = (rk_m2(27))
6858       rconst(99) = (rk_m2(28))
6859       rconst(100) = (rk_m2(29))
6860       rconst(101) = (rk_m2(30))
6861       rconst(102) = (rk_m2(33))
6862       rconst(103) = (rk_m2(35))
6863       rconst(104) = (rk_m2(36))
6864       rconst(105) = (rk_m2(37))
6865       rconst(106) = (rk_m2(38))
6866       rconst(107) = (rk_m2(40))
6867       rconst(108) = (rk_m2(41))
6868       rconst(109) = (rk_m2(42))
6869       rconst(110) = (rk_m2(43))
6870       rconst(111) = (rk_m2(45))
6871       rconst(112) = (rk_m2(46))
6872       rconst(113) = (rk_m2(47))
6873       rconst(114) = (rk_m2(48))
6874       rconst(115) = (rk_m2(50))
6875       rconst(116) = (rk_m2(51))
6876       rconst(117) = (rk_m2(52))
6877       rconst(118) = (rk_m2(53))
6878       rconst(119) = (rk_m4(1))
6879       rconst(120) = (rk_m4(2))
6880       rconst(121) = (rk_m4(3))
6881       rconst(122) = (rk_m4(4))
6882       rconst(123) = (rk_m4(5))
6883       rconst(124) = (rk_m4(6))
6884       rconst(125) = (rk_m4(7))
6885       rconst(126) = (rk_m4(8))
6886       rconst(127) = (rk_m4(9))
6887       rconst(128) = (rk_m4(10))
6888       rconst(129) = (rk_m4(11))
6889       rconst(130) = (rk_m4(12))
6890       rconst(131) = (rk_m4(13))
6891       rconst(132) = (rk_m4(14))
6892       rconst(133) = (rk_m4(15))
6893       rconst(134) = (rk_m4(16))
6894       rconst(135) = (rk_m4(17))
6895       rconst(136) = (rk_m4(18))
6896       rconst(137) = (rk_m4(19))
6897       rconst(138) = (rk_m4(20))
6898       rconst(139) = (rk_m4(21))
6899       rconst(140) = (rk_m4(22))
6900       rconst(141) = (rk_m4(23))
6901       rconst(142) = (rk_m4(24))
6902       rconst(143) = (rk_m4(25))
6903       rconst(144) = (rk_m4(26))
6904       rconst(145) = (rk_m4(27))
6905       rconst(146) = (rk_m4(28))
6906       rconst(147) = (rk_m4(29))
6907       rconst(148) = (rk_m4(30))
6908       rconst(149) = (rk_m4(31))
6909       rconst(150) = (rk_m4(32))
6910       return
6911       end subroutine cbmz_v02r05_maprates 
6914 !-----------------------------------------------------------------------------
6915       subroutine cbmz_v02r05_dydt( nvardum, tdum, v, a_var, f, rconst )
6917 !   computes rates of change for mechanism-version-regime = cbmz_v02r05
6919       use module_data_cbmz
6920       implicit none
6922 !   subr parameters
6923 !     nvardum = number of variable species [input]
6924       integer nvardum
6925 !     tdum = time [input]
6926       real tdum
6927 !     v = concentrations of variable species [input]
6928       real v(nvar_r05_kpp)
6929 !     a_var = dydt for each species [output]
6930       real a_var(nvar_r05_kpp)
6931 !     f = concentrations of fixed species [input]
6932       real f(nfixed_kppmax)
6933 !     rconst = reaction rate constants [input]
6934       real rconst(nreact_r05_kpp)
6936 !   local variables
6937 !     a = rate for each reaction
6938       real a(nreact_r05_kpp)
6940 ! computation of equation rates
6941       a(1) = rconst(1)*v(53)
6942       a(2) = rconst(2)*v(57)
6943       a(3) = rconst(3)*v(24)
6944       a(4) = rconst(4)*v(31)
6945       a(5) = rconst(5)*v(18)
6946       a(6) = rconst(6)*v(14)
6947       a(7) = rconst(7)*v(51)
6948       a(8) = rconst(8)*v(51)
6949       a(9) = rconst(9)*v(13)
6950       a(10) = rconst(10)*v(6)*f(4)
6951       a(11) = rconst(11)*v(6)*f(5)
6952       a(12) = rconst(12)*v(6)*f(2)
6953       a(13) = rconst(13)*v(43)*f(4)
6954       a(14) = rconst(14)*v(43)*v(51)
6955       a(15) = rconst(15)*v(43)*v(53)
6956       a(16) = rconst(16)*v(43)*v(53)
6957       a(17) = rconst(17)*v(43)*v(55)
6958       a(18) = rconst(18)*v(51)*v(55)
6959       a(19) = rconst(19)*v(51)*v(53)
6960       a(20) = rconst(20)*v(51)*v(59)
6961       a(21) = rconst(21)*v(51)*v(56)
6962       a(22) = rconst(22)*v(59)*f(3)
6963       a(23) = rconst(23)*v(55)*v(59)
6964       a(24) = rconst(24)*v(53)*v(59)
6965       a(25) = rconst(25)*v(57)*v(59)
6966       a(26) = rconst(26)*v(24)*v(59)
6967       a(27) = rconst(27)*v(31)*v(59)
6968       a(28) = rconst(28)*v(18)*v(59)
6969       a(29) = rconst(29)*v(56)*v(59)
6970       a(30) = rconst(30)*v(13)*v(59)
6971       a(31) = rconst(31)*v(56)*v(56)
6972       a(32) = rconst(32)*v(56)*v(56)*f(2)
6973       a(33) = rconst(33)*v(55)*v(56)
6974       a(34) = rconst(34)*v(53)*v(56)
6975       a(35) = rconst(35)*v(53)*v(56)
6976       a(36) = rconst(36)*v(18)
6977       a(37) = rconst(37)*v(55)*v(57)
6978       a(38) = rconst(38)*v(53)*v(57)
6979       a(39) = rconst(39)*v(53)*v(57)
6980       a(40) = rconst(40)*v(57)*v(57)
6981       a(41) = rconst(41)*v(56)*v(57)
6982       a(42) = rconst(42)*v(14)*f(2)
6983       a(43) = rconst(43)*v(14)
6984       a(44) = rconst(44)*v(28)*v(59)
6985       a(45) = rconst(45)*v(8)*v(59)
6986       a(46) = rconst(46)*v(59)*f(1)
6987       a(47) = rconst(47)*v(9)*v(59)
6988       a(48) = rconst(48)*v(23)*v(59)
6989       a(49) = rconst(49)*v(47)
6990       a(50) = rconst(50)*v(47)
6991       a(51) = rconst(51)*v(47)*v(59)
6992       a(52) = rconst(52)*v(47)*v(57)
6993       a(53) = rconst(53)*v(25)
6994       a(54) = rconst(54)*v(21)
6995       a(55) = rconst(55)*v(25)*v(59)
6996       a(56) = rconst(56)*v(21)*v(59)
6997       a(57) = rconst(57)*v(55)*v(58)
6998       a(58) = rconst(58)*v(41)*v(55)
6999       a(59) = rconst(59)*v(57)*v(58)
7000       a(60) = rconst(60)*v(41)*v(57)
7001       a(61) = rconst(61)*v(56)*v(58)
7002       a(62) = rconst(62)*v(41)*v(56)
7003       a(63) = rconst(63)*v(58)
7004       a(64) = rconst(64)*v(41)
7005       a(65) = rconst(65)*v(7)*v(59)
7006       a(66) = rconst(66)*v(45)
7007       a(67) = rconst(67)*v(45)*v(59)
7008       a(68) = rconst(68)*v(45)*v(57)
7009       a(69) = rconst(69)*v(46)*v(53)
7010       a(70) = rconst(70)*v(10)
7011       a(71) = rconst(71)*v(46)*v(55)
7012       a(72) = rconst(72)*v(46)*v(57)
7013       a(73) = rconst(73)*v(46)*v(56)
7014       a(74) = rconst(74)*v(46)
7015       a(75) = rconst(75)*v(16)*v(59)
7016       a(76) = rconst(76)*v(35)
7017       a(77) = rconst(77)*v(35)*v(59)
7018       a(78) = rconst(78)*v(40)
7019       a(79) = rconst(79)*v(40)*v(59)
7020       a(80) = rconst(80)*v(40)*v(57)
7021       a(81) = rconst(81)*v(22)*v(51)
7022       a(82) = rconst(82)*v(22)*v(59)
7023       a(83) = rconst(83)*v(36)*v(51)
7024       a(84) = rconst(84)*v(39)*v(51)
7025       a(85) = rconst(85)*v(36)*v(59)
7026       a(86) = rconst(86)*v(39)*v(59)
7027       a(87) = rconst(87)*v(36)*v(57)
7028       a(88) = rconst(88)*v(39)*v(57)
7029       a(89) = rconst(89)*v(12)*v(59)
7030       a(90) = rconst(90)*v(15)*v(59)
7031       a(91) = rconst(91)*v(19)*v(55)
7032       a(92) = rconst(92)*v(26)*v(59)
7033       a(93) = rconst(93)*v(26)*v(57)
7034       a(94) = rconst(94)*v(17)*v(53)
7035       a(95) = rconst(95)*v(32)*v(59)
7036       a(96) = rconst(96)*v(32)
7037       a(97) = rconst(97)*v(32)*v(51)
7038       a(98) = rconst(98)*v(33)
7039       a(99) = rconst(99)*v(33)*v(59)
7040       a(100) = rconst(100)*v(50)*v(59)
7041       a(101) = rconst(101)*v(50)
7042       a(102) = rconst(102)*v(49)*v(55)
7043       a(103) = rconst(103)*v(48)*v(55)
7044       a(104) = rconst(104)*v(44)*v(55)
7045       a(105) = rconst(105)*v(37)*v(55)
7046       a(106) = rconst(106)*v(49)*v(57)
7047       a(107) = rconst(107)*v(48)*v(57)
7048       a(108) = rconst(108)*v(44)*v(57)
7049       a(109) = rconst(109)*v(37)*v(57)
7050       a(110) = rconst(110)*v(49)*v(56)
7051       a(111) = rconst(111)*v(48)*v(56)
7052       a(112) = rconst(112)*v(44)*v(56)
7053       a(113) = rconst(113)*v(37)*v(56)
7054       a(114) = rconst(114)*v(49)
7055       a(115) = rconst(115)*v(48)
7056       a(116) = rconst(116)*v(44)
7057       a(117) = rconst(117)*v(37)
7058       a(118) = rconst(118)*v(16)*v(27)
7059       a(119) = rconst(119)*v(34)*v(59)
7060       a(120) = rconst(120)*v(34)*v(57)
7061       a(121) = rconst(121)*v(34)*v(43)
7062       a(122) = rconst(122)*v(34)*v(59)
7063       a(123) = rconst(123)*v(38)*v(55)
7064       a(124) = rconst(124)*v(38)*v(58)
7065       a(125) = rconst(125)*v(38)*v(54)
7066       a(126) = rconst(126)*v(38)*v(38)
7067       a(127) = rconst(127)*v(20)*v(59)
7068       a(128) = rconst(128)*v(11)*v(59)
7069       a(129) = rconst(129)*v(30)*v(55)
7070       a(130) = rconst(130)*v(30)*v(58)
7071       a(131) = rconst(131)*v(42)*v(56)
7072       a(132) = rconst(132)*v(42)*v(57)
7073       a(133) = rconst(133)*v(42)*v(58)
7074       a(134) = rconst(134)*v(42)*v(59)
7075       a(135) = rconst(135)*v(42)*v(52)
7076       a(136) = rconst(136)*v(54)
7077       a(137) = rconst(137)*v(53)*v(54)
7078       a(138) = rconst(138)*v(51)*v(54)
7079       a(139) = rconst(139)*v(54)*v(56)
7080       a(140) = rconst(140)*v(54)*v(58)
7081       a(141) = rconst(141)*v(54)*v(59)
7082       a(142) = rconst(142)*v(54)*f(4)
7083       a(143) = rconst(143)*v(29)
7084       a(144) = rconst(144)*v(29)*v(55)
7085       a(145) = rconst(145)*v(29)*v(58)
7086       a(146) = rconst(146)*v(52)
7087       a(147) = rconst(147)*v(52)*v(53)
7088       a(148) = rconst(148)*v(52)*v(55)
7089       a(149) = rconst(149)*v(52)*v(56)
7090       a(150) = rconst(150)*v(47)*v(52)
7092 ! aggregate function
7093       a_var(1) = a(45)+a(146)
7094       a_var(2) = 0.52*a(81)+0.22*a(83)
7095       a_var(3) = 0.4*a(73)+0.09*a(83)+0.16*a(84)
7096       a_var(4) = a(135)+a(141)+a(147)+a(148)+a(149)+a(150)
7097       a_var(5) = 0.15*a(126)
7098       a_var(6) = a(8)-a(10)-a(11)-a(12)
7099       a_var(7) = -a(65)
7100       a_var(8) = -a(45)+a(136)
7101       a_var(9) = -a(47)+0.2*a(64)
7102       a_var(10) = a(69)-a(70)
7103       a_var(11) = 0.27*a(127)-a(128)
7104       a_var(12) = -a(89)
7105       a_var(13) = -a(9)-a(30)+a(31)+a(32)+a(131)
7106       a_var(14) = -a(6)+a(39)-a(42)-a(43)
7107       a_var(15) = -a(90)
7108       a_var(16) = -a(75)+1.1*a(90)-a(118)
7109       a_var(17) = 0.4*a(92)+a(93)-a(94)
7110       a_var(18) = -a(5)-a(28)+a(34)-a(36)
7111       a_var(19) = 0.8*a(89)+0.45*a(90)-a(91)
7112       a_var(20) = 0.965*a(122)-a(127)
7113       a_var(21) = -a(54)-a(56)+a(62)
7114       a_var(22) = -a(81)-a(82)
7115       a_var(23) = -a(48)+0.34*a(63)+0.03*a(83)+0.04*a(84)
7116       a_var(24) = -a(3)+a(23)-a(26)+a(35)+a(148)
7117       a_var(25) = -a(53)-a(55)+a(61)+a(133)
7118       a_var(26) = 0.12*a(89)+0.05*a(90)-a(92)-a(93)
7119       a_var(27) = 1.06*a(83)+2.26*a(84)+a(85)+2.23*a(86)+1.98*a(98)   &
7120                  +0.42*a(99)+1.98*a(101)+1.68*a(102)+a(104)+1.98   &
7121                  *a(106)+a(108)+1.25*a(114)+a(116)-a(118)
7122       a_var(28) = -a(44)+a(49)+a(50)+a(51)+a(52)+a(66)+a(78)+a(80)   &
7123                  +0.24*a(81)+0.31*a(83)+0.3*a(84)+2*a(95)+a(96)+0.69   &
7124                  *a(97)+a(150)
7125       a_var(29) = a(142)-a(143)-a(144)-a(145)
7126       a_var(30) = a(128)-a(129)-a(130)
7127       a_var(31) = -a(4)+a(24)-a(27)+0.3*a(41)+2*a(42)+a(52)+a(68)   &
7128                  +a(80)+a(93)+a(120)+a(132)+a(147)
7129       a_var(32) = 0.95*a(91)+0.3*a(92)-a(95)-a(96)-a(97)
7130       a_var(33) = -a(98)-a(99)+a(110)+a(111)
7131       a_var(34) = -a(119)-a(120)-a(121)-a(122)
7132       a_var(35) = -a(76)-a(77)+0.07*a(84)+0.23*a(86)+0.74*a(98)+0.74   &
7133                  *a(101)+0.62*a(102)+0.74*a(106)+0.57*a(114)+0.15   &
7134                  *a(115)
7135       a_var(36) = -a(83)-a(85)-a(87)
7136       a_var(37) = a(79)+a(82)+a(85)+a(86)+0.08*a(89)+0.5*a(90)+0.6   &
7137                  *a(92)+a(95)+0.03*a(97)+0.4*a(98)+0.4*a(101)+0.34   &
7138                  *a(102)-a(105)+0.4*a(106)-a(109)-a(113)+0.24*a(114)   &
7139                  -a(117)
7140       a_var(38) = a(119)+a(120)-a(123)-a(124)-a(125)-2*a(126)
7141       a_var(39) = -a(84)-a(86)-a(88)
7142       a_var(40) = -a(78)-a(79)-a(80)+0.04*a(83)+0.07*a(84)+0.8*a(90)   &
7143                  +0.2*a(97)+0.19*a(99)+0.15*a(115)
7144       a_var(41) = a(47)+0.5*a(56)-a(58)-a(60)-a(62)-a(64)+0.06*a(83)   &
7145                  +0.05*a(84)+0.1*a(98)+0.1*a(101)+0.08*a(102)+0.1   &
7146                  *a(106)+0.06*a(114)
7147       a_var(42) = 0.73*a(127)-a(131)-a(132)-a(133)-a(134)-a(135)
7148       a_var(43) = a(1)+0.89*a(2)+a(7)+a(10)+a(11)-a(13)-a(14)-a(15)   &
7149                  -a(16)-a(17)-a(121)
7150       a_var(44) = a(87)+a(88)+a(100)-a(104)-a(108)-a(112)-a(116)
7151       a_var(45) = a(54)+0.5*a(56)+a(58)+a(60)+0.8*a(64)+a(65)-a(66)   &
7152                  -a(67)-a(68)+0.22*a(82)+0.47*a(83)+1.03*a(84)+a(85)   &
7153                  +1.77*a(86)+0.03*a(97)+0.3*a(98)+0.04*a(99)+0.3   &
7154                  *a(101)+0.25*a(102)+0.5*a(104)+0.3*a(106)+0.5*a(108)   &
7155                  +0.21*a(114)+0.5*a(116)
7156       a_var(46) = a(67)+a(68)-a(69)+a(70)-a(71)-a(72)-a(73)-a(74)   &
7157                  +a(76)+a(78)+a(79)+a(80)+0.13*a(83)+0.19*a(84)+a(95)   &
7158                  +a(96)+0.62*a(97)+a(103)+a(107)+0.7*a(115)
7159       a_var(47) = a(48)-a(49)-a(50)-a(51)-a(52)+a(53)+0.3*a(55)+a(57)   &
7160                  +a(59)+0.66*a(63)+a(81)+1.56*a(82)+0.57*a(83)+a(85)   &
7161                  +a(95)+0.7*a(97)+a(103)+0.5*a(104)+a(107)+0.5*a(108)   &
7162                  +0.7*a(115)+0.5*a(116)+a(123)+2*a(124)+a(125)+a(129)   &
7163                  +2*a(130)+a(140)+a(145)-a(150)
7164       a_var(48) = a(77)+0.11*a(84)-a(103)-a(107)-a(111)-a(115)
7165       a_var(49) = a(75)+0.03*a(83)+0.09*a(84)+0.77*a(99)-a(102)-a(106)   &
7166                  -a(110)-a(114)
7167       a_var(50) = 0.05*a(91)+a(94)-a(100)-a(101)+0.16*a(102)+0.5   &
7168                  *a(104)+0.5*a(108)+a(112)+0.5*a(116)
7169       a_var(51) = -a(7)-a(8)+a(13)-a(14)-a(18)-a(19)-a(20)-a(21)+0.4   &
7170                  *a(73)-a(81)-a(83)-a(84)-a(97)-a(138)
7171       a_var(52) = a(125)-a(135)+a(137)+a(138)+a(139)+a(140)+a(144)   &
7172                  +a(145)-a(146)-a(147)-a(148)-a(149)-a(150)
7173       a_var(53) = -a(1)+0.89*a(2)+a(4)+a(5)+a(6)-a(15)-a(16)+a(17)   &
7174                  +a(18)-a(19)-a(24)+a(25)+a(26)+a(28)+a(33)-a(34)   &
7175                  -a(35)+a(36)+2*a(37)-a(39)+2*a(40)+0.7*a(41)+a(43)   &
7176                  +a(57)+a(58)+a(59)+a(60)-a(69)+a(70)+a(71)+a(72)+0.95   &
7177                  *a(91)-a(94)+a(101)+0.84*a(102)+a(103)+1.5*a(104)   &
7178                  +a(105)+a(106)+a(107)+1.5*a(108)+a(109)+0.5*a(116)   &
7179                  +a(123)+a(129)-a(137)+a(144)-a(147)
7180       a_var(54) = a(121)+0.035*a(122)+a(123)+a(124)+1.85*a(126)+a(129)   &
7181                  +a(130)+a(131)+a(132)+a(133)+a(134)+a(135)-a(136)   &
7182                  -a(137)-a(138)-a(139)-a(140)-a(141)-a(142)+a(143)
7183       a_var(55) = a(1)+0.11*a(2)+a(3)+a(15)-a(17)-a(18)-a(23)-a(33)   &
7184                  -a(37)+a(38)-a(57)-a(58)-a(71)-a(91)-a(102)-a(103)   &
7185                  -a(104)-a(105)-a(123)-a(129)+a(137)-a(144)-a(148)
7186       a_var(56) = a(5)+a(20)-a(21)+a(22)+a(25)-a(29)+a(30)-2*a(31)-2   &
7187                  *a(32)-a(33)-a(34)-a(35)+a(36)-a(41)+a(44)+a(45)   &
7188                  +a(48)+2*a(49)+a(51)+a(52)+a(53)+a(54)+a(57)+a(58)   &
7189                  +a(59)+a(60)-a(61)-a(62)+0.32*a(63)+0.6*a(64)+a(65)   &
7190                  +a(66)-a(73)+a(78)+0.22*a(81)+a(82)+0.26*a(83)+0.22   &
7191                  *a(84)+a(85)+a(86)+0.2*a(89)+0.55*a(90)+0.95*a(91)   &
7192                  +0.6*a(92)+2*a(95)+a(96)+0.76*a(97)+0.9*a(98)+0.9   &
7193                  *a(101)+0.76*a(102)+0.5*a(104)+0.9*a(106)+0.5*a(108)   &
7194                  -a(110)-a(111)-a(112)-a(113)+0.54*a(114)+0.965*a(122)   &
7195                  +a(124)+0.27*a(127)+a(130)-a(131)-a(139)+a(140)   &
7196                  +a(145)-a(149)+a(150)
7197       a_var(57) = -a(2)+a(6)+a(16)+a(19)-a(25)+a(27)-a(37)-a(38)-a(39)   &
7198                  -2*a(40)-a(41)+a(43)-a(52)-a(59)-a(60)-a(68)-a(72)   &
7199                  -a(80)-a(87)-a(88)-a(93)-a(106)-a(107)-a(108)-a(109)   &
7200                  -a(120)-a(132)
7201       a_var(58) = a(46)+0.7*a(55)-a(57)-a(59)-a(61)-a(63)+a(66)+a(71)   &
7202                  +a(72)+a(74)+a(76)+0.07*a(83)+0.1*a(84)+a(121)+0.035   &
7203                  *a(122)-a(124)+0.73*a(127)-a(130)-a(133)+a(136)   &
7204                  -a(140)-a(145)+a(146)
7205       a_var(59) = a(3)+a(4)+2*a(9)+2*a(12)-a(20)+a(21)-a(22)-a(23)   &
7206                  -a(24)-a(25)-a(26)-a(27)-a(28)-a(29)-a(30)+a(33)+0.7   &
7207                  *a(41)-a(44)-a(45)-a(46)-a(47)-a(48)-a(51)+a(53)   &
7208                  +a(54)-0.7*a(55)-0.5*a(56)-a(65)-a(67)-a(75)-a(77)   &
7209                  -a(79)+0.12*a(81)-a(82)+0.33*a(83)+0.6*a(84)-a(85)   &
7210                  -a(86)-a(89)-a(90)-a(92)-a(95)+0.08*a(97)+a(98)-0.77   &
7211                  *a(99)-a(100)-a(119)-a(122)-a(127)-a(128)-a(134)   &
7212                  +a(139)-a(141)
7213       return
7214       end subroutine cbmz_v02r05_dydt                                      
7217 !-----------------------------------------------------------------------------
7218       subroutine cbmz_v02r05_jacob( nvardum, tdum, v, jvs, f, rconst )
7220 !   computes jacobian for mechanism-version-regime = cbmz_v02r05
7222       use module_data_cbmz
7223       implicit none
7225 !   subr parameters
7226 !     nvardum = number of variable species [input]
7227       integer nvardum
7228 !     tdum = time [input]
7229       real tdum
7230 !     v = concentrations of variable species [input]
7231       real v(nvar_r05_kpp)
7232 !     jvs = non-zero jacobian elements [output]
7233       real jvs(lu_nonzero_v_r05_kpp)
7234 !     f = concentrations of fixed species [input]
7235       real f(nfixed_kppmax)
7236 !     rconst = reaction rate constants [input]
7237       real rconst(nreact_r05_kpp)
7239 !   local variables
7240 !     b(i,j) = d[reaction_rate(i)] / d[species_conc(j)]
7241       real b(nreact_r05_kpp,nvar_r05_kpp)
7243 ! computation of b(i,j) = da(i)/dv(j)
7244       b(1,53) = rconst(1)
7245       b(2,57) = rconst(2)
7246       b(3,24) = rconst(3)
7247       b(4,31) = rconst(4)
7248       b(5,18) = rconst(5)
7249       b(6,14) = rconst(6)
7250       b(7,51) = rconst(7)
7251       b(8,51) = rconst(8)
7252       b(9,13) = rconst(9)
7253       b(10,6) = rconst(10)*f(4)
7254       b(11,6) = rconst(11)*f(5)
7255       b(12,6) = rconst(12)*f(2)
7256       b(13,43) = rconst(13)*f(4)
7257       b(14,43) = rconst(14)*v(51)
7258       b(14,51) = rconst(14)*v(43)
7259       b(15,43) = rconst(15)*v(53)
7260       b(15,53) = rconst(15)*v(43)
7261       b(16,43) = rconst(16)*v(53)
7262       b(16,53) = rconst(16)*v(43)
7263       b(17,43) = rconst(17)*v(55)
7264       b(17,55) = rconst(17)*v(43)
7265       b(18,51) = rconst(18)*v(55)
7266       b(18,55) = rconst(18)*v(51)
7267       b(19,51) = rconst(19)*v(53)
7268       b(19,53) = rconst(19)*v(51)
7269       b(20,51) = rconst(20)*v(59)
7270       b(20,59) = rconst(20)*v(51)
7271       b(21,51) = rconst(21)*v(56)
7272       b(21,56) = rconst(21)*v(51)
7273       b(22,59) = rconst(22)*f(3)
7274       b(23,55) = rconst(23)*v(59)
7275       b(23,59) = rconst(23)*v(55)
7276       b(24,53) = rconst(24)*v(59)
7277       b(24,59) = rconst(24)*v(53)
7278       b(25,57) = rconst(25)*v(59)
7279       b(25,59) = rconst(25)*v(57)
7280       b(26,24) = rconst(26)*v(59)
7281       b(26,59) = rconst(26)*v(24)
7282       b(27,31) = rconst(27)*v(59)
7283       b(27,59) = rconst(27)*v(31)
7284       b(28,18) = rconst(28)*v(59)
7285       b(28,59) = rconst(28)*v(18)
7286       b(29,56) = rconst(29)*v(59)
7287       b(29,59) = rconst(29)*v(56)
7288       b(30,13) = rconst(30)*v(59)
7289       b(30,59) = rconst(30)*v(13)
7290       b(31,56) = rconst(31)*2*v(56)
7291       b(32,56) = rconst(32)*2*v(56)*f(2)
7292       b(33,55) = rconst(33)*v(56)
7293       b(33,56) = rconst(33)*v(55)
7294       b(34,53) = rconst(34)*v(56)
7295       b(34,56) = rconst(34)*v(53)
7296       b(35,53) = rconst(35)*v(56)
7297       b(35,56) = rconst(35)*v(53)
7298       b(36,18) = rconst(36)
7299       b(37,55) = rconst(37)*v(57)
7300       b(37,57) = rconst(37)*v(55)
7301       b(38,53) = rconst(38)*v(57)
7302       b(38,57) = rconst(38)*v(53)
7303       b(39,53) = rconst(39)*v(57)
7304       b(39,57) = rconst(39)*v(53)
7305       b(40,57) = rconst(40)*2*v(57)
7306       b(41,56) = rconst(41)*v(57)
7307       b(41,57) = rconst(41)*v(56)
7308       b(42,14) = rconst(42)*f(2)
7309       b(43,14) = rconst(43)
7310       b(44,28) = rconst(44)*v(59)
7311       b(44,59) = rconst(44)*v(28)
7312       b(45,8) = rconst(45)*v(59)
7313       b(45,59) = rconst(45)*v(8)
7314       b(46,59) = rconst(46)*f(1)
7315       b(47,9) = rconst(47)*v(59)
7316       b(47,59) = rconst(47)*v(9)
7317       b(48,23) = rconst(48)*v(59)
7318       b(48,59) = rconst(48)*v(23)
7319       b(49,47) = rconst(49)
7320       b(50,47) = rconst(50)
7321       b(51,47) = rconst(51)*v(59)
7322       b(51,59) = rconst(51)*v(47)
7323       b(52,47) = rconst(52)*v(57)
7324       b(52,57) = rconst(52)*v(47)
7325       b(53,25) = rconst(53)
7326       b(54,21) = rconst(54)
7327       b(55,25) = rconst(55)*v(59)
7328       b(55,59) = rconst(55)*v(25)
7329       b(56,21) = rconst(56)*v(59)
7330       b(56,59) = rconst(56)*v(21)
7331       b(57,55) = rconst(57)*v(58)
7332       b(57,58) = rconst(57)*v(55)
7333       b(58,41) = rconst(58)*v(55)
7334       b(58,55) = rconst(58)*v(41)
7335       b(59,57) = rconst(59)*v(58)
7336       b(59,58) = rconst(59)*v(57)
7337       b(60,41) = rconst(60)*v(57)
7338       b(60,57) = rconst(60)*v(41)
7339       b(61,56) = rconst(61)*v(58)
7340       b(61,58) = rconst(61)*v(56)
7341       b(62,41) = rconst(62)*v(56)
7342       b(62,56) = rconst(62)*v(41)
7343       b(63,58) = rconst(63)
7344       b(64,41) = rconst(64)
7345       b(65,7) = rconst(65)*v(59)
7346       b(65,59) = rconst(65)*v(7)
7347       b(66,45) = rconst(66)
7348       b(67,45) = rconst(67)*v(59)
7349       b(67,59) = rconst(67)*v(45)
7350       b(68,45) = rconst(68)*v(57)
7351       b(68,57) = rconst(68)*v(45)
7352       b(69,46) = rconst(69)*v(53)
7353       b(69,53) = rconst(69)*v(46)
7354       b(70,10) = rconst(70)
7355       b(71,46) = rconst(71)*v(55)
7356       b(71,55) = rconst(71)*v(46)
7357       b(72,46) = rconst(72)*v(57)
7358       b(72,57) = rconst(72)*v(46)
7359       b(73,46) = rconst(73)*v(56)
7360       b(73,56) = rconst(73)*v(46)
7361       b(74,46) = rconst(74)
7362       b(75,16) = rconst(75)*v(59)
7363       b(75,59) = rconst(75)*v(16)
7364       b(76,35) = rconst(76)
7365       b(77,35) = rconst(77)*v(59)
7366       b(77,59) = rconst(77)*v(35)
7367       b(78,40) = rconst(78)
7368       b(79,40) = rconst(79)*v(59)
7369       b(79,59) = rconst(79)*v(40)
7370       b(80,40) = rconst(80)*v(57)
7371       b(80,57) = rconst(80)*v(40)
7372       b(81,22) = rconst(81)*v(51)
7373       b(81,51) = rconst(81)*v(22)
7374       b(82,22) = rconst(82)*v(59)
7375       b(82,59) = rconst(82)*v(22)
7376       b(83,36) = rconst(83)*v(51)
7377       b(83,51) = rconst(83)*v(36)
7378       b(84,39) = rconst(84)*v(51)
7379       b(84,51) = rconst(84)*v(39)
7380       b(85,36) = rconst(85)*v(59)
7381       b(85,59) = rconst(85)*v(36)
7382       b(86,39) = rconst(86)*v(59)
7383       b(86,59) = rconst(86)*v(39)
7384       b(87,36) = rconst(87)*v(57)
7385       b(87,57) = rconst(87)*v(36)
7386       b(88,39) = rconst(88)*v(57)
7387       b(88,57) = rconst(88)*v(39)
7388       b(89,12) = rconst(89)*v(59)
7389       b(89,59) = rconst(89)*v(12)
7390       b(90,15) = rconst(90)*v(59)
7391       b(90,59) = rconst(90)*v(15)
7392       b(91,19) = rconst(91)*v(55)
7393       b(91,55) = rconst(91)*v(19)
7394       b(92,26) = rconst(92)*v(59)
7395       b(92,59) = rconst(92)*v(26)
7396       b(93,26) = rconst(93)*v(57)
7397       b(93,57) = rconst(93)*v(26)
7398       b(94,17) = rconst(94)*v(53)
7399       b(94,53) = rconst(94)*v(17)
7400       b(95,32) = rconst(95)*v(59)
7401       b(95,59) = rconst(95)*v(32)
7402       b(96,32) = rconst(96)
7403       b(97,32) = rconst(97)*v(51)
7404       b(97,51) = rconst(97)*v(32)
7405       b(98,33) = rconst(98)
7406       b(99,33) = rconst(99)*v(59)
7407       b(99,59) = rconst(99)*v(33)
7408       b(100,50) = rconst(100)*v(59)
7409       b(100,59) = rconst(100)*v(50)
7410       b(101,50) = rconst(101)
7411       b(102,49) = rconst(102)*v(55)
7412       b(102,55) = rconst(102)*v(49)
7413       b(103,48) = rconst(103)*v(55)
7414       b(103,55) = rconst(103)*v(48)
7415       b(104,44) = rconst(104)*v(55)
7416       b(104,55) = rconst(104)*v(44)
7417       b(105,37) = rconst(105)*v(55)
7418       b(105,55) = rconst(105)*v(37)
7419       b(106,49) = rconst(106)*v(57)
7420       b(106,57) = rconst(106)*v(49)
7421       b(107,48) = rconst(107)*v(57)
7422       b(107,57) = rconst(107)*v(48)
7423       b(108,44) = rconst(108)*v(57)
7424       b(108,57) = rconst(108)*v(44)
7425       b(109,37) = rconst(109)*v(57)
7426       b(109,57) = rconst(109)*v(37)
7427       b(110,49) = rconst(110)*v(56)
7428       b(110,56) = rconst(110)*v(49)
7429       b(111,48) = rconst(111)*v(56)
7430       b(111,56) = rconst(111)*v(48)
7431       b(112,44) = rconst(112)*v(56)
7432       b(112,56) = rconst(112)*v(44)
7433       b(113,37) = rconst(113)*v(56)
7434       b(113,56) = rconst(113)*v(37)
7435       b(114,49) = rconst(114)
7436       b(115,48) = rconst(115)
7437       b(116,44) = rconst(116)
7438       b(117,37) = rconst(117)
7439       b(118,16) = rconst(118)*v(27)
7440       b(118,27) = rconst(118)*v(16)
7441       b(119,34) = rconst(119)*v(59)
7442       b(119,59) = rconst(119)*v(34)
7443       b(120,34) = rconst(120)*v(57)
7444       b(120,57) = rconst(120)*v(34)
7445       b(121,34) = rconst(121)*v(43)
7446       b(121,43) = rconst(121)*v(34)
7447       b(122,34) = rconst(122)*v(59)
7448       b(122,59) = rconst(122)*v(34)
7449       b(123,38) = rconst(123)*v(55)
7450       b(123,55) = rconst(123)*v(38)
7451       b(124,38) = rconst(124)*v(58)
7452       b(124,58) = rconst(124)*v(38)
7453       b(125,38) = rconst(125)*v(54)
7454       b(125,54) = rconst(125)*v(38)
7455       b(126,38) = rconst(126)*2*v(38)
7456       b(127,20) = rconst(127)*v(59)
7457       b(127,59) = rconst(127)*v(20)
7458       b(128,11) = rconst(128)*v(59)
7459       b(128,59) = rconst(128)*v(11)
7460       b(129,30) = rconst(129)*v(55)
7461       b(129,55) = rconst(129)*v(30)
7462       b(130,30) = rconst(130)*v(58)
7463       b(130,58) = rconst(130)*v(30)
7464       b(131,42) = rconst(131)*v(56)
7465       b(131,56) = rconst(131)*v(42)
7466       b(132,42) = rconst(132)*v(57)
7467       b(132,57) = rconst(132)*v(42)
7468       b(133,42) = rconst(133)*v(58)
7469       b(133,58) = rconst(133)*v(42)
7470       b(134,42) = rconst(134)*v(59)
7471       b(134,59) = rconst(134)*v(42)
7472       b(135,42) = rconst(135)*v(52)
7473       b(135,52) = rconst(135)*v(42)
7474       b(136,54) = rconst(136)
7475       b(137,53) = rconst(137)*v(54)
7476       b(137,54) = rconst(137)*v(53)
7477       b(138,51) = rconst(138)*v(54)
7478       b(138,54) = rconst(138)*v(51)
7479       b(139,54) = rconst(139)*v(56)
7480       b(139,56) = rconst(139)*v(54)
7481       b(140,54) = rconst(140)*v(58)
7482       b(140,58) = rconst(140)*v(54)
7483       b(141,54) = rconst(141)*v(59)
7484       b(141,59) = rconst(141)*v(54)
7485       b(142,54) = rconst(142)*f(4)
7486       b(143,29) = rconst(143)
7487       b(144,29) = rconst(144)*v(55)
7488       b(144,55) = rconst(144)*v(29)
7489       b(145,29) = rconst(145)*v(58)
7490       b(145,58) = rconst(145)*v(29)
7491       b(146,52) = rconst(146)
7492       b(147,52) = rconst(147)*v(53)
7493       b(147,53) = rconst(147)*v(52)
7494       b(148,52) = rconst(148)*v(55)
7495       b(148,55) = rconst(148)*v(52)
7496       b(149,52) = rconst(149)*v(56)
7497       b(149,56) = rconst(149)*v(52)
7498       b(150,47) = rconst(150)*v(52)
7499       b(150,52) = rconst(150)*v(47)
7501 ! construct the jacobian terms from b's
7502       jvs(1) = 0
7503       jvs(2) = b(45,8)
7504       jvs(3) = b(146,52)
7505       jvs(4) = b(45,59)
7506       jvs(5) = 0
7507       jvs(6) = 0.52*b(81,22)
7508       jvs(7) = 0.22*b(83,36)
7509       jvs(8) = 0.52*b(81,51)+0.22*b(83,51)
7510       jvs(9) = 0
7511       jvs(10) = 0.09*b(83,36)
7512       jvs(11) = 0.16*b(84,39)
7513       jvs(12) = 0.4*b(73,46)
7514       jvs(13) = 0.09*b(83,51)+0.16*b(84,51)
7515       jvs(14) = 0.4*b(73,56)
7516       jvs(15) = 0
7517       jvs(16) = b(135,42)
7518       jvs(17) = b(150,47)
7519       jvs(18) = b(135,52)+b(147,52)+b(148,52)+b(149,52)+b(150,52)
7520       jvs(19) = b(147,53)
7521       jvs(20) = b(141,54)
7522       jvs(21) = b(148,55)
7523       jvs(22) = b(149,56)
7524       jvs(23) = b(141,59)
7525       jvs(24) = 0
7526       jvs(25) = 0.15*b(126,38)
7527       jvs(26) = -b(10,6)-b(11,6)-b(12,6)
7528       jvs(27) = b(8,51)
7529       jvs(28) = -b(65,7)
7530       jvs(29) = -b(65,59)
7531       jvs(30) = -b(45,8)
7532       jvs(31) = b(136,54)
7533       jvs(32) = -b(45,59)
7534       jvs(33) = -b(47,9)
7535       jvs(34) = 0.2*b(64,41)
7536       jvs(35) = -b(47,59)
7537       jvs(36) = -b(70,10)
7538       jvs(37) = b(69,46)
7539       jvs(38) = b(69,53)
7540       jvs(39) = -b(128,11)
7541       jvs(40) = 0.27*b(127,20)
7542       jvs(41) = 0.27*b(127,59)-b(128,59)
7543       jvs(42) = -b(89,12)
7544       jvs(43) = -b(89,59)
7545       jvs(44) = -b(9,13)-b(30,13)
7546       jvs(45) = b(131,42)
7547       jvs(46) = b(31,56)+b(32,56)+b(131,56)
7548       jvs(47) = -b(30,59)
7549       jvs(48) = -b(6,14)-b(42,14)-b(43,14)
7550       jvs(49) = b(39,53)
7551       jvs(50) = b(39,57)
7552       jvs(51) = -b(90,15)
7553       jvs(52) = -b(90,59)
7554       jvs(53) = 1.1*b(90,15)
7555       jvs(54) = -b(75,16)-b(118,16)
7556       jvs(55) = -b(118,27)
7557       jvs(56) = -b(75,59)+1.1*b(90,59)
7558       jvs(57) = -b(94,17)
7559       jvs(58) = 0.4*b(92,26)+b(93,26)
7560       jvs(59) = -b(94,53)
7561       jvs(60) = b(93,57)
7562       jvs(61) = 0.4*b(92,59)
7563       jvs(62) = -b(5,18)-b(28,18)-b(36,18)
7564       jvs(63) = b(34,53)
7565       jvs(64) = b(34,56)
7566       jvs(65) = -b(28,59)
7567       jvs(66) = 0.8*b(89,12)
7568       jvs(67) = 0.45*b(90,15)
7569       jvs(68) = -b(91,19)
7570       jvs(69) = -b(91,55)
7571       jvs(70) = 0.8*b(89,59)+0.45*b(90,59)
7572       jvs(71) = -b(127,20)
7573       jvs(72) = 0.965*b(122,34)
7574       jvs(73) = 0.965*b(122,59)-b(127,59)
7575       jvs(74) = -b(54,21)-b(56,21)
7576       jvs(75) = b(62,41)
7577       jvs(76) = b(62,56)
7578       jvs(77) = -b(56,59)
7579       jvs(78) = -b(81,22)-b(82,22)
7580       jvs(79) = -b(81,51)
7581       jvs(80) = -b(82,59)
7582       jvs(81) = -b(48,23)
7583       jvs(82) = 0.03*b(83,36)
7584       jvs(83) = 0.04*b(84,39)
7585       jvs(84) = 0.03*b(83,51)+0.04*b(84,51)
7586       jvs(85) = 0.34*b(63,58)
7587       jvs(86) = -b(48,59)
7588       jvs(87) = -b(3,24)-b(26,24)
7589       jvs(88) = b(148,52)
7590       jvs(89) = b(35,53)
7591       jvs(90) = b(23,55)+b(148,55)
7592       jvs(91) = b(35,56)
7593       jvs(92) = b(23,59)-b(26,59)
7594       jvs(93) = -b(53,25)-b(55,25)
7595       jvs(94) = b(133,42)
7596       jvs(95) = b(61,56)
7597       jvs(96) = b(61,58)+b(133,58)
7598       jvs(97) = -b(55,59)
7599       jvs(98) = 0.12*b(89,12)
7600       jvs(99) = 0.05*b(90,15)
7601       jvs(100) = -b(92,26)-b(93,26)
7602       jvs(101) = -b(93,57)
7603       jvs(102) = 0.12*b(89,59)+0.05*b(90,59)-b(92,59)
7604       jvs(103) = -b(118,16)
7605       jvs(104) = -b(118,27)
7606       jvs(105) = 1.98*b(98,33)+0.42*b(99,33)
7607       jvs(106) = 1.06*b(83,36)+b(85,36)
7608       jvs(107) = 2.26*b(84,39)+2.23*b(86,39)
7609       jvs(108) = b(104,44)+b(108,44)+b(116,44)
7610       jvs(109) = 1.68*b(102,49)+1.98*b(106,49)+1.25*b(114,49)
7611       jvs(110) = 1.98*b(101,50)
7612       jvs(111) = 1.06*b(83,51)+2.26*b(84,51)
7613       jvs(112) = 1.68*b(102,55)+b(104,55)
7614       jvs(113) = 1.98*b(106,57)+b(108,57)
7615       jvs(114) = b(85,59)+2.23*b(86,59)+0.42*b(99,59)
7616       jvs(115) = 0.24*b(81,22)
7617       jvs(116) = -b(44,28)
7618       jvs(117) = 2*b(95,32)+b(96,32)+0.69*b(97,32)
7619       jvs(118) = 0.31*b(83,36)
7620       jvs(119) = 0.3*b(84,39)
7621       jvs(120) = b(78,40)+b(80,40)
7622       jvs(121) = b(66,45)
7623       jvs(122) = b(49,47)+b(50,47)+b(51,47)+b(52,47)+b(150,47)
7624       jvs(123) = 0.24*b(81,51)+0.31*b(83,51)+0.3*b(84,51)+0.69   &
7625                 *b(97,51)
7626       jvs(124) = b(150,52)
7627       jvs(125) = b(52,57)+b(80,57)
7628       jvs(126) = -b(44,59)+b(51,59)+2*b(95,59)
7629       jvs(127) = -b(143,29)-b(144,29)-b(145,29)
7630       jvs(128) = b(142,54)
7631       jvs(129) = -b(144,55)
7632       jvs(130) = -b(145,58)
7633       jvs(131) = b(128,11)
7634       jvs(132) = 0
7635       jvs(133) = -b(129,30)-b(130,30)
7636       jvs(134) = 0
7637       jvs(135) = -b(129,55)
7638       jvs(136) = -b(130,58)
7639       jvs(137) = b(128,59)
7640       jvs(138) = 2*b(42,14)
7641       jvs(139) = b(93,26)
7642       jvs(140) = -b(4,31)-b(27,31)
7643       jvs(141) = b(120,34)
7644       jvs(142) = b(80,40)
7645       jvs(143) = b(132,42)
7646       jvs(144) = b(68,45)
7647       jvs(145) = b(52,47)
7648       jvs(146) = b(147,52)
7649       jvs(147) = b(24,53)+b(147,53)
7650       jvs(148) = 0.3*b(41,56)
7651       jvs(149) = 0.3*b(41,57)+b(52,57)+b(68,57)+b(80,57)+b(93,57)   &
7652                 +b(120,57)+b(132,57)
7653       jvs(150) = b(24,59)-b(27,59)
7654       jvs(151) = 0.95*b(91,19)
7655       jvs(152) = 0.3*b(92,26)
7656       jvs(153) = -b(95,32)-b(96,32)-b(97,32)
7657       jvs(154) = -b(97,51)
7658       jvs(155) = 0.95*b(91,55)
7659       jvs(156) = 0
7660       jvs(157) = 0.3*b(92,59)-b(95,59)
7661       jvs(158) = -b(98,33)-b(99,33)
7662       jvs(159) = b(111,48)
7663       jvs(160) = b(110,49)
7664       jvs(161) = b(110,56)+b(111,56)
7665       jvs(162) = -b(99,59)
7666       jvs(163) = -b(119,34)-b(120,34)-b(121,34)-b(122,34)
7667       jvs(164) = -b(121,43)
7668       jvs(165) = -b(120,57)
7669       jvs(166) = -b(119,59)-b(122,59)
7670       jvs(167) = 0.74*b(98,33)
7671       jvs(168) = -b(76,35)-b(77,35)
7672       jvs(169) = 0.07*b(84,39)+0.23*b(86,39)
7673       jvs(170) = 0.15*b(115,48)
7674       jvs(171) = 0.62*b(102,49)+0.74*b(106,49)+0.57*b(114,49)
7675       jvs(172) = 0.74*b(101,50)
7676       jvs(173) = 0.07*b(84,51)
7677       jvs(174) = 0.62*b(102,55)
7678       jvs(175) = 0
7679       jvs(176) = 0.74*b(106,57)
7680       jvs(177) = -b(77,59)+0.23*b(86,59)
7681       jvs(178) = -b(83,36)-b(85,36)-b(87,36)
7682       jvs(179) = -b(83,51)
7683       jvs(180) = -b(87,57)
7684       jvs(181) = -b(85,59)
7685       jvs(182) = 0.08*b(89,12)
7686       jvs(183) = 0.5*b(90,15)
7687       jvs(184) = b(82,22)
7688       jvs(185) = 0.6*b(92,26)
7689       jvs(186) = b(95,32)+0.03*b(97,32)
7690       jvs(187) = 0.4*b(98,33)
7691       jvs(188) = b(85,36)
7692       jvs(189) = -b(105,37)-b(109,37)-b(113,37)-b(117,37)
7693       jvs(190) = b(86,39)
7694       jvs(191) = b(79,40)
7695       jvs(192) = 0
7696       jvs(193) = 0.34*b(102,49)+0.4*b(106,49)+0.24*b(114,49)
7697       jvs(194) = 0.4*b(101,50)
7698       jvs(195) = 0.03*b(97,51)
7699       jvs(196) = 0.34*b(102,55)-b(105,55)
7700       jvs(197) = -b(113,56)
7701       jvs(198) = 0.4*b(106,57)-b(109,57)
7702       jvs(199) = b(79,59)+b(82,59)+b(85,59)+b(86,59)+0.08*b(89,59)+0.5   &
7703                 *b(90,59)+0.6*b(92,59)+b(95,59)
7704       jvs(200) = b(119,34)+b(120,34)
7705       jvs(201) = -b(123,38)-b(124,38)-b(125,38)-2*b(126,38)
7706       jvs(202) = 0
7707       jvs(203) = -b(125,54)
7708       jvs(204) = -b(123,55)
7709       jvs(205) = b(120,57)
7710       jvs(206) = -b(124,58)
7711       jvs(207) = b(119,59)
7712       jvs(208) = -b(84,39)-b(86,39)-b(88,39)
7713       jvs(209) = -b(84,51)
7714       jvs(210) = -b(88,57)
7715       jvs(211) = -b(86,59)
7716       jvs(212) = 0.8*b(90,15)
7717       jvs(213) = 0.2*b(97,32)
7718       jvs(214) = 0.19*b(99,33)
7719       jvs(215) = 0.04*b(83,36)
7720       jvs(216) = 0.07*b(84,39)
7721       jvs(217) = -b(78,40)-b(79,40)-b(80,40)
7722       jvs(218) = 0.15*b(115,48)
7723       jvs(219) = 0
7724       jvs(220) = 0.04*b(83,51)+0.07*b(84,51)+0.2*b(97,51)
7725       jvs(221) = 0
7726       jvs(222) = 0
7727       jvs(223) = -b(80,57)
7728       jvs(224) = -b(79,59)+0.8*b(90,59)+0.19*b(99,59)
7729       jvs(225) = b(47,9)
7730       jvs(226) = 0.5*b(56,21)
7731       jvs(227) = 0.1*b(98,33)
7732       jvs(228) = 0.06*b(83,36)
7733       jvs(229) = 0.05*b(84,39)
7734       jvs(230) = -b(58,41)-b(60,41)-b(62,41)-b(64,41)
7735       jvs(231) = 0
7736       jvs(232) = 0.08*b(102,49)+0.1*b(106,49)+0.06*b(114,49)
7737       jvs(233) = 0.1*b(101,50)
7738       jvs(234) = 0.06*b(83,51)+0.05*b(84,51)
7739       jvs(235) = -b(58,55)+0.08*b(102,55)
7740       jvs(236) = -b(62,56)
7741       jvs(237) = -b(60,57)+0.1*b(106,57)
7742       jvs(238) = b(47,59)+0.5*b(56,59)
7743       jvs(239) = 0.73*b(127,20)
7744       jvs(240) = 0
7745       jvs(241) = -b(131,42)-b(132,42)-b(133,42)-b(134,42)-b(135,42)
7746       jvs(242) = 0
7747       jvs(243) = -b(135,52)
7748       jvs(244) = -b(131,56)
7749       jvs(245) = -b(132,57)
7750       jvs(246) = -b(133,58)
7751       jvs(247) = 0.73*b(127,59)-b(134,59)
7752       jvs(248) = b(10,6)+b(11,6)
7753       jvs(249) = -b(121,34)
7754       jvs(250) = -b(13,43)-b(14,43)-b(15,43)-b(16,43)-b(17,43)   &
7755                 -b(121,43)
7756       jvs(251) = b(7,51)-b(14,51)
7757       jvs(252) = b(1,53)-b(15,53)-b(16,53)
7758       jvs(253) = -b(17,55)
7759       jvs(254) = 0.89*b(2,57)
7760       jvs(255) = 0
7761       jvs(256) = b(87,36)
7762       jvs(257) = b(88,39)
7763       jvs(258) = -b(104,44)-b(108,44)-b(112,44)-b(116,44)
7764       jvs(259) = b(100,50)
7765       jvs(260) = 0
7766       jvs(261) = -b(104,55)
7767       jvs(262) = -b(112,56)
7768       jvs(263) = b(87,57)+b(88,57)-b(108,57)
7769       jvs(264) = b(100,59)
7770       jvs(265) = b(65,7)
7771       jvs(266) = b(54,21)+0.5*b(56,21)
7772       jvs(267) = 0.22*b(82,22)
7773       jvs(268) = 0.03*b(97,32)
7774       jvs(269) = 0.3*b(98,33)+0.04*b(99,33)
7775       jvs(270) = 0.47*b(83,36)+b(85,36)
7776       jvs(271) = 1.03*b(84,39)+1.77*b(86,39)
7777       jvs(272) = b(58,41)+b(60,41)+0.8*b(64,41)
7778       jvs(273) = 0.5*b(104,44)+0.5*b(108,44)+0.5*b(116,44)
7779       jvs(274) = -b(66,45)-b(67,45)-b(68,45)
7780       jvs(275) = 0
7781       jvs(276) = 0.25*b(102,49)+0.3*b(106,49)+0.21*b(114,49)
7782       jvs(277) = 0.3*b(101,50)
7783       jvs(278) = 0.47*b(83,51)+1.03*b(84,51)+0.03*b(97,51)
7784       jvs(279) = b(58,55)+0.25*b(102,55)+0.5*b(104,55)
7785       jvs(280) = 0
7786       jvs(281) = b(60,57)-b(68,57)+0.3*b(106,57)+0.5*b(108,57)
7787       jvs(282) = 0.5*b(56,59)+b(65,59)-b(67,59)+0.22*b(82,59)+b(85,59)   &
7788                 +1.77*b(86,59)+0.04*b(99,59)
7789       jvs(283) = b(70,10)
7790       jvs(284) = b(95,32)+b(96,32)+0.62*b(97,32)
7791       jvs(285) = b(76,35)
7792       jvs(286) = 0.13*b(83,36)
7793       jvs(287) = 0.19*b(84,39)
7794       jvs(288) = b(78,40)+b(79,40)+b(80,40)
7795       jvs(289) = b(67,45)+b(68,45)
7796       jvs(290) = -b(69,46)-b(71,46)-b(72,46)-b(73,46)-b(74,46)
7797       jvs(291) = b(103,48)+b(107,48)+0.7*b(115,48)
7798       jvs(292) = 0
7799       jvs(293) = 0
7800       jvs(294) = 0.13*b(83,51)+0.19*b(84,51)+0.62*b(97,51)
7801       jvs(295) = -b(69,53)
7802       jvs(296) = -b(71,55)+b(103,55)
7803       jvs(297) = -b(73,56)
7804       jvs(298) = b(68,57)-b(72,57)+b(80,57)+b(107,57)
7805       jvs(299) = b(67,59)+b(79,59)+b(95,59)
7806       jvs(300) = b(81,22)+1.56*b(82,22)
7807       jvs(301) = b(48,23)
7808       jvs(302) = b(53,25)+0.3*b(55,25)
7809       jvs(303) = b(145,29)
7810       jvs(304) = b(129,30)+2*b(130,30)
7811       jvs(305) = b(95,32)+0.7*b(97,32)
7812       jvs(306) = 0
7813       jvs(307) = 0.57*b(83,36)+b(85,36)
7814       jvs(308) = b(123,38)+2*b(124,38)+b(125,38)
7815       jvs(309) = 0
7816       jvs(310) = 0
7817       jvs(311) = 0
7818       jvs(312) = 0.5*b(104,44)+0.5*b(108,44)+0.5*b(116,44)
7819       jvs(313) = -b(49,47)-b(50,47)-b(51,47)-b(52,47)-b(150,47)
7820       jvs(314) = b(103,48)+b(107,48)+0.7*b(115,48)
7821       jvs(315) = 0
7822       jvs(316) = b(81,51)+0.57*b(83,51)+0.7*b(97,51)
7823       jvs(317) = -b(150,52)
7824       jvs(318) = 0
7825       jvs(319) = b(125,54)+b(140,54)
7826       jvs(320) = b(57,55)+b(103,55)+0.5*b(104,55)+b(123,55)+b(129,55)
7827       jvs(321) = 0
7828       jvs(322) = -b(52,57)+b(59,57)+b(107,57)+0.5*b(108,57)
7829       jvs(323) = b(57,58)+b(59,58)+0.66*b(63,58)+2*b(124,58)+2   &
7830                 *b(130,58)+b(140,58)+b(145,58)
7831       jvs(324) = b(48,59)-b(51,59)+0.3*b(55,59)+1.56*b(82,59)+b(85,59)   &
7832                 +b(95,59)
7833       jvs(325) = b(77,35)
7834       jvs(326) = 0.11*b(84,39)
7835       jvs(327) = -b(103,48)-b(107,48)-b(111,48)-b(115,48)
7836       jvs(328) = 0
7837       jvs(329) = 0
7838       jvs(330) = 0.11*b(84,51)
7839       jvs(331) = -b(103,55)
7840       jvs(332) = -b(111,56)
7841       jvs(333) = -b(107,57)
7842       jvs(334) = b(77,59)
7843       jvs(335) = b(75,16)
7844       jvs(336) = 0
7845       jvs(337) = 0.77*b(99,33)
7846       jvs(338) = 0.03*b(83,36)
7847       jvs(339) = 0.09*b(84,39)
7848       jvs(340) = 0
7849       jvs(341) = 0
7850       jvs(342) = -b(102,49)-b(106,49)-b(110,49)-b(114,49)
7851       jvs(343) = 0
7852       jvs(344) = 0.03*b(83,51)+0.09*b(84,51)
7853       jvs(345) = -b(102,55)
7854       jvs(346) = -b(110,56)
7855       jvs(347) = -b(106,57)
7856       jvs(348) = b(75,59)+0.77*b(99,59)
7857       jvs(349) = b(94,17)
7858       jvs(350) = 0.05*b(91,19)
7859       jvs(351) = 0
7860       jvs(352) = 0.5*b(104,44)+0.5*b(108,44)+b(112,44)+0.5*b(116,44)
7861       jvs(353) = 0.16*b(102,49)
7862       jvs(354) = -b(100,50)-b(101,50)
7863       jvs(355) = 0
7864       jvs(356) = b(94,53)
7865       jvs(357) = 0.05*b(91,55)+0.16*b(102,55)+0.5*b(104,55)
7866       jvs(358) = b(112,56)
7867       jvs(359) = 0.5*b(108,57)
7868       jvs(360) = -b(100,59)
7869       jvs(361) = -b(81,22)
7870       jvs(362) = -b(97,32)
7871       jvs(363) = -b(83,36)
7872       jvs(364) = -b(84,39)
7873       jvs(365) = b(13,43)-b(14,43)
7874       jvs(366) = 0.4*b(73,46)
7875       jvs(367) = 0
7876       jvs(368) = 0
7877       jvs(369) = 0
7878       jvs(370) = -b(7,51)-b(8,51)-b(14,51)-b(18,51)-b(19,51)-b(20,51)   &
7879                 -b(21,51)-b(81,51)-b(83,51)-b(84,51)-b(97,51)   &
7880                 -b(138,51)
7881       jvs(371) = -b(19,53)
7882       jvs(372) = -b(138,54)
7883       jvs(373) = -b(18,55)
7884       jvs(374) = -b(21,56)+0.4*b(73,56)
7885       jvs(375) = 0
7886       jvs(376) = -b(20,59)
7887       jvs(377) = b(144,29)+b(145,29)
7888       jvs(378) = b(125,38)
7889       jvs(379) = -b(135,42)
7890       jvs(380) = 0
7891       jvs(381) = -b(150,47)
7892       jvs(382) = 0
7893       jvs(383) = 0
7894       jvs(384) = 0
7895       jvs(385) = b(138,51)
7896       jvs(386) = -b(135,52)-b(146,52)-b(147,52)-b(148,52)-b(149,52)   &
7897                 -b(150,52)
7898       jvs(387) = b(137,53)-b(147,53)
7899       jvs(388) = b(125,54)+b(137,54)+b(138,54)+b(139,54)+b(140,54)
7900       jvs(389) = b(144,55)-b(148,55)
7901       jvs(390) = b(139,56)-b(149,56)
7902       jvs(391) = 0
7903       jvs(392) = b(140,58)+b(145,58)
7904       jvs(393) = 0
7905       jvs(394) = b(70,10)
7906       jvs(395) = b(6,14)+b(43,14)
7907       jvs(396) = -b(94,17)
7908       jvs(397) = b(5,18)+b(28,18)+b(36,18)
7909       jvs(398) = 0.95*b(91,19)
7910       jvs(399) = b(26,24)
7911       jvs(400) = 0
7912       jvs(401) = b(144,29)
7913       jvs(402) = b(129,30)
7914       jvs(403) = b(4,31)
7915       jvs(404) = 0
7916       jvs(405) = b(105,37)+b(109,37)
7917       jvs(406) = b(123,38)
7918       jvs(407) = 0
7919       jvs(408) = 0
7920       jvs(409) = b(58,41)+b(60,41)
7921       jvs(410) = 0
7922       jvs(411) = -b(15,43)-b(16,43)+b(17,43)
7923       jvs(412) = 1.5*b(104,44)+1.5*b(108,44)+0.5*b(116,44)
7924       jvs(413) = 0
7925       jvs(414) = -b(69,46)+b(71,46)+b(72,46)
7926       jvs(415) = 0
7927       jvs(416) = b(103,48)+b(107,48)
7928       jvs(417) = 0.84*b(102,49)+b(106,49)
7929       jvs(418) = b(101,50)
7930       jvs(419) = b(18,51)-b(19,51)
7931       jvs(420) = -b(147,52)
7932       jvs(421) = -b(1,53)-b(15,53)-b(16,53)-b(19,53)-b(24,53)-b(34,53)   &
7933                 -b(35,53)-b(39,53)-b(69,53)-b(94,53)-b(137,53)   &
7934                 -b(147,53)
7935       jvs(422) = -b(137,54)
7936       jvs(423) = b(17,55)+b(18,55)+b(33,55)+2*b(37,55)+b(57,55)   &
7937                 +b(58,55)+b(71,55)+0.95*b(91,55)+0.84*b(102,55)   &
7938                 +b(103,55)+1.5*b(104,55)+b(105,55)+b(123,55)+b(129,55)   &
7939                 +b(144,55)
7940       jvs(424) = b(33,56)-b(34,56)-b(35,56)+0.7*b(41,56)
7941       jvs(425) = b(57,58)+b(59,58)
7942       jvs(426) = -b(24,59)+b(25,59)+b(26,59)+b(28,59)
7943       jvs(427) = b(143,29)
7944       jvs(428) = b(129,30)+b(130,30)
7945       jvs(429) = b(121,34)+0.035*b(122,34)
7946       jvs(430) = b(123,38)+b(124,38)+1.85*b(126,38)
7947       jvs(431) = b(131,42)+b(132,42)+b(133,42)+b(134,42)+b(135,42)
7948       jvs(432) = b(121,43)
7949       jvs(433) = -b(138,51)
7950       jvs(434) = b(135,52)
7951       jvs(435) = -b(137,53)
7952       jvs(436) = -b(136,54)-b(137,54)-b(138,54)-b(139,54)-b(140,54)   &
7953                 -b(141,54)-b(142,54)
7954       jvs(437) = b(123,55)+b(129,55)
7955       jvs(438) = b(131,56)-b(139,56)
7956       jvs(439) = b(132,57)
7957       jvs(440) = b(124,58)+b(130,58)+b(133,58)-b(140,58)
7958       jvs(441) = 0.035*b(122,59)+b(134,59)-b(141,59)
7959       jvs(442) = -b(91,19)
7960       jvs(443) = b(3,24)
7961       jvs(444) = -b(144,29)
7962       jvs(445) = -b(129,30)
7963       jvs(446) = 0
7964       jvs(447) = -b(105,37)
7965       jvs(448) = -b(123,38)
7966       jvs(449) = 0
7967       jvs(450) = 0
7968       jvs(451) = -b(58,41)
7969       jvs(452) = b(15,43)-b(17,43)
7970       jvs(453) = -b(104,44)
7971       jvs(454) = -b(71,46)
7972       jvs(455) = -b(103,48)
7973       jvs(456) = -b(102,49)
7974       jvs(457) = 0
7975       jvs(458) = -b(18,51)
7976       jvs(459) = -b(148,52)
7977       jvs(460) = b(1,53)+b(15,53)+b(38,53)+b(137,53)
7978       jvs(461) = b(137,54)
7979       jvs(462) = -b(17,55)-b(18,55)-b(23,55)-b(33,55)-b(37,55)   &
7980                 -b(57,55)-b(58,55)-b(71,55)-b(91,55)-b(102,55)   &
7981                 -b(103,55)-b(104,55)-b(105,55)-b(123,55)-b(129,55)   &
7982                 -b(144,55)-b(148,55)
7983       jvs(463) = -b(33,56)
7984       jvs(464) = 0.11*b(2,57)-b(37,57)+b(38,57)
7985       jvs(465) = -b(57,58)
7986       jvs(466) = -b(23,59)
7987       jvs(467) = b(65,7)
7988       jvs(468) = b(45,8)
7989       jvs(469) = 0.2*b(89,12)
7990       jvs(470) = b(30,13)
7991       jvs(471) = 0.55*b(90,15)
7992       jvs(472) = b(5,18)+b(36,18)
7993       jvs(473) = 0.95*b(91,19)
7994       jvs(474) = 0.27*b(127,20)
7995       jvs(475) = b(54,21)
7996       jvs(476) = 0.22*b(81,22)+b(82,22)
7997       jvs(477) = b(48,23)
7998       jvs(478) = b(53,25)
7999       jvs(479) = 0.6*b(92,26)
8000       jvs(480) = b(44,28)
8001       jvs(481) = b(145,29)
8002       jvs(482) = b(130,30)
8003       jvs(483) = 2*b(95,32)+b(96,32)+0.76*b(97,32)
8004       jvs(484) = 0.9*b(98,33)
8005       jvs(485) = 0.965*b(122,34)
8006       jvs(486) = 0.26*b(83,36)+b(85,36)
8007       jvs(487) = -b(113,37)
8008       jvs(488) = b(124,38)
8009       jvs(489) = 0.22*b(84,39)+b(86,39)
8010       jvs(490) = b(78,40)
8011       jvs(491) = b(58,41)+b(60,41)-b(62,41)+0.6*b(64,41)
8012       jvs(492) = -b(131,42)
8013       jvs(493) = 0
8014       jvs(494) = 0.5*b(104,44)+0.5*b(108,44)-b(112,44)
8015       jvs(495) = b(66,45)
8016       jvs(496) = -b(73,46)
8017       jvs(497) = 2*b(49,47)+b(51,47)+b(52,47)+b(150,47)
8018       jvs(498) = -b(111,48)
8019       jvs(499) = 0.76*b(102,49)+0.9*b(106,49)-b(110,49)+0.54*b(114,49)
8020       jvs(500) = 0.9*b(101,50)
8021       jvs(501) = b(20,51)-b(21,51)+0.22*b(81,51)+0.26*b(83,51)+0.22   &
8022                 *b(84,51)+0.76*b(97,51)
8023       jvs(502) = -b(149,52)+b(150,52)
8024       jvs(503) = -b(34,53)-b(35,53)
8025       jvs(504) = -b(139,54)+b(140,54)
8026       jvs(505) = -b(33,55)+b(57,55)+b(58,55)+0.95*b(91,55)+0.76   &
8027                 *b(102,55)+0.5*b(104,55)
8028       jvs(506) = -b(21,56)-b(29,56)-2*b(31,56)-2*b(32,56)-b(33,56)   &
8029                 -b(34,56)-b(35,56)-b(41,56)-b(61,56)-b(62,56)-b(73,56)   &
8030                 -b(110,56)-b(111,56)-b(112,56)-b(113,56)-b(131,56)   &
8031                 -b(139,56)-b(149,56)
8032       jvs(507) = b(25,57)-b(41,57)+b(52,57)+b(59,57)+b(60,57)+0.9   &
8033                 *b(106,57)+0.5*b(108,57)
8034       jvs(508) = b(57,58)+b(59,58)-b(61,58)+0.32*b(63,58)+b(124,58)   &
8035                 +b(130,58)+b(140,58)+b(145,58)
8036       jvs(509) = b(20,59)+b(22,59)+b(25,59)-b(29,59)+b(30,59)+b(44,59)   &
8037                 +b(45,59)+b(48,59)+b(51,59)+b(65,59)+b(82,59)+b(85,59)   &
8038                 +b(86,59)+0.2*b(89,59)+0.55*b(90,59)+0.6*b(92,59)+2   &
8039                 *b(95,59)+0.965*b(122,59)+0.27*b(127,59)
8040       jvs(510) = b(6,14)+b(43,14)
8041       jvs(511) = -b(93,26)
8042       jvs(512) = b(27,31)
8043       jvs(513) = -b(120,34)
8044       jvs(514) = -b(87,36)
8045       jvs(515) = -b(109,37)
8046       jvs(516) = -b(88,39)
8047       jvs(517) = -b(80,40)
8048       jvs(518) = -b(60,41)
8049       jvs(519) = -b(132,42)
8050       jvs(520) = b(16,43)
8051       jvs(521) = -b(108,44)
8052       jvs(522) = -b(68,45)
8053       jvs(523) = -b(72,46)
8054       jvs(524) = -b(52,47)
8055       jvs(525) = -b(107,48)
8056       jvs(526) = -b(106,49)
8057       jvs(527) = 0
8058       jvs(528) = b(19,51)
8059       jvs(529) = 0
8060       jvs(530) = b(16,53)+b(19,53)-b(38,53)-b(39,53)
8061       jvs(531) = 0
8062       jvs(532) = -b(37,55)
8063       jvs(533) = -b(41,56)
8064       jvs(534) = -b(2,57)-b(25,57)-b(37,57)-b(38,57)-b(39,57)-2   &
8065                 *b(40,57)-b(41,57)-b(52,57)-b(59,57)-b(60,57)-b(68,57)   &
8066                 -b(72,57)-b(80,57)-b(87,57)-b(88,57)-b(93,57)   &
8067                 -b(106,57)-b(107,57)-b(108,57)-b(109,57)-b(120,57)   &
8068                 -b(132,57)
8069       jvs(535) = -b(59,58)
8070       jvs(536) = -b(25,59)+b(27,59)
8071       jvs(537) = 0.73*b(127,20)
8072       jvs(538) = 0.7*b(55,25)
8073       jvs(539) = -b(145,29)
8074       jvs(540) = -b(130,30)
8075       jvs(541) = b(121,34)+0.035*b(122,34)
8076       jvs(542) = b(76,35)
8077       jvs(543) = 0.07*b(83,36)
8078       jvs(544) = -b(124,38)
8079       jvs(545) = 0.1*b(84,39)
8080       jvs(546) = -b(133,42)
8081       jvs(547) = b(121,43)
8082       jvs(548) = b(66,45)
8083       jvs(549) = b(71,46)+b(72,46)+b(74,46)
8084       jvs(550) = 0
8085       jvs(551) = 0
8086       jvs(552) = 0
8087       jvs(553) = 0.07*b(83,51)+0.1*b(84,51)
8088       jvs(554) = b(146,52)
8089       jvs(555) = 0
8090       jvs(556) = b(136,54)-b(140,54)
8091       jvs(557) = -b(57,55)+b(71,55)
8092       jvs(558) = -b(61,56)
8093       jvs(559) = -b(59,57)+b(72,57)
8094       jvs(560) = -b(57,58)-b(59,58)-b(61,58)-b(63,58)-b(124,58)   &
8095                 -b(130,58)-b(133,58)-b(140,58)-b(145,58)
8096       jvs(561) = b(46,59)+0.7*b(55,59)+0.035*b(122,59)+0.73*b(127,59)
8097       jvs(562) = 2*b(12,6)
8098       jvs(563) = -b(65,7)
8099       jvs(564) = -b(45,8)
8100       jvs(565) = -b(47,9)
8101       jvs(566) = -b(128,11)
8102       jvs(567) = -b(89,12)
8103       jvs(568) = 2*b(9,13)-b(30,13)
8104       jvs(569) = -b(90,15)
8105       jvs(570) = -b(75,16)
8106       jvs(571) = -b(28,18)
8107       jvs(572) = -b(127,20)
8108       jvs(573) = b(54,21)-0.5*b(56,21)
8109       jvs(574) = 0.12*b(81,22)-b(82,22)
8110       jvs(575) = -b(48,23)
8111       jvs(576) = b(3,24)-b(26,24)
8112       jvs(577) = b(53,25)-0.7*b(55,25)
8113       jvs(578) = -b(92,26)
8114       jvs(579) = 0
8115       jvs(580) = -b(44,28)
8116       jvs(581) = b(4,31)-b(27,31)
8117       jvs(582) = -b(95,32)+0.08*b(97,32)
8118       jvs(583) = b(98,33)-0.77*b(99,33)
8119       jvs(584) = -b(119,34)-b(122,34)
8120       jvs(585) = -b(77,35)
8121       jvs(586) = 0.33*b(83,36)-b(85,36)
8122       jvs(587) = 0.6*b(84,39)-b(86,39)
8123       jvs(588) = -b(79,40)
8124       jvs(589) = 0
8125       jvs(590) = -b(134,42)
8126       jvs(591) = 0
8127       jvs(592) = 0
8128       jvs(593) = -b(67,45)
8129       jvs(594) = -b(51,47)
8130       jvs(595) = 0
8131       jvs(596) = 0
8132       jvs(597) = -b(100,50)
8133       jvs(598) = -b(20,51)+b(21,51)+0.12*b(81,51)+0.33*b(83,51)+0.6   &
8134                 *b(84,51)+0.08*b(97,51)
8135       jvs(599) = 0
8136       jvs(600) = -b(24,53)
8137       jvs(601) = b(139,54)-b(141,54)
8138       jvs(602) = -b(23,55)+b(33,55)
8139       jvs(603) = b(21,56)-b(29,56)+b(33,56)+0.7*b(41,56)+b(139,56)
8140       jvs(604) = -b(25,57)+0.7*b(41,57)
8141       jvs(605) = 0
8142       jvs(606) = -b(20,59)-b(22,59)-b(23,59)-b(24,59)-b(25,59)   &
8143                 -b(26,59)-b(27,59)-b(28,59)-b(29,59)-b(30,59)-b(44,59)   &
8144                 -b(45,59)-b(46,59)-b(47,59)-b(48,59)-b(51,59)-0.7   &
8145                 *b(55,59)-0.5*b(56,59)-b(65,59)-b(67,59)-b(75,59)   &
8146                 -b(77,59)-b(79,59)-b(82,59)-b(85,59)-b(86,59)-b(89,59)   &
8147                 -b(90,59)-b(92,59)-b(95,59)-0.77*b(99,59)-b(100,59)   &
8148                 -b(119,59)-b(122,59)-b(127,59)-b(128,59)-b(134,59)   &
8149                 -b(141,59)
8150       return
8151       end subroutine cbmz_v02r05_jacob                                    
8154 !-----------------------------------------------------------------------------
8155       subroutine cbmz_v02r05_decomp( n, v, ier,   &
8156           lu_crow_v, lu_diag_v, lu_icol_v )
8158 !   computes l-u-decomposition of sparse jacobian
8159 !   for mechanism-version-regime = cbmz_v02r05
8161       use module_data_cbmz
8162       implicit none
8164 !   subr parameters
8165 !     n = number of variable species [input]
8166       integer n
8167 !     ier = status flag [output]
8168 !         0 = success    other = failure [output]
8169       integer ier
8171 !     v = elements of the sparse jacobian [input]
8172       real v(lu_nonzero_v_r05_kpp)
8174       integer lu_crow_v(nvar_r05_kpp + 1)
8175       integer lu_diag_v(nvar_r05_kpp + 1)
8176       integer lu_icol_v(lu_nonzero_v_r05_kpp)
8178 !   local variables
8179       integer k, kk, j, jj
8180       real a, w(nvar_r05_kpp + 1)
8183       ier = 0
8184       do k=1,n
8185         if ( v( lu_diag_v(k) ) .eq. 0. ) then
8186             ier = k
8187             return
8188         end if
8189         do kk = lu_crow_v(k), lu_crow_v(k+1)-1
8190               w( lu_icol_v(kk) ) = v(kk)
8191         end do
8192         do kk = lu_crow_v(k), lu_diag_v(k)-1
8193             j = lu_icol_v(kk)
8194             a = -w(j) / v( lu_diag_v(j) )
8195             w(j) = -a
8196             do jj = lu_diag_v(j)+1, lu_crow_v(j+1)-1
8197                w( lu_icol_v(jj) ) = w( lu_icol_v(jj) ) + a*v(jj)
8198             end do
8199          end do
8200          do kk = lu_crow_v(k), lu_crow_v(k+1)-1
8201             v(kk) = w( lu_icol_v(kk) )
8202          end do
8203       end do
8204       return
8205       end subroutine cbmz_v02r05_decomp            
8208 !-----------------------------------------------------------------------------
8209       subroutine cbmz_v02r05_solve( jvs, x )
8211 !   does back-solve for mechanism-version-regime = cbmz_v02r05
8213       implicit none
8215 !   subr parameters
8216 !     jvs = the non-zero elements of the l-u-decomposition
8217 !           of the augmented jacobian [input]
8218       real jvs(*)
8219 !     x = the right-hand side of the linear equation set being solved [on input]
8220 !     x = concentrations of variable species [on output]
8221       real x(*)
8224       x(16) = x(16)-jvs(53)*x(15)
8225       x(19) = x(19)-jvs(66)*x(12)-jvs(67)*x(15)
8226       x(26) = x(26)-jvs(98)*x(12)-jvs(99)*x(15)
8227       x(27) = x(27)-jvs(103)*x(16)
8228       x(28) = x(28)-jvs(115)*x(22)
8229       x(30) = x(30)-jvs(131)*x(11)-jvs(132)*x(20)
8230       x(31) = x(31)-jvs(138)*x(14)-jvs(139)*x(26)
8231       x(32) = x(32)-jvs(151)*x(19)-jvs(152)*x(26)
8232       x(35) = x(35)-jvs(167)*x(33)
8233       x(37) = x(37)-jvs(182)*x(12)-jvs(183)*x(15)-jvs(184)*x(22)   &
8234              -jvs(185)*x(26)-jvs(186)*x(32)-jvs(187)*x(33)-jvs(188)   &
8235              *x(36)
8236       x(38) = x(38)-jvs(200)*x(34)
8237       x(40) = x(40)-jvs(212)*x(15)-jvs(213)*x(32)-jvs(214)*x(33)   &
8238              -jvs(215)*x(36)-jvs(216)*x(39)
8239       x(41) = x(41)-jvs(225)*x(9)-jvs(226)*x(21)-jvs(227)*x(33)   &
8240              -jvs(228)*x(36)-jvs(229)*x(39)
8241       x(42) = x(42)-jvs(239)*x(20)-jvs(240)*x(34)
8242       x(43) = x(43)-jvs(248)*x(6)-jvs(249)*x(34)
8243       x(44) = x(44)-jvs(256)*x(36)-jvs(257)*x(39)
8244       x(45) = x(45)-jvs(265)*x(7)-jvs(266)*x(21)-jvs(267)*x(22)   &
8245              -jvs(268)*x(32)-jvs(269)*x(33)-jvs(270)*x(36)-jvs(271)   &
8246              *x(39)-jvs(272)*x(41)-jvs(273)*x(44)
8247       x(46) = x(46)-jvs(283)*x(10)-jvs(284)*x(32)-jvs(285)*x(35)   &
8248              -jvs(286)*x(36)-jvs(287)*x(39)-jvs(288)*x(40)-jvs(289)   &
8249              *x(45)
8250       x(47) = x(47)-jvs(300)*x(22)-jvs(301)*x(23)-jvs(302)*x(25)   &
8251              -jvs(303)*x(29)-jvs(304)*x(30)-jvs(305)*x(32)-jvs(306)   &
8252              *x(34)-jvs(307)*x(36)-jvs(308)*x(38)-jvs(309)*x(39)   &
8253              -jvs(310)*x(42)-jvs(311)*x(43)-jvs(312)*x(44)
8254       x(48) = x(48)-jvs(325)*x(35)-jvs(326)*x(39)
8255       x(49) = x(49)-jvs(335)*x(16)-jvs(336)*x(27)-jvs(337)*x(33)   &
8256              -jvs(338)*x(36)-jvs(339)*x(39)-jvs(340)*x(44)-jvs(341)   &
8257              *x(48)
8258       x(50) = x(50)-jvs(349)*x(17)-jvs(350)*x(19)-jvs(351)*x(26)   &
8259              -jvs(352)*x(44)-jvs(353)*x(49)
8260       x(51) = x(51)-jvs(361)*x(22)-jvs(362)*x(32)-jvs(363)*x(36)   &
8261              -jvs(364)*x(39)-jvs(365)*x(43)-jvs(366)*x(46)-jvs(367)   &
8262              *x(48)-jvs(368)*x(49)-jvs(369)*x(50)
8263       x(52) = x(52)-jvs(377)*x(29)-jvs(378)*x(38)-jvs(379)*x(42)   &
8264              -jvs(380)*x(43)-jvs(381)*x(47)-jvs(382)*x(48)-jvs(383)   &
8265              *x(49)-jvs(384)*x(50)-jvs(385)*x(51)
8266       x(53) = x(53)-jvs(394)*x(10)-jvs(395)*x(14)-jvs(396)*x(17)   &
8267              -jvs(397)*x(18)-jvs(398)*x(19)-jvs(399)*x(24)-jvs(400)   &
8268              *x(26)-jvs(401)*x(29)-jvs(402)*x(30)-jvs(403)*x(31)   &
8269              -jvs(404)*x(34)-jvs(405)*x(37)-jvs(406)*x(38)-jvs(407)   &
8270              *x(39)-jvs(408)*x(40)-jvs(409)*x(41)-jvs(410)*x(42)   &
8271              -jvs(411)*x(43)-jvs(412)*x(44)-jvs(413)*x(45)-jvs(414)   &
8272              *x(46)-jvs(415)*x(47)-jvs(416)*x(48)-jvs(417)*x(49)   &
8273              -jvs(418)*x(50)-jvs(419)*x(51)-jvs(420)*x(52)
8274       x(54) = x(54)-jvs(427)*x(29)-jvs(428)*x(30)-jvs(429)*x(34)   &
8275              -jvs(430)*x(38)-jvs(431)*x(42)-jvs(432)*x(43)-jvs(433)   &
8276              *x(51)-jvs(434)*x(52)-jvs(435)*x(53)
8277       x(55) = x(55)-jvs(442)*x(19)-jvs(443)*x(24)-jvs(444)*x(29)   &
8278              -jvs(445)*x(30)-jvs(446)*x(34)-jvs(447)*x(37)-jvs(448)   &
8279              *x(38)-jvs(449)*x(39)-jvs(450)*x(40)-jvs(451)*x(41)   &
8280              -jvs(452)*x(43)-jvs(453)*x(44)-jvs(454)*x(46)-jvs(455)   &
8281              *x(48)-jvs(456)*x(49)-jvs(457)*x(50)-jvs(458)*x(51)   &
8282              -jvs(459)*x(52)-jvs(460)*x(53)-jvs(461)*x(54)
8283       x(56) = x(56)-jvs(467)*x(7)-jvs(468)*x(8)-jvs(469)*x(12)   &
8284              -jvs(470)*x(13)-jvs(471)*x(15)-jvs(472)*x(18)-jvs(473)   &
8285              *x(19)-jvs(474)*x(20)-jvs(475)*x(21)-jvs(476)*x(22)   &
8286              -jvs(477)*x(23)-jvs(478)*x(25)-jvs(479)*x(26)-jvs(480)   &
8287              *x(28)-jvs(481)*x(29)-jvs(482)*x(30)-jvs(483)*x(32)   &
8288              -jvs(484)*x(33)-jvs(485)*x(34)-jvs(486)*x(36)-jvs(487)   &
8289              *x(37)-jvs(488)*x(38)-jvs(489)*x(39)-jvs(490)*x(40)   &
8290              -jvs(491)*x(41)-jvs(492)*x(42)-jvs(493)*x(43)-jvs(494)   &
8291              *x(44)-jvs(495)*x(45)-jvs(496)*x(46)-jvs(497)*x(47)   &
8292              -jvs(498)*x(48)-jvs(499)*x(49)-jvs(500)*x(50)-jvs(501)   &
8293              *x(51)-jvs(502)*x(52)-jvs(503)*x(53)-jvs(504)*x(54)   &
8294              -jvs(505)*x(55)
8295       x(57) = x(57)-jvs(510)*x(14)-jvs(511)*x(26)-jvs(512)*x(31)   &
8296              -jvs(513)*x(34)-jvs(514)*x(36)-jvs(515)*x(37)-jvs(516)   &
8297              *x(39)-jvs(517)*x(40)-jvs(518)*x(41)-jvs(519)*x(42)   &
8298              -jvs(520)*x(43)-jvs(521)*x(44)-jvs(522)*x(45)-jvs(523)   &
8299              *x(46)-jvs(524)*x(47)-jvs(525)*x(48)-jvs(526)*x(49)   &
8300              -jvs(527)*x(50)-jvs(528)*x(51)-jvs(529)*x(52)-jvs(530)   &
8301              *x(53)-jvs(531)*x(54)-jvs(532)*x(55)-jvs(533)*x(56)
8302       x(58) = x(58)-jvs(537)*x(20)-jvs(538)*x(25)-jvs(539)*x(29)   &
8303              -jvs(540)*x(30)-jvs(541)*x(34)-jvs(542)*x(35)-jvs(543)   &
8304              *x(36)-jvs(544)*x(38)-jvs(545)*x(39)-jvs(546)*x(42)   &
8305              -jvs(547)*x(43)-jvs(548)*x(45)-jvs(549)*x(46)-jvs(550)   &
8306              *x(48)-jvs(551)*x(49)-jvs(552)*x(50)-jvs(553)*x(51)   &
8307              -jvs(554)*x(52)-jvs(555)*x(53)-jvs(556)*x(54)-jvs(557)   &
8308              *x(55)-jvs(558)*x(56)-jvs(559)*x(57)
8309       x(59) = x(59)-jvs(562)*x(6)-jvs(563)*x(7)-jvs(564)*x(8)-jvs(565)   &
8310              *x(9)-jvs(566)*x(11)-jvs(567)*x(12)-jvs(568)*x(13)   &
8311              -jvs(569)*x(15)-jvs(570)*x(16)-jvs(571)*x(18)-jvs(572)   &
8312              *x(20)-jvs(573)*x(21)-jvs(574)*x(22)-jvs(575)*x(23)   &
8313              -jvs(576)*x(24)-jvs(577)*x(25)-jvs(578)*x(26)-jvs(579)   &
8314              *x(27)-jvs(580)*x(28)-jvs(581)*x(31)-jvs(582)*x(32)   &
8315              -jvs(583)*x(33)-jvs(584)*x(34)-jvs(585)*x(35)-jvs(586)   &
8316              *x(36)-jvs(587)*x(39)-jvs(588)*x(40)-jvs(589)*x(41)   &
8317              -jvs(590)*x(42)-jvs(591)*x(43)-jvs(592)*x(44)-jvs(593)   &
8318              *x(45)-jvs(594)*x(47)-jvs(595)*x(48)-jvs(596)*x(49)   &
8319              -jvs(597)*x(50)-jvs(598)*x(51)-jvs(599)*x(52)-jvs(600)   &
8320              *x(53)-jvs(601)*x(54)-jvs(602)*x(55)-jvs(603)*x(56)   &
8321              -jvs(604)*x(57)-jvs(605)*x(58)
8322       x(59) = x(59)/jvs(606)
8323       x(58) = (x(58)-jvs(561)*x(59))/(jvs(560))
8324       x(57) = (x(57)-jvs(535)*x(58)-jvs(536)*x(59))/(jvs(534))
8325       x(56) = (x(56)-jvs(507)*x(57)-jvs(508)*x(58)-jvs(509)*x(59))/   &
8326              (jvs(506))
8327       x(55) = (x(55)-jvs(463)*x(56)-jvs(464)*x(57)-jvs(465)*x(58)   &
8328              -jvs(466)*x(59))/(jvs(462))
8329       x(54) = (x(54)-jvs(437)*x(55)-jvs(438)*x(56)-jvs(439)*x(57)   &
8330              -jvs(440)*x(58)-jvs(441)*x(59))/(jvs(436))
8331       x(53) = (x(53)-jvs(422)*x(54)-jvs(423)*x(55)-jvs(424)*x(56)   &
8332              -jvs(425)*x(58)-jvs(426)*x(59))/(jvs(421))
8333       x(52) = (x(52)-jvs(387)*x(53)-jvs(388)*x(54)-jvs(389)*x(55)   &
8334              -jvs(390)*x(56)-jvs(391)*x(57)-jvs(392)*x(58)-jvs(393)   &
8335              *x(59))/(jvs(386))
8336       x(51) = (x(51)-jvs(371)*x(53)-jvs(372)*x(54)-jvs(373)*x(55)   &
8337              -jvs(374)*x(56)-jvs(375)*x(57)-jvs(376)*x(59))/(jvs(370))
8338       x(50) = (x(50)-jvs(355)*x(51)-jvs(356)*x(53)-jvs(357)*x(55)   &
8339              -jvs(358)*x(56)-jvs(359)*x(57)-jvs(360)*x(59))/(jvs(354))
8340       x(49) = (x(49)-jvs(343)*x(50)-jvs(344)*x(51)-jvs(345)*x(55)   &
8341              -jvs(346)*x(56)-jvs(347)*x(57)-jvs(348)*x(59))/(jvs(342))
8342       x(48) = (x(48)-jvs(328)*x(49)-jvs(329)*x(50)-jvs(330)*x(51)   &
8343              -jvs(331)*x(55)-jvs(332)*x(56)-jvs(333)*x(57)-jvs(334)   &
8344              *x(59))/(jvs(327))
8345       x(47) = (x(47)-jvs(314)*x(48)-jvs(315)*x(50)-jvs(316)*x(51)   &
8346              -jvs(317)*x(52)-jvs(318)*x(53)-jvs(319)*x(54)-jvs(320)   &
8347              *x(55)-jvs(321)*x(56)-jvs(322)*x(57)-jvs(323)*x(58)   &
8348              -jvs(324)*x(59))/(jvs(313))
8349       x(46) = (x(46)-jvs(291)*x(48)-jvs(292)*x(49)-jvs(293)*x(50)   &
8350              -jvs(294)*x(51)-jvs(295)*x(53)-jvs(296)*x(55)-jvs(297)   &
8351              *x(56)-jvs(298)*x(57)-jvs(299)*x(59))/(jvs(290))
8352       x(45) = (x(45)-jvs(275)*x(48)-jvs(276)*x(49)-jvs(277)*x(50)   &
8353              -jvs(278)*x(51)-jvs(279)*x(55)-jvs(280)*x(56)-jvs(281)   &
8354              *x(57)-jvs(282)*x(59))/(jvs(274))
8355       x(44) = (x(44)-jvs(259)*x(50)-jvs(260)*x(51)-jvs(261)*x(55)   &
8356              -jvs(262)*x(56)-jvs(263)*x(57)-jvs(264)*x(59))/(jvs(258))
8357       x(43) = (x(43)-jvs(251)*x(51)-jvs(252)*x(53)-jvs(253)*x(55)   &
8358              -jvs(254)*x(57)-jvs(255)*x(59))/(jvs(250))
8359       x(42) = (x(42)-jvs(242)*x(43)-jvs(243)*x(52)-jvs(244)*x(56)   &
8360              -jvs(245)*x(57)-jvs(246)*x(58)-jvs(247)*x(59))/(jvs(241))
8361       x(41) = (x(41)-jvs(231)*x(48)-jvs(232)*x(49)-jvs(233)*x(50)   &
8362              -jvs(234)*x(51)-jvs(235)*x(55)-jvs(236)*x(56)-jvs(237)   &
8363              *x(57)-jvs(238)*x(59))/(jvs(230))
8364       x(40) = (x(40)-jvs(218)*x(48)-jvs(219)*x(49)-jvs(220)*x(51)   &
8365              -jvs(221)*x(55)-jvs(222)*x(56)-jvs(223)*x(57)-jvs(224)   &
8366              *x(59))/(jvs(217))
8367       x(39) = (x(39)-jvs(209)*x(51)-jvs(210)*x(57)-jvs(211)*x(59))/   &
8368              (jvs(208))
8369       x(38) = (x(38)-jvs(202)*x(43)-jvs(203)*x(54)-jvs(204)*x(55)   &
8370              -jvs(205)*x(57)-jvs(206)*x(58)-jvs(207)*x(59))/(jvs(201))
8371       x(37) = (x(37)-jvs(190)*x(39)-jvs(191)*x(40)-jvs(192)*x(48)   &
8372              -jvs(193)*x(49)-jvs(194)*x(50)-jvs(195)*x(51)-jvs(196)   &
8373              *x(55)-jvs(197)*x(56)-jvs(198)*x(57)-jvs(199)*x(59))/   &
8374              (jvs(189))
8375       x(36) = (x(36)-jvs(179)*x(51)-jvs(180)*x(57)-jvs(181)*x(59))/   &
8376              (jvs(178))
8377       x(35) = (x(35)-jvs(169)*x(39)-jvs(170)*x(48)-jvs(171)*x(49)   &
8378              -jvs(172)*x(50)-jvs(173)*x(51)-jvs(174)*x(55)-jvs(175)   &
8379              *x(56)-jvs(176)*x(57)-jvs(177)*x(59))/(jvs(168))
8380       x(34) = (x(34)-jvs(164)*x(43)-jvs(165)*x(57)-jvs(166)*x(59))/   &
8381              (jvs(163))
8382       x(33) = (x(33)-jvs(159)*x(48)-jvs(160)*x(49)-jvs(161)*x(56)   &
8383              -jvs(162)*x(59))/(jvs(158))
8384       x(32) = (x(32)-jvs(154)*x(51)-jvs(155)*x(55)-jvs(156)*x(57)   &
8385              -jvs(157)*x(59))/(jvs(153))
8386       x(31) = (x(31)-jvs(141)*x(34)-jvs(142)*x(40)-jvs(143)*x(42)   &
8387              -jvs(144)*x(45)-jvs(145)*x(47)-jvs(146)*x(52)-jvs(147)   &
8388              *x(53)-jvs(148)*x(56)-jvs(149)*x(57)-jvs(150)*x(59))/   &
8389              (jvs(140))
8390       x(30) = (x(30)-jvs(134)*x(34)-jvs(135)*x(55)-jvs(136)*x(58)   &
8391              -jvs(137)*x(59))/(jvs(133))
8392       x(29) = (x(29)-jvs(128)*x(54)-jvs(129)*x(55)-jvs(130)*x(58))/   &
8393              (jvs(127))
8394       x(28) = (x(28)-jvs(117)*x(32)-jvs(118)*x(36)-jvs(119)*x(39)   &
8395              -jvs(120)*x(40)-jvs(121)*x(45)-jvs(122)*x(47)-jvs(123)   &
8396              *x(51)-jvs(124)*x(52)-jvs(125)*x(57)-jvs(126)*x(59))/   &
8397              (jvs(116))
8398       x(27) = (x(27)-jvs(105)*x(33)-jvs(106)*x(36)-jvs(107)*x(39)   &
8399              -jvs(108)*x(44)-jvs(109)*x(49)-jvs(110)*x(50)-jvs(111)   &
8400              *x(51)-jvs(112)*x(55)-jvs(113)*x(57)-jvs(114)*x(59))/   &
8401              (jvs(104))
8402       x(26) = (x(26)-jvs(101)*x(57)-jvs(102)*x(59))/(jvs(100))
8403       x(25) = (x(25)-jvs(94)*x(42)-jvs(95)*x(56)-jvs(96)*x(58)-jvs(97)   &
8404              *x(59))/(jvs(93))
8405       x(24) = (x(24)-jvs(88)*x(52)-jvs(89)*x(53)-jvs(90)*x(55)-jvs(91)   &
8406              *x(56)-jvs(92)*x(59))/(jvs(87))
8407       x(23) = (x(23)-jvs(82)*x(36)-jvs(83)*x(39)-jvs(84)*x(51)-jvs(85)   &
8408              *x(58)-jvs(86)*x(59))/(jvs(81))
8409       x(22) = (x(22)-jvs(79)*x(51)-jvs(80)*x(59))/(jvs(78))
8410       x(21) = (x(21)-jvs(75)*x(41)-jvs(76)*x(56)-jvs(77)*x(59))/   &
8411              (jvs(74))
8412       x(20) = (x(20)-jvs(72)*x(34)-jvs(73)*x(59))/(jvs(71))
8413       x(19) = (x(19)-jvs(69)*x(55)-jvs(70)*x(59))/(jvs(68))
8414       x(18) = (x(18)-jvs(63)*x(53)-jvs(64)*x(56)-jvs(65)*x(59))/   &
8415              (jvs(62))
8416       x(17) = (x(17)-jvs(58)*x(26)-jvs(59)*x(53)-jvs(60)*x(57)-jvs(61)   &
8417              *x(59))/(jvs(57))
8418       x(16) = (x(16)-jvs(55)*x(27)-jvs(56)*x(59))/(jvs(54))
8419       x(15) = (x(15)-jvs(52)*x(59))/(jvs(51))
8420       x(14) = (x(14)-jvs(49)*x(53)-jvs(50)*x(57))/(jvs(48))
8421       x(13) = (x(13)-jvs(45)*x(42)-jvs(46)*x(56)-jvs(47)*x(59))/   &
8422              (jvs(44))
8423       x(12) = (x(12)-jvs(43)*x(59))/(jvs(42))
8424       x(11) = (x(11)-jvs(40)*x(20)-jvs(41)*x(59))/(jvs(39))
8425       x(10) = (x(10)-jvs(37)*x(46)-jvs(38)*x(53))/(jvs(36))
8426       x(9) = (x(9)-jvs(34)*x(41)-jvs(35)*x(59))/(jvs(33))
8427       x(8) = (x(8)-jvs(31)*x(54)-jvs(32)*x(59))/(jvs(30))
8428       x(7) = (x(7)-jvs(29)*x(59))/(jvs(28))
8429       x(6) = (x(6)-jvs(27)*x(51))/(jvs(26))
8430       x(5) = (x(5)-jvs(25)*x(38))/(jvs(24))
8431       x(4) = (x(4)-jvs(16)*x(42)-jvs(17)*x(47)-jvs(18)*x(52)-jvs(19)   &
8432             *x(53)-jvs(20)*x(54)-jvs(21)*x(55)-jvs(22)*x(56)-jvs(23)   &
8433             *x(59))/(jvs(15))
8434       x(3) = (x(3)-jvs(10)*x(36)-jvs(11)*x(39)-jvs(12)*x(46)-jvs(13)   &
8435             *x(51)-jvs(14)*x(56))/(jvs(9))
8436       x(2) = (x(2)-jvs(6)*x(22)-jvs(7)*x(36)-jvs(8)*x(51))/(jvs(5))
8437       x(1) = (x(1)-jvs(2)*x(8)-jvs(3)*x(52)-jvs(4)*x(59))/(jvs(1))
8438       return
8439       end subroutine cbmz_v02r05_solve          
8442 !   cbmz_v02r06_torodas.f - created on 18-nov-2003 from previous
8443 !        cbmz_v02r06_torodas.f        cbmz_v02r06_mapconcs.f
8444 !        cbmz_v02r06_maprates.f       cbmz_v02r06_dydt.f
8445 !        cbmz_v02r06_jacob.f          cbmz_v02r06_decomp.f
8446 !        cbmz_v02r06_solve.f
8447 !   so now everything is in a single file
8448 !-----------------------------------------------------------------------
8450       subroutine cbmz_v02r06_torodas(   &
8451           ngas, taa, tzz,   &
8452           stot, atol, rtol, yposlimit, yneglimit,   &
8453           sfixedkpp, rconstkpp,   &
8454           hmin, hstart,   &
8455           info_rodas, iok, lunerr, idydt_sngldble )
8457 !   interfaces to rodas3 solver formechanism-version-regime =cbmz_v02r06
8459 !   *** do not include any pegasus common blocks ***
8461       use module_data_cbmz
8462       use module_cbmz_rodas3_solver, only:  rodas3_ff_x2
8463       implicit none
8465 !   subr parameters
8466       integer ngas, iok, lunerr, idydt_sngldble
8467       integer info_rodas(6)
8468       real taa, tzz, hmin, hstart
8469       real stot(ngas), atol(ngas), rtol(ngas)
8470       real yposlimit(ngas), yneglimit(ngas)
8471       real sfixedkpp(nfixed_kppmax), rconstkpp(nreact_kppmax)
8473 !   local variables
8475 !     external cbmz_v02r06_dydt
8476 !     external cbmz_v02r06_jacob
8477 !     external cbmz_v02r06_decomp
8478 !     external cbmz_v02r06_solve
8480       integer i
8482       real hmax
8484       integer lu_crow_v(nvar_r06_kpp + 1)
8485       save    lu_crow_v
8486       integer lu_diag_v(nvar_r06_kpp + 1)
8487       save    lu_diag_v
8488       integer lu_icol_v(lu_nonzero_v_r06_kpp)
8489       save    lu_icol_v
8491       data( lu_icol_v(i), i = 1, 252 ) /   &
8492         1,  8, 54, 61,  2, 22, 37, 38, 51, 58,  3, 37,   &
8493        42, 52, 58, 63,  4, 45, 49, 50, 54, 56, 60, 61,   &
8494        63,  5, 39,  6, 58,  7, 61,  8, 50, 61,  9, 44,   &
8495        61, 10, 52, 56, 11, 19, 61, 12, 61, 13, 45, 61,   &
8496        63, 14, 56, 62, 15, 61, 16, 26, 56, 61, 62, 17,   &
8497        56, 61, 63, 12, 15, 18, 60, 61, 19, 34, 61, 20,   &
8498        30, 37, 42, 47, 53, 57, 58, 59, 60, 61, 62, 21,   &
8499        44, 61, 63, 22, 58, 61, 23, 37, 42, 55, 58, 61,   &
8500        24, 54, 56, 60, 61, 63, 25, 45, 55, 61, 63, 12,   &
8501        15, 26, 61, 62, 27, 50, 55, 60, 11, 19, 28, 34,   &
8502        55, 60, 61, 29, 38, 60, 62, 63, 15, 20, 29, 30,   &
8503        35, 37, 38, 42, 47, 51, 53, 57, 58, 59, 60, 61,   &
8504        62, 63, 22, 31, 32, 36, 37, 38, 42, 43, 48, 49,   &
8505        51, 54, 58, 60, 61, 62, 18, 26, 32, 58, 60, 61,   &
8506        62, 14, 26, 33, 34, 43, 45, 48, 49, 51, 54, 56,   &
8507        61, 62, 63, 34, 46, 61, 62, 35, 38, 60, 61, 63,   &
8508        36, 51, 60, 61, 63, 37, 58, 61, 62, 38, 58, 61,   &
8509        62, 34, 39, 46, 50, 55, 60, 61, 62, 12, 15, 22,   &
8510        26, 32, 37, 38, 40, 42, 43, 51, 53, 57, 58, 59,   &
8511        60, 61, 62, 63, 36, 41, 42, 51, 53, 57, 58, 59,   &
8512        60, 61, 62, 63, 64, 42, 58, 61, 62, 15, 32, 36 /
8514       data( lu_icol_v(i), i = 253, 504 ) /   &
8515        37, 42, 43, 51, 53, 58, 60, 61, 62, 63, 64,  9,   &
8516        21, 37, 42, 44, 53, 57, 58, 59, 60, 61, 62, 63,   &
8517        19, 34, 45, 46, 54, 55, 61, 62, 63,  6, 34, 46,   &
8518        56, 58, 60, 61, 62, 37, 42, 47, 57, 58, 60, 61,   &
8519        62, 63,  7, 21, 22, 29, 32, 36, 37, 38, 42, 44,   &
8520        47, 48, 51, 53, 57, 58, 59, 60, 61, 62, 63, 22,   &
8521        23, 25, 27, 28, 32, 34, 35, 36, 37, 38, 39, 42,   &
8522        45, 46, 47, 49, 50, 51, 54, 55, 56, 57, 58, 60,   &
8523        61, 62, 63, 64, 27, 28, 34, 39, 45, 46, 50, 54,   &
8524        55, 56, 58, 60, 61, 62, 63, 29, 35, 38, 51, 58,   &
8525        60, 61, 62, 63, 10, 32, 37, 38, 41, 42, 43, 48,   &
8526        51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64,   &
8527        35, 36, 38, 51, 53, 58, 59, 60, 61, 62, 63, 64,   &
8528        27, 39, 45, 46, 49, 50, 51, 54, 55, 56, 57, 58,   &
8529        60, 61, 62, 63, 64, 19, 25, 27, 28, 34, 37, 39,   &
8530        41, 42, 45, 46, 48, 50, 51, 52, 53, 54, 55, 56,   &
8531        57, 58, 59, 60, 61, 62, 63, 64, 10, 14, 16, 17,   &
8532        18, 24, 26, 27, 28, 29, 33, 34, 35, 36, 38, 39,   &
8533        40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,   &
8534        53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,   &
8535        16, 18, 26, 29, 35, 38, 47, 51, 56, 57, 58, 59 /
8537       data( lu_icol_v(i), i = 505, 715 ) /   &
8538        60, 61, 62, 63, 64, 22, 32, 37, 38, 42, 46, 50,   &
8539        51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,   &
8540        63, 64, 30, 35, 37, 38, 42, 47, 51, 53, 57, 58,   &
8541        59, 60, 61, 62, 63, 64, 18, 24, 27, 28, 29, 34,   &
8542        35, 36, 38, 39, 40, 42, 43, 44, 46, 47, 50, 51,   &
8543        52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,   &
8544        64,  6,  7,  8,  9, 11, 12, 13, 15, 17, 19, 21,   &
8545        22, 23, 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,   &
8546        37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,   &
8547        51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,   &
8548        64, 14, 26, 33, 34, 37, 38, 40, 42, 43, 44, 45,   &
8549        46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,   &
8550        58, 59, 60, 61, 62, 63, 64,  7,  8, 12, 13, 15,   &
8551        17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31,   &
8552        32, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45,   &
8553        46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,   &
8554        58, 59, 60, 61, 62, 63, 64, 41, 42, 51, 53, 57,   &
8555        58, 59, 60, 61, 62, 63, 64 /
8557       data lu_crow_v /   &
8558         1,  5, 11, 17, 26, 28, 30, 32, 35, 38, 41, 44,   &
8559        46, 50, 53, 55, 60, 64, 69, 72, 84, 88, 91, 97,   &
8560       103,108,113,117,124,129,147,163,170,184,188,193,   &
8561       198,202,206,214,233,246,250,264,277,286,294,303,   &
8562       324,353,368,377,397,409,426,453,493,510,531,547,   &
8563       578,626,656,704,716 /
8565       data lu_diag_v /   &
8566         1,  5, 11, 17, 26, 28, 30, 32, 35, 38, 41, 44,   &
8567        46, 50, 53, 55, 60, 66, 69, 72, 84, 88, 91, 97,   &
8568       103,110,113,119,124,132,148,165,172,184,188,193,   &
8569       198,202,207,221,234,246,255,268,279,288,296,314,   &
8570       340,359,371,386,401,416,443,484,502,524,541,573,   &
8571       622,653,702,715,716 /
8575       info_rodas(1) = 1
8576       do i = 2, 6
8577           info_rodas(i) = 0
8578       end do
8579       hmax = tzz - taa
8581 !   do not integrate if hmax is less/equal to hmin
8582 !   because hmin is generally 0.1 s or less
8583       if (hmax .le. 1.001*hmin) then
8584           iok = 11
8585           return
8586       end if
8588       call rodas3_ff_x2(   &
8589            nvar_r06_kpp, taa, tzz, hmin, hmax, hstart,   &
8590            stot, atol, rtol, yposlimit, yneglimit,   &
8591            sfixedkpp, rconstkpp,   &
8592            lu_nonzero_v_r06_kpp, lu_crow_v, lu_diag_v, lu_icol_v,   &
8593            info_rodas, iok, lunerr,   &
8594            cbmz_v02r06_dydt,   &
8595            cbmz_v02r06_jacob,   &
8596            cbmz_v02r06_decomp,   &
8597            cbmz_v02r06_solve )
8599       return
8600       end subroutine cbmz_v02r06_torodas 
8603 !-----------------------------------------------------------------------------
8604       subroutine cbmz_v02r06_mapconcs( imap, nyy, yy, yyfixed, cbox )
8606 !   maps species concentrations (gaschemistry cbox array <--> kpp yy array)
8607 !   for mechanism-version-regime = cbmz_v02r06
8609       use module_data_cbmz
8610       implicit none
8612 !   subr parameters
8613 !     imap = mapping direction flag [input]
8614 !         0 = map cbox --> yy and yyfixed
8615 !         1 = map yy --> cbox
8616       integer imap
8617 !     nyy = number of kpp "variable" species [output]
8618       integer nyy
8619 !     yy = kpp species concentrations array [input/output]
8620       real yy(nvar_r06_kpp)
8621 !     yyfixed = kpp species concentrations array [input/output]
8622       real yyfixed(nfixed_kppmax)
8623 !     cbox = main gaschemistry species conc array [input/output]
8624       real cbox(ngas_z)
8626 !   local variables
8627       integer ih2so4_kpp
8628       parameter ( ih2so4_kpp = 1 )
8629       integer ihcooh_kpp
8630       parameter ( ihcooh_kpp = 2 )
8631       integer ircooh_kpp
8632       parameter ( ircooh_kpp = 3 )
8633       integer imsa_kpp
8634       parameter ( imsa_kpp = 4 )
8635       integer imtf_kpp
8636       parameter ( imtf_kpp = 5 )
8637       integer io1d_kpp
8638       parameter ( io1d_kpp = 6 )
8639       integer ic2h5oh_kpp
8640       parameter ( ic2h5oh_kpp = 7 )
8641       integer iso2_kpp
8642       parameter ( iso2_kpp = 8 )
8643       integer ic2h6_kpp
8644       parameter ( ic2h6_kpp = 9 )
8645       integer ipan_kpp
8646       parameter ( ipan_kpp = 10 )
8647       integer idmso2_kpp
8648       parameter ( idmso2_kpp = 11 )
8649       integer itol_kpp
8650       parameter ( itol_kpp = 12 )
8651       integer ih2o2_kpp
8652       parameter ( ih2o2_kpp = 13 )
8653       integer in2o5_kpp
8654       parameter ( in2o5_kpp = 14 )
8655       integer ixyl_kpp
8656       parameter ( ixyl_kpp = 15 )
8657       integer icro_kpp
8658       parameter ( icro_kpp = 16 )
8659       integer ihno4_kpp
8660       parameter ( ihno4_kpp = 17 )
8661       integer ito2_kpp
8662       parameter ( ito2_kpp = 18 )
8663       integer idmso_kpp
8664       parameter ( idmso_kpp = 19 )
8665       integer ixpar_kpp
8666       parameter ( ixpar_kpp = 20 )
8667       integer iethooh_kpp
8668       parameter ( iethooh_kpp = 21 )
8669       integer ieth_kpp
8670       parameter ( ieth_kpp = 22 )
8671       integer ich3oh_kpp
8672       parameter ( ich3oh_kpp = 23 )
8673       integer ihono_kpp
8674       parameter ( ihono_kpp = 24 )
8675       integer ich3ooh_kpp
8676       parameter ( ich3ooh_kpp = 25 )
8677       integer icres_kpp
8678       parameter ( icres_kpp = 26 )
8679       integer ich3so2oo_kpp
8680       parameter ( ich3so2oo_kpp = 27 )
8681       integer ich3so2ch2oo_kpp
8682       parameter ( ich3so2ch2oo_kpp = 28 )
8683       integer iisopn_kpp
8684       parameter ( iisopn_kpp = 29 )
8685       integer ipar_kpp
8686       parameter ( ipar_kpp = 30 )
8687       integer ico_kpp
8688       parameter ( ico_kpp = 31 )
8689       integer iopen_kpp
8690       parameter ( iopen_kpp = 32 )
8691       integer ihno3_kpp
8692       parameter ( ihno3_kpp = 33 )
8693       integer idms_kpp
8694       parameter ( idms_kpp = 34 )
8695       integer iisopp_kpp
8696       parameter ( iisopp_kpp = 35 )
8697       integer iisopo2_kpp
8698       parameter ( iisopo2_kpp = 36 )
8699       integer iolet_kpp
8700       parameter ( iolet_kpp = 37 )
8701       integer iisop_kpp
8702       parameter ( iisop_kpp = 38 )
8703       integer ich3sch2oo_kpp
8704       parameter ( ich3sch2oo_kpp = 39 )
8705       integer ixo2_kpp
8706       parameter ( ixo2_kpp = 40 )
8707       integer iaone_kpp
8708       parameter ( iaone_kpp = 41 )
8709       integer iolei_kpp
8710       parameter ( iolei_kpp = 42 )
8711       integer imgly_kpp
8712       parameter ( imgly_kpp = 43 )
8713       integer iethp_kpp
8714       parameter ( iethp_kpp = 44 )
8715       integer ich3so2h_kpp
8716       parameter ( ich3so2h_kpp = 45 )
8717       integer io3p_kpp
8718       parameter ( io3p_kpp = 46 )
8719       integer inap_kpp
8720       parameter ( inap_kpp = 47 )
8721       integer iald2_kpp
8722       parameter ( iald2_kpp = 48 )
8723       integer ihcho_kpp
8724       parameter ( ihcho_kpp = 49 )
8725       integer ich3so2_kpp
8726       parameter ( ich3so2_kpp = 50 )
8727       integer iisoprd_kpp
8728       parameter ( iisoprd_kpp = 51 )
8729       integer ic2o3_kpp
8730       parameter ( ic2o3_kpp = 52 )
8731       integer irooh_kpp
8732       parameter ( irooh_kpp = 53 )
8733       integer ich3so3_kpp
8734       parameter ( ich3so3_kpp = 54 )
8735       integer ich3o2_kpp
8736       parameter ( ich3o2_kpp = 55 )
8737       integer ino2_kpp
8738       parameter ( ino2_kpp = 56 )
8739       integer ionit_kpp
8740       parameter ( ionit_kpp = 57 )
8741       integer io3_kpp
8742       parameter ( io3_kpp = 58 )
8743       integer iro2_kpp
8744       parameter ( iro2_kpp = 59 )
8745       integer ino_kpp
8746       parameter ( ino_kpp = 60 )
8747       integer ioh_kpp
8748       parameter ( ioh_kpp = 61 )
8749       integer ino3_kpp
8750       parameter ( ino3_kpp = 62 )
8751       integer iho2_kpp
8752       parameter ( iho2_kpp = 63 )
8753       integer iano2_kpp
8754       parameter ( iano2_kpp = 64 )
8756 ! indexes declaration for fixed species
8757       integer ich4_kpp
8758       parameter ( ich4_kpp = 1 )
8759       integer ih2o_kpp
8760       parameter ( ih2o_kpp = 2 )
8761       integer ih2_kpp
8762       parameter ( ih2_kpp = 3 )
8763       integer io2_kpp
8764       parameter ( io2_kpp = 4 )
8765       integer in2_kpp
8766       parameter ( in2_kpp = 5 )
8769       nyy = nvar_r06_kpp
8771       if (imap .le. 0) goto 1000
8772       if (imap .ge. 1) goto 2000
8776 !   map cbox values into yyvarkpp and yyfixkpp
8778 1000  continue
8779       yy(ih2so4_kpp)    = cbox(ih2so4_z)
8780       yy(ihcooh_kpp)    = cbox(ihcooh_z)
8781       yy(ircooh_kpp)    = cbox(ircooh_z)
8782       yy(imsa_kpp)      = cbox(imsa_z)
8783       yy(imtf_kpp)      = cbox(imtf_z)
8784       yy(io1d_kpp)      = cbox(io1d_z)
8785       yy(ic2h5oh_kpp)   = cbox(ic2h5oh_z)
8786       yy(iso2_kpp)      = cbox(iso2_z)
8787       yy(ic2h6_kpp)     = cbox(ic2h6_z)
8788       yy(ipan_kpp)      = cbox(ipan_z)
8789       yy(idmso2_kpp)    = cbox(idmso2_z)
8790       yy(itol_kpp)      = cbox(itol_z)
8791       yy(ih2o2_kpp)     = cbox(ih2o2_z)
8792       yy(in2o5_kpp)     = cbox(in2o5_z)
8793       yy(ixyl_kpp)      = cbox(ixyl_z)
8794       yy(icro_kpp)      = cbox(icro_z)
8795       yy(ihno4_kpp)     = cbox(ihno4_z)
8796       yy(ito2_kpp)      = cbox(ito2_z)
8797       yy(idmso_kpp)     = cbox(idmso_z)
8798       yy(ixpar_kpp)     = cbox(ixpar_z)
8799       yy(iethooh_kpp)   = cbox(iethooh_z)
8800       yy(ieth_kpp)      = cbox(ieth_z)
8801       yy(ich3oh_kpp)    = cbox(ich3oh_z)
8802       yy(ihono_kpp)     = cbox(ihono_z)
8803       yy(ich3ooh_kpp)   = cbox(ich3ooh_z)
8804       yy(icres_kpp)     = cbox(icres_z)
8805       yy(ich3so2oo_kpp) = cbox(ich3so2oo_z)
8806       yy(ich3so2ch2oo_kpp)      = cbox(ich3so2ch2oo_z)
8807       yy(iisopn_kpp)    = cbox(iisopn_z)
8808       yy(ipar_kpp)      = cbox(ipar_z)
8809       yy(ico_kpp)       = cbox(ico_z)
8810       yy(iopen_kpp)     = cbox(iopen_z)
8811       yy(ihno3_kpp)     = cbox(ihno3_z)
8812       yy(idms_kpp)      = cbox(idms_z)
8813       yy(iisopp_kpp)    = cbox(iisopp_z)
8814       yy(iisopo2_kpp)   = cbox(iisopo2_z)
8815       yy(iolet_kpp)     = cbox(iolet_z)
8816       yy(iisop_kpp)     = cbox(iisop_z)
8817       yy(ich3sch2oo_kpp)        = cbox(ich3sch2oo_z)
8818       yy(ixo2_kpp)      = cbox(ixo2_z)
8819       yy(iaone_kpp)     = cbox(iaone_z)
8820       yy(iolei_kpp)     = cbox(iolei_z)
8821       yy(imgly_kpp)     = cbox(imgly_z)
8822       yy(iethp_kpp)     = cbox(iethp_z)
8823       yy(ich3so2h_kpp)  = cbox(ich3so2h_z)
8824       yy(io3p_kpp)      = cbox(io3p_z)
8825       yy(inap_kpp)      = cbox(inap_z)
8826       yy(iald2_kpp)     = cbox(iald2_z)
8827       yy(ihcho_kpp)     = cbox(ihcho_z)
8828       yy(ich3so2_kpp)   = cbox(ich3so2_z)
8829       yy(iisoprd_kpp)   = cbox(iisoprd_z)
8830       yy(ic2o3_kpp)     = cbox(ic2o3_z)
8831       yy(irooh_kpp)     = cbox(irooh_z)
8832       yy(ich3so3_kpp)   = cbox(ich3so3_z)
8833       yy(ich3o2_kpp)    = cbox(ich3o2_z)
8834       yy(ino2_kpp)      = cbox(ino2_z)
8835       yy(ionit_kpp)     = cbox(ionit_z)
8836       yy(io3_kpp)       = cbox(io3_z)
8837       yy(iro2_kpp)      = cbox(iro2_z)
8838       yy(ino_kpp)       = cbox(ino_z)
8839       yy(ioh_kpp)       = cbox(ioh_z)
8840       yy(ino3_kpp)      = cbox(ino3_z)
8841       yy(iho2_kpp)      = cbox(iho2_z)
8842       yy(iano2_kpp)     = cbox(iano2_z)
8844       yyfixed(ich4_kpp) = cbox(ich4_z)
8845       yyfixed(ih2o_kpp) = cbox(ih2o_z)
8846       yyfixed(ih2_kpp)  = cbox(ih2_z)
8847       yyfixed(io2_kpp)  = cbox(io2_z)
8848       yyfixed(in2_kpp)  = cbox(in2_z)
8851 !   map yyvarkpp values into cbox
8853 2000  continue
8854       cbox(ih2so4_z)    = yy(ih2so4_kpp)
8855       cbox(ihcooh_z)    = yy(ihcooh_kpp)
8856       cbox(ircooh_z)    = yy(ircooh_kpp)
8857       cbox(imsa_z)      = yy(imsa_kpp)
8858       cbox(imtf_z)      = yy(imtf_kpp)
8859       cbox(io1d_z)      = yy(io1d_kpp)
8860       cbox(ic2h5oh_z)   = yy(ic2h5oh_kpp)
8861       cbox(iso2_z)      = yy(iso2_kpp)
8862       cbox(ic2h6_z)     = yy(ic2h6_kpp)
8863       cbox(ipan_z)      = yy(ipan_kpp)
8864       cbox(idmso2_z)    = yy(idmso2_kpp)
8865       cbox(itol_z)      = yy(itol_kpp)
8866       cbox(ih2o2_z)     = yy(ih2o2_kpp)
8867       cbox(in2o5_z)     = yy(in2o5_kpp)
8868       cbox(ixyl_z)      = yy(ixyl_kpp)
8869       cbox(icro_z)      = yy(icro_kpp)
8870       cbox(ihno4_z)     = yy(ihno4_kpp)
8871       cbox(ito2_z)      = yy(ito2_kpp)
8872       cbox(idmso_z)     = yy(idmso_kpp)
8873       cbox(ixpar_z)     = yy(ixpar_kpp)
8874       cbox(iethooh_z)   = yy(iethooh_kpp)
8875       cbox(ieth_z)      = yy(ieth_kpp)
8876       cbox(ich3oh_z)    = yy(ich3oh_kpp)
8877       cbox(ihono_z)     = yy(ihono_kpp)
8878       cbox(ich3ooh_z)   = yy(ich3ooh_kpp)
8879       cbox(icres_z)     = yy(icres_kpp)
8880       cbox(ich3so2oo_z) = yy(ich3so2oo_kpp)
8881       cbox(ich3so2ch2oo_z)      = yy(ich3so2ch2oo_kpp)
8882       cbox(iisopn_z)    = yy(iisopn_kpp)
8883       cbox(ipar_z)      = yy(ipar_kpp)
8884       cbox(ico_z)       = yy(ico_kpp)
8885       cbox(iopen_z)     = yy(iopen_kpp)
8886       cbox(ihno3_z)     = yy(ihno3_kpp)
8887       cbox(idms_z)      = yy(idms_kpp)
8888       cbox(iisopp_z)    = yy(iisopp_kpp)
8889       cbox(iisopo2_z)   = yy(iisopo2_kpp)
8890       cbox(iolet_z)     = yy(iolet_kpp)
8891       cbox(iisop_z)     = yy(iisop_kpp)
8892       cbox(ich3sch2oo_z)        = yy(ich3sch2oo_kpp)
8893       cbox(ixo2_z)      = yy(ixo2_kpp)
8894       cbox(iaone_z)     = yy(iaone_kpp)
8895       cbox(iolei_z)     = yy(iolei_kpp)
8896       cbox(imgly_z)     = yy(imgly_kpp)
8897       cbox(iethp_z)     = yy(iethp_kpp)
8898       cbox(ich3so2h_z)  = yy(ich3so2h_kpp)
8899       cbox(io3p_z)      = yy(io3p_kpp)
8900       cbox(inap_z)      = yy(inap_kpp)
8901       cbox(iald2_z)     = yy(iald2_kpp)
8902       cbox(ihcho_z)     = yy(ihcho_kpp)
8903       cbox(ich3so2_z)   = yy(ich3so2_kpp)
8904       cbox(iisoprd_z)   = yy(iisoprd_kpp)
8905       cbox(ic2o3_z)     = yy(ic2o3_kpp)
8906       cbox(irooh_z)     = yy(irooh_kpp)
8907       cbox(ich3so3_z)   = yy(ich3so3_kpp)
8908       cbox(ich3o2_z)    = yy(ich3o2_kpp)
8909       cbox(ino2_z)      = yy(ino2_kpp)
8910       cbox(ionit_z)     = yy(ionit_kpp)
8911       cbox(io3_z)       = yy(io3_kpp)
8912       cbox(iro2_z)      = yy(iro2_kpp)
8913       cbox(ino_z)       = yy(ino_kpp)
8914       cbox(ioh_z)       = yy(ioh_kpp)
8915       cbox(ino3_z)      = yy(ino3_kpp)
8916       cbox(iho2_z)      = yy(iho2_kpp)
8917       cbox(iano2_z)     = yy(iano2_kpp)
8919       return
8920       end subroutine cbmz_v02r06_mapconcs                                
8923 !-----------------------------------------------------------------------------
8924       subroutine cbmz_v02r06_maprates(   &
8925           rk_m1,   &
8926           rk_m2,   &
8927           rk_m3,   &
8928           rk_m4,   &
8929           rconst )
8931 !   maps reaction rate constants (host code array --> kpp rconst array)
8932 !   for mechanism-version-regime = cbmz_v02r06
8934       use module_data_cbmz
8935       implicit none
8937 !   subr parameters
8938 !     all are host-code reaction-rate-constant arrays [input]
8939       real rk_m1(*)
8940       real rk_m2(*)
8941       real rk_m3(*)
8942       real rk_m4(*)
8943       real rconst(nreact_kppmax)
8945 !   local variables
8946       integer i
8948       do i = 1, nreact_kppmax
8949           rconst(i) = 0.
8950       end do
8953       rconst(1) = (rk_m1(1))
8954       rconst(2) = (rk_m1(2))
8955       rconst(3) = (rk_m1(3))
8956       rconst(4) = (rk_m1(4))
8957       rconst(5) = (rk_m1(5))
8958       rconst(6) = (rk_m1(6))
8959       rconst(7) = (rk_m1(7))
8960       rconst(8) = (rk_m1(8))
8961       rconst(9) = (rk_m1(9))
8962       rconst(10) = (rk_m1(10))
8963       rconst(11) = (rk_m1(11))
8964       rconst(12) = (rk_m1(12))
8965       rconst(13) = (rk_m1(13))
8966       rconst(14) = (rk_m1(14))
8967       rconst(15) = (rk_m1(15))
8968       rconst(16) = (rk_m1(16))
8969       rconst(17) = (rk_m1(17))
8970       rconst(18) = (rk_m1(18))
8971       rconst(19) = (rk_m1(19))
8972       rconst(20) = (rk_m1(20))
8973       rconst(21) = (rk_m1(21))
8974       rconst(22) = (rk_m1(22))
8975       rconst(23) = (rk_m1(23))
8976       rconst(24) = (rk_m1(24))
8977       rconst(25) = (rk_m1(25))
8978       rconst(26) = (rk_m1(26))
8979       rconst(27) = (rk_m1(27))
8980       rconst(28) = (rk_m1(28))
8981       rconst(29) = (rk_m1(29))
8982       rconst(30) = (rk_m1(30))
8983       rconst(31) = (rk_m1(31))
8984       rconst(32) = (rk_m1(32))
8985       rconst(33) = (rk_m1(33))
8986       rconst(34) = (rk_m1(34))
8987       rconst(35) = (rk_m1(35))
8988       rconst(36) = (rk_m1(36))
8989       rconst(37) = (rk_m1(37))
8990       rconst(38) = (rk_m1(38))
8991       rconst(39) = (rk_m1(39))
8992       rconst(40) = (rk_m1(40))
8993       rconst(41) = (rk_m1(41))
8994       rconst(42) = (rk_m1(42))
8995       rconst(43) = (rk_m1(43))
8996       rconst(44) = (rk_m1(44))
8997       rconst(45) = (rk_m1(45))
8998       rconst(46) = (rk_m1(46))
8999       rconst(47) = (rk_m1(47))
9000       rconst(48) = (rk_m1(48))
9001       rconst(49) = (rk_m1(49))
9002       rconst(50) = (rk_m1(50))
9003       rconst(51) = (rk_m1(51))
9004       rconst(52) = (rk_m1(52))
9005       rconst(53) = (rk_m1(53))
9006       rconst(54) = (rk_m1(54))
9007       rconst(55) = (rk_m1(55))
9008       rconst(56) = (rk_m1(56))
9009       rconst(57) = (rk_m1(57))
9010       rconst(58) = (rk_m1(58))
9011       rconst(59) = (rk_m1(59))
9012       rconst(60) = (rk_m1(60))
9013       rconst(61) = (rk_m1(61))
9014       rconst(62) = (rk_m1(62))
9015       rconst(63) = (rk_m1(63))
9016       rconst(64) = (rk_m1(64))
9017       rconst(65) = (rk_m1(65))
9018       rconst(66) = (rk_m2(2))
9019       rconst(67) = (rk_m2(3))
9020       rconst(68) = (rk_m2(4))
9021       rconst(69) = (rk_m2(31))
9022       rconst(70) = (rk_m2(32))
9023       rconst(71) = (rk_m2(34))
9024       rconst(72) = (rk_m2(39))
9025       rconst(73) = (rk_m2(44))
9026       rconst(74) = (rk_m2(49))
9027       rconst(75) = (rk_m2(1))
9028       rconst(76) = (rk_m2(5))
9029       rconst(77) = (rk_m2(6))
9030       rconst(78) = (rk_m2(7))
9031       rconst(79) = (rk_m2(8))
9032       rconst(80) = (rk_m2(9))
9033       rconst(81) = (rk_m2(10))
9034       rconst(82) = (rk_m2(11))
9035       rconst(83) = (rk_m2(12))
9036       rconst(84) = (rk_m2(13))
9037       rconst(85) = (rk_m2(14))
9038       rconst(86) = (rk_m2(15))
9039       rconst(87) = (rk_m2(16))
9040       rconst(88) = (rk_m2(17))
9041       rconst(89) = (rk_m2(18))
9042       rconst(90) = (rk_m2(19))
9043       rconst(91) = (rk_m2(20))
9044       rconst(92) = (rk_m2(21))
9045       rconst(93) = (rk_m2(22))
9046       rconst(94) = (rk_m2(23))
9047       rconst(95) = (rk_m2(24))
9048       rconst(96) = (rk_m2(25))
9049       rconst(97) = (rk_m2(26))
9050       rconst(98) = (rk_m2(27))
9051       rconst(99) = (rk_m2(28))
9052       rconst(100) = (rk_m2(29))
9053       rconst(101) = (rk_m2(30))
9054       rconst(102) = (rk_m2(33))
9055       rconst(103) = (rk_m2(35))
9056       rconst(104) = (rk_m2(36))
9057       rconst(105) = (rk_m2(37))
9058       rconst(106) = (rk_m2(38))
9059       rconst(107) = (rk_m2(40))
9060       rconst(108) = (rk_m2(41))
9061       rconst(109) = (rk_m2(42))
9062       rconst(110) = (rk_m2(43))
9063       rconst(111) = (rk_m2(45))
9064       rconst(112) = (rk_m2(46))
9065       rconst(113) = (rk_m2(47))
9066       rconst(114) = (rk_m2(48))
9067       rconst(115) = (rk_m2(50))
9068       rconst(116) = (rk_m2(51))
9069       rconst(117) = (rk_m2(52))
9070       rconst(118) = (rk_m2(53))
9071       rconst(119) = (rk_m3(1))
9072       rconst(120) = (rk_m3(2))
9073       rconst(121) = (rk_m3(3))
9074       rconst(122) = (rk_m3(4))
9075       rconst(123) = (rk_m3(5))
9076       rconst(124) = (rk_m3(6))
9077       rconst(125) = (rk_m3(7))
9078       rconst(126) = (rk_m3(8))
9079       rconst(127) = (rk_m3(9))
9080       rconst(128) = (rk_m3(10))
9081       rconst(129) = (rk_m3(11))
9082       rconst(130) = (rk_m3(12))
9083       rconst(131) = (rk_m3(13))
9084       rconst(132) = (rk_m3(14))
9085       rconst(133) = (rk_m3(15))
9086       rconst(134) = (rk_m3(16))
9087       rconst(135) = (rk_m4(1))
9088       rconst(136) = (rk_m4(2))
9089       rconst(137) = (rk_m4(3))
9090       rconst(138) = (rk_m4(4))
9091       rconst(139) = (rk_m4(5))
9092       rconst(140) = (rk_m4(6))
9093       rconst(141) = (rk_m4(7))
9094       rconst(142) = (rk_m4(8))
9095       rconst(143) = (rk_m4(9))
9096       rconst(144) = (rk_m4(10))
9097       rconst(145) = (rk_m4(11))
9098       rconst(146) = (rk_m4(12))
9099       rconst(147) = (rk_m4(13))
9100       rconst(148) = (rk_m4(14))
9101       rconst(149) = (rk_m4(15))
9102       rconst(150) = (rk_m4(16))
9103       rconst(151) = (rk_m4(17))
9104       rconst(152) = (rk_m4(18))
9105       rconst(153) = (rk_m4(19))
9106       rconst(154) = (rk_m4(20))
9107       rconst(155) = (rk_m4(21))
9108       rconst(156) = (rk_m4(22))
9109       rconst(157) = (rk_m4(23))
9110       rconst(158) = (rk_m4(24))
9111       rconst(159) = (rk_m4(25))
9112       rconst(160) = (rk_m4(26))
9113       rconst(161) = (rk_m4(27))
9114       rconst(162) = (rk_m4(28))
9115       rconst(163) = (rk_m4(29))
9116       rconst(164) = (rk_m4(30))
9117       rconst(165) = (rk_m4(31))
9118       rconst(166) = (rk_m4(32))
9119       return
9120       end subroutine cbmz_v02r06_maprates 
9123 !-----------------------------------------------------------------------------
9124       subroutine cbmz_v02r06_dydt( nvardum, tdum, v, a_var, f, rconst )
9126 !   computes rates of change for mechanism-version-regime = cbmz_v02r06
9128       use module_data_cbmz
9129       implicit none
9131 !   subr parameters
9132 !     nvardum = number of variable species [input]
9133       integer nvardum
9134 !     tdum = time [input]
9135       real tdum
9136 !     v = concentrations of variable species [input]
9137       real v(nvar_r06_kpp)
9138 !     a_var = dydt for each species [output]
9139       real a_var(nvar_r06_kpp)
9140 !     f = concentrations of fixed species [input]
9141       real f(nfixed_kppmax)
9142 !     rconst = reaction rate constants [input]
9143       real rconst(nreact_r06_kpp)
9145 !   local variables
9146 !     a = rate for each reaction
9147       real a(nreact_r06_kpp)
9149 ! computation of equation rates
9150       a(1) = rconst(1)*v(56)
9151       a(2) = rconst(2)*v(62)
9152       a(3) = rconst(3)*v(24)
9153       a(4) = rconst(4)*v(33)
9154       a(5) = rconst(5)*v(17)
9155       a(6) = rconst(6)*v(14)
9156       a(7) = rconst(7)*v(58)
9157       a(8) = rconst(8)*v(58)
9158       a(9) = rconst(9)*v(13)
9159       a(10) = rconst(10)*v(6)*f(4)
9160       a(11) = rconst(11)*v(6)*f(5)
9161       a(12) = rconst(12)*v(6)*f(2)
9162       a(13) = rconst(13)*v(46)*f(4)
9163       a(14) = rconst(14)*v(46)*v(58)
9164       a(15) = rconst(15)*v(46)*v(56)
9165       a(16) = rconst(16)*v(46)*v(56)
9166       a(17) = rconst(17)*v(46)*v(60)
9167       a(18) = rconst(18)*v(58)*v(60)
9168       a(19) = rconst(19)*v(56)*v(58)
9169       a(20) = rconst(20)*v(58)*v(61)
9170       a(21) = rconst(21)*v(58)*v(63)
9171       a(22) = rconst(22)*v(61)*f(3)
9172       a(23) = rconst(23)*v(60)*v(61)
9173       a(24) = rconst(24)*v(56)*v(61)
9174       a(25) = rconst(25)*v(61)*v(62)
9175       a(26) = rconst(26)*v(24)*v(61)
9176       a(27) = rconst(27)*v(33)*v(61)
9177       a(28) = rconst(28)*v(17)*v(61)
9178       a(29) = rconst(29)*v(61)*v(63)
9179       a(30) = rconst(30)*v(13)*v(61)
9180       a(31) = rconst(31)*v(63)*v(63)
9181       a(32) = rconst(32)*v(63)*v(63)*f(2)
9182       a(33) = rconst(33)*v(60)*v(63)
9183       a(34) = rconst(34)*v(56)*v(63)
9184       a(35) = rconst(35)*v(56)*v(63)
9185       a(36) = rconst(36)*v(17)
9186       a(37) = rconst(37)*v(60)*v(62)
9187       a(38) = rconst(38)*v(56)*v(62)
9188       a(39) = rconst(39)*v(56)*v(62)
9189       a(40) = rconst(40)*v(62)*v(62)
9190       a(41) = rconst(41)*v(62)*v(63)
9191       a(42) = rconst(42)*v(14)*f(2)
9192       a(43) = rconst(43)*v(14)
9193       a(44) = rconst(44)*v(31)*v(61)
9194       a(45) = rconst(45)*v(8)*v(61)
9195       a(46) = rconst(46)*v(61)*f(1)
9196       a(47) = rconst(47)*v(9)*v(61)
9197       a(48) = rconst(48)*v(23)*v(61)
9198       a(49) = rconst(49)*v(49)
9199       a(50) = rconst(50)*v(49)
9200       a(51) = rconst(51)*v(49)*v(61)
9201       a(52) = rconst(52)*v(49)*v(62)
9202       a(53) = rconst(53)*v(25)
9203       a(54) = rconst(54)*v(21)
9204       a(55) = rconst(55)*v(25)*v(61)
9205       a(56) = rconst(56)*v(21)*v(61)
9206       a(57) = rconst(57)*v(55)*v(60)
9207       a(58) = rconst(58)*v(44)*v(60)
9208       a(59) = rconst(59)*v(55)*v(62)
9209       a(60) = rconst(60)*v(44)*v(62)
9210       a(61) = rconst(61)*v(55)*v(63)
9211       a(62) = rconst(62)*v(44)*v(63)
9212       a(63) = rconst(63)*v(55)
9213       a(64) = rconst(64)*v(44)
9214       a(65) = rconst(65)*v(7)*v(61)
9215       a(66) = rconst(66)*v(48)
9216       a(67) = rconst(67)*v(48)*v(61)
9217       a(68) = rconst(68)*v(48)*v(62)
9218       a(69) = rconst(69)*v(52)*v(56)
9219       a(70) = rconst(70)*v(10)
9220       a(71) = rconst(71)*v(52)*v(60)
9221       a(72) = rconst(72)*v(52)*v(62)
9222       a(73) = rconst(73)*v(52)*v(63)
9223       a(74) = rconst(74)*v(52)
9224       a(75) = rconst(75)*v(30)*v(61)
9225       a(76) = rconst(76)*v(41)
9226       a(77) = rconst(77)*v(41)*v(61)
9227       a(78) = rconst(78)*v(43)
9228       a(79) = rconst(79)*v(43)*v(61)
9229       a(80) = rconst(80)*v(43)*v(62)
9230       a(81) = rconst(81)*v(22)*v(58)
9231       a(82) = rconst(82)*v(22)*v(61)
9232       a(83) = rconst(83)*v(37)*v(58)
9233       a(84) = rconst(84)*v(42)*v(58)
9234       a(85) = rconst(85)*v(37)*v(61)
9235       a(86) = rconst(86)*v(42)*v(61)
9236       a(87) = rconst(87)*v(37)*v(62)
9237       a(88) = rconst(88)*v(42)*v(62)
9238       a(89) = rconst(89)*v(12)*v(61)
9239       a(90) = rconst(90)*v(15)*v(61)
9240       a(91) = rconst(91)*v(18)*v(60)
9241       a(92) = rconst(92)*v(26)*v(61)
9242       a(93) = rconst(93)*v(26)*v(62)
9243       a(94) = rconst(94)*v(16)*v(56)
9244       a(95) = rconst(95)*v(32)*v(61)
9245       a(96) = rconst(96)*v(32)
9246       a(97) = rconst(97)*v(32)*v(58)
9247       a(98) = rconst(98)*v(53)
9248       a(99) = rconst(99)*v(53)*v(61)
9249       a(100) = rconst(100)*v(57)*v(61)
9250       a(101) = rconst(101)*v(57)
9251       a(102) = rconst(102)*v(59)*v(60)
9252       a(103) = rconst(103)*v(60)*v(64)
9253       a(104) = rconst(104)*v(47)*v(60)
9254       a(105) = rconst(105)*v(40)*v(60)
9255       a(106) = rconst(106)*v(59)*v(62)
9256       a(107) = rconst(107)*v(62)*v(64)
9257       a(108) = rconst(108)*v(47)*v(62)
9258       a(109) = rconst(109)*v(40)*v(62)
9259       a(110) = rconst(110)*v(59)*v(63)
9260       a(111) = rconst(111)*v(63)*v(64)
9261       a(112) = rconst(112)*v(47)*v(63)
9262       a(113) = rconst(113)*v(40)*v(63)
9263       a(114) = rconst(114)*v(59)
9264       a(115) = rconst(115)*v(64)
9265       a(116) = rconst(116)*v(47)
9266       a(117) = rconst(117)*v(40)
9267       a(118) = rconst(118)*v(20)*v(30)
9268       a(119) = rconst(119)*v(38)*v(61)
9269       a(120) = rconst(120)*v(38)*v(58)
9270       a(121) = rconst(121)*v(38)*v(62)
9271       a(122) = rconst(122)*v(51)
9272       a(123) = rconst(123)*v(51)*v(61)
9273       a(124) = rconst(124)*v(51)*v(58)
9274       a(125) = rconst(125)*v(51)*v(62)
9275       a(126) = rconst(126)*v(35)*v(60)
9276       a(127) = rconst(127)*v(29)*v(60)
9277       a(128) = rconst(128)*v(36)*v(60)
9278       a(129) = rconst(129)*v(35)*v(63)
9279       a(130) = rconst(130)*v(29)*v(63)
9280       a(131) = rconst(131)*v(36)*v(63)
9281       a(132) = rconst(132)*v(35)
9282       a(133) = rconst(133)*v(29)
9283       a(134) = rconst(134)*v(36)
9284       a(135) = rconst(135)*v(34)*v(61)
9285       a(136) = rconst(136)*v(34)*v(62)
9286       a(137) = rconst(137)*v(34)*v(46)
9287       a(138) = rconst(138)*v(34)*v(61)
9288       a(139) = rconst(139)*v(39)*v(60)
9289       a(140) = rconst(140)*v(39)*v(55)
9290       a(141) = rconst(141)*v(39)*v(50)
9291       a(142) = rconst(142)*v(39)*v(39)
9292       a(143) = rconst(143)*v(19)*v(61)
9293       a(144) = rconst(144)*v(11)*v(61)
9294       a(145) = rconst(145)*v(28)*v(60)
9295       a(146) = rconst(146)*v(28)*v(55)
9296       a(147) = rconst(147)*v(45)*v(63)
9297       a(148) = rconst(148)*v(45)*v(62)
9298       a(149) = rconst(149)*v(45)*v(55)
9299       a(150) = rconst(150)*v(45)*v(61)
9300       a(151) = rconst(151)*v(45)*v(54)
9301       a(152) = rconst(152)*v(50)
9302       a(153) = rconst(153)*v(50)*v(56)
9303       a(154) = rconst(154)*v(50)*v(58)
9304       a(155) = rconst(155)*v(50)*v(63)
9305       a(156) = rconst(156)*v(50)*v(55)
9306       a(157) = rconst(157)*v(50)*v(61)
9307       a(158) = rconst(158)*v(50)*f(4)
9308       a(159) = rconst(159)*v(27)
9309       a(160) = rconst(160)*v(27)*v(60)
9310       a(161) = rconst(161)*v(27)*v(55)
9311       a(162) = rconst(162)*v(54)
9312       a(163) = rconst(163)*v(54)*v(56)
9313       a(164) = rconst(164)*v(54)*v(60)
9314       a(165) = rconst(165)*v(54)*v(63)
9315       a(166) = rconst(166)*v(49)*v(54)
9317 ! aggregate function
9318       a_var(1) = a(45)+a(162)
9319       a_var(2) = 0.52*a(81)+0.22*a(83)+0.39*a(120)+0.46*a(124)
9320       a_var(3) = 0.4*a(73)+0.09*a(83)+0.16*a(84)
9321       a_var(4) = a(151)+a(157)+a(163)+a(164)+a(165)+a(166)
9322       a_var(5) = 0.15*a(142)
9323       a_var(6) = a(8)-a(10)-a(11)-a(12)
9324       a_var(7) = -a(65)
9325       a_var(8) = -a(45)+a(152)
9326       a_var(9) = -a(47)+0.2*a(64)
9327       a_var(10) = a(69)-a(70)
9328       a_var(11) = 0.27*a(143)-a(144)
9329       a_var(12) = -a(89)
9330       a_var(13) = -a(9)-a(30)+a(31)+a(32)+a(147)
9331       a_var(14) = -a(6)+a(39)-a(42)-a(43)
9332       a_var(15) = -a(90)
9333       a_var(16) = 0.4*a(92)+a(93)-a(94)
9334       a_var(17) = -a(5)-a(28)+a(34)-a(36)
9335       a_var(18) = 0.8*a(89)+0.45*a(90)-a(91)
9336       a_var(19) = 0.965*a(138)-a(143)
9337       a_var(20) = 1.06*a(83)+2.26*a(84)+a(85)+2.23*a(86)+1.98*a(98)   &
9338                  +0.42*a(99)+1.98*a(101)+1.68*a(102)+a(104)+1.98   &
9339                  *a(106)+a(108)+1.25*a(114)+a(116)-a(118)
9340       a_var(21) = -a(54)-a(56)+a(62)
9341       a_var(22) = -a(81)-a(82)
9342       a_var(23) = -a(48)+0.34*a(63)+0.03*a(83)+0.04*a(84)
9343       a_var(24) = -a(3)+a(23)-a(26)+a(35)+a(164)
9344       a_var(25) = -a(53)-a(55)+a(61)+a(149)
9345       a_var(26) = 0.12*a(89)+0.05*a(90)-a(92)-a(93)
9346       a_var(27) = a(158)-a(159)-a(160)-a(161)
9347       a_var(28) = a(144)-a(145)-a(146)
9348       a_var(29) = a(121)-a(127)-a(130)-a(133)
9349       a_var(30) = -a(75)+1.1*a(90)-a(118)+1.86*a(125)+0.18*a(126)+1.6   &
9350                  *a(127)+2*a(130)+2*a(133)
9351       a_var(31) = -a(44)+a(49)+a(50)+a(51)+a(52)+a(66)+a(78)+a(80)   &
9352                  +0.24*a(81)+0.31*a(83)+0.3*a(84)+2*a(95)+a(96)+0.69   &
9353                  *a(97)+0.07*a(120)+0.33*a(122)+0.16*a(124)+0.64   &
9354                  *a(125)+0.59*a(128)+a(166)
9355       a_var(32) = 0.95*a(91)+0.3*a(92)-a(95)-a(96)-a(97)
9356       a_var(33) = -a(4)+a(24)-a(27)+0.3*a(41)+2*a(42)+a(52)+a(68)   &
9357                  +a(80)+a(93)+0.07*a(125)+a(136)+a(148)+a(163)
9358       a_var(34) = -a(135)-a(136)-a(137)-a(138)
9359       a_var(35) = a(119)-a(126)-a(129)-a(132)
9360       a_var(36) = 0.5*a(123)-a(128)-a(131)-a(134)
9361       a_var(37) = -a(83)-a(85)-a(87)
9362       a_var(38) = -a(119)-a(120)-a(121)
9363       a_var(39) = a(135)+a(136)-a(139)-a(140)-a(141)-2*a(142)
9364       a_var(40) = a(79)+a(82)+a(85)+a(86)+0.08*a(89)+0.5*a(90)+0.6   &
9365                  *a(92)+a(95)+0.03*a(97)+0.4*a(98)+0.4*a(101)+0.34   &
9366                  *a(102)-a(105)+0.4*a(106)-a(109)-a(113)+0.24*a(114)   &
9367                  -a(117)+0.08*a(119)+0.2*a(120)+0.2*a(123)+0.07*a(124)   &
9368                  +0.93*a(125)
9369       a_var(41) = -a(76)-a(77)+0.07*a(84)+0.23*a(86)+0.74*a(98)+0.74   &
9370                  *a(101)+0.62*a(102)+0.74*a(106)+0.57*a(114)+0.15   &
9371                  *a(115)+0.03*a(122)+0.09*a(124)+0.63*a(128)+0.5   &
9372                  *a(134)
9373       a_var(42) = -a(84)-a(86)-a(88)
9374       a_var(43) = -a(78)-a(79)-a(80)+0.04*a(83)+0.07*a(84)+0.8*a(90)   &
9375                  +0.2*a(97)+0.19*a(99)+0.15*a(115)+0.85*a(124)+0.34   &
9376                  *a(128)
9377       a_var(44) = a(47)+0.5*a(56)-a(58)-a(60)-a(62)-a(64)+0.06*a(83)   &
9378                  +0.05*a(84)+0.1*a(98)+0.1*a(101)+0.08*a(102)+0.1   &
9379                  *a(106)+0.06*a(114)
9380       a_var(45) = 0.73*a(143)-a(147)-a(148)-a(149)-a(150)-a(151)
9381       a_var(46) = a(1)+0.89*a(2)+a(7)+a(10)+a(11)-a(13)-a(14)-a(15)   &
9382                  -a(16)-a(17)-a(137)
9383       a_var(47) = a(87)+a(88)+a(100)-a(104)-a(108)-a(112)-a(116)
9384       a_var(48) = a(54)+0.5*a(56)+a(58)+a(60)+0.8*a(64)+a(65)-a(66)   &
9385                  -a(67)-a(68)+0.22*a(82)+0.47*a(83)+1.03*a(84)+a(85)   &
9386                  +1.77*a(86)+0.03*a(97)+0.3*a(98)+0.04*a(99)+0.3   &
9387                  *a(101)+0.25*a(102)+0.5*a(104)+0.3*a(106)+0.5*a(108)   &
9388                  +0.21*a(114)+0.5*a(116)+0.15*a(120)+0.07*a(122)+0.02   &
9389                  *a(124)+0.28*a(125)+0.8*a(127)+0.55*a(128)+a(133)+0.5   &
9390                  *a(134)
9391       a_var(49) = a(48)-a(49)-a(50)-a(51)-a(52)+a(53)+0.3*a(55)+a(57)   &
9392                  +a(59)+0.66*a(63)+a(81)+1.56*a(82)+0.57*a(83)+a(85)   &
9393                  +a(95)+0.7*a(97)+a(103)+0.5*a(104)+a(107)+0.5*a(108)   &
9394                  +0.7*a(115)+0.5*a(116)+0.6*a(120)+0.2*a(122)+0.15   &
9395                  *a(124)+0.28*a(125)+0.63*a(126)+0.25*a(128)+a(139)+2   &
9396                  *a(140)+a(141)+a(145)+2*a(146)+a(156)+a(161)-a(166)
9397       a_var(50) = a(137)+0.035*a(138)+a(139)+a(140)+1.85*a(142)+a(145)   &
9398                  +a(146)+a(147)+a(148)+a(149)+a(150)+a(151)-a(152)   &
9399                  -a(153)-a(154)-a(155)-a(156)-a(157)-a(158)+a(159)
9400       a_var(51) = 0.65*a(120)-a(122)-a(123)-a(124)-a(125)+0.91*a(126)   &
9401                  +0.2*a(127)+a(132)
9402       a_var(52) = a(67)+a(68)-a(69)+a(70)-a(71)-a(72)-a(73)-a(74)   &
9403                  +a(76)+a(78)+a(79)+a(80)+0.13*a(83)+0.19*a(84)+a(95)   &
9404                  +a(96)+0.62*a(97)+a(103)+a(107)+0.7*a(115)+0.2*a(120)   &
9405                  +0.97*a(122)+0.5*a(123)+0.11*a(124)+0.07*a(125)
9406       a_var(53) = -a(98)-a(99)+a(110)+a(111)+a(129)+a(131)
9407       a_var(54) = a(141)-a(151)+a(153)+a(154)+a(155)+a(156)+a(160)   &
9408                  +a(161)-a(162)-a(163)-a(164)-a(165)-a(166)
9409       a_var(55) = a(46)+0.7*a(55)-a(57)-a(59)-a(61)-a(63)+a(66)+a(71)   &
9410                  +a(72)+a(74)+a(76)+0.07*a(83)+0.1*a(84)+0.7*a(122)   &
9411                  +0.05*a(124)+a(137)+0.035*a(138)-a(140)+0.73*a(143)   &
9412                  -a(146)-a(149)+a(152)-a(156)-a(161)+a(162)
9413       a_var(56) = -a(1)+0.89*a(2)+a(4)+a(5)+a(6)-a(15)-a(16)+a(17)   &
9414                  +a(18)-a(19)-a(24)+a(25)+a(26)+a(28)+a(33)-a(34)   &
9415                  -a(35)+a(36)+2*a(37)-a(39)+2*a(40)+0.7*a(41)+a(43)   &
9416                  +a(57)+a(58)+a(59)+a(60)-a(69)+a(70)+a(71)+a(72)+0.95   &
9417                  *a(91)-a(94)+a(101)+0.84*a(102)+a(103)+1.5*a(104)   &
9418                  +a(105)+a(106)+a(107)+1.5*a(108)+a(109)+0.5*a(116)   &
9419                  +0.91*a(126)+1.2*a(127)+a(128)+a(139)+a(145)-a(153)   &
9420                  +a(160)-a(163)
9421       a_var(57) = 0.05*a(91)+a(94)-a(100)-a(101)+0.16*a(102)+0.5   &
9422                  *a(104)+0.5*a(108)+a(112)+0.5*a(116)+0.93*a(125)+0.09   &
9423                  *a(126)+0.8*a(127)+a(130)+a(133)
9424       a_var(58) = -a(7)-a(8)+a(13)-a(14)-a(18)-a(19)-a(20)-a(21)+0.4   &
9425                  *a(73)-a(81)-a(83)-a(84)-a(97)-a(120)-a(124)-a(154)
9426       a_var(59) = a(75)+0.03*a(83)+0.09*a(84)+0.77*a(99)-a(102)-a(106)   &
9427                  -a(110)-a(114)
9428       a_var(60) = a(1)+0.11*a(2)+a(3)+a(15)-a(17)-a(18)-a(23)-a(33)   &
9429                  -a(37)+a(38)-a(57)-a(58)-a(71)-a(91)-a(102)-a(103)   &
9430                  -a(104)-a(105)-a(126)-a(127)-a(128)-a(139)-a(145)   &
9431                  +a(153)-a(160)-a(164)
9432       a_var(61) = a(3)+a(4)+2*a(9)+2*a(12)-a(20)+a(21)-a(22)-a(23)   &
9433                  -a(24)-a(25)-a(26)-a(27)-a(28)-a(29)-a(30)+a(33)+0.7   &
9434                  *a(41)-a(44)-a(45)-a(46)-a(47)-a(48)-a(51)+a(53)   &
9435                  +a(54)-0.7*a(55)-0.5*a(56)-a(65)-a(67)-a(75)-a(77)   &
9436                  -a(79)+0.12*a(81)-a(82)+0.33*a(83)+0.6*a(84)-a(85)   &
9437                  -a(86)-a(89)-a(90)-a(92)-a(95)+0.08*a(97)+a(98)-0.77   &
9438                  *a(99)-a(100)-a(119)+0.27*a(120)-a(123)+0.27*a(124)   &
9439                  -a(135)-a(138)-a(143)-a(144)-a(150)+a(155)-a(157)
9440       a_var(62) = -a(2)+a(6)+a(16)+a(19)-a(25)+a(27)-a(37)-a(38)-a(39)   &
9441                  -2*a(40)-a(41)+a(43)-a(52)-a(59)-a(60)-a(68)-a(72)   &
9442                  -a(80)-a(87)-a(88)-a(93)-a(106)-a(107)-a(108)-a(109)   &
9443                  -a(121)-a(125)-a(136)-a(148)
9444       a_var(63) = a(5)+a(20)-a(21)+a(22)+a(25)-a(29)+a(30)-2*a(31)-2   &
9445                  *a(32)-a(33)-a(34)-a(35)+a(36)-a(41)+a(44)+a(45)   &
9446                  +a(48)+2*a(49)+a(51)+a(52)+a(53)+a(54)+a(57)+a(58)   &
9447                  +a(59)+a(60)-a(61)-a(62)+0.32*a(63)+0.6*a(64)+a(65)   &
9448                  +a(66)-a(73)+a(78)+0.22*a(81)+a(82)+0.26*a(83)+0.22   &
9449                  *a(84)+a(85)+a(86)+0.2*a(89)+0.55*a(90)+0.95*a(91)   &
9450                  +0.6*a(92)+2*a(95)+a(96)+0.76*a(97)+0.9*a(98)+0.9   &
9451                  *a(101)+0.76*a(102)+0.5*a(104)+0.9*a(106)+0.5*a(108)   &
9452                  -a(110)-a(111)-a(112)-a(113)+0.54*a(114)+0.07*a(120)   &
9453                  +0.33*a(122)+0.1*a(124)+0.93*a(125)+0.91*a(126)+0.8   &
9454                  *a(127)+a(128)-a(129)-a(130)-a(131)+0.965*a(138)   &
9455                  +a(140)+0.27*a(143)+a(146)-a(147)-a(155)+a(156)   &
9456                  +a(161)-a(165)+a(166)
9457       a_var(64) = a(77)+0.11*a(84)-a(103)-a(107)-a(111)-a(115)
9458       return
9459       end subroutine cbmz_v02r06_dydt                                      
9462 !-----------------------------------------------------------------------------
9463       subroutine cbmz_v02r06_jacob( nvardum, tdum, v, jvs, f, rconst )
9465 !   computes jacobian for mechanism-version-regime = cbmz_v02r06
9467       use module_data_cbmz
9468       implicit none
9470 !   subr parameters
9471 !     nvardum = number of variable species [input]
9472       integer nvardum
9473 !     tdum = time [input]
9474       real tdum
9475 !     v = concentrations of variable species [input]
9476       real v(nvar_r06_kpp)
9477 !     jvs = non-zero jacobian elements [output]
9478       real jvs(lu_nonzero_v_r06_kpp)
9479 !     f = concentrations of fixed species [input]
9480       real f(nfixed_kppmax)
9481 !     rconst = reaction rate constants [input]
9482       real rconst(nreact_r06_kpp)
9484 !   local variables
9485 !     b(i,j) = d[reaction_rate(i)] / d[species_conc(j)]
9486       real b(nreact_r06_kpp,nvar_r06_kpp)
9488 ! computation of b(i,j) = da(i)/dv(j)
9489       b(1,56) = rconst(1)
9490       b(2,62) = rconst(2)
9491       b(3,24) = rconst(3)
9492       b(4,33) = rconst(4)
9493       b(5,17) = rconst(5)
9494       b(6,14) = rconst(6)
9495       b(7,58) = rconst(7)
9496       b(8,58) = rconst(8)
9497       b(9,13) = rconst(9)
9498       b(10,6) = rconst(10)*f(4)
9499       b(11,6) = rconst(11)*f(5)
9500       b(12,6) = rconst(12)*f(2)
9501       b(13,46) = rconst(13)*f(4)
9502       b(14,46) = rconst(14)*v(58)
9503       b(14,58) = rconst(14)*v(46)
9504       b(15,46) = rconst(15)*v(56)
9505       b(15,56) = rconst(15)*v(46)
9506       b(16,46) = rconst(16)*v(56)
9507       b(16,56) = rconst(16)*v(46)
9508       b(17,46) = rconst(17)*v(60)
9509       b(17,60) = rconst(17)*v(46)
9510       b(18,58) = rconst(18)*v(60)
9511       b(18,60) = rconst(18)*v(58)
9512       b(19,56) = rconst(19)*v(58)
9513       b(19,58) = rconst(19)*v(56)
9514       b(20,58) = rconst(20)*v(61)
9515       b(20,61) = rconst(20)*v(58)
9516       b(21,58) = rconst(21)*v(63)
9517       b(21,63) = rconst(21)*v(58)
9518       b(22,61) = rconst(22)*f(3)
9519       b(23,60) = rconst(23)*v(61)
9520       b(23,61) = rconst(23)*v(60)
9521       b(24,56) = rconst(24)*v(61)
9522       b(24,61) = rconst(24)*v(56)
9523       b(25,61) = rconst(25)*v(62)
9524       b(25,62) = rconst(25)*v(61)
9525       b(26,24) = rconst(26)*v(61)
9526       b(26,61) = rconst(26)*v(24)
9527       b(27,33) = rconst(27)*v(61)
9528       b(27,61) = rconst(27)*v(33)
9529       b(28,17) = rconst(28)*v(61)
9530       b(28,61) = rconst(28)*v(17)
9531       b(29,61) = rconst(29)*v(63)
9532       b(29,63) = rconst(29)*v(61)
9533       b(30,13) = rconst(30)*v(61)
9534       b(30,61) = rconst(30)*v(13)
9535       b(31,63) = rconst(31)*2*v(63)
9536       b(32,63) = rconst(32)*2*v(63)*f(2)
9537       b(33,60) = rconst(33)*v(63)
9538       b(33,63) = rconst(33)*v(60)
9539       b(34,56) = rconst(34)*v(63)
9540       b(34,63) = rconst(34)*v(56)
9541       b(35,56) = rconst(35)*v(63)
9542       b(35,63) = rconst(35)*v(56)
9543       b(36,17) = rconst(36)
9544       b(37,60) = rconst(37)*v(62)
9545       b(37,62) = rconst(37)*v(60)
9546       b(38,56) = rconst(38)*v(62)
9547       b(38,62) = rconst(38)*v(56)
9548       b(39,56) = rconst(39)*v(62)
9549       b(39,62) = rconst(39)*v(56)
9550       b(40,62) = rconst(40)*2*v(62)
9551       b(41,62) = rconst(41)*v(63)
9552       b(41,63) = rconst(41)*v(62)
9553       b(42,14) = rconst(42)*f(2)
9554       b(43,14) = rconst(43)
9555       b(44,31) = rconst(44)*v(61)
9556       b(44,61) = rconst(44)*v(31)
9557       b(45,8) = rconst(45)*v(61)
9558       b(45,61) = rconst(45)*v(8)
9559       b(46,61) = rconst(46)*f(1)
9560       b(47,9) = rconst(47)*v(61)
9561       b(47,61) = rconst(47)*v(9)
9562       b(48,23) = rconst(48)*v(61)
9563       b(48,61) = rconst(48)*v(23)
9564       b(49,49) = rconst(49)
9565       b(50,49) = rconst(50)
9566       b(51,49) = rconst(51)*v(61)
9567       b(51,61) = rconst(51)*v(49)
9568       b(52,49) = rconst(52)*v(62)
9569       b(52,62) = rconst(52)*v(49)
9570       b(53,25) = rconst(53)
9571       b(54,21) = rconst(54)
9572       b(55,25) = rconst(55)*v(61)
9573       b(55,61) = rconst(55)*v(25)
9574       b(56,21) = rconst(56)*v(61)
9575       b(56,61) = rconst(56)*v(21)
9576       b(57,55) = rconst(57)*v(60)
9577       b(57,60) = rconst(57)*v(55)
9578       b(58,44) = rconst(58)*v(60)
9579       b(58,60) = rconst(58)*v(44)
9580       b(59,55) = rconst(59)*v(62)
9581       b(59,62) = rconst(59)*v(55)
9582       b(60,44) = rconst(60)*v(62)
9583       b(60,62) = rconst(60)*v(44)
9584       b(61,55) = rconst(61)*v(63)
9585       b(61,63) = rconst(61)*v(55)
9586       b(62,44) = rconst(62)*v(63)
9587       b(62,63) = rconst(62)*v(44)
9588       b(63,55) = rconst(63)
9589       b(64,44) = rconst(64)
9590       b(65,7) = rconst(65)*v(61)
9591       b(65,61) = rconst(65)*v(7)
9592       b(66,48) = rconst(66)
9593       b(67,48) = rconst(67)*v(61)
9594       b(67,61) = rconst(67)*v(48)
9595       b(68,48) = rconst(68)*v(62)
9596       b(68,62) = rconst(68)*v(48)
9597       b(69,52) = rconst(69)*v(56)
9598       b(69,56) = rconst(69)*v(52)
9599       b(70,10) = rconst(70)
9600       b(71,52) = rconst(71)*v(60)
9601       b(71,60) = rconst(71)*v(52)
9602       b(72,52) = rconst(72)*v(62)
9603       b(72,62) = rconst(72)*v(52)
9604       b(73,52) = rconst(73)*v(63)
9605       b(73,63) = rconst(73)*v(52)
9606       b(74,52) = rconst(74)
9607       b(75,30) = rconst(75)*v(61)
9608       b(75,61) = rconst(75)*v(30)
9609       b(76,41) = rconst(76)
9610       b(77,41) = rconst(77)*v(61)
9611       b(77,61) = rconst(77)*v(41)
9612       b(78,43) = rconst(78)
9613       b(79,43) = rconst(79)*v(61)
9614       b(79,61) = rconst(79)*v(43)
9615       b(80,43) = rconst(80)*v(62)
9616       b(80,62) = rconst(80)*v(43)
9617       b(81,22) = rconst(81)*v(58)
9618       b(81,58) = rconst(81)*v(22)
9619       b(82,22) = rconst(82)*v(61)
9620       b(82,61) = rconst(82)*v(22)
9621       b(83,37) = rconst(83)*v(58)
9622       b(83,58) = rconst(83)*v(37)
9623       b(84,42) = rconst(84)*v(58)
9624       b(84,58) = rconst(84)*v(42)
9625       b(85,37) = rconst(85)*v(61)
9626       b(85,61) = rconst(85)*v(37)
9627       b(86,42) = rconst(86)*v(61)
9628       b(86,61) = rconst(86)*v(42)
9629       b(87,37) = rconst(87)*v(62)
9630       b(87,62) = rconst(87)*v(37)
9631       b(88,42) = rconst(88)*v(62)
9632       b(88,62) = rconst(88)*v(42)
9633       b(89,12) = rconst(89)*v(61)
9634       b(89,61) = rconst(89)*v(12)
9635       b(90,15) = rconst(90)*v(61)
9636       b(90,61) = rconst(90)*v(15)
9637       b(91,18) = rconst(91)*v(60)
9638       b(91,60) = rconst(91)*v(18)
9639       b(92,26) = rconst(92)*v(61)
9640       b(92,61) = rconst(92)*v(26)
9641       b(93,26) = rconst(93)*v(62)
9642       b(93,62) = rconst(93)*v(26)
9643       b(94,16) = rconst(94)*v(56)
9644       b(94,56) = rconst(94)*v(16)
9645       b(95,32) = rconst(95)*v(61)
9646       b(95,61) = rconst(95)*v(32)
9647       b(96,32) = rconst(96)
9648       b(97,32) = rconst(97)*v(58)
9649       b(97,58) = rconst(97)*v(32)
9650       b(98,53) = rconst(98)
9651       b(99,53) = rconst(99)*v(61)
9652       b(99,61) = rconst(99)*v(53)
9653       b(100,57) = rconst(100)*v(61)
9654       b(100,61) = rconst(100)*v(57)
9655       b(101,57) = rconst(101)
9656       b(102,59) = rconst(102)*v(60)
9657       b(102,60) = rconst(102)*v(59)
9658       b(103,60) = rconst(103)*v(64)
9659       b(103,64) = rconst(103)*v(60)
9660       b(104,47) = rconst(104)*v(60)
9661       b(104,60) = rconst(104)*v(47)
9662       b(105,40) = rconst(105)*v(60)
9663       b(105,60) = rconst(105)*v(40)
9664       b(106,59) = rconst(106)*v(62)
9665       b(106,62) = rconst(106)*v(59)
9666       b(107,62) = rconst(107)*v(64)
9667       b(107,64) = rconst(107)*v(62)
9668       b(108,47) = rconst(108)*v(62)
9669       b(108,62) = rconst(108)*v(47)
9670       b(109,40) = rconst(109)*v(62)
9671       b(109,62) = rconst(109)*v(40)
9672       b(110,59) = rconst(110)*v(63)
9673       b(110,63) = rconst(110)*v(59)
9674       b(111,63) = rconst(111)*v(64)
9675       b(111,64) = rconst(111)*v(63)
9676       b(112,47) = rconst(112)*v(63)
9677       b(112,63) = rconst(112)*v(47)
9678       b(113,40) = rconst(113)*v(63)
9679       b(113,63) = rconst(113)*v(40)
9680       b(114,59) = rconst(114)
9681       b(115,64) = rconst(115)
9682       b(116,47) = rconst(116)
9683       b(117,40) = rconst(117)
9684       b(118,20) = rconst(118)*v(30)
9685       b(118,30) = rconst(118)*v(20)
9686       b(119,38) = rconst(119)*v(61)
9687       b(119,61) = rconst(119)*v(38)
9688       b(120,38) = rconst(120)*v(58)
9689       b(120,58) = rconst(120)*v(38)
9690       b(121,38) = rconst(121)*v(62)
9691       b(121,62) = rconst(121)*v(38)
9692       b(122,51) = rconst(122)
9693       b(123,51) = rconst(123)*v(61)
9694       b(123,61) = rconst(123)*v(51)
9695       b(124,51) = rconst(124)*v(58)
9696       b(124,58) = rconst(124)*v(51)
9697       b(125,51) = rconst(125)*v(62)
9698       b(125,62) = rconst(125)*v(51)
9699       b(126,35) = rconst(126)*v(60)
9700       b(126,60) = rconst(126)*v(35)
9701       b(127,29) = rconst(127)*v(60)
9702       b(127,60) = rconst(127)*v(29)
9703       b(128,36) = rconst(128)*v(60)
9704       b(128,60) = rconst(128)*v(36)
9705       b(129,35) = rconst(129)*v(63)
9706       b(129,63) = rconst(129)*v(35)
9707       b(130,29) = rconst(130)*v(63)
9708       b(130,63) = rconst(130)*v(29)
9709       b(131,36) = rconst(131)*v(63)
9710       b(131,63) = rconst(131)*v(36)
9711       b(132,35) = rconst(132)
9712       b(133,29) = rconst(133)
9713       b(134,36) = rconst(134)
9714       b(135,34) = rconst(135)*v(61)
9715       b(135,61) = rconst(135)*v(34)
9716       b(136,34) = rconst(136)*v(62)
9717       b(136,62) = rconst(136)*v(34)
9718       b(137,34) = rconst(137)*v(46)
9719       b(137,46) = rconst(137)*v(34)
9720       b(138,34) = rconst(138)*v(61)
9721       b(138,61) = rconst(138)*v(34)
9722       b(139,39) = rconst(139)*v(60)
9723       b(139,60) = rconst(139)*v(39)
9724       b(140,39) = rconst(140)*v(55)
9725       b(140,55) = rconst(140)*v(39)
9726       b(141,39) = rconst(141)*v(50)
9727       b(141,50) = rconst(141)*v(39)
9728       b(142,39) = rconst(142)*2*v(39)
9729       b(143,19) = rconst(143)*v(61)
9730       b(143,61) = rconst(143)*v(19)
9731       b(144,11) = rconst(144)*v(61)
9732       b(144,61) = rconst(144)*v(11)
9733       b(145,28) = rconst(145)*v(60)
9734       b(145,60) = rconst(145)*v(28)
9735       b(146,28) = rconst(146)*v(55)
9736       b(146,55) = rconst(146)*v(28)
9737       b(147,45) = rconst(147)*v(63)
9738       b(147,63) = rconst(147)*v(45)
9739       b(148,45) = rconst(148)*v(62)
9740       b(148,62) = rconst(148)*v(45)
9741       b(149,45) = rconst(149)*v(55)
9742       b(149,55) = rconst(149)*v(45)
9743       b(150,45) = rconst(150)*v(61)
9744       b(150,61) = rconst(150)*v(45)
9745       b(151,45) = rconst(151)*v(54)
9746       b(151,54) = rconst(151)*v(45)
9747       b(152,50) = rconst(152)
9748       b(153,50) = rconst(153)*v(56)
9749       b(153,56) = rconst(153)*v(50)
9750       b(154,50) = rconst(154)*v(58)
9751       b(154,58) = rconst(154)*v(50)
9752       b(155,50) = rconst(155)*v(63)
9753       b(155,63) = rconst(155)*v(50)
9754       b(156,50) = rconst(156)*v(55)
9755       b(156,55) = rconst(156)*v(50)
9756       b(157,50) = rconst(157)*v(61)
9757       b(157,61) = rconst(157)*v(50)
9758       b(158,50) = rconst(158)*f(4)
9759       b(159,27) = rconst(159)
9760       b(160,27) = rconst(160)*v(60)
9761       b(160,60) = rconst(160)*v(27)
9762       b(161,27) = rconst(161)*v(55)
9763       b(161,55) = rconst(161)*v(27)
9764       b(162,54) = rconst(162)
9765       b(163,54) = rconst(163)*v(56)
9766       b(163,56) = rconst(163)*v(54)
9767       b(164,54) = rconst(164)*v(60)
9768       b(164,60) = rconst(164)*v(54)
9769       b(165,54) = rconst(165)*v(63)
9770       b(165,63) = rconst(165)*v(54)
9771       b(166,49) = rconst(166)*v(54)
9772       b(166,54) = rconst(166)*v(49)
9774 ! construct the jacobian terms from b's
9775       jvs(1) = 0
9776       jvs(2) = b(45,8)
9777       jvs(3) = b(162,54)
9778       jvs(4) = b(45,61)
9779       jvs(5) = 0
9780       jvs(6) = 0.52*b(81,22)
9781       jvs(7) = 0.22*b(83,37)
9782       jvs(8) = 0.39*b(120,38)
9783       jvs(9) = 0.46*b(124,51)
9784       jvs(10) = 0.52*b(81,58)+0.22*b(83,58)+0.39*b(120,58)+0.46   &
9785                *b(124,58)
9786       jvs(11) = 0
9787       jvs(12) = 0.09*b(83,37)
9788       jvs(13) = 0.16*b(84,42)
9789       jvs(14) = 0.4*b(73,52)
9790       jvs(15) = 0.09*b(83,58)+0.16*b(84,58)
9791       jvs(16) = 0.4*b(73,63)
9792       jvs(17) = 0
9793       jvs(18) = b(151,45)
9794       jvs(19) = b(166,49)
9795       jvs(20) = b(157,50)
9796       jvs(21) = b(151,54)+b(163,54)+b(164,54)+b(165,54)+b(166,54)
9797       jvs(22) = b(163,56)
9798       jvs(23) = b(164,60)
9799       jvs(24) = b(157,61)
9800       jvs(25) = b(165,63)
9801       jvs(26) = 0
9802       jvs(27) = 0.15*b(142,39)
9803       jvs(28) = -b(10,6)-b(11,6)-b(12,6)
9804       jvs(29) = b(8,58)
9805       jvs(30) = -b(65,7)
9806       jvs(31) = -b(65,61)
9807       jvs(32) = -b(45,8)
9808       jvs(33) = b(152,50)
9809       jvs(34) = -b(45,61)
9810       jvs(35) = -b(47,9)
9811       jvs(36) = 0.2*b(64,44)
9812       jvs(37) = -b(47,61)
9813       jvs(38) = -b(70,10)
9814       jvs(39) = b(69,52)
9815       jvs(40) = b(69,56)
9816       jvs(41) = -b(144,11)
9817       jvs(42) = 0.27*b(143,19)
9818       jvs(43) = 0.27*b(143,61)-b(144,61)
9819       jvs(44) = -b(89,12)
9820       jvs(45) = -b(89,61)
9821       jvs(46) = -b(9,13)-b(30,13)
9822       jvs(47) = b(147,45)
9823       jvs(48) = -b(30,61)
9824       jvs(49) = b(31,63)+b(32,63)+b(147,63)
9825       jvs(50) = -b(6,14)-b(42,14)-b(43,14)
9826       jvs(51) = b(39,56)
9827       jvs(52) = b(39,62)
9828       jvs(53) = -b(90,15)
9829       jvs(54) = -b(90,61)
9830       jvs(55) = -b(94,16)
9831       jvs(56) = 0.4*b(92,26)+b(93,26)
9832       jvs(57) = -b(94,56)
9833       jvs(58) = 0.4*b(92,61)
9834       jvs(59) = b(93,62)
9835       jvs(60) = -b(5,17)-b(28,17)-b(36,17)
9836       jvs(61) = b(34,56)
9837       jvs(62) = -b(28,61)
9838       jvs(63) = b(34,63)
9839       jvs(64) = 0.8*b(89,12)
9840       jvs(65) = 0.45*b(90,15)
9841       jvs(66) = -b(91,18)
9842       jvs(67) = -b(91,60)
9843       jvs(68) = 0.8*b(89,61)+0.45*b(90,61)
9844       jvs(69) = -b(143,19)
9845       jvs(70) = 0.965*b(138,34)
9846       jvs(71) = 0.965*b(138,61)-b(143,61)
9847       jvs(72) = -b(118,20)
9848       jvs(73) = -b(118,30)
9849       jvs(74) = 1.06*b(83,37)+b(85,37)
9850       jvs(75) = 2.26*b(84,42)+2.23*b(86,42)
9851       jvs(76) = b(104,47)+b(108,47)+b(116,47)
9852       jvs(77) = 1.98*b(98,53)+0.42*b(99,53)
9853       jvs(78) = 1.98*b(101,57)
9854       jvs(79) = 1.06*b(83,58)+2.26*b(84,58)
9855       jvs(80) = 1.68*b(102,59)+1.98*b(106,59)+1.25*b(114,59)
9856       jvs(81) = 1.68*b(102,60)+b(104,60)
9857       jvs(82) = b(85,61)+2.23*b(86,61)+0.42*b(99,61)
9858       jvs(83) = 1.98*b(106,62)+b(108,62)
9859       jvs(84) = -b(54,21)-b(56,21)
9860       jvs(85) = b(62,44)
9861       jvs(86) = -b(56,61)
9862       jvs(87) = b(62,63)
9863       jvs(88) = -b(81,22)-b(82,22)
9864       jvs(89) = -b(81,58)
9865       jvs(90) = -b(82,61)
9866       jvs(91) = -b(48,23)
9867       jvs(92) = 0.03*b(83,37)
9868       jvs(93) = 0.04*b(84,42)
9869       jvs(94) = 0.34*b(63,55)
9870       jvs(95) = 0.03*b(83,58)+0.04*b(84,58)
9871       jvs(96) = -b(48,61)
9872       jvs(97) = -b(3,24)-b(26,24)
9873       jvs(98) = b(164,54)
9874       jvs(99) = b(35,56)
9875       jvs(100) = b(23,60)+b(164,60)
9876       jvs(101) = b(23,61)-b(26,61)
9877       jvs(102) = b(35,63)
9878       jvs(103) = -b(53,25)-b(55,25)
9879       jvs(104) = b(149,45)
9880       jvs(105) = b(61,55)+b(149,55)
9881       jvs(106) = -b(55,61)
9882       jvs(107) = b(61,63)
9883       jvs(108) = 0.12*b(89,12)
9884       jvs(109) = 0.05*b(90,15)
9885       jvs(110) = -b(92,26)-b(93,26)
9886       jvs(111) = 0.12*b(89,61)+0.05*b(90,61)-b(92,61)
9887       jvs(112) = -b(93,62)
9888       jvs(113) = -b(159,27)-b(160,27)-b(161,27)
9889       jvs(114) = b(158,50)
9890       jvs(115) = -b(161,55)
9891       jvs(116) = -b(160,60)
9892       jvs(117) = b(144,11)
9893       jvs(118) = 0
9894       jvs(119) = -b(145,28)-b(146,28)
9895       jvs(120) = 0
9896       jvs(121) = -b(146,55)
9897       jvs(122) = -b(145,60)
9898       jvs(123) = b(144,61)
9899       jvs(124) = -b(127,29)-b(130,29)-b(133,29)
9900       jvs(125) = b(121,38)
9901       jvs(126) = -b(127,60)
9902       jvs(127) = b(121,62)
9903       jvs(128) = -b(130,63)
9904       jvs(129) = 1.1*b(90,15)
9905       jvs(130) = -b(118,20)
9906       jvs(131) = 1.6*b(127,29)+2*b(130,29)+2*b(133,29)
9907       jvs(132) = -b(75,30)-b(118,30)
9908       jvs(133) = 0.18*b(126,35)
9909       jvs(134) = 0
9910       jvs(135) = 0
9911       jvs(136) = 0
9912       jvs(137) = 0
9913       jvs(138) = 1.86*b(125,51)
9914       jvs(139) = 0
9915       jvs(140) = 0
9916       jvs(141) = 0
9917       jvs(142) = 0
9918       jvs(143) = 0.18*b(126,60)+1.6*b(127,60)
9919       jvs(144) = -b(75,61)+1.1*b(90,61)
9920       jvs(145) = 1.86*b(125,62)
9921       jvs(146) = 2*b(130,63)
9922       jvs(147) = 0.24*b(81,22)
9923       jvs(148) = -b(44,31)
9924       jvs(149) = 2*b(95,32)+b(96,32)+0.69*b(97,32)
9925       jvs(150) = 0.59*b(128,36)
9926       jvs(151) = 0.31*b(83,37)
9927       jvs(152) = 0.07*b(120,38)
9928       jvs(153) = 0.3*b(84,42)
9929       jvs(154) = b(78,43)+b(80,43)
9930       jvs(155) = b(66,48)
9931       jvs(156) = b(49,49)+b(50,49)+b(51,49)+b(52,49)+b(166,49)
9932       jvs(157) = 0.33*b(122,51)+0.16*b(124,51)+0.64*b(125,51)
9933       jvs(158) = b(166,54)
9934       jvs(159) = 0.24*b(81,58)+0.31*b(83,58)+0.3*b(84,58)+0.69   &
9935                 *b(97,58)+0.07*b(120,58)+0.16*b(124,58)
9936       jvs(160) = 0.59*b(128,60)
9937       jvs(161) = -b(44,61)+b(51,61)+2*b(95,61)
9938       jvs(162) = b(52,62)+b(80,62)+0.64*b(125,62)
9939       jvs(163) = 0.95*b(91,18)
9940       jvs(164) = 0.3*b(92,26)
9941       jvs(165) = -b(95,32)-b(96,32)-b(97,32)
9942       jvs(166) = -b(97,58)
9943       jvs(167) = 0.95*b(91,60)
9944       jvs(168) = 0.3*b(92,61)-b(95,61)
9945       jvs(169) = 0
9946       jvs(170) = 2*b(42,14)
9947       jvs(171) = b(93,26)
9948       jvs(172) = -b(4,33)-b(27,33)
9949       jvs(173) = b(136,34)
9950       jvs(174) = b(80,43)
9951       jvs(175) = b(148,45)
9952       jvs(176) = b(68,48)
9953       jvs(177) = b(52,49)
9954       jvs(178) = 0.07*b(125,51)
9955       jvs(179) = b(163,54)
9956       jvs(180) = b(24,56)+b(163,56)
9957       jvs(181) = b(24,61)-b(27,61)
9958       jvs(182) = 0.3*b(41,62)+b(52,62)+b(68,62)+b(80,62)+b(93,62)+0.07   &
9959                 *b(125,62)+b(136,62)+b(148,62)
9960       jvs(183) = 0.3*b(41,63)
9961       jvs(184) = -b(135,34)-b(136,34)-b(137,34)-b(138,34)
9962       jvs(185) = -b(137,46)
9963       jvs(186) = -b(135,61)-b(138,61)
9964       jvs(187) = -b(136,62)
9965       jvs(188) = -b(126,35)-b(129,35)-b(132,35)
9966       jvs(189) = b(119,38)
9967       jvs(190) = -b(126,60)
9968       jvs(191) = b(119,61)
9969       jvs(192) = -b(129,63)
9970       jvs(193) = -b(128,36)-b(131,36)-b(134,36)
9971       jvs(194) = 0.5*b(123,51)
9972       jvs(195) = -b(128,60)
9973       jvs(196) = 0.5*b(123,61)
9974       jvs(197) = -b(131,63)
9975       jvs(198) = -b(83,37)-b(85,37)-b(87,37)
9976       jvs(199) = -b(83,58)
9977       jvs(200) = -b(85,61)
9978       jvs(201) = -b(87,62)
9979       jvs(202) = -b(119,38)-b(120,38)-b(121,38)
9980       jvs(203) = -b(120,58)
9981       jvs(204) = -b(119,61)
9982       jvs(205) = -b(121,62)
9983       jvs(206) = b(135,34)+b(136,34)
9984       jvs(207) = -b(139,39)-b(140,39)-b(141,39)-2*b(142,39)
9985       jvs(208) = 0
9986       jvs(209) = -b(141,50)
9987       jvs(210) = -b(140,55)
9988       jvs(211) = -b(139,60)
9989       jvs(212) = b(135,61)
9990       jvs(213) = b(136,62)
9991       jvs(214) = 0.08*b(89,12)
9992       jvs(215) = 0.5*b(90,15)
9993       jvs(216) = b(82,22)
9994       jvs(217) = 0.6*b(92,26)
9995       jvs(218) = b(95,32)+0.03*b(97,32)
9996       jvs(219) = b(85,37)
9997       jvs(220) = 0.08*b(119,38)+0.2*b(120,38)
9998       jvs(221) = -b(105,40)-b(109,40)-b(113,40)-b(117,40)
9999       jvs(222) = b(86,42)
10000       jvs(223) = b(79,43)
10001       jvs(224) = 0.2*b(123,51)+0.07*b(124,51)+0.93*b(125,51)
10002       jvs(225) = 0.4*b(98,53)
10003       jvs(226) = 0.4*b(101,57)
10004       jvs(227) = 0.03*b(97,58)+0.2*b(120,58)+0.07*b(124,58)
10005       jvs(228) = 0.34*b(102,59)+0.4*b(106,59)+0.24*b(114,59)
10006       jvs(229) = 0.34*b(102,60)-b(105,60)
10007       jvs(230) = b(79,61)+b(82,61)+b(85,61)+b(86,61)+0.08*b(89,61)+0.5   &
10008                 *b(90,61)+0.6*b(92,61)+b(95,61)+0.08*b(119,61)+0.2   &
10009                 *b(123,61)
10010       jvs(231) = 0.4*b(106,62)-b(109,62)+0.93*b(125,62)
10011       jvs(232) = -b(113,63)
10012       jvs(233) = 0.63*b(128,36)+0.5*b(134,36)
10013       jvs(234) = -b(76,41)-b(77,41)
10014       jvs(235) = 0.07*b(84,42)+0.23*b(86,42)
10015       jvs(236) = 0.03*b(122,51)+0.09*b(124,51)
10016       jvs(237) = 0.74*b(98,53)
10017       jvs(238) = 0.74*b(101,57)
10018       jvs(239) = 0.07*b(84,58)+0.09*b(124,58)
10019       jvs(240) = 0.62*b(102,59)+0.74*b(106,59)+0.57*b(114,59)
10020       jvs(241) = 0.62*b(102,60)+0.63*b(128,60)
10021       jvs(242) = -b(77,61)+0.23*b(86,61)
10022       jvs(243) = 0.74*b(106,62)
10023       jvs(244) = 0
10024       jvs(245) = 0.15*b(115,64)
10025       jvs(246) = -b(84,42)-b(86,42)-b(88,42)
10026       jvs(247) = -b(84,58)
10027       jvs(248) = -b(86,61)
10028       jvs(249) = -b(88,62)
10029       jvs(250) = 0.8*b(90,15)
10030       jvs(251) = 0.2*b(97,32)
10031       jvs(252) = 0.34*b(128,36)
10032       jvs(253) = 0.04*b(83,37)
10033       jvs(254) = 0.07*b(84,42)
10034       jvs(255) = -b(78,43)-b(79,43)-b(80,43)
10035       jvs(256) = 0.85*b(124,51)
10036       jvs(257) = 0.19*b(99,53)
10037       jvs(258) = 0.04*b(83,58)+0.07*b(84,58)+0.2*b(97,58)+0.85   &
10038                 *b(124,58)
10039       jvs(259) = 0.34*b(128,60)
10040       jvs(260) = -b(79,61)+0.8*b(90,61)+0.19*b(99,61)
10041       jvs(261) = -b(80,62)
10042       jvs(262) = 0
10043       jvs(263) = 0.15*b(115,64)
10044       jvs(264) = b(47,9)
10045       jvs(265) = 0.5*b(56,21)
10046       jvs(266) = 0.06*b(83,37)
10047       jvs(267) = 0.05*b(84,42)
10048       jvs(268) = -b(58,44)-b(60,44)-b(62,44)-b(64,44)
10049       jvs(269) = 0.1*b(98,53)
10050       jvs(270) = 0.1*b(101,57)
10051       jvs(271) = 0.06*b(83,58)+0.05*b(84,58)
10052       jvs(272) = 0.08*b(102,59)+0.1*b(106,59)+0.06*b(114,59)
10053       jvs(273) = -b(58,60)+0.08*b(102,60)
10054       jvs(274) = b(47,61)+0.5*b(56,61)
10055       jvs(275) = -b(60,62)+0.1*b(106,62)
10056       jvs(276) = -b(62,63)
10057       jvs(277) = 0.73*b(143,19)
10058       jvs(278) = 0
10059       jvs(279) = -b(147,45)-b(148,45)-b(149,45)-b(150,45)-b(151,45)
10060       jvs(280) = 0
10061       jvs(281) = -b(151,54)
10062       jvs(282) = -b(149,55)
10063       jvs(283) = 0.73*b(143,61)-b(150,61)
10064       jvs(284) = -b(148,62)
10065       jvs(285) = -b(147,63)
10066       jvs(286) = b(10,6)+b(11,6)
10067       jvs(287) = -b(137,34)
10068       jvs(288) = -b(13,46)-b(14,46)-b(15,46)-b(16,46)-b(17,46)   &
10069                 -b(137,46)
10070       jvs(289) = b(1,56)-b(15,56)-b(16,56)
10071       jvs(290) = b(7,58)-b(14,58)
10072       jvs(291) = -b(17,60)
10073       jvs(292) = 0
10074       jvs(293) = 0.89*b(2,62)
10075       jvs(294) = b(87,37)
10076       jvs(295) = b(88,42)
10077       jvs(296) = -b(104,47)-b(108,47)-b(112,47)-b(116,47)
10078       jvs(297) = b(100,57)
10079       jvs(298) = 0
10080       jvs(299) = -b(104,60)
10081       jvs(300) = b(100,61)
10082       jvs(301) = b(87,62)+b(88,62)-b(108,62)
10083       jvs(302) = -b(112,63)
10084       jvs(303) = b(65,7)
10085       jvs(304) = b(54,21)+0.5*b(56,21)
10086       jvs(305) = 0.22*b(82,22)
10087       jvs(306) = 0.8*b(127,29)+b(133,29)
10088       jvs(307) = 0.03*b(97,32)
10089       jvs(308) = 0.55*b(128,36)+0.5*b(134,36)
10090       jvs(309) = 0.47*b(83,37)+b(85,37)
10091       jvs(310) = 0.15*b(120,38)
10092       jvs(311) = 1.03*b(84,42)+1.77*b(86,42)
10093       jvs(312) = b(58,44)+b(60,44)+0.8*b(64,44)
10094       jvs(313) = 0.5*b(104,47)+0.5*b(108,47)+0.5*b(116,47)
10095       jvs(314) = -b(66,48)-b(67,48)-b(68,48)
10096       jvs(315) = 0.07*b(122,51)+0.02*b(124,51)+0.28*b(125,51)
10097       jvs(316) = 0.3*b(98,53)+0.04*b(99,53)
10098       jvs(317) = 0.3*b(101,57)
10099       jvs(318) = 0.47*b(83,58)+1.03*b(84,58)+0.03*b(97,58)+0.15   &
10100                 *b(120,58)+0.02*b(124,58)
10101       jvs(319) = 0.25*b(102,59)+0.3*b(106,59)+0.21*b(114,59)
10102       jvs(320) = b(58,60)+0.25*b(102,60)+0.5*b(104,60)+0.8*b(127,60)   &
10103                 +0.55*b(128,60)
10104       jvs(321) = 0.5*b(56,61)+b(65,61)-b(67,61)+0.22*b(82,61)+b(85,61)   &
10105                 +1.77*b(86,61)+0.04*b(99,61)
10106       jvs(322) = b(60,62)-b(68,62)+0.3*b(106,62)+0.5*b(108,62)+0.28   &
10107                 *b(125,62)
10108       jvs(323) = 0
10109       jvs(324) = b(81,22)+1.56*b(82,22)
10110       jvs(325) = b(48,23)
10111       jvs(326) = b(53,25)+0.3*b(55,25)
10112       jvs(327) = b(161,27)
10113       jvs(328) = b(145,28)+2*b(146,28)
10114       jvs(329) = b(95,32)+0.7*b(97,32)
10115       jvs(330) = 0
10116       jvs(331) = 0.63*b(126,35)
10117       jvs(332) = 0.25*b(128,36)
10118       jvs(333) = 0.57*b(83,37)+b(85,37)
10119       jvs(334) = 0.6*b(120,38)
10120       jvs(335) = b(139,39)+2*b(140,39)+b(141,39)
10121       jvs(336) = 0
10122       jvs(337) = 0
10123       jvs(338) = 0
10124       jvs(339) = 0.5*b(104,47)+0.5*b(108,47)+0.5*b(116,47)
10125       jvs(340) = -b(49,49)-b(50,49)-b(51,49)-b(52,49)-b(166,49)
10126       jvs(341) = b(141,50)+b(156,50)
10127       jvs(342) = 0.2*b(122,51)+0.15*b(124,51)+0.28*b(125,51)
10128       jvs(343) = -b(166,54)
10129       jvs(344) = b(57,55)+b(59,55)+0.66*b(63,55)+2*b(140,55)+2   &
10130                 *b(146,55)+b(156,55)+b(161,55)
10131       jvs(345) = 0
10132       jvs(346) = 0
10133       jvs(347) = b(81,58)+0.57*b(83,58)+0.7*b(97,58)+0.6*b(120,58)   &
10134                 +0.15*b(124,58)
10135       jvs(348) = b(57,60)+b(103,60)+0.5*b(104,60)+0.63*b(126,60)+0.25   &
10136                 *b(128,60)+b(139,60)+b(145,60)
10137       jvs(349) = b(48,61)-b(51,61)+0.3*b(55,61)+1.56*b(82,61)+b(85,61)   &
10138                 +b(95,61)
10139       jvs(350) = -b(52,62)+b(59,62)+b(107,62)+0.5*b(108,62)+0.28   &
10140                 *b(125,62)
10141       jvs(351) = 0
10142       jvs(352) = b(103,64)+b(107,64)+0.7*b(115,64)
10143       jvs(353) = b(159,27)
10144       jvs(354) = b(145,28)+b(146,28)
10145       jvs(355) = b(137,34)+0.035*b(138,34)
10146       jvs(356) = b(139,39)+b(140,39)+1.85*b(142,39)
10147       jvs(357) = b(147,45)+b(148,45)+b(149,45)+b(150,45)+b(151,45)
10148       jvs(358) = b(137,46)
10149       jvs(359) = -b(152,50)-b(153,50)-b(154,50)-b(155,50)-b(156,50)   &
10150                 -b(157,50)-b(158,50)
10151       jvs(360) = b(151,54)
10152       jvs(361) = b(140,55)+b(146,55)+b(149,55)-b(156,55)
10153       jvs(362) = -b(153,56)
10154       jvs(363) = -b(154,58)
10155       jvs(364) = b(139,60)+b(145,60)
10156       jvs(365) = 0.035*b(138,61)+b(150,61)-b(157,61)
10157       jvs(366) = b(148,62)
10158       jvs(367) = b(147,63)-b(155,63)
10159       jvs(368) = 0.2*b(127,29)
10160       jvs(369) = 0.91*b(126,35)+b(132,35)
10161       jvs(370) = 0.65*b(120,38)
10162       jvs(371) = -b(122,51)-b(123,51)-b(124,51)-b(125,51)
10163       jvs(372) = 0.65*b(120,58)-b(124,58)
10164       jvs(373) = 0.91*b(126,60)+0.2*b(127,60)
10165       jvs(374) = -b(123,61)
10166       jvs(375) = -b(125,62)
10167       jvs(376) = 0
10168       jvs(377) = b(70,10)
10169       jvs(378) = b(95,32)+b(96,32)+0.62*b(97,32)
10170       jvs(379) = 0.13*b(83,37)
10171       jvs(380) = 0.2*b(120,38)
10172       jvs(381) = b(76,41)
10173       jvs(382) = 0.19*b(84,42)
10174       jvs(383) = b(78,43)+b(79,43)+b(80,43)
10175       jvs(384) = b(67,48)+b(68,48)
10176       jvs(385) = 0.97*b(122,51)+0.5*b(123,51)+0.11*b(124,51)+0.07   &
10177                 *b(125,51)
10178       jvs(386) = -b(69,52)-b(71,52)-b(72,52)-b(73,52)-b(74,52)
10179       jvs(387) = 0
10180       jvs(388) = -b(69,56)
10181       jvs(389) = 0
10182       jvs(390) = 0.13*b(83,58)+0.19*b(84,58)+0.62*b(97,58)+0.2   &
10183                 *b(120,58)+0.11*b(124,58)
10184       jvs(391) = 0
10185       jvs(392) = -b(71,60)+b(103,60)
10186       jvs(393) = b(67,61)+b(79,61)+b(95,61)+0.5*b(123,61)
10187       jvs(394) = b(68,62)-b(72,62)+b(80,62)+b(107,62)+0.07*b(125,62)
10188       jvs(395) = -b(73,63)
10189       jvs(396) = b(103,64)+b(107,64)+0.7*b(115,64)
10190       jvs(397) = b(129,35)
10191       jvs(398) = b(131,36)
10192       jvs(399) = 0
10193       jvs(400) = 0
10194       jvs(401) = -b(98,53)-b(99,53)
10195       jvs(402) = 0
10196       jvs(403) = b(110,59)
10197       jvs(404) = 0
10198       jvs(405) = -b(99,61)
10199       jvs(406) = 0
10200       jvs(407) = b(110,63)+b(111,63)+b(129,63)+b(131,63)
10201       jvs(408) = b(111,64)
10202       jvs(409) = b(160,27)+b(161,27)
10203       jvs(410) = b(141,39)
10204       jvs(411) = -b(151,45)
10205       jvs(412) = 0
10206       jvs(413) = -b(166,49)
10207       jvs(414) = b(141,50)+b(153,50)+b(154,50)+b(155,50)+b(156,50)
10208       jvs(415) = 0
10209       jvs(416) = -b(151,54)-b(162,54)-b(163,54)-b(164,54)-b(165,54)   &
10210                 -b(166,54)
10211       jvs(417) = b(156,55)+b(161,55)
10212       jvs(418) = b(153,56)-b(163,56)
10213       jvs(419) = 0
10214       jvs(420) = b(154,58)
10215       jvs(421) = b(160,60)-b(164,60)
10216       jvs(422) = 0
10217       jvs(423) = 0
10218       jvs(424) = b(155,63)-b(165,63)
10219       jvs(425) = 0
10220       jvs(426) = 0.73*b(143,19)
10221       jvs(427) = 0.7*b(55,25)
10222       jvs(428) = -b(161,27)
10223       jvs(429) = -b(146,28)
10224       jvs(430) = b(137,34)+0.035*b(138,34)
10225       jvs(431) = 0.07*b(83,37)
10226       jvs(432) = -b(140,39)
10227       jvs(433) = b(76,41)
10228       jvs(434) = 0.1*b(84,42)
10229       jvs(435) = -b(149,45)
10230       jvs(436) = b(137,46)
10231       jvs(437) = b(66,48)
10232       jvs(438) = b(152,50)-b(156,50)
10233       jvs(439) = 0.7*b(122,51)+0.05*b(124,51)
10234       jvs(440) = b(71,52)+b(72,52)+b(74,52)
10235       jvs(441) = 0
10236       jvs(442) = b(162,54)
10237       jvs(443) = -b(57,55)-b(59,55)-b(61,55)-b(63,55)-b(140,55)   &
10238                 -b(146,55)-b(149,55)-b(156,55)-b(161,55)
10239       jvs(444) = 0
10240       jvs(445) = 0
10241       jvs(446) = 0.07*b(83,58)+0.1*b(84,58)+0.05*b(124,58)
10242       jvs(447) = 0
10243       jvs(448) = -b(57,60)+b(71,60)
10244       jvs(449) = b(46,61)+0.7*b(55,61)+0.035*b(138,61)+0.73*b(143,61)
10245       jvs(450) = -b(59,62)+b(72,62)
10246       jvs(451) = -b(61,63)
10247       jvs(452) = 0
10248       jvs(453) = b(70,10)
10249       jvs(454) = b(6,14)+b(43,14)
10250       jvs(455) = -b(94,16)
10251       jvs(456) = b(5,17)+b(28,17)+b(36,17)
10252       jvs(457) = 0.95*b(91,18)
10253       jvs(458) = b(26,24)
10254       jvs(459) = 0
10255       jvs(460) = b(160,27)
10256       jvs(461) = b(145,28)
10257       jvs(462) = 1.2*b(127,29)
10258       jvs(463) = b(4,33)
10259       jvs(464) = 0
10260       jvs(465) = 0.91*b(126,35)
10261       jvs(466) = b(128,36)
10262       jvs(467) = 0
10263       jvs(468) = b(139,39)
10264       jvs(469) = b(105,40)+b(109,40)
10265       jvs(470) = 0
10266       jvs(471) = 0
10267       jvs(472) = b(58,44)+b(60,44)
10268       jvs(473) = 0
10269       jvs(474) = -b(15,46)-b(16,46)+b(17,46)
10270       jvs(475) = 1.5*b(104,47)+1.5*b(108,47)+0.5*b(116,47)
10271       jvs(476) = 0
10272       jvs(477) = 0
10273       jvs(478) = -b(153,50)
10274       jvs(479) = 0
10275       jvs(480) = -b(69,52)+b(71,52)+b(72,52)
10276       jvs(481) = 0
10277       jvs(482) = -b(163,54)
10278       jvs(483) = b(57,55)+b(59,55)
10279       jvs(484) = -b(1,56)-b(15,56)-b(16,56)-b(19,56)-b(24,56)-b(34,56)   &
10280                 -b(35,56)-b(39,56)-b(69,56)-b(94,56)-b(153,56)   &
10281                 -b(163,56)
10282       jvs(485) = b(101,57)
10283       jvs(486) = b(18,58)-b(19,58)
10284       jvs(487) = 0.84*b(102,59)+b(106,59)
10285       jvs(488) = b(17,60)+b(18,60)+b(33,60)+2*b(37,60)+b(57,60)   &
10286                 +b(58,60)+b(71,60)+0.95*b(91,60)+0.84*b(102,60)   &
10287                 +b(103,60)+1.5*b(104,60)+b(105,60)+0.91*b(126,60)+1.2   &
10288                 *b(127,60)+b(128,60)+b(139,60)+b(145,60)+b(160,60)
10289       jvs(489) = -b(24,61)+b(25,61)+b(26,61)+b(28,61)
10290       jvs(490) = 0.89*b(2,62)+b(25,62)+2*b(37,62)-b(39,62)+2*b(40,62)   &
10291                 +0.7*b(41,62)+b(59,62)+b(60,62)+b(72,62)+b(106,62)   &
10292                 +b(107,62)+1.5*b(108,62)+b(109,62)
10293       jvs(491) = b(33,63)-b(34,63)-b(35,63)+0.7*b(41,63)
10294       jvs(492) = b(103,64)+b(107,64)
10295       jvs(493) = b(94,16)
10296       jvs(494) = 0.05*b(91,18)
10297       jvs(495) = 0
10298       jvs(496) = 0.8*b(127,29)+b(130,29)+b(133,29)
10299       jvs(497) = 0.09*b(126,35)
10300       jvs(498) = 0
10301       jvs(499) = 0.5*b(104,47)+0.5*b(108,47)+b(112,47)+0.5*b(116,47)
10302       jvs(500) = 0.93*b(125,51)
10303       jvs(501) = b(94,56)
10304       jvs(502) = -b(100,57)-b(101,57)
10305       jvs(503) = 0
10306       jvs(504) = 0.16*b(102,59)
10307       jvs(505) = 0.05*b(91,60)+0.16*b(102,60)+0.5*b(104,60)+0.09   &
10308                 *b(126,60)+0.8*b(127,60)
10309       jvs(506) = -b(100,61)
10310       jvs(507) = 0.5*b(108,62)+0.93*b(125,62)
10311       jvs(508) = b(112,63)+b(130,63)
10312       jvs(509) = 0
10313       jvs(510) = -b(81,22)
10314       jvs(511) = -b(97,32)
10315       jvs(512) = -b(83,37)
10316       jvs(513) = -b(120,38)
10317       jvs(514) = -b(84,42)
10318       jvs(515) = b(13,46)-b(14,46)
10319       jvs(516) = -b(154,50)
10320       jvs(517) = -b(124,51)
10321       jvs(518) = 0.4*b(73,52)
10322       jvs(519) = 0
10323       jvs(520) = 0
10324       jvs(521) = 0
10325       jvs(522) = -b(19,56)
10326       jvs(523) = 0
10327       jvs(524) = -b(7,58)-b(8,58)-b(14,58)-b(18,58)-b(19,58)-b(20,58)   &
10328                 -b(21,58)-b(81,58)-b(83,58)-b(84,58)-b(97,58)   &
10329                 -b(120,58)-b(124,58)-b(154,58)
10330       jvs(525) = 0
10331       jvs(526) = -b(18,60)
10332       jvs(527) = -b(20,61)
10333       jvs(528) = 0
10334       jvs(529) = -b(21,63)+0.4*b(73,63)
10335       jvs(530) = 0
10336       jvs(531) = b(75,30)
10337       jvs(532) = 0
10338       jvs(533) = 0.03*b(83,37)
10339       jvs(534) = 0
10340       jvs(535) = 0.09*b(84,42)
10341       jvs(536) = 0
10342       jvs(537) = 0
10343       jvs(538) = 0.77*b(99,53)
10344       jvs(539) = 0
10345       jvs(540) = 0.03*b(83,58)+0.09*b(84,58)
10346       jvs(541) = -b(102,59)-b(106,59)-b(110,59)-b(114,59)
10347       jvs(542) = -b(102,60)
10348       jvs(543) = b(75,61)+0.77*b(99,61)
10349       jvs(544) = -b(106,62)
10350       jvs(545) = -b(110,63)
10351       jvs(546) = 0
10352       jvs(547) = -b(91,18)
10353       jvs(548) = b(3,24)
10354       jvs(549) = -b(160,27)
10355       jvs(550) = -b(145,28)
10356       jvs(551) = -b(127,29)
10357       jvs(552) = 0
10358       jvs(553) = -b(126,35)
10359       jvs(554) = -b(128,36)
10360       jvs(555) = 0
10361       jvs(556) = -b(139,39)
10362       jvs(557) = -b(105,40)
10363       jvs(558) = 0
10364       jvs(559) = 0
10365       jvs(560) = -b(58,44)
10366       jvs(561) = b(15,46)-b(17,46)
10367       jvs(562) = -b(104,47)
10368       jvs(563) = b(153,50)
10369       jvs(564) = 0
10370       jvs(565) = -b(71,52)
10371       jvs(566) = 0
10372       jvs(567) = -b(164,54)
10373       jvs(568) = -b(57,55)
10374       jvs(569) = b(1,56)+b(15,56)+b(38,56)+b(153,56)
10375       jvs(570) = 0
10376       jvs(571) = -b(18,58)
10377       jvs(572) = -b(102,59)
10378       jvs(573) = -b(17,60)-b(18,60)-b(23,60)-b(33,60)-b(37,60)   &
10379                 -b(57,60)-b(58,60)-b(71,60)-b(91,60)-b(102,60)   &
10380                 -b(103,60)-b(104,60)-b(105,60)-b(126,60)-b(127,60)   &
10381                 -b(128,60)-b(139,60)-b(145,60)-b(160,60)-b(164,60)
10382       jvs(574) = -b(23,61)
10383       jvs(575) = 0.11*b(2,62)-b(37,62)+b(38,62)
10384       jvs(576) = -b(33,63)
10385       jvs(577) = -b(103,64)
10386       jvs(578) = 2*b(12,6)
10387       jvs(579) = -b(65,7)
10388       jvs(580) = -b(45,8)
10389       jvs(581) = -b(47,9)
10390       jvs(582) = -b(144,11)
10391       jvs(583) = -b(89,12)
10392       jvs(584) = 2*b(9,13)-b(30,13)
10393       jvs(585) = -b(90,15)
10394       jvs(586) = -b(28,17)
10395       jvs(587) = -b(143,19)
10396       jvs(588) = b(54,21)-0.5*b(56,21)
10397       jvs(589) = 0.12*b(81,22)-b(82,22)
10398       jvs(590) = -b(48,23)
10399       jvs(591) = b(3,24)-b(26,24)
10400       jvs(592) = b(53,25)-0.7*b(55,25)
10401       jvs(593) = -b(92,26)
10402       jvs(594) = -b(75,30)
10403       jvs(595) = -b(44,31)
10404       jvs(596) = -b(95,32)+0.08*b(97,32)
10405       jvs(597) = b(4,33)-b(27,33)
10406       jvs(598) = -b(135,34)-b(138,34)
10407       jvs(599) = 0
10408       jvs(600) = 0
10409       jvs(601) = 0.33*b(83,37)-b(85,37)
10410       jvs(602) = -b(119,38)+0.27*b(120,38)
10411       jvs(603) = -b(77,41)
10412       jvs(604) = 0.6*b(84,42)-b(86,42)
10413       jvs(605) = -b(79,43)
10414       jvs(606) = 0
10415       jvs(607) = -b(150,45)
10416       jvs(608) = 0
10417       jvs(609) = 0
10418       jvs(610) = -b(67,48)
10419       jvs(611) = -b(51,49)
10420       jvs(612) = b(155,50)-b(157,50)
10421       jvs(613) = -b(123,51)+0.27*b(124,51)
10422       jvs(614) = b(98,53)-0.77*b(99,53)
10423       jvs(615) = 0
10424       jvs(616) = 0
10425       jvs(617) = -b(24,56)
10426       jvs(618) = -b(100,57)
10427       jvs(619) = -b(20,58)+b(21,58)+0.12*b(81,58)+0.33*b(83,58)+0.6   &
10428                 *b(84,58)+0.08*b(97,58)+0.27*b(120,58)+0.27*b(124,58)
10429       jvs(620) = 0
10430       jvs(621) = -b(23,60)+b(33,60)
10431       jvs(622) = -b(20,61)-b(22,61)-b(23,61)-b(24,61)-b(25,61)   &
10432                 -b(26,61)-b(27,61)-b(28,61)-b(29,61)-b(30,61)-b(44,61)   &
10433                 -b(45,61)-b(46,61)-b(47,61)-b(48,61)-b(51,61)-0.7   &
10434                 *b(55,61)-0.5*b(56,61)-b(65,61)-b(67,61)-b(75,61)   &
10435                 -b(77,61)-b(79,61)-b(82,61)-b(85,61)-b(86,61)-b(89,61)   &
10436                 -b(90,61)-b(92,61)-b(95,61)-0.77*b(99,61)-b(100,61)   &
10437                 -b(119,61)-b(123,61)-b(135,61)-b(138,61)-b(143,61)   &
10438                 -b(144,61)-b(150,61)-b(157,61)
10439       jvs(623) = -b(25,62)+0.7*b(41,62)
10440       jvs(624) = b(21,63)-b(29,63)+b(33,63)+0.7*b(41,63)+b(155,63)
10441       jvs(625) = 0
10442       jvs(626) = b(6,14)+b(43,14)
10443       jvs(627) = -b(93,26)
10444       jvs(628) = b(27,33)
10445       jvs(629) = -b(136,34)
10446       jvs(630) = -b(87,37)
10447       jvs(631) = -b(121,38)
10448       jvs(632) = -b(109,40)
10449       jvs(633) = -b(88,42)
10450       jvs(634) = -b(80,43)
10451       jvs(635) = -b(60,44)
10452       jvs(636) = -b(148,45)
10453       jvs(637) = b(16,46)
10454       jvs(638) = -b(108,47)
10455       jvs(639) = -b(68,48)
10456       jvs(640) = -b(52,49)
10457       jvs(641) = 0
10458       jvs(642) = -b(125,51)
10459       jvs(643) = -b(72,52)
10460       jvs(644) = 0
10461       jvs(645) = 0
10462       jvs(646) = -b(59,55)
10463       jvs(647) = b(16,56)+b(19,56)-b(38,56)-b(39,56)
10464       jvs(648) = 0
10465       jvs(649) = b(19,58)
10466       jvs(650) = -b(106,59)
10467       jvs(651) = -b(37,60)
10468       jvs(652) = -b(25,61)+b(27,61)
10469       jvs(653) = -b(2,62)-b(25,62)-b(37,62)-b(38,62)-b(39,62)-2   &
10470                 *b(40,62)-b(41,62)-b(52,62)-b(59,62)-b(60,62)-b(68,62)   &
10471                 -b(72,62)-b(80,62)-b(87,62)-b(88,62)-b(93,62)   &
10472                 -b(106,62)-b(107,62)-b(108,62)-b(109,62)-b(121,62)   &
10473                 -b(125,62)-b(136,62)-b(148,62)
10474       jvs(654) = -b(41,63)
10475       jvs(655) = -b(107,64)
10476       jvs(656) = b(65,7)
10477       jvs(657) = b(45,8)
10478       jvs(658) = 0.2*b(89,12)
10479       jvs(659) = b(30,13)
10480       jvs(660) = 0.55*b(90,15)
10481       jvs(661) = b(5,17)+b(36,17)
10482       jvs(662) = 0.95*b(91,18)
10483       jvs(663) = 0.27*b(143,19)
10484       jvs(664) = b(54,21)
10485       jvs(665) = 0.22*b(81,22)+b(82,22)
10486       jvs(666) = b(48,23)
10487       jvs(667) = b(53,25)
10488       jvs(668) = 0.6*b(92,26)
10489       jvs(669) = b(161,27)
10490       jvs(670) = b(146,28)
10491       jvs(671) = 0.8*b(127,29)-b(130,29)
10492       jvs(672) = b(44,31)
10493       jvs(673) = 2*b(95,32)+b(96,32)+0.76*b(97,32)
10494       jvs(674) = 0.965*b(138,34)
10495       jvs(675) = 0.91*b(126,35)-b(129,35)
10496       jvs(676) = b(128,36)-b(131,36)
10497       jvs(677) = 0.26*b(83,37)+b(85,37)
10498       jvs(678) = 0.07*b(120,38)
10499       jvs(679) = b(140,39)
10500       jvs(680) = -b(113,40)
10501       jvs(681) = 0.22*b(84,42)+b(86,42)
10502       jvs(682) = b(78,43)
10503       jvs(683) = b(58,44)+b(60,44)-b(62,44)+0.6*b(64,44)
10504       jvs(684) = -b(147,45)
10505       jvs(685) = 0
10506       jvs(686) = 0.5*b(104,47)+0.5*b(108,47)-b(112,47)
10507       jvs(687) = b(66,48)
10508       jvs(688) = 2*b(49,49)+b(51,49)+b(52,49)+b(166,49)
10509       jvs(689) = -b(155,50)+b(156,50)
10510       jvs(690) = 0.33*b(122,51)+0.1*b(124,51)+0.93*b(125,51)
10511       jvs(691) = -b(73,52)
10512       jvs(692) = 0.9*b(98,53)
10513       jvs(693) = -b(165,54)+b(166,54)
10514       jvs(694) = b(57,55)+b(59,55)-b(61,55)+0.32*b(63,55)+b(140,55)   &
10515                 +b(146,55)+b(156,55)+b(161,55)
10516       jvs(695) = -b(34,56)-b(35,56)
10517       jvs(696) = 0.9*b(101,57)
10518       jvs(697) = b(20,58)-b(21,58)+0.22*b(81,58)+0.26*b(83,58)+0.22   &
10519                 *b(84,58)+0.76*b(97,58)+0.07*b(120,58)+0.1*b(124,58)
10520       jvs(698) = 0.76*b(102,59)+0.9*b(106,59)-b(110,59)+0.54*b(114,59)
10521       jvs(699) = -b(33,60)+b(57,60)+b(58,60)+0.95*b(91,60)+0.76   &
10522                 *b(102,60)+0.5*b(104,60)+0.91*b(126,60)+0.8*b(127,60)   &
10523                 +b(128,60)
10524       jvs(700) = b(20,61)+b(22,61)+b(25,61)-b(29,61)+b(30,61)+b(44,61)   &
10525                 +b(45,61)+b(48,61)+b(51,61)+b(65,61)+b(82,61)+b(85,61)   &
10526                 +b(86,61)+0.2*b(89,61)+0.55*b(90,61)+0.6*b(92,61)+2   &
10527                 *b(95,61)+0.965*b(138,61)+0.27*b(143,61)
10528       jvs(701) = b(25,62)-b(41,62)+b(52,62)+b(59,62)+b(60,62)+0.9   &
10529                 *b(106,62)+0.5*b(108,62)+0.93*b(125,62)
10530       jvs(702) = -b(21,63)-b(29,63)-2*b(31,63)-2*b(32,63)-b(33,63)   &
10531                 -b(34,63)-b(35,63)-b(41,63)-b(61,63)-b(62,63)-b(73,63)   &
10532                 -b(110,63)-b(111,63)-b(112,63)-b(113,63)-b(129,63)   &
10533                 -b(130,63)-b(131,63)-b(147,63)-b(155,63)-b(165,63)
10534       jvs(703) = -b(111,64)
10535       jvs(704) = b(77,41)
10536       jvs(705) = 0.11*b(84,42)
10537       jvs(706) = 0
10538       jvs(707) = 0
10539       jvs(708) = 0
10540       jvs(709) = 0.11*b(84,58)
10541       jvs(710) = 0
10542       jvs(711) = -b(103,60)
10543       jvs(712) = b(77,61)
10544       jvs(713) = -b(107,62)
10545       jvs(714) = -b(111,63)
10546       jvs(715) = -b(103,64)-b(107,64)-b(111,64)-b(115,64)
10547       return
10548       end subroutine cbmz_v02r06_jacob                                    
10551 !-----------------------------------------------------------------------------
10552       subroutine cbmz_v02r06_decomp( n, v, ier,   &
10553           lu_crow_v, lu_diag_v, lu_icol_v )
10555 !   computes l-u-decomposition of sparse jacobian
10556 !   for mechanism-version-regime = cbmz_v02r06
10558       use module_data_cbmz
10559       implicit none
10561 !   subr parameters
10562 !     n = number of variable species [input]
10563       integer n
10564 !     ier = status flag [output]
10565 !         0 = success    other = failure [output]
10566       integer ier
10568 !     v = non-zero elements of the sparse jacobian [input]
10569       real v(lu_nonzero_v_r06_kpp)
10571       integer lu_crow_v(nvar_r06_kpp + 1)
10572       integer lu_diag_v(nvar_r06_kpp + 1)
10573       integer lu_icol_v(lu_nonzero_v_r06_kpp)
10575 !   local variables
10576       integer k, kk, j, jj
10577       real a, w(nvar_r06_kpp + 1)
10579       ier = 0
10580       do k=1,n
10581         if ( v( lu_diag_v(k) ) .eq. 0. ) then
10582             ier = k
10583             return
10584         end if
10585         do kk = lu_crow_v(k), lu_crow_v(k+1)-1
10586               w( lu_icol_v(kk) ) = v(kk)
10587         end do
10588         do kk = lu_crow_v(k), lu_diag_v(k)-1
10589             j = lu_icol_v(kk)
10590             a = -w(j) / v( lu_diag_v(j) )
10591             w(j) = -a
10592             do jj = lu_diag_v(j)+1, lu_crow_v(j+1)-1
10593                w( lu_icol_v(jj) ) = w( lu_icol_v(jj) ) + a*v(jj)
10594             end do
10595          end do
10596          do kk = lu_crow_v(k), lu_crow_v(k+1)-1
10597             v(kk) = w( lu_icol_v(kk) )
10598          end do
10599       end do
10600       return
10601       end subroutine cbmz_v02r06_decomp            
10604 !-----------------------------------------------------------------------------
10605       subroutine cbmz_v02r06_solve( jvs, x )
10607 !   does back-solve for mechanism-version-regime = cbmz_v02r06
10609       implicit none
10611 !   subr parameters
10612 !     jvs = the non-zero elements of the l-u-decomposition
10613 !           of the augmented jacobian [input]
10614       real jvs(*)
10615 !     x = the right-hand side of the linear equation set being solved [on input]
10616 !     x = concentrations of variable species [on output]
10617       real x(*)
10620       x(18) = x(18)-jvs(64)*x(12)-jvs(65)*x(15)
10621       x(26) = x(26)-jvs(108)*x(12)-jvs(109)*x(15)
10622       x(28) = x(28)-jvs(117)*x(11)-jvs(118)*x(19)
10623       x(30) = x(30)-jvs(129)*x(15)-jvs(130)*x(20)-jvs(131)*x(29)
10624       x(31) = x(31)-jvs(147)*x(22)
10625       x(32) = x(32)-jvs(163)*x(18)-jvs(164)*x(26)
10626       x(33) = x(33)-jvs(170)*x(14)-jvs(171)*x(26)
10627       x(39) = x(39)-jvs(206)*x(34)
10628       x(40) = x(40)-jvs(214)*x(12)-jvs(215)*x(15)-jvs(216)*x(22)   &
10629              -jvs(217)*x(26)-jvs(218)*x(32)-jvs(219)*x(37)-jvs(220)   &
10630              *x(38)
10631       x(41) = x(41)-jvs(233)*x(36)
10632       x(43) = x(43)-jvs(250)*x(15)-jvs(251)*x(32)-jvs(252)*x(36)   &
10633              -jvs(253)*x(37)-jvs(254)*x(42)
10634       x(44) = x(44)-jvs(264)*x(9)-jvs(265)*x(21)-jvs(266)*x(37)   &
10635              -jvs(267)*x(42)
10636       x(45) = x(45)-jvs(277)*x(19)-jvs(278)*x(34)
10637       x(46) = x(46)-jvs(286)*x(6)-jvs(287)*x(34)
10638       x(47) = x(47)-jvs(294)*x(37)-jvs(295)*x(42)
10639       x(48) = x(48)-jvs(303)*x(7)-jvs(304)*x(21)-jvs(305)*x(22)   &
10640              -jvs(306)*x(29)-jvs(307)*x(32)-jvs(308)*x(36)-jvs(309)   &
10641              *x(37)-jvs(310)*x(38)-jvs(311)*x(42)-jvs(312)*x(44)   &
10642              -jvs(313)*x(47)
10643       x(49) = x(49)-jvs(324)*x(22)-jvs(325)*x(23)-jvs(326)*x(25)   &
10644              -jvs(327)*x(27)-jvs(328)*x(28)-jvs(329)*x(32)-jvs(330)   &
10645              *x(34)-jvs(331)*x(35)-jvs(332)*x(36)-jvs(333)*x(37)   &
10646              -jvs(334)*x(38)-jvs(335)*x(39)-jvs(336)*x(42)-jvs(337)   &
10647              *x(45)-jvs(338)*x(46)-jvs(339)*x(47)
10648       x(50) = x(50)-jvs(353)*x(27)-jvs(354)*x(28)-jvs(355)*x(34)   &
10649              -jvs(356)*x(39)-jvs(357)*x(45)-jvs(358)*x(46)
10650       x(51) = x(51)-jvs(368)*x(29)-jvs(369)*x(35)-jvs(370)*x(38)
10651       x(52) = x(52)-jvs(377)*x(10)-jvs(378)*x(32)-jvs(379)*x(37)   &
10652              -jvs(380)*x(38)-jvs(381)*x(41)-jvs(382)*x(42)-jvs(383)   &
10653              *x(43)-jvs(384)*x(48)-jvs(385)*x(51)
10654       x(53) = x(53)-jvs(397)*x(35)-jvs(398)*x(36)-jvs(399)*x(38)   &
10655              -jvs(400)*x(51)
10656       x(54) = x(54)-jvs(409)*x(27)-jvs(410)*x(39)-jvs(411)*x(45)   &
10657              -jvs(412)*x(46)-jvs(413)*x(49)-jvs(414)*x(50)-jvs(415)   &
10658              *x(51)
10659       x(55) = x(55)-jvs(426)*x(19)-jvs(427)*x(25)-jvs(428)*x(27)   &
10660              -jvs(429)*x(28)-jvs(430)*x(34)-jvs(431)*x(37)-jvs(432)   &
10661              *x(39)-jvs(433)*x(41)-jvs(434)*x(42)-jvs(435)*x(45)   &
10662              -jvs(436)*x(46)-jvs(437)*x(48)-jvs(438)*x(50)-jvs(439)   &
10663              *x(51)-jvs(440)*x(52)-jvs(441)*x(53)-jvs(442)*x(54)
10664       x(56) = x(56)-jvs(453)*x(10)-jvs(454)*x(14)-jvs(455)*x(16)   &
10665              -jvs(456)*x(17)-jvs(457)*x(18)-jvs(458)*x(24)-jvs(459)   &
10666              *x(26)-jvs(460)*x(27)-jvs(461)*x(28)-jvs(462)*x(29)   &
10667              -jvs(463)*x(33)-jvs(464)*x(34)-jvs(465)*x(35)-jvs(466)   &
10668              *x(36)-jvs(467)*x(38)-jvs(468)*x(39)-jvs(469)*x(40)   &
10669              -jvs(470)*x(42)-jvs(471)*x(43)-jvs(472)*x(44)-jvs(473)   &
10670              *x(45)-jvs(474)*x(46)-jvs(475)*x(47)-jvs(476)*x(48)   &
10671              -jvs(477)*x(49)-jvs(478)*x(50)-jvs(479)*x(51)-jvs(480)   &
10672              *x(52)-jvs(481)*x(53)-jvs(482)*x(54)-jvs(483)*x(55)
10673       x(57) = x(57)-jvs(493)*x(16)-jvs(494)*x(18)-jvs(495)*x(26)   &
10674              -jvs(496)*x(29)-jvs(497)*x(35)-jvs(498)*x(38)-jvs(499)   &
10675              *x(47)-jvs(500)*x(51)-jvs(501)*x(56)
10676       x(58) = x(58)-jvs(510)*x(22)-jvs(511)*x(32)-jvs(512)*x(37)   &
10677              -jvs(513)*x(38)-jvs(514)*x(42)-jvs(515)*x(46)-jvs(516)   &
10678              *x(50)-jvs(517)*x(51)-jvs(518)*x(52)-jvs(519)*x(53)   &
10679              -jvs(520)*x(54)-jvs(521)*x(55)-jvs(522)*x(56)-jvs(523)   &
10680              *x(57)
10681       x(59) = x(59)-jvs(531)*x(30)-jvs(532)*x(35)-jvs(533)*x(37)   &
10682              -jvs(534)*x(38)-jvs(535)*x(42)-jvs(536)*x(47)-jvs(537)   &
10683              *x(51)-jvs(538)*x(53)-jvs(539)*x(57)-jvs(540)*x(58)
10684       x(60) = x(60)-jvs(547)*x(18)-jvs(548)*x(24)-jvs(549)*x(27)   &
10685              -jvs(550)*x(28)-jvs(551)*x(29)-jvs(552)*x(34)-jvs(553)   &
10686              *x(35)-jvs(554)*x(36)-jvs(555)*x(38)-jvs(556)*x(39)   &
10687              -jvs(557)*x(40)-jvs(558)*x(42)-jvs(559)*x(43)-jvs(560)   &
10688              *x(44)-jvs(561)*x(46)-jvs(562)*x(47)-jvs(563)*x(50)   &
10689              -jvs(564)*x(51)-jvs(565)*x(52)-jvs(566)*x(53)-jvs(567)   &
10690              *x(54)-jvs(568)*x(55)-jvs(569)*x(56)-jvs(570)*x(57)   &
10691              -jvs(571)*x(58)-jvs(572)*x(59)
10692       x(61) = x(61)-jvs(578)*x(6)-jvs(579)*x(7)-jvs(580)*x(8)-jvs(581)   &
10693              *x(9)-jvs(582)*x(11)-jvs(583)*x(12)-jvs(584)*x(13)   &
10694              -jvs(585)*x(15)-jvs(586)*x(17)-jvs(587)*x(19)-jvs(588)   &
10695              *x(21)-jvs(589)*x(22)-jvs(590)*x(23)-jvs(591)*x(24)   &
10696              -jvs(592)*x(25)-jvs(593)*x(26)-jvs(594)*x(30)-jvs(595)   &
10697              *x(31)-jvs(596)*x(32)-jvs(597)*x(33)-jvs(598)*x(34)   &
10698              -jvs(599)*x(35)-jvs(600)*x(36)-jvs(601)*x(37)-jvs(602)   &
10699              *x(38)-jvs(603)*x(41)-jvs(604)*x(42)-jvs(605)*x(43)   &
10700              -jvs(606)*x(44)-jvs(607)*x(45)-jvs(608)*x(46)-jvs(609)   &
10701              *x(47)-jvs(610)*x(48)-jvs(611)*x(49)-jvs(612)*x(50)   &
10702              -jvs(613)*x(51)-jvs(614)*x(53)-jvs(615)*x(54)-jvs(616)   &
10703              *x(55)-jvs(617)*x(56)-jvs(618)*x(57)-jvs(619)*x(58)   &
10704              -jvs(620)*x(59)-jvs(621)*x(60)
10705       x(62) = x(62)-jvs(626)*x(14)-jvs(627)*x(26)-jvs(628)*x(33)   &
10706              -jvs(629)*x(34)-jvs(630)*x(37)-jvs(631)*x(38)-jvs(632)   &
10707              *x(40)-jvs(633)*x(42)-jvs(634)*x(43)-jvs(635)*x(44)   &
10708              -jvs(636)*x(45)-jvs(637)*x(46)-jvs(638)*x(47)-jvs(639)   &
10709              *x(48)-jvs(640)*x(49)-jvs(641)*x(50)-jvs(642)*x(51)   &
10710              -jvs(643)*x(52)-jvs(644)*x(53)-jvs(645)*x(54)-jvs(646)   &
10711              *x(55)-jvs(647)*x(56)-jvs(648)*x(57)-jvs(649)*x(58)   &
10712              -jvs(650)*x(59)-jvs(651)*x(60)-jvs(652)*x(61)
10713       x(63) = x(63)-jvs(656)*x(7)-jvs(657)*x(8)-jvs(658)*x(12)   &
10714              -jvs(659)*x(13)-jvs(660)*x(15)-jvs(661)*x(17)-jvs(662)   &
10715              *x(18)-jvs(663)*x(19)-jvs(664)*x(21)-jvs(665)*x(22)   &
10716              -jvs(666)*x(23)-jvs(667)*x(25)-jvs(668)*x(26)-jvs(669)   &
10717              *x(27)-jvs(670)*x(28)-jvs(671)*x(29)-jvs(672)*x(31)   &
10718              -jvs(673)*x(32)-jvs(674)*x(34)-jvs(675)*x(35)-jvs(676)   &
10719              *x(36)-jvs(677)*x(37)-jvs(678)*x(38)-jvs(679)*x(39)   &
10720              -jvs(680)*x(40)-jvs(681)*x(42)-jvs(682)*x(43)-jvs(683)   &
10721              *x(44)-jvs(684)*x(45)-jvs(685)*x(46)-jvs(686)*x(47)   &
10722              -jvs(687)*x(48)-jvs(688)*x(49)-jvs(689)*x(50)-jvs(690)   &
10723              *x(51)-jvs(691)*x(52)-jvs(692)*x(53)-jvs(693)*x(54)   &
10724              -jvs(694)*x(55)-jvs(695)*x(56)-jvs(696)*x(57)-jvs(697)   &
10725              *x(58)-jvs(698)*x(59)-jvs(699)*x(60)-jvs(700)*x(61)   &
10726              -jvs(701)*x(62)
10727       x(64) = x(64)-jvs(704)*x(41)-jvs(705)*x(42)-jvs(706)*x(51)   &
10728              -jvs(707)*x(53)-jvs(708)*x(57)-jvs(709)*x(58)-jvs(710)   &
10729              *x(59)-jvs(711)*x(60)-jvs(712)*x(61)-jvs(713)*x(62)   &
10730              -jvs(714)*x(63)
10731       x(64) = x(64)/jvs(715)
10732       x(63) = (x(63)-jvs(703)*x(64))/(jvs(702))
10733       x(62) = (x(62)-jvs(654)*x(63)-jvs(655)*x(64))/(jvs(653))
10734       x(61) = (x(61)-jvs(623)*x(62)-jvs(624)*x(63)-jvs(625)*x(64))/   &
10735              (jvs(622))
10736       x(60) = (x(60)-jvs(574)*x(61)-jvs(575)*x(62)-jvs(576)*x(63)   &
10737              -jvs(577)*x(64))/(jvs(573))
10738       x(59) = (x(59)-jvs(542)*x(60)-jvs(543)*x(61)-jvs(544)*x(62)   &
10739              -jvs(545)*x(63)-jvs(546)*x(64))/(jvs(541))
10740       x(58) = (x(58)-jvs(525)*x(59)-jvs(526)*x(60)-jvs(527)*x(61)   &
10741              -jvs(528)*x(62)-jvs(529)*x(63)-jvs(530)*x(64))/(jvs(524))
10742       x(57) = (x(57)-jvs(503)*x(58)-jvs(504)*x(59)-jvs(505)*x(60)   &
10743              -jvs(506)*x(61)-jvs(507)*x(62)-jvs(508)*x(63)-jvs(509)   &
10744              *x(64))/(jvs(502))
10745       x(56) = (x(56)-jvs(485)*x(57)-jvs(486)*x(58)-jvs(487)*x(59)   &
10746              -jvs(488)*x(60)-jvs(489)*x(61)-jvs(490)*x(62)-jvs(491)   &
10747              *x(63)-jvs(492)*x(64))/(jvs(484))
10748       x(55) = (x(55)-jvs(444)*x(56)-jvs(445)*x(57)-jvs(446)*x(58)   &
10749              -jvs(447)*x(59)-jvs(448)*x(60)-jvs(449)*x(61)-jvs(450)   &
10750              *x(62)-jvs(451)*x(63)-jvs(452)*x(64))/(jvs(443))
10751       x(54) = (x(54)-jvs(417)*x(55)-jvs(418)*x(56)-jvs(419)*x(57)   &
10752              -jvs(420)*x(58)-jvs(421)*x(60)-jvs(422)*x(61)-jvs(423)   &
10753              *x(62)-jvs(424)*x(63)-jvs(425)*x(64))/(jvs(416))
10754       x(53) = (x(53)-jvs(402)*x(58)-jvs(403)*x(59)-jvs(404)*x(60)   &
10755              -jvs(405)*x(61)-jvs(406)*x(62)-jvs(407)*x(63)-jvs(408)   &
10756              *x(64))/(jvs(401))
10757       x(52) = (x(52)-jvs(387)*x(53)-jvs(388)*x(56)-jvs(389)*x(57)   &
10758              -jvs(390)*x(58)-jvs(391)*x(59)-jvs(392)*x(60)-jvs(393)   &
10759              *x(61)-jvs(394)*x(62)-jvs(395)*x(63)-jvs(396)*x(64))/   &
10760              (jvs(386))
10761       x(51) = (x(51)-jvs(372)*x(58)-jvs(373)*x(60)-jvs(374)*x(61)   &
10762              -jvs(375)*x(62)-jvs(376)*x(63))/(jvs(371))
10763       x(50) = (x(50)-jvs(360)*x(54)-jvs(361)*x(55)-jvs(362)*x(56)   &
10764              -jvs(363)*x(58)-jvs(364)*x(60)-jvs(365)*x(61)-jvs(366)   &
10765              *x(62)-jvs(367)*x(63))/(jvs(359))
10766       x(49) = (x(49)-jvs(341)*x(50)-jvs(342)*x(51)-jvs(343)*x(54)   &
10767              -jvs(344)*x(55)-jvs(345)*x(56)-jvs(346)*x(57)-jvs(347)   &
10768              *x(58)-jvs(348)*x(60)-jvs(349)*x(61)-jvs(350)*x(62)   &
10769              -jvs(351)*x(63)-jvs(352)*x(64))/(jvs(340))
10770       x(48) = (x(48)-jvs(315)*x(51)-jvs(316)*x(53)-jvs(317)*x(57)   &
10771              -jvs(318)*x(58)-jvs(319)*x(59)-jvs(320)*x(60)-jvs(321)   &
10772              *x(61)-jvs(322)*x(62)-jvs(323)*x(63))/(jvs(314))
10773       x(47) = (x(47)-jvs(297)*x(57)-jvs(298)*x(58)-jvs(299)*x(60)   &
10774              -jvs(300)*x(61)-jvs(301)*x(62)-jvs(302)*x(63))/(jvs(296))
10775       x(46) = (x(46)-jvs(289)*x(56)-jvs(290)*x(58)-jvs(291)*x(60)   &
10776              -jvs(292)*x(61)-jvs(293)*x(62))/(jvs(288))
10777       x(45) = (x(45)-jvs(280)*x(46)-jvs(281)*x(54)-jvs(282)*x(55)   &
10778              -jvs(283)*x(61)-jvs(284)*x(62)-jvs(285)*x(63))/(jvs(279))
10779       x(44) = (x(44)-jvs(269)*x(53)-jvs(270)*x(57)-jvs(271)*x(58)   &
10780              -jvs(272)*x(59)-jvs(273)*x(60)-jvs(274)*x(61)-jvs(275)   &
10781              *x(62)-jvs(276)*x(63))/(jvs(268))
10782       x(43) = (x(43)-jvs(256)*x(51)-jvs(257)*x(53)-jvs(258)*x(58)   &
10783              -jvs(259)*x(60)-jvs(260)*x(61)-jvs(261)*x(62)-jvs(262)   &
10784              *x(63)-jvs(263)*x(64))/(jvs(255))
10785       x(42) = (x(42)-jvs(247)*x(58)-jvs(248)*x(61)-jvs(249)*x(62))/   &
10786              (jvs(246))
10787       x(41) = (x(41)-jvs(235)*x(42)-jvs(236)*x(51)-jvs(237)*x(53)   &
10788              -jvs(238)*x(57)-jvs(239)*x(58)-jvs(240)*x(59)-jvs(241)   &
10789              *x(60)-jvs(242)*x(61)-jvs(243)*x(62)-jvs(244)*x(63)   &
10790              -jvs(245)*x(64))/(jvs(234))
10791       x(40) = (x(40)-jvs(222)*x(42)-jvs(223)*x(43)-jvs(224)*x(51)   &
10792              -jvs(225)*x(53)-jvs(226)*x(57)-jvs(227)*x(58)-jvs(228)   &
10793              *x(59)-jvs(229)*x(60)-jvs(230)*x(61)-jvs(231)*x(62)   &
10794              -jvs(232)*x(63))/(jvs(221))
10795       x(39) = (x(39)-jvs(208)*x(46)-jvs(209)*x(50)-jvs(210)*x(55)   &
10796              -jvs(211)*x(60)-jvs(212)*x(61)-jvs(213)*x(62))/(jvs(207))
10797       x(38) = (x(38)-jvs(203)*x(58)-jvs(204)*x(61)-jvs(205)*x(62))/   &
10798              (jvs(202))
10799       x(37) = (x(37)-jvs(199)*x(58)-jvs(200)*x(61)-jvs(201)*x(62))/   &
10800              (jvs(198))
10801       x(36) = (x(36)-jvs(194)*x(51)-jvs(195)*x(60)-jvs(196)*x(61)   &
10802              -jvs(197)*x(63))/(jvs(193))
10803       x(35) = (x(35)-jvs(189)*x(38)-jvs(190)*x(60)-jvs(191)*x(61)   &
10804              -jvs(192)*x(63))/(jvs(188))
10805       x(34) = (x(34)-jvs(185)*x(46)-jvs(186)*x(61)-jvs(187)*x(62))/   &
10806              (jvs(184))
10807       x(33) = (x(33)-jvs(173)*x(34)-jvs(174)*x(43)-jvs(175)*x(45)   &
10808              -jvs(176)*x(48)-jvs(177)*x(49)-jvs(178)*x(51)-jvs(179)   &
10809              *x(54)-jvs(180)*x(56)-jvs(181)*x(61)-jvs(182)*x(62)   &
10810              -jvs(183)*x(63))/(jvs(172))
10811       x(32) = (x(32)-jvs(166)*x(58)-jvs(167)*x(60)-jvs(168)*x(61)   &
10812              -jvs(169)*x(62))/(jvs(165))
10813       x(31) = (x(31)-jvs(149)*x(32)-jvs(150)*x(36)-jvs(151)*x(37)   &
10814              -jvs(152)*x(38)-jvs(153)*x(42)-jvs(154)*x(43)-jvs(155)   &
10815              *x(48)-jvs(156)*x(49)-jvs(157)*x(51)-jvs(158)*x(54)   &
10816              -jvs(159)*x(58)-jvs(160)*x(60)-jvs(161)*x(61)-jvs(162)   &
10817              *x(62))/(jvs(148))
10818       x(30) = (x(30)-jvs(133)*x(35)-jvs(134)*x(37)-jvs(135)*x(38)   &
10819              -jvs(136)*x(42)-jvs(137)*x(47)-jvs(138)*x(51)-jvs(139)   &
10820              *x(53)-jvs(140)*x(57)-jvs(141)*x(58)-jvs(142)*x(59)   &
10821              -jvs(143)*x(60)-jvs(144)*x(61)-jvs(145)*x(62)-jvs(146)   &
10822              *x(63))/(jvs(132))
10823       x(29) = (x(29)-jvs(125)*x(38)-jvs(126)*x(60)-jvs(127)*x(62)   &
10824              -jvs(128)*x(63))/(jvs(124))
10825       x(28) = (x(28)-jvs(120)*x(34)-jvs(121)*x(55)-jvs(122)*x(60)   &
10826              -jvs(123)*x(61))/(jvs(119))
10827       x(27) = (x(27)-jvs(114)*x(50)-jvs(115)*x(55)-jvs(116)*x(60))/   &
10828              (jvs(113))
10829       x(26) = (x(26)-jvs(111)*x(61)-jvs(112)*x(62))/(jvs(110))
10830       x(25) = (x(25)-jvs(104)*x(45)-jvs(105)*x(55)-jvs(106)*x(61)   &
10831              -jvs(107)*x(63))/(jvs(103))
10832       x(24) = (x(24)-jvs(98)*x(54)-jvs(99)*x(56)-jvs(100)*x(60)   &
10833              -jvs(101)*x(61)-jvs(102)*x(63))/(jvs(97))
10834       x(23) = (x(23)-jvs(92)*x(37)-jvs(93)*x(42)-jvs(94)*x(55)-jvs(95)   &
10835              *x(58)-jvs(96)*x(61))/(jvs(91))
10836       x(22) = (x(22)-jvs(89)*x(58)-jvs(90)*x(61))/(jvs(88))
10837       x(21) = (x(21)-jvs(85)*x(44)-jvs(86)*x(61)-jvs(87)*x(63))/   &
10838              (jvs(84))
10839       x(20) = (x(20)-jvs(73)*x(30)-jvs(74)*x(37)-jvs(75)*x(42)-jvs(76)   &
10840              *x(47)-jvs(77)*x(53)-jvs(78)*x(57)-jvs(79)*x(58)-jvs(80)   &
10841              *x(59)-jvs(81)*x(60)-jvs(82)*x(61)-jvs(83)*x(62))/   &
10842              (jvs(72))
10843       x(19) = (x(19)-jvs(70)*x(34)-jvs(71)*x(61))/(jvs(69))
10844       x(18) = (x(18)-jvs(67)*x(60)-jvs(68)*x(61))/(jvs(66))
10845       x(17) = (x(17)-jvs(61)*x(56)-jvs(62)*x(61)-jvs(63)*x(63))/   &
10846              (jvs(60))
10847       x(16) = (x(16)-jvs(56)*x(26)-jvs(57)*x(56)-jvs(58)*x(61)-jvs(59)   &
10848              *x(62))/(jvs(55))
10849       x(15) = (x(15)-jvs(54)*x(61))/(jvs(53))
10850       x(14) = (x(14)-jvs(51)*x(56)-jvs(52)*x(62))/(jvs(50))
10851       x(13) = (x(13)-jvs(47)*x(45)-jvs(48)*x(61)-jvs(49)*x(63))/   &
10852              (jvs(46))
10853       x(12) = (x(12)-jvs(45)*x(61))/(jvs(44))
10854       x(11) = (x(11)-jvs(42)*x(19)-jvs(43)*x(61))/(jvs(41))
10855       x(10) = (x(10)-jvs(39)*x(52)-jvs(40)*x(56))/(jvs(38))
10856       x(9) = (x(9)-jvs(36)*x(44)-jvs(37)*x(61))/(jvs(35))
10857       x(8) = (x(8)-jvs(33)*x(50)-jvs(34)*x(61))/(jvs(32))
10858       x(7) = (x(7)-jvs(31)*x(61))/(jvs(30))
10859       x(6) = (x(6)-jvs(29)*x(58))/(jvs(28))
10860       x(5) = (x(5)-jvs(27)*x(39))/(jvs(26))
10861       x(4) = (x(4)-jvs(18)*x(45)-jvs(19)*x(49)-jvs(20)*x(50)-jvs(21)   &
10862             *x(54)-jvs(22)*x(56)-jvs(23)*x(60)-jvs(24)*x(61)-jvs(25)   &
10863             *x(63))/(jvs(17))
10864       x(3) = (x(3)-jvs(12)*x(37)-jvs(13)*x(42)-jvs(14)*x(52)-jvs(15)   &
10865             *x(58)-jvs(16)*x(63))/(jvs(11))
10866       x(2) = (x(2)-jvs(6)*x(22)-jvs(7)*x(37)-jvs(8)*x(38)-jvs(9)*x(51)   &
10867             -jvs(10)*x(58))/(jvs(5))
10868       x(1) = (x(1)-jvs(2)*x(8)-jvs(3)*x(54)-jvs(4)*x(61))/(jvs(1))
10869       return
10870       end subroutine cbmz_v02r06_solve          
10873 !-----------------------------------------------------------------------
10874       end module module_cbmz_rodas_prep