Skip to content

Commit 9b01df7

Browse files
Merge pull request #488 from frankschae/concrete_steady
SteadyStateSolution has no field t error
2 parents 4066407 + 2f5f99a commit 9b01df7

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

src/solve.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,12 @@ function _concrete_solve(prob::DiffEqBase.DEProblem,alg::DiffEqBase.DEAlgorithm,
210210
RecursiveArrayTools.DiffEqArray(sol.u,sol.t)
211211
end
212212

213+
function _concrete_solve(prob::DiffEqBase.SteadyStateProblem,alg::DiffEqBase.DEAlgorithm,
214+
u0=prob.u0,p=prob.p,args...;kwargs...)
215+
sol = solve(remake(prob,u0=u0,p=p),alg,args...;kwargs...)
216+
RecursiveArrayTools.VectorOfArray(sol.u)
217+
end
218+
213219
function ChainRulesCore.frule(::typeof(concrete_solve),prob,alg,u0,p,args...;
214220
sensealg=nothing,kwargs...)
215221
_concrete_solve_forward(prob,alg,sensealg,u0,p,args...;kwargs...)

test/downstream/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
33
DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def"
44
DiffEqProblemLibrary = "a077e3f3-b75c-5d7f-a0c6-6bc4c8ec64a9"
55
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
6+
SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
67
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using OrdinaryDiffEq, StochasticDiffEq, SteadyStateDiffEq, RecursiveArrayTools, Test
2+
3+
function f!(du,u,p,t)
4+
du[1] = p[1] + p[2]*u[1]
5+
du[2] = p[3]*u[1] + p[4]*u[2]
6+
end
7+
u0 = zeros(2)
8+
p = [2.0,-2.0,1.0,-4.0]
9+
10+
probODE = ODEProblem(f!,u0,(0.0,10.0),p)
11+
probSS = SteadyStateProblem(f!,u0,p)
12+
13+
solODE = concrete_solve(probODE,Tsit5(), abstol=1e-14,reltol=1e-14)
14+
solSS = concrete_solve(probSS,DynamicSS(Rodas5()))
15+
16+
@test solSS.u solODE.u[end] rtol = 1e-8
17+
@test length(fieldnames(typeof(solODE))) == 2
18+
@test length(fieldnames(typeof(solSS))) == 1

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ if !is_APPVEYOR && GROUP == "Downstream"
4646
@time @safetestset "PSOS and Energy Conservation Event Detection" begin include("downstream/psos_and_energy_conservation.jl") end
4747
@time @safetestset "DE stats" begin include("downstream/destats_tests.jl") end
4848
@time @safetestset "DEDataArray" begin include("downstream/data_array_regression_tests.jl") end
49+
@time @safetestset "Concrete_solve Tests" begin include("downstream/concrete_solve_tests.jl") end
4950
end
5051

5152
if !is_APPVEYOR && GROUP == "GPU"

0 commit comments

Comments
 (0)