Skip to content

Commit bb46df0

Browse files
committed
Don't check units during initialization
...because initialization problems don't correctly handle units and units have already been checked during system initialization.
1 parent 1e41add commit bb46df0

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
851851
build_initializeprob = true,
852852
initialization_eqs = [],
853853
fully_determined = false,
854-
check_units = true,
854+
check_units = false,
855855
kwargs...)
856856
eqs = equations(sys)
857857
dvs = unknowns(sys)
@@ -916,7 +916,8 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
916916

917917
initializeprob = ModelingToolkit.InitializationProblem(
918918
sys, t, u0map, parammap; guesses, warn_initialize_determined,
919-
initialization_eqs, eval_expression, eval_module, fully_determined, check_units)
919+
initialization_eqs, eval_expression, eval_module, fully_determined,
920+
check_units = check_units)
920921
initializeprobmap = getu(initializeprob, unknowns(sys))
921922
punknowns = [p
922923
for p in all_variable_symbols(initializeprob) if is_parameter(sys, p)]

test/initializationsystem.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ using ForwardDiff
33
using SymbolicIndexingInterface, SciMLStructures
44
using SciMLStructures: Tunable
55
using ModelingToolkit: t_nounits as t, D_nounits as D
6+
using DynamicQuantities
67

78
@parameters g
89
@variables x(t) y(t) [state_priority = 10] λ(t)
@@ -814,3 +815,19 @@ end
814815
prob2 = @test_nowarn remake(prob; u0 = [y => 0.5])
815816
@test is_variable(prob.f.initializeprob, p)
816817
end
818+
819+
@testset "units" begin
820+
t = ModelingToolkit.t
821+
D = ModelingToolkit.D
822+
@parameters g [unit = u"m/s^2"] L=1 [unit = u"m^2"]
823+
@variables x(t) [unit = u"m"] y(t) [unit = u"m" state_priority = 10] λ(t) [unit = u"s^-2"]
824+
eqs = [D(D(x)) ~ λ * x
825+
D(D(y)) ~ λ * y - g
826+
x^2 + y^2 ~ L]
827+
@mtkbuild pend = ODESystem(eqs, t)
828+
829+
prob = ODEProblem(pend, [x => 1, y => 0], (0.0, 1.5), [g => 1],
830+
guesses = ModelingToolkit.missing_variable_defaults(pend))
831+
sol = solve(prob, Rodas5P())
832+
@test SciMLBase.successful_retcode(sol)
833+
end

0 commit comments

Comments
 (0)