Skip to content

Commit cf0b484

Browse files
committed
use only the parameter jacobian when doing forward sensitivity analysis
1 parent 5ad8d46 commit cf0b484

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

src/Reactor.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ function Reactor(domain::T,y0::Array{W,1},tspan::Tuple,interfaces::Z=[];p::X=Dif
1717
jacy!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobiany!(J,y,p,t,domain,interfaces,nothing)
1818
jacyforwarddiff!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianyforwarddiff!(J,y,p,t,domain,interfaces,nothing)
1919
jacp!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianp!(J,y,p,t,domain,interfaces,nothing)
20-
if domain isa Union{ConstantTPDomain,ConstantVDomain,ConstantPDomain,ParametrizedTPDomain,ParametrizedVDomain,ParametrizedPDomain,ConstantTVDomain,ParametrizedTConstantVDomain,ConstantTADomain}
20+
21+
if !forwardsensitivities && domain isa Union{ConstantTPDomain,ConstantVDomain,ConstantPDomain,ParametrizedTPDomain,ParametrizedVDomain,ParametrizedPDomain,ConstantTVDomain,ParametrizedTConstantVDomain,ConstantTADomain}
2122
odefcn = ODEFunction(dydt;jac=jacy!,paramjac=jacp!)
23+
elseif forwardsensitivities
24+
odefcn = ODEFunction(dydt;paramjac=jacp!)
2225
else
2326
odefcn = ODEFunction(dydt;jac=jacyforwarddiff!,paramjac=jacp!)
2427
end
@@ -94,15 +97,16 @@ function Reactor(domains::T,y0s::W,tspan::W2,interfaces::Z=[],ps::X=DiffEqBase.N
9497
end
9598

9699
dydt(dy::X,y::T,p::V,t::Q) where {X,T,Q<:Real,V} = dydtreactor!(dy,y,t,domains,interfaces,p=p)
97-
jacy!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobiany!(J,y,p,t,domains,interfaces,nothing)
100+
jacy!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianyforwarddiff!(J,y,p,t,domains,interfaces,nothing)
98101
jacp!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianp!(J,y,p,t,domains,interfaces,nothing)
99102

100-
odefcn = ODEFunction(dydt;paramjac=jacp!)
101-
103+
102104
if forwardsensitivities
105+
odefcn = ODEFunction(dydt;paramjac=jacp!)
103106
ode = ODEForwardSensitivityProblem(odefcn,y0,tspan,p)
104107
recsolver = Sundials.CVODE_BDF(linear_solver=:GMRES)
105108
else
109+
odefcn = ODEFunction(dydt;jac=jacy!,paramjac=jacp!)
106110
ode = ODEProblem(odefcn,y0,tspan,p)
107111
recsolver = Sundials.CVODE_BDF()
108112
end

0 commit comments

Comments
 (0)