Skip to content

Commit 5ad8d46

Browse files
committed
adapt getconcentrationsensitivity indexing for multi-domain simulations
1 parent 94e9602 commit 5ad8d46

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

src/Simulation.jl

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,9 @@ export getadjointsensitivities
171171
function getconcentrationsensitivity(bsol::Simulation{Q,W,L,G}, numerator::String, denominator::String, t::K) where {W<:Union{ConstantVDomain,ConstantTVDomain,ParametrizedTConstantVDomain},K<:Real,Q,G,L}
172172
@assert numerator in bsol.names
173173
@assert denominator in bsol.names
174-
indnum = findfirst(isequal(numerator),bsol.names)
175-
inddeno = findfirst(isequal(denominator),bsol.names)
176-
Nvars = bsol.domain.indexes[end]-bsol.domain.indexes[1]+1
174+
indnum = findfirst(isequal(numerator),bsol.names)+bsol.domain.indexes[1]-1
175+
inddeno = findfirst(isequal(denominator),bsol.names)+bsol.domain.parameterindexes[1]-1
176+
Nvars = length(bsol.domain.phase.species)+length(bsol.domain.indexes)-2
177177
Nrxns = length(bsol.domain.phase.reactions)
178178
x,dp = extract_local_sensitivities(bsol.sol,t)
179179
s = dp[inddeno][indnum]
@@ -188,12 +188,12 @@ end
188188
function getconcentrationsensitivity(bsol::Simulation{Q,W,L,G}, numerator::String, denominator::String, t::K) where {W<:Union{ConstantTPDomain,ParametrizedTPDomain,ConstantPDomain,ParametrizedPDomain,ParametrizedVDomain},K<:Real,Q,G,L}
189189
@assert numerator in bsol.names
190190
@assert denominator in bsol.names
191-
indnum = findfirst(isequal(numerator),bsol.names)
192-
inddeno = findfirst(isequal(denominator),bsol.names)
193-
Nvars = bsol.domain.indexes[end]-bsol.domain.indexes[1]+1
191+
indnum = findfirst(isequal(numerator),bsol.names)+bsol.domain.indexes[1]-1
192+
inddeno = findfirst(isequal(denominator),bsol.names)+bsol.domain.parameterindexes[1]-1
193+
Nvars = length(bsol.domain.phase.species)+length(bsol.domain.indexes)-2
194194
Nrxns = length(bsol.domain.phase.reactions)
195195
x,dp = extract_local_sensitivities(bsol.sol,t)
196-
svals = dp[inddeno]
196+
svals = dp[inddeno][bsol.domain.indexes[1]:bsol.domain.indexes[2]]
197197
s = svals[indnum]
198198
V = getV(bsol,t)
199199
c = bsol.sol(t)[indnum]/V
@@ -207,9 +207,9 @@ end
207207

208208
function getconcentrationsensitivity(bsol::Simulation{Q,W,L,G}, numerator::String, denominator::Z, t::K) where {W<:Union{ConstantVDomain,ConstantTVDomain,ParametrizedTConstantVDomain},K<:Real,Z<:Integer,Q,G,L}
209209
@assert numerator in bsol.names
210-
indnum = findfirst(isequal(numerator),bsol.names)
211-
inddeno = denominator
212-
Nvars = bsol.domain.indexes[end]-bsol.domain.indexes[1]+1
210+
indnum = findfirst(isequal(numerator),bsol.names)+bsol.domain.indexes[1]-1
211+
inddeno = denominator+bsol.domain.parameterindexes[1]-1
212+
Nvars = length(bsol.domain.phase.species)+length(bsol.domain.indexes)-2
213213
Nrxns = length(bsol.domain.phase.reactions)
214214
x,dp = extract_local_sensitivities(bsol.sol,t)
215215
s = dp[inddeno+length(bsol.domain.phase.species)][indnum]
@@ -227,12 +227,12 @@ end
227227

228228
function getconcentrationsensitivity(bsol::Simulation{Q,W,L,G}, numerator::String, denominator::Z, t::K) where {W<:Union{ConstantTPDomain,ParametrizedTPDomain,ConstantPDomain,ParametrizedPDomain,ParametrizedVDomain},K<:Real,Z<:Integer,Q,G,L}
229229
@assert numerator in bsol.names
230-
indnum = findfirst(isequal(numerator),bsol.names)
231-
inddeno = denominator
232-
Nvars = bsol.domain.indexes[end]-bsol.domain.indexes[1]+1
230+
indnum = findfirst(isequal(numerator),bsol.names)+bsol.domain.indexes[1]-1
231+
inddeno = denominator+bsol.domain.parameterindexes[1]-1
232+
Nvars = length(bsol.domain.phase.species)+length(bsol.domain.indexes)-2
233233
Nrxns = length(bsol.domain.phase.reactions)
234234
x,dp = extract_local_sensitivities(bsol.sol,t)
235-
svals = dp[inddeno+length(bsol.domain.phase.species)]
235+
svals = dp[inddeno+length(bsol.domain.phase.species)][bsol.domain.indexes[1]:bsol.domain.indexes[2]]
236236
s = svals[indnum]
237237
V = getV(bsol,t)
238238
T = getT(bsol,t)

0 commit comments

Comments
 (0)