Skip to content

Commit d58ffb1

Browse files
Merge pull request #2843 from ChrisRackauckas-Claude/remove-parameterizedfunctions
Remove ParameterizedFunctions.jl dependency from tests
2 parents a650f60 + 72deae6 commit d58ffb1

File tree

2 files changed

+69
-105
lines changed

2 files changed

+69
-105
lines changed

Project.toml

Lines changed: 32 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -75,95 +75,37 @@ StaticArrayInterface = "0d7ed370-da01-4f52-bd93-41d350b8b718"
7575
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
7676
TruncatedStacktraces = "781d530d-4396-4725-bb49-402e4bee1e77"
7777

78-
[sources.OrdinaryDiffEqAdamsBashforthMoulton]
79-
path = "lib/OrdinaryDiffEqAdamsBashforthMoulton"
80-
81-
[sources.OrdinaryDiffEqBDF]
82-
path = "lib/OrdinaryDiffEqBDF"
83-
84-
[sources.OrdinaryDiffEqCore]
85-
path = "lib/OrdinaryDiffEqCore"
86-
87-
[sources.OrdinaryDiffEqDefault]
88-
path = "lib/OrdinaryDiffEqDefault"
89-
90-
[sources.OrdinaryDiffEqDifferentiation]
91-
path = "lib/OrdinaryDiffEqDifferentiation"
92-
93-
[sources.OrdinaryDiffEqExplicitRK]
94-
path = "lib/OrdinaryDiffEqExplicitRK"
95-
96-
[sources.OrdinaryDiffEqExponentialRK]
97-
path = "lib/OrdinaryDiffEqExponentialRK"
98-
99-
[sources.OrdinaryDiffEqExtrapolation]
100-
path = "lib/OrdinaryDiffEqExtrapolation"
101-
102-
[sources.OrdinaryDiffEqFIRK]
103-
path = "lib/OrdinaryDiffEqFIRK"
104-
105-
[sources.OrdinaryDiffEqFeagin]
106-
path = "lib/OrdinaryDiffEqFeagin"
107-
108-
[sources.OrdinaryDiffEqFunctionMap]
109-
path = "lib/OrdinaryDiffEqFunctionMap"
110-
111-
[sources.OrdinaryDiffEqHighOrderRK]
112-
path = "lib/OrdinaryDiffEqHighOrderRK"
113-
114-
[sources.OrdinaryDiffEqIMEXMultistep]
115-
path = "lib/OrdinaryDiffEqIMEXMultistep"
116-
117-
[sources.OrdinaryDiffEqLinear]
118-
path = "lib/OrdinaryDiffEqLinear"
119-
120-
[sources.OrdinaryDiffEqLowOrderRK]
121-
path = "lib/OrdinaryDiffEqLowOrderRK"
122-
123-
[sources.OrdinaryDiffEqLowStorageRK]
124-
path = "lib/OrdinaryDiffEqLowStorageRK"
125-
126-
[sources.OrdinaryDiffEqNonlinearSolve]
127-
path = "lib/OrdinaryDiffEqNonlinearSolve"
128-
129-
[sources.OrdinaryDiffEqNordsieck]
130-
path = "lib/OrdinaryDiffEqNordsieck"
131-
132-
[sources.OrdinaryDiffEqPDIRK]
133-
path = "lib/OrdinaryDiffEqPDIRK"
134-
135-
[sources.OrdinaryDiffEqPRK]
136-
path = "lib/OrdinaryDiffEqPRK"
137-
138-
[sources.OrdinaryDiffEqQPRK]
139-
path = "lib/OrdinaryDiffEqQPRK"
140-
141-
[sources.OrdinaryDiffEqRKN]
142-
path = "lib/OrdinaryDiffEqRKN"
143-
144-
[sources.OrdinaryDiffEqRosenbrock]
145-
path = "lib/OrdinaryDiffEqRosenbrock"
146-
147-
[sources.OrdinaryDiffEqSDIRK]
148-
path = "lib/OrdinaryDiffEqSDIRK"
149-
150-
[sources.OrdinaryDiffEqSSPRK]
151-
path = "lib/OrdinaryDiffEqSSPRK"
152-
153-
[sources.OrdinaryDiffEqStabilizedIRK]
154-
path = "lib/OrdinaryDiffEqStabilizedIRK"
155-
156-
[sources.OrdinaryDiffEqStabilizedRK]
157-
path = "lib/OrdinaryDiffEqStabilizedRK"
158-
159-
[sources.OrdinaryDiffEqSymplecticRK]
160-
path = "lib/OrdinaryDiffEqSymplecticRK"
161-
162-
[sources.OrdinaryDiffEqTsit5]
163-
path = "lib/OrdinaryDiffEqTsit5"
164-
165-
[sources.OrdinaryDiffEqVerner]
166-
path = "lib/OrdinaryDiffEqVerner"
78+
[sources]
79+
OrdinaryDiffEqAdamsBashforthMoulton = {path = "lib/OrdinaryDiffEqAdamsBashforthMoulton"}
80+
OrdinaryDiffEqBDF = {path = "lib/OrdinaryDiffEqBDF"}
81+
OrdinaryDiffEqCore = {path = "lib/OrdinaryDiffEqCore"}
82+
OrdinaryDiffEqDefault = {path = "lib/OrdinaryDiffEqDefault"}
83+
OrdinaryDiffEqDifferentiation = {path = "lib/OrdinaryDiffEqDifferentiation"}
84+
OrdinaryDiffEqExplicitRK = {path = "lib/OrdinaryDiffEqExplicitRK"}
85+
OrdinaryDiffEqExponentialRK = {path = "lib/OrdinaryDiffEqExponentialRK"}
86+
OrdinaryDiffEqExtrapolation = {path = "lib/OrdinaryDiffEqExtrapolation"}
87+
OrdinaryDiffEqFIRK = {path = "lib/OrdinaryDiffEqFIRK"}
88+
OrdinaryDiffEqFeagin = {path = "lib/OrdinaryDiffEqFeagin"}
89+
OrdinaryDiffEqFunctionMap = {path = "lib/OrdinaryDiffEqFunctionMap"}
90+
OrdinaryDiffEqHighOrderRK = {path = "lib/OrdinaryDiffEqHighOrderRK"}
91+
OrdinaryDiffEqIMEXMultistep = {path = "lib/OrdinaryDiffEqIMEXMultistep"}
92+
OrdinaryDiffEqLinear = {path = "lib/OrdinaryDiffEqLinear"}
93+
OrdinaryDiffEqLowOrderRK = {path = "lib/OrdinaryDiffEqLowOrderRK"}
94+
OrdinaryDiffEqLowStorageRK = {path = "lib/OrdinaryDiffEqLowStorageRK"}
95+
OrdinaryDiffEqNonlinearSolve = {path = "lib/OrdinaryDiffEqNonlinearSolve"}
96+
OrdinaryDiffEqNordsieck = {path = "lib/OrdinaryDiffEqNordsieck"}
97+
OrdinaryDiffEqPDIRK = {path = "lib/OrdinaryDiffEqPDIRK"}
98+
OrdinaryDiffEqPRK = {path = "lib/OrdinaryDiffEqPRK"}
99+
OrdinaryDiffEqQPRK = {path = "lib/OrdinaryDiffEqQPRK"}
100+
OrdinaryDiffEqRKN = {path = "lib/OrdinaryDiffEqRKN"}
101+
OrdinaryDiffEqRosenbrock = {path = "lib/OrdinaryDiffEqRosenbrock"}
102+
OrdinaryDiffEqSDIRK = {path = "lib/OrdinaryDiffEqSDIRK"}
103+
OrdinaryDiffEqSSPRK = {path = "lib/OrdinaryDiffEqSSPRK"}
104+
OrdinaryDiffEqStabilizedIRK = {path = "lib/OrdinaryDiffEqStabilizedIRK"}
105+
OrdinaryDiffEqStabilizedRK = {path = "lib/OrdinaryDiffEqStabilizedRK"}
106+
OrdinaryDiffEqSymplecticRK = {path = "lib/OrdinaryDiffEqSymplecticRK"}
107+
OrdinaryDiffEqTsit5 = {path = "lib/OrdinaryDiffEqTsit5"}
108+
OrdinaryDiffEqVerner = {path = "lib/OrdinaryDiffEqVerner"}
167109

