@@ -330,6 +330,10 @@ function processfluxes(sim::SystemSimulation,
330
330
corespeciesconcentrations = cs[corespcsinds]
331
331
corespeciesconsumptionrates = zeros (length (corespeciesconcentrations))
332
332
corespeciesproductionrates = zeros (length (corespeciesconcentrations))
333
+ # record the net consumption rates for core adicals, defined as sum_rxn max(L_rxn-P_rxn,0.0)
334
+ corespeciesnetconsumptionrates = zeros (length (corespeciesconcentrations))
335
+ # record the net termination rates for core radicals, defined as sum_rxn max(L_rxn-P_rxn,0.0) * min(radicalchange_rxn,0.0)
336
+ coreradicalnetterminationrates = zeros (length (corespeciesconcentrations))
333
337
334
338
# process core species consumption and production rates
335
339
index = 1
@@ -338,18 +342,28 @@ function processfluxes(sim::SystemSimulation,
338
342
if @inbounds any (d. rxnarray[:,i]. > length (corespeciesconcentrations))
339
343
continue
340
344
end
345
+ net_forward_rate = max (frts[i+ index]- rrts[i+ index], 0.0 )
341
346
for j = 1 : 4
342
347
if @inbounds d. rxnarray[j,i] != 0
343
348
@inbounds corespeciesconsumptionrates[d. rxnarray[j,i]] += frts[i+ index]
344
349
@inbounds corespeciesproductionrates[d. rxnarray[j,i]] += rrts[i+ index]
350
+ corespeciesnetconsumptionrates[d. rxnarray[j,i]] += net_forward_rate
351
+ if d. phase. species[d. rxnarray[j,i]]. radicalelectrons == 1
352
+ coreradicalnetterminationrates[d. rxnarray[j,i]] += net_forward_rate * abs (min (d. phase. reactions[i]. radicalchange, 0.0 ))
353
+ end
345
354
else
346
355
break
347
356
end
348
357
end
358
+ net_reverse_rate = max (rrts[i+ index]- frts[i+ index], 0.0 )
349
359
for j = 5 : 8
350
360
if @inbounds d. rxnarray[j,i] != 0
351
361
@inbounds corespeciesproductionrates[d. rxnarray[j,i]] += frts[i+ index]
352
362
@inbounds corespeciesconsumptionrates[d. rxnarray[j,i]] += rrts[i+ index]
363
+ corespeciesnetconsumptionrates[d. rxnarray[j,i]] += net_reverse_rate
364
+ if d. phase. species[d. rxnarray[j,i]]. radicalelectrons == 1
365
+ coreradicalnetterminationrates[d. rxnarray[j,i]] += net_reverse_rate * abs (min (- d. phase. reactions[i]. radicalchange, 0.0 ))
366
+ end
353
367
else
354
368
break
355
369
end
@@ -363,18 +377,28 @@ function processfluxes(sim::SystemSimulation,
363
377
if @inbounds any (d. rxnarray[:,i]. > length (corespeciesconcentrations))
364
378
continue
365
379
end
380
+ net_forward_rate = max (frts[i+ index]- rrts[i+ index], 0.0 )
366
381
for j = 1 : 4
367
382
if @inbounds d. rxnarray[j,i] != 0
368
383
@inbounds corespeciesconsumptionrates[d. rxnarray[j,i]] += frts[i+ index]
369
384
@inbounds corespeciesproductionrates[d. rxnarray[j,i]] += rrts[i+ index]
385
+ corespeciesnetconsumptionrates[d. rxnarray[j,i]] += net_forward_rate
386
+ if d. phase. species[d. rxnarray[j,i]]. radicalelectrons == 1
387
+ coreradicalnetterminationrates[d. rxnarray[j,i]] += net_forward_rate * abs (min (d. phase. reactions[i]. radicalchange, 0.0 ))
388
+ end
370
389
else
371
390
break
372
391
end
373
392
end
393
+ net_reverse_rate = max (rrts[i+ index]- frts[i+ index], 0.0 )
374
394
for j = 5 : 8
375
395
if @inbounds d. rxnarray[j,i] != 0
376
396
@inbounds corespeciesproductionrates[d. rxnarray[j,i]] += frts[i+ index]
377
397
@inbounds corespeciesconsumptionrates[d. rxnarray[j,i]] += rrts[i+ index]
398
+ corespeciesnetconsumptionrates[d. rxnarray[j,i]] += net_reverse_rate
399
+ if d. phase. species[d. rxnarray[j,i]]. radicalelectrons == 1
400
+ coreradicalnetterminationrates[d. rxnarray[j,i]] += net_reverse_rate * abs (min (- d. phase. reactions[i]. radicalchange, 0.0 ))
401
+ end
378
402
else
379
403
break
380
404
end
@@ -384,7 +408,7 @@ function processfluxes(sim::SystemSimulation,
384
408
end
385
409
end
386
410
387
- return dydt,rts,frts,rrts,cs,corespeciesrates,charrate,edgespeciesrates,edgereactionrates,edgerxnradrateratios,corespeciesrateratios,edgespeciesrateratios,corereactionrates,corespeciesconcentrations,corespeciesproductionrates,corespeciesconsumptionrates
411
+ return dydt,rts,frts,rrts,cs,corespeciesrates,charrate,edgespeciesrates,edgereactionrates,edgerxnradrateratios,corespeciesrateratios,edgespeciesrateratios,corereactionrates,corespeciesconcentrations,corespeciesproductionrates,corespeciesconsumptionrates,corespeciesnetconsumptionrates,coreradicalnetterminationrates
388
412
end
389
413
390
414
"""
@@ -416,32 +440,44 @@ function processfluxes(sim::Simulation,corespcsinds,corerxninds,edgespcsinds,edg
416
440
@inbounds corespeciesconcentrations = cs[corespcsinds]
417
441
corespeciesconsumptionrates = zeros (length (corespeciesconcentrations))
418
442
corespeciesproductionrates = zeros (length (corespeciesconcentrations))
443
+ corespeciesnetconsumptionrates = zeros (length (corespeciesconcentrations))
444
+ coreradicalnetterminationrates = zeros (length (corespeciesconcentrations))
419
445
420
446
# process core species consumption and production rates
421
447
d = sim. domain
422
448
@inbounds for i = 1 : size (d. rxnarray)[2 ]
423
449
if @inbounds any (d. rxnarray[:,i]. > length (corespeciesconcentrations))
424
450
continue
425
451
end
452
+ net_forward_rate = max (frts[i]- rrts[i], 0.0 )
426
453
for j = 1 : 4
427
454
if @inbounds d. rxnarray[j,i] != 0
428
455
@inbounds corespeciesconsumptionrates[d. rxnarray[j,i]] += frts[i]
429
456
@inbounds corespeciesproductionrates[d. rxnarray[j,i]] += rrts[i]
457
+ corespeciesnetconsumptionrates[d. rxnarray[j,i]] += net_forward_rate
458
+ if d. phase. species[d. rxnarray[j,i]]. radicalelectrons == 1
459
+ coreradicalnetterminationrates[d. rxnarray[j,i]] += net_forward_rate * abs (min (d. phase. reactions[i]. radicalchange, 0.0 ))
460
+ end
430
461
else
431
462
break
432
463
end
433
464
end
465
+ net_reverse_rate = max (rrts[i]- frts[i], 0.0 )
434
466
for j = 5 : 8
435
467
if @inbounds d. rxnarray[j,i] != 0
436
468
@inbounds corespeciesproductionrates[d. rxnarray[j,i]] += frts[i]
437
469
@inbounds corespeciesconsumptionrates[d. rxnarray[j,i]] += rrts[i]
470
+ corespeciesnetconsumptionrates[d. rxnarray[j,i]] += net_reverse_rate
471
+ if d. phase. species[d. rxnarray[j,i]]. radicalelectrons == 1
472
+ coreradicalnetterminationrates[d. rxnarray[j,i]] += net_reverse_rate * abs (min (- d. phase. reactions[i]. radicalchange, 0.0 ))
473
+ end
438
474
else
439
475
break
440
476
end
441
477
end
442
478
end
443
479
444
- return dydt,rts,frts,rrts,cs,corespeciesrates,charrate,edgespeciesrates,edgereactionrates,edgerxnradrateratios,corespeciesrateratios,edgespeciesrateratios,corereactionrates,corespeciesconcentrations,corespeciesproductionrates,corespeciesconsumptionrates
480
+ return dydt,rts,frts,rrts,cs,corespeciesrates,charrate,edgespeciesrates,edgereactionrates,edgerxnradrateratios,corespeciesrateratios,edgespeciesrateratios,corereactionrates,corespeciesconcentrations,corespeciesproductionrates,corespeciesconsumptionrates,corespeciesnetconsumptionrates,coreradicalnetterminationrates
445
481
end
446
482
447
483
export processfluxes
0 commit comments