Skip to content

Commit 4eef894

Browse files
Update abstractodesystem.jl
1 parent 230d083 commit 4eef894

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ function calculate_massmatrix(sys::AbstractODESystem; simplify=false)
282282
end
283283
M = simplify ? ModelingToolkit.simplify.(M) : M
284284
# M should only contain concrete numbers
285-
M == I ? I : M
285+
M === I ? I : M
286286
end
287287

288288
jacobian_sparsity(sys::AbstractODESystem) =
@@ -356,9 +356,9 @@ function DiffEqBase.ODEFunction{iip}(sys::AbstractODESystem, dvs = states(sys),
356356

357357
M = calculate_massmatrix(sys)
358358

359-
_M = if sparse && !(u0 === nothing || M == I)
360-
sparse(M)
361-
elseif u0 === nothing || M == I
359+
_M = if sparse && !(u0 === nothing || M === I)
360+
SparseArrays.sparse(M)
361+
elseif u0 === nothing || M === I
362362
M
363363
else
364364
ArrayInterface.restructure(u0 .* u0',M)
@@ -515,7 +515,13 @@ function ODEFunctionExpr{iip}(sys::AbstractODESystem, dvs = states(sys),
515515

516516
M = calculate_massmatrix(sys)
517517

518-
_M = (u0 === nothing || M == I) ? M : ArrayInterface.restructure(u0 .* u0',M)
518+
_M = if sparse && !(u0 === nothing || M === I)
519+
SparseArrays.sparse(M)
520+
elseif u0 === nothing || M === I
521+
M
522+
else
523+
ArrayInterface.restructure(u0 .* u0',M)
524+
end
519525

520526
jp_expr = sparse ? :(similar($(get_jac(sys)[]),Float64)) : :nothing
521527
ex = quote

0 commit comments

Comments
 (0)