Skip to content

Commit 47c1418

Browse files
committed
fix tests
1 parent 9c05aa4 commit 47c1418

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ function assert_jac_length_header(sys)
134134
W = W_sparsity(sys)
135135
identity, expr -> Func([expr.args...], [], LiteralExpr(quote
136136
@assert $(findnz)($(expr.args[1]))[1:2] == $(findnz)($W)[1:2]
137-
expr.body
137+
$(expr.body)
138138
end))
139139
end
140140

@@ -292,7 +292,10 @@ end
292292

293293
function W_sparsity(sys::AbstractODESystem)
294294
jac_sparsity = jacobian_sparsity(sys)
295-
M_sparsity = sparse((!iszero).(calculate_massmatrix(sys)))
295+
(n, n) = size(jac_sparsity)
296+
297+
M = calculate_massmatrix(sys)
298+
M_sparsity = M isa UniformScaling ? sparse(I(n)) : sparse((!iszero).(M))
296299
jac_sparsity .|| M_sparsity
297300
end
298301

test/jacobiansparsity.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ using OrdinaryDiffEq, ModelingToolkit, SparseArrays
33
N = 3
44
xyd_brusselator = range(0, stop = 1, length = N)
55
brusselator_f(x, y, t) = (((x - 0.3)^2 + (y - 0.6)^2) <= 0.1^2) * (t >= 1.1) * 5.0
6-
limit(a, N) = ModelingToolkit.ifelse(a == N + 1, 1, ModelingToolkit.ifelse(a == 0, N, a))
6+
lim(a, N) = ModelingToolkit.ifelse(a == N + 1, 1, ModelingToolkit.ifelse(a == 0, N, a))
77
function brusselator_2d_loop(du, u, p, t)
88
A, B, alpha, dx = p
99
alpha = alpha / dx^2
1010
@inbounds for I in CartesianIndices((N, N))
1111
i, j = Tuple(I)
1212
x, y = xyd_brusselator[I[1]], xyd_brusselator[I[2]]
13-
ip1, im1, jp1, jm1 = limit(i + 1, N), limit(i - 1, N), limit(j + 1, N),
14-
limit(j - 1, N)
13+
ip1, im1, jp1, jm1 = lim(i + 1, N), lim(i - 1, N), lim(j + 1, N),
14+
lim(j - 1, N)
1515
du[i, j, 1] = alpha * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] -
1616
4u[i, j, 1]) +
1717
B + u[i, j, 1]^2 * u[i, j, 2] - (A + 1) * u[i, j, 1] +
@@ -84,6 +84,7 @@ prob = ODEProblem(sys, u0, (0, 11.5), sparse = true, jac = true)
8484
@test eltype(prob.f.jac_prototype) == Float32
8585

8686
@testset "W matrix sparsity" begin
87+
t = ModelingToolkit.t_nounits
8788
@parameters g
8889
@variables x(t) y(t) [state_priority = 10] λ(t)
8990
eqs = [D(D(x)) ~ λ * x

0 commit comments

Comments
 (0)