You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
return ns,cs,d.T, P, d.V, C, N, d.mu,d.kfs,d.krevs,Array{Float64,1}(),Array{Float64,1}(),Array{Float64,1}(),Array{Float64,1}(),0.0,Array{Float64,1}(),0.0
1202
1202
end
1203
1203
end
1204
1204
1205
1205
@inlinefunctioncalcthermo(d::ConstantTVGasDomain{W,Y},y::Array{W3,1},t::Q,p::W2=SciMLBase.NullParameters()) where {W2,W<:IdealGas,Y<:Integer,W3<:ForwardDiff.Dual,Q} #Autodiff y
1206
1206
ns = y[d.indexes[1]:d.indexes[2]]
1207
1207
P = y[d.indexes[3]]
1208
-
N = P*d.V/(R*d.T)
1208
+
N = P * d.V / (R * d.T)
1209
+
1209
1210
cs = ns./d.V
1210
1211
C = N/d.V
1211
1212
if!d.alternativepformat
@@ -1225,7 +1226,7 @@ end
1225
1226
@inlinefunctioncalcthermo(d::ConstantTVGasDomain{W,Y},y::J,t::Q,p::W2=SciMLBase.NullParameters()) where {W2,W<:IdealGas,Y<:Integer,J,Q} #Autodiff p
1226
1227
ns = y[d.indexes[1]:d.indexes[2]]
1227
1228
P = y[d.indexes[3]]
1228
-
N = P*d.V/(R*d.T)
1229
+
N = P*d.V/ (R *d.T)
1229
1230
cs = ns./d.V
1230
1231
C = N/d.V
1231
1232
if!d.alternativepformat
@@ -1239,13 +1240,13 @@ end
1239
1240
for ind in d.efficiencyinds #efficiency related rates may have changed
@inlinefunctioncalcthermo(d::ConstantTVGasDomain{W,Y},y::J,t::Q,p::W2=SciMLBase.NullParameters()) where {W2,W<:IdealGas,Y<:Integer,J<:Union{ReverseDiff.TrackedArray,Tracker.TrackedArray},Q} #Autodiff p
1246
1247
ns = y[d.indexes[1]:d.indexes[2]]
1247
1248
P = y[d.indexes[3]]
1248
-
N = P*d.V/(R*d.T)
1249
+
N = P*d.V/ (R *d.T)
1249
1250
cs = ns./d.V
1250
1251
C = N/d.V
1251
1252
kfs =similar(y,length(d.phase.reactions))
@@ -1267,7 +1268,7 @@ end
1267
1268
@inlinefunctioncalcthermo(d::ConstantTVGasDomain{W,Y},y::J,t::Q,p::W2=SciMLBase.NullParameters()) where {W2<:Union{ReverseDiff.TrackedArray,Tracker.TrackedArray},W<:IdealGas,Y<:Integer,J,Q} #Tracker/reversediff
1268
1269
ns = y[d.indexes[1]:d.indexes[2]]
1269
1270
P = y[d.indexes[3]]
1270
-
N = P*d.V/(R*d.T)
1271
+
N = P*d.V/ (R *d.T)
1271
1272
cs = ns./d.V
1272
1273
C = N/d.V
1273
1274
if!d.alternativepformat
@@ -1284,7 +1285,7 @@ end
1284
1285
@inlinefunctioncalcthermo(d::ConstantTVGasDomain{W,Y},y::J,t::Q,p::W2=SciMLBase.NullParameters()) where {W2<:Union{ReverseDiff.TrackedArray,Tracker.TrackedArray},W<:IdealGas,Y<:Integer,J<:Union{ReverseDiff.TrackedArray,Tracker.TrackedArray},Q} #Tracker/reversediff
elseifisa(inter, VolumetricFlowRateOutlet) && d == inter.domain
2166
+
dydt[d.indexes[1]:d.indexes[2]] .-= inter.Vout(t) * ns / V
2167
+
dydt[d.indexes[3]] -= inter.Vout(t)
2168
+
end
2169
+
end
2170
+
for inter in interfaces
2171
+
ifisa(inter, VolumeMaintainingOutlet) && d == inter.domain #VolumeMaintainingOutlet has to be evaluated after dVdt has been modified by everything else
2172
+
@inbounds dVdt = dydt[d.indexes[3]]
2173
+
@inbounds flow = P * dVdt / (R * T)
2174
+
@views@inbounds dydt[d.indexes[1]:d.indexes[2]] .-= flow * ns / N
Copy file name to clipboardExpand all lines: src/Simulation.jl
+4-3Lines changed: 4 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -203,23 +203,24 @@ end
203
203
204
204
export concentrations
205
205
206
-
getT(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantTPDomain,ConstantTVDomain,FragmentBasedConstantTrhoDomain},K<:Real,Q,G,L} = bsol.domain.T
206
+
getT(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantTPDomain,ConstantTVDomain,ConstantTVGasDomain,FragmentBasedConstantTrhoDomain},K<:Real,Q,G,L} = bsol.domain.T
207
207
getT(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantVDomain,ParametrizedVDomain,ConstantPDomain,ParametrizedPDomain},K<:Real,Q,G,L} = bsol.sol(t)[bsol.domain.indexes[3]]
208
208
getT(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ParametrizedTConstantVDomain,ParametrizedTPDomain},K<:Real,Q,G,L} = bsol.domain.T(t)
209
209
export getT
210
-
getV(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantVDomain,ConstantTVDomain,ParametrizedTConstantVDomain},K<:Real,Q,G,L} = bsol.domain.V
210
+
getV(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantVDomain,ConstantTVDomain,ConstantTVGasDomain,ParametrizedTConstantVDomain},K<:Real,Q,G,L} = bsol.domain.V
211
211
getV(bsol::Simulation{Q,W,L,G}, t::K) where {W<:ParametrizedVDomain,K<:Real,Q,G,L} = bsol.domain.V(t)
212
212
getV(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantTPDomain,ParametrizedTPDomain},K<:Real,Q,G,L} = bsol.sol(t)[bsol.domain.indexes[3]]
213
213
getV(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ParametrizedPDomain,ConstantPDomain},K<:Real,Q,G,L} = bsol.sol(t)[bsol.domain.indexes[4]]
214
214
getV(bsol::Simulation{Q,W,L,G}, t::K) where {W<:FragmentBasedConstantTrhoDomain,K<:Real,Q,G,L} = bsol.sol(t)[bsol.domain.indexes[3]] / bsol.domain.rho
215
215
export getV
216
216
getP(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantTPDomain,ConstantPDomain},K<:Real,Q,G,L} = bsol.domain.P
217
217
getP(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantTVDomain,ParametrizedTConstantVDomain,FragmentBasedConstantTrhoDomain},K<:Real,Q,G,L} =1.0e6
218
+
getP(bsol::Simulation{Q,W,L,G}, t::K) where {W<:ConstantTVGasDomain,K<:Real,Q,G,L} = bsol.sol(t)[bsol.domain.indexes[3]]
218
219
getP(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ParametrizedTPDomain,ParametrizedPDomain},K<:Real,Q,G,L} = bsol.domain.P(t)
219
220
getP(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantVDomain,ParametrizedVDomain},K<:Real,Q,G,L} = bsol.sol(t)[bsol.domain.indexes[4]]
220
221
export getP
221
222
getC(bsol::Simulation{Q,W,L,G}, t::K) where {W<:ConstantTPDomain,K<:Real,Q,G,L} = bsol.domain.P / (R * bsol.domain.T)
222
-
getC(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantVDomain,ConstantTVDomain,ParametrizedTConstantVDomain},K<:Real,Q,G,L} = bsol.N(t) / bsol.domain.V
223
+
getC(bsol::Simulation{Q,W,L,G}, t::K) where {W<:Union{ConstantVDomain,ConstantTVDomain,ConstantTVGasDomain,ParametrizedTConstantVDomain},K<:Real,Q,G,L} = bsol.N(t) / bsol.domain.V
223
224
getC(bsol::Simulation{Q,W,L,G}, t::K) where {W<:FragmentBasedConstantTrhoDomain,K<:Real,Q,G,L} = bsol.N(t) /getV(bsol, t)
224
225
getC(bsol::Simulation{Q,W,L,G}, t::K) where {W<:ParametrizedVDomain,K<:Real,Q,G,L} = bsol.N(t) / bsol.domain.V(t)
225
226
getC(bsol::Simulation{Q,W,L,G}, t::K) where {W<:ParametrizedTPDomain,K<:Real,Q,G,L} = bsol.domain.P(t) / (R * bsol.domain.T(t))
0 commit comments