-
-
Notifications
You must be signed in to change notification settings - Fork 233
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug 🐞
I get an obscure error from a seemingly well-constructed system. Perhaps it's just that I would need to specify the derivative of f
?
Expected behavior
Better error message?
Minimal Reproducible Example 👇
using ModelingToolkit, DifferentialEquations
using ModelingToolkit: t_nounits as t, D_nounits as D
f(c, T) = (1 - 3 * c ^ 2)
@register_symbolic f(c, T)
@mtkmodel Tank begin
@variables begin
M1(t)
M2(t)
c(t)
b(t)
end
@equations begin
D(M1) ~ b + c
D(M2) ~ (1 - b) + (1 - c)
c ~ M1 / (M1 + M2)
(M1 + M2) * f(c, 80) ~ 10
end
end
@mtkbuild tank = Tank();
u0 = [tank.c => 0.6]
prob = ODEProblem(tank, u0, (0, 10.0), [],
guesses=[tank.M1 => 5,
tank.M2 => 5])
This is heavily reduced of course.
Error & Stacktrace
ERROR: LoadError: MethodError: no method matching hasmetadata(::Nothing, ::Type{ModelingToolkit.VariableUnit})
Closest candidates are:
hasmetadata(::Num, ::Any)
@ Symbolics C:\Users\\.julia\packages\Symbolics\Xv70J\src\Symbolics.jl:194
hasmetadata(::Complex{Num}, ::Any)
@ Symbolics C:\Users\\.julia\packages\Symbolics\Xv70J\src\Symbolics.jl:194
hasmetadata(::SymbolicUtils.Symbolic, ::Any)
@ SymbolicUtils C:\Users\\.julia\packages\SymbolicUtils\6fncq\src\types.jl:859
Stacktrace:
[1] _with_unit(::Function, ::SymbolicUtils.BasicSymbolic{Real}, ::Nothing, ::Nothing, ::Vararg{Any})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\utils.jl:1014
[2] lower_varname_with_unit
@ C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\utils.jl:1023 [inlined]
[3] lower_varname_withshift(var::SymbolicUtils.BasicSymbolic{Real}, iv::Nothing, order::Int64)
@ ModelingToolkit.StructuralTransformations C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\structural_transformation\utils.jl:458
[4] tearing_reassemble(state::TearingState{…}, var_eq_matching::ModelingToolkit.BipartiteGraphs.Matching{…}, full_var_eq_matching::ModelingToolkit.BipartiteGraphs.Matching{…}; simplify::Bool, mm::ModelingToolkit.SparseMatrixCLIL{…}, cse_hack::Bool, array_hack::Bool)
@ ModelingToolkit.StructuralTransformations C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\structural_transformation\symbolics_tearing.jl:413
[5] tearing_reassemble
@ C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\structural_transformation\symbolics_tearing.jl:240 [inlined]
[6] tearing(sys::NonlinearSystem, state::TearingState{…}; mm::ModelingToolkit.SparseMatrixCLIL{…}, simplify::Bool, cse_hack::Bool, array_hack::Bool, kwargs::@Kwargs{…})
@ ModelingToolkit.StructuralTransformations C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\structural_transformation\symbolics_tearing.jl:802
[7] _structural_simplify!(state::TearingState{…}, io::Nothing; simplify::Bool, check_consistency::Bool, fully_determined::Nothing, warn_initialize_determined::Bool, dummy_derivative::Bool, kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systemstructure.jl:711
[8] _structural_simplify!
@ C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systemstructure.jl:676 [inlined]
[9] #structural_simplify!#1509
@ C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systemstructure.jl:669 [inlined]
[10] __structural_simplify(sys::NonlinearSystem, io::Nothing; simplify::Bool, kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systems.jl:102
[11] __structural_simplify
@ C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systems.jl:83 [inlined]
[12] structural_simplify(sys::NonlinearSystem, io::Nothing; additional_passes::Vector{…}, simplify::Bool, split::Bool, allow_symbolic::Bool, allow_parameter::Bool, conservative::Bool, fully_determined::Nothing, kwargs::@Kwargs{})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systems.jl:33
[13] structural_simplify (repeats 2 times)
@ C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\systems.jl:28 [inlined]
[14] ModelingToolkit.InitializationProblem{…}(sys::ODESystem, t::Int64, u0map::Dict{…}, parammap::Dict{…}; guesses::Dict{…}, check_length::Bool, warn_initialize_determined::Bool, initialization_eqs::Vector{…}, fully_determined::Nothing, check_units::Bool, use_scc::Bool, allow_incomplete::Bool, kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\diffeqs\abstractodesystem.jl:1310
[15] (ModelingToolkit.InitializationProblem{…})(::ODESystem, ::Int64, ::Vararg{…}; kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\diffeqs\abstractodesystem.jl:1265
[16] ModelingToolkit.InitializationProblem(::ODESystem, ::Int64, ::Vararg{…}; kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\diffeqs\abstractodesystem.jl:1253
[17] maybe_build_initialization_problem(sys::ODESystem, op::Dict{…}, u0map::Dict{…}, pmap::Dict{…}, t::Int64, defs::Dict{…}, guesses::Vector{…}, missing_unknowns::Set{…}; implicit_dae::Bool, kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\problem_utils.jl:559
[18] process_SciMLProblem(constructor::Type, sys::ODESystem, u0map::Vector{…}, pmap::Vector{…}; build_initializeprob::Bool, implicit_dae::Bool, t::Int64, guesses::Vector{…}, warn_initialize_determined::Bool, initialization_eqs::Vector{…}, eval_expression::Bool, eval_module::Module, fully_determined::Nothing, check_initialization_units::Bool, tofloat::Bool, use_union::Bool, u0_constructor::typeof(identity), du0map::Nothing, check_length::Bool, symbolic_u0::Bool, warn_cyclic_dependency::Bool, circular_dependency_max_cycle_length::Int64, circular_dependency_max_cycles::Int64, substitution_limit::Int64, use_scc::Bool, kwargs::@Kwargs{})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\problem_utils.jl:705
[19] (ODEProblem{…})(sys::ODESystem, u0map::Vector{…}, tspan::Tuple{…}, parammap::Vector{…}; callback::Nothing, check_length::Bool, warn_initialize_determined::Bool, eval_expression::Bool, eval_module::Module, kwargs::@Kwargs{…})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\diffeqs\abstractodesystem.jl:832
[20] (ODEProblem{true})(::ODESystem, ::Vector{Pair{Num, Float64}}, ::Vararg{Any}; kwargs::@Kwargs{guesses::Vector{Pair{…}}})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\diffeqs\abstractodesystem.jl:813
[21] ODEProblem(::ODESystem, ::Vector{Pair{Num, Float64}}, ::Vararg{Any}; kwargs::@Kwargs{guesses::Vector{Pair{Num, Int64}}})
@ ModelingToolkit C:\Users\\.julia\packages\ModelingToolkit\K8zNC\src\systems\diffeqs\abstractodesystem.jl:802
Environment (please complete the following information):
- Output of
using Pkg; Pkg.status()
Julia 1.10.5
MTK v9.62.0
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working