@@ -177,6 +177,56 @@ export addreactionratecontributions!
177177 calcdomainderivatives! (domain,dydt,interfaces;t= t,T= T,P= P,Us= Us,Hs= Hs,V= V,C= C,ns= ns,N= N,Cvave= Cvave)
178178 return dydt
179179end
180+ @inline function dydtreactor! (dydt:: RC ,y:: U ,t:: Z ,domains:: Q ,interfaces:: B ;p:: RV = DiffEqBase. NullParameters (),sensitivity:: Bool = true ) where {RC,RV,B<: AbstractArray ,Z<: Real ,U,J<: Integer ,Q<: Tuple }
181+ cstot = zeros (typeof (y). parameters[1 ],length (y))
182+ dydt .= 0.0
183+ domain = domains[1 ]
184+ ns,cs,T,P,V,C,N,mu,kfs,krevs,Hs,Us,Gs,diffs,Cvave = calcthermo (domain,y,t,p)
185+ vns = Array {Any,1} (undef,length (domains))
186+ vns[1 ] = ns
187+ vcs = Array {Any,1} (undef,length (domains))
188+ vcs[1 ] = cs
189+ cstot[domain. indexes[1 ]: domain. indexes[2 ]] = cs
190+ vT = Array {Any,1} (undef,length (domains))
191+ vT[1 ] = T
192+ vP = Array {Any,1} (undef,length (domains))
193+ vP[1 ] = P
194+ vV = Array {Any,1} (undef,length (domains))
195+ vV[1 ] = V
196+ vC = Array {Any,1} (undef,length (domains))
197+ vC[1 ] = C
198+ vN = Array {Any,1} (undef,length (domains))
199+ vN[1 ] = N
200+ vmu = Array {Any,1} (undef,length (domains))
201+ vmu[1 ] = mu
202+ vkfs = Array {Any,1} (undef,length (domains))
203+ vkfs[1 ] = kfs
204+ vkrevs = Array {Any,1} (undef,length (domains))
205+ vkrevs[1 ] = krevs
206+ vHs = Array {Any,1} (undef,length (domains))
207+ vHs[1 ] = Hs
208+ vUs = Array {Any,1} (undef,length (domains))
209+ vUs[1 ] = Us
210+ vGs = Array {Any,1} (undef,length (domains))
211+ vGs[1 ] = Gs
212+ vdiffs = Array {Any,1} (undef,length (domains))
213+ vdiffs[1 ] = diffs
214+ vCvave = Array {Any,1} (undef,length (domains))
215+ vCvave[1 ] = Cvave
216+ addreactionratecontributions! (dydt,domain. rxnarray,cstot,kfs,krevs)
217+ @views dydt[domain. indexes[1 ]: domain. indexes[2 ]] .*= V
218+ for (i,domain) in enumerate (@views domains[2 : end ])
219+ k = i + 1
220+ vns[k],vcs[k],vT[k],vP[k],vV[k],vC[k],vN[k],vmu[k],vkfs[k],vkrevs[k],vHs[k],vUs[k],vGs[k],vdiffs[k],vCvave[k] = calcthermo (domain,y,t,p)
221+ cstot[domain. indexes[1 ]: domain. indexes[2 ]] .= vcs[k]
222+ addreactionratecontributions! (dydt,domain. rxnarray,cstot,vkfs[k],vkrevs[k])
223+ @views dydt[domain. indexes[1 ]: domain. indexes[2 ]] .*= vV[k]
224+ end
225+ for (i,domain) in enumerate (domains)
226+ calcdomainderivatives! (domain,dydt,interfaces;t= t,T= vT[i],P= vP[i],Us= vUs[i],Hs= vHs[i],V= vV[i],C= vC[i],ns= vns[i],N= vN[i],Cvave= vCvave[i])
227+ end
228+ return dydt
229+ end
180230export dydtreactor!
181231
182232function jacobianyforwarddiff! (J:: Q ,y:: U ,p:: W ,t:: Z ,domain:: V ,interfaces:: Q3 ,colorvec:: Q2 = nothing ) where {Q3<: AbstractArray ,Q2,Q<: AbstractArray ,U<: AbstractArray ,W,Z<: Real ,V<: AbstractDomain }
0 commit comments