Skip to content

Commit 704bc2b

Browse files
committed
use the analytic jacobianp! in Reactor for known domains and jacobianpforwarddiff for unknown domains
1 parent a50fc48 commit 704bc2b

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

src/Reactor.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@ 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+
jacpforwarddiff!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianpforwarddiff!(J,y,p,t,domain,interfaces,nothing)
2021

21-
if !forwardsensitivities && domain isa Union{ConstantTPDomain,ConstantVDomain,ConstantPDomain,ParametrizedTPDomain,ParametrizedVDomain,ParametrizedPDomain,ConstantTVDomain,ParametrizedTConstantVDomain,ConstantTADomain}
22-
odefcn = ODEFunction(dydt;jac=jacy!,paramjac=jacp!)
23-
elseif forwardsensitivities
24-
odefcn = ODEFunction(dydt;paramjac=jacp!)
22+
if domain isa Union{ConstantTPDomain,ConstantVDomain,ConstantPDomain,ParametrizedTPDomain,ParametrizedVDomain,ParametrizedPDomain,ConstantTVDomain,ParametrizedTConstantVDomain,ConstantTADomain}
23+
if !forwardsensitivities
24+
odefcn = ODEFunction(dydt;jac=jacy!,paramjac=jacp!)
25+
else
26+
odefcn = ODEFunction(dydt;paramjac=jacp!)
27+
end
2528
else
26-
odefcn = ODEFunction(dydt;jac=jacyforwarddiff!,paramjac=jacp!)
29+
odefcn = ODEFunction(dydt;jac=jacyforwarddiff!,paramjac=jacpforwarddiff!)
2730
end
2831
if forwardsensitivities
2932
ode = ODEForwardSensitivityProblem(odefcn,y0,tspan,p)
@@ -98,7 +101,7 @@ function Reactor(domains::T,y0s::W,tspan::W2,interfaces::Z=[],ps::X=DiffEqBase.N
98101

99102
dydt(dy::X,y::T,p::V,t::Q) where {X,T,Q<:Real,V} = dydtreactor!(dy,y,t,domains,interfaces,p=p)
100103
jacy!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianyforwarddiff!(J,y,p,t,domains,interfaces,nothing)
101-
jacp!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianp!(J,y,p,t,domains,interfaces,nothing)
104+
jacp!(J::Q2,y::T,p::V,t::Q) where {Q2,T,Q<:Real,V} = jacobianpforwarddiff!(J,y,p,t,domains,interfaces,nothing)
102105

103106

104107
if forwardsensitivities

0 commit comments

Comments
 (0)