168110
[compat]
169111
ADTypes = "1.16"
@@ -254,7 +196,6 @@ JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb"
254196
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
255197
NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
256198
ODEProblemLibrary = "fdc4e326-1af4-4b90-96e7-779fcce2daa5"
257-
ParameterizedFunctions = "65888b18-ceab-5e60-b2b9-181511a3b968"
258199
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
259200
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
260201
RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4"
@@ -270,4 +211,4 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
270211
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
271212

272213
[targets]
273-
test = ["ComponentArrays", "Symbolics", "AlgebraicMultigrid", "IncompleteLU", "DiffEqCallbacks", "DifferentiationInterface", "DiffEqDevTools", "ODEProblemLibrary", "ElasticArrays", "ExplicitImports", "InteractiveUtils", "ParameterizedFunctions", "JLArrays", "Random", "ReverseDiff", "SafeTestsets", "SparseArrays", "Statistics", "StructArrays", "Test", "Unitful", "ModelingToolkit", "Pkg", "NLsolve", "RecursiveFactorization", "SparseConnectivityTracer", "SparseMatrixColorings"]
214+
test = ["ComponentArrays", "Symbolics", "AlgebraicMultigrid", "IncompleteLU", "DiffEqCallbacks", "DifferentiationInterface", "DiffEqDevTools", "ODEProblemLibrary", "ElasticArrays", "ExplicitImports", "InteractiveUtils", "JLArrays", "Random", "ReverseDiff", "SafeTestsets", "SparseArrays", "Statistics", "StructArrays", "Test", "Unitful", "ModelingToolkit", "Pkg", "NLsolve", "RecursiveFactorization", "SparseConnectivityTracer", "SparseMatrixColorings"]

test/interface/linear_solver_test.jl

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ odef = ODEFunction(foop; jac = jac, jac_prototype = jac(u0, p, 0.0), paramjac =
3131
function g_helper(p; alg = Rosenbrock23(linsolve = LUFactorization()))
3232
prob = ODEProblem(odef, u0, tspan, p)
3333
soln = Array(solve(prob, alg; u0 = prob.u0, p = prob.p, abstol = 1e-4, reltol = 1e-4))[
34-
:, end]
34+
:, end]
3535
return soln
3636
end
3737
function g(p; kwargs...)
@@ -104,7 +104,7 @@ odef = ODEFunction{true}(fiip; jac = jac, jac_prototype = jac(u0, p, 0.0),
104104
function g_helper(p; alg = Rosenbrock23(linsolve = LUFactorization()))
105105
prob = ODEProblem(odef, u0, tspan, p)
106106
soln = Array(solve(prob, alg; u0 = prob.u0, p = prob.p, abstol = 1e-4, reltol = 1e-4))[
107-
:, end]
107+
:, end]
108108
return soln
109109
end
110110
function g(p; kwargs...)
@@ -158,27 +158,50 @@ end
158158
@test isapprox(exp.(p), g_helper(p; alg = KenCarp47(linsolve = KrylovJL_GMRES()));
159159
atol = 1e-1, rtol = 1e-1)
160160

161-
using OrdinaryDiffEq, StaticArrays, LinearSolve, ParameterizedFunctions
161+
using OrdinaryDiffEq, StaticArrays, LinearSolve
162+
163+
# In-place version
164+
function hires!(du, u, p, t)
165+
T = eltype(u)
166+
du[1] = T(-1.71) * u[1] + T(0.43) * u[2] + T(8.32) * u[3] + T(0.0007) + T(1.0e-18) * t
167+
du[2] = T(1.71) * u[1] - T(8.75) * u[2]
168+
du[3] = T(-10.03) * u[3] + T(0.43) * u[4] + T(0.035) * u[5]
169+
du[4] = T(8.32) * u[2] + T(1.71) * u[3] - T(1.12) * u[4]
170+
du[5] = T(-1.745) * u[5] + T(0.43) * u[6] + T(0.43) * u[7]
171+
du[6] = T(-280.0) * u[6] * u[8] + T(0.69) * u[4] + T(1.71) * u[5] - T(0.43) * u[6] +
172+
T(0.69) * u[7]
173+
du[7] = T(280.0) * u[6] * u[8] - T(1.81) * u[7]
174+
du[8] = T(-280.0) * u[6] * u[8] + T(1.81) * u[7]
175+
end
162176

163-
hires = @ode_def Hires begin
164-
dy1 = -1.71f0 * y1 + 0.43f0 * y2 + 8.32f0 * y3 + 0.0007f0 + 1.0f-18 * t
165-
dy2 = 1.71f0 * y1 - 8.75f0 * y2
166-
dy3 = -10.03f0 * y3 + 0.43f0 * y4 + 0.035f0 * y5
167-
dy4 = 8.32f0 * y2 + 1.71f0 * y3 - 1.12f0 * y4
168-
dy5 = -1.745f0 * y5 + 0.43f0 * y6 + 0.43f0 * y7
169-
dy6 = -280.0f0 * y6 * y8 + 0.69f0 * y4 + 1.71f0 * y5 - 0.43f0 * y6 + 0.69f0 * y7
170-
dy7 = 280.0f0 * y6 * y8 - 1.81f0 * y7
171-
dy8 = -280.0f0 * y6 * y8 + 1.81f0 * y7
177+
# Out-of-place version
178+
function hires(u, p, t)
179+
T = eltype(u)
180+
du1 = T(-1.71) * u[1] + T(0.43) * u[2] + T(8.32) * u[3] + T(0.0007) + T(1.0e-18) * t
181+
du2 = T(1.71) * u[1] - T(8.75) * u[2]
182+
du3 = T(-10.03) * u[3] + T(0.43) * u[4] + T(0.035) * u[5]
183+
du4 = T(8.32) * u[2] + T(1.71) * u[3] - T(1.12) * u[4]
184+
du5 = T(-1.745) * u[5] + T(0.43) * u[6] + T(0.43) * u[7]
185+
du6 = T(-280.0) * u[6] * u[8] + T(0.69) * u[4] + T(1.71) * u[5] - T(0.43) * u[6] +
186+
T(0.69) * u[7]
187+
du7 = T(280.0) * u[6] * u[8] - T(1.81) * u[7]
188+
du8 = T(-280.0) * u[6] * u[8] + T(1.81) * u[7]
189+
190+
if u isa SVector
191+
return SVector(du1, du2, du3, du4, du5, du6, du7, du8)
192+
else
193+
return [du1, du2, du3, du4, du5, du6, du7, du8]
194+
end
172195
end
173196

174197
u0 = zeros(8)
175198
u0[1] = 1
176199
u0[8] = 0.0057
177200

178-
probiip = ODEProblem{true}(hires, u0, (0.0, 10.0))
201+
probiip = ODEProblem{true}(hires!, u0, (0.0, 10.0))
179202
proboop = ODEProblem{false}(hires, u0, (0.0, 10.0))
180203
probstatic = ODEProblem{false}(hires, SVector{8}(u0), (0.0, 10.0))
181-
probiipf32 = ODEProblem{true}(hires, Float32.(u0), (0.0f0, 10.0f0))
204+
probiipf32 = ODEProblem{true}(hires!, Float32.(u0), (0.0f0, 10.0f0))
182205
proboopf32 = ODEProblem{false}(hires, Float32.(u0), (0.0f0, 10.0f0))
183206
probstaticf32 = ODEProblem{false}(hires, SVector{8}(Float32.(u0)), (0.0f0, 10.0f0))
184207
probs = (; probiip, proboop, probstatic)

0 commit comments

Comments
 (0)