Skip to content

Commit eb855f9

Browse files
committed
Calculate core species net consumption rates & core radical net termination rates
1 parent 78b0518 commit eb855f9

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

src/EdgeAnalysis.jl

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,10 @@ function processfluxes(sim::SystemSimulation,
330330
corespeciesconcentrations = cs[corespcsinds]
331331
corespeciesconsumptionrates = zeros(length(corespeciesconcentrations))
332332
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))
333337

334338
#process core species consumption and production rates
335339
index = 1
@@ -338,18 +342,28 @@ function processfluxes(sim::SystemSimulation,
338342
if @inbounds any(d.rxnarray[:,i].>length(corespeciesconcentrations))
339343
continue
340344
end
345+
net_forward_rate = max(frts[i+index]-rrts[i+index], 0.0)
341346
for j = 1:4
342347
if @inbounds d.rxnarray[j,i] != 0
343348
@inbounds corespeciesconsumptionrates[d.rxnarray[j,i]] += frts[i+index]
344349
@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
345354
else
346355
break
347356
end
348357
end
358+
net_reverse_rate = max(rrts[i+index]-frts[i+index], 0.0)
349359
for j = 5:8
350360
if @inbounds d.rxnarray[j,i] != 0
351361
@inbounds corespeciesproductionrates[d.rxnarray[j,i]] += frts[i+index]
352362
@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
353367
else
354368
break
355369
end
@@ -363,18 +377,28 @@ function processfluxes(sim::SystemSimulation,
363377
if @inbounds any(d.rxnarray[:,i].>length(corespeciesconcentrations))
364378
continue
365379
end
380+
net_forward_rate = max(frts[i+index]-rrts[i+index], 0.0)
366381
for j = 1:4
367382
if @inbounds d.rxnarray[j,i] != 0
368383
@inbounds corespeciesconsumptionrates[d.rxnarray[j,i]] += frts[i+index]
369384
@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
370389
else
371390
break
372391
end
373392
end
393+
net_reverse_rate = max(rrts[i+index]-frts[i+index], 0.0)
374394
for j = 5:8
375395
if @inbounds d.rxnarray[j,i] != 0
376396
@inbounds corespeciesproductionrates[d.rxnarray[j,i]] += frts[i+index]
377397
@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
378402
else
379403
break
380404
end
@@ -384,7 +408,7 @@ function processfluxes(sim::SystemSimulation,
384408
end
385409
end
386410

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
388412
end
389413

390414
"""
@@ -416,32 +440,44 @@ function processfluxes(sim::Simulation,corespcsinds,corerxninds,edgespcsinds,edg
416440
@inbounds corespeciesconcentrations = cs[corespcsinds]
417441
corespeciesconsumptionrates = zeros(length(corespeciesconcentrations))
418442
corespeciesproductionrates = zeros(length(corespeciesconcentrations))
443+
corespeciesnetconsumptionrates = zeros(length(corespeciesconcentrations))
444+
coreradicalnetterminationrates = zeros(length(corespeciesconcentrations))
419445

420446
#process core species consumption and production rates
421447
d = sim.domain
422448
@inbounds for i = 1:size(d.rxnarray)[2]
423449
if @inbounds any(d.rxnarray[:,i].>length(corespeciesconcentrations))
424450
continue
425451
end
452+
net_forward_rate = max(frts[i]-rrts[i], 0.0)
426453
for j = 1:4
427454
if @inbounds d.rxnarray[j,i] != 0
428455
@inbounds corespeciesconsumptionrates[d.rxnarray[j,i]] += frts[i]
429456
@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
430461
else
431462
break
432463
end
433464
end
465+
net_reverse_rate = max(rrts[i]-frts[i], 0.0)
434466
for j = 5:8
435467
if @inbounds d.rxnarray[j,i] != 0
436468
@inbounds corespeciesproductionrates[d.rxnarray[j,i]] += frts[i]
437469
@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
438474
else
439475
break
440476
end
441477
end
442478
end
443479

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
445481
end
446482

447483
export processfluxes

0 commit comments

Comments
 (0)