Skip to content

ERROR: LoadError: AssertionError: r == 0 in InitializationProblem creation #3559

New issue

Have a question about this project? No Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “No Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? No Sign in to your account

Closed
1-Bart-1 opened this issue Apr 13, 2025 · 4 comments
Closed
Labels
bug Something isn't working

Comments

@1-Bart-1
Copy link

1-Bart-1 commented Apr 13, 2025

I have a kite model with discretized tethers consisting of segments. The model works with 2, 3, 4, 5, and 7 segments per tether, but when creating the problem with 6 segments, I get the error shown below. Sadly I could not make a MWE here, as I only get this error in this specific model with this specific number of segments... To reproduce you have to install KiteModels.jl#six-seg and run examples/input_output_function.jl.

Stacktrace:

ERROR: LoadError: AssertionError: r == 0
Stacktrace:
  [1] exactdiv
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:378 [inlined]
  [2] bareiss_update_virtual_colswap_mtk!(zero!::Function, M::ModelingToolkit.SparseMatrixCLIL{…}, k::Int64, swapto::CartesianIndex{…}, pivot::Int64, last_pivot::Int64; pivot_equal_optimization::Bool)
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/sparsematrixclil.jl:239
  [3] bareiss_update_virtual_colswap_mtk!
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/sparsematrixclil.jl:134 [inlined]
  [4] bareiss!(M::ModelingToolkit.SparseMatrixCLIL{…}, swap_strategy::Tuple{…}; find_pivot::ModelingToolkit.var"#1711#1715"{}, column_pivots::Nothing)
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/structural_transformation/bareiss.jl:210
  [5] bareiss!
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/structural_transformation/bareiss.jl:191 [inlined]
  [6] do_bareiss!
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:344 [inlined]
  [7] aag_bareiss!(structure::SystemStructure, mm_orig::ModelingToolkit.SparseMatrixCLIL{Int64, Int64})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:295
  [8] alias_eliminate_graph!(state::TearingState{NonlinearSystem}, ils::ModelingToolkit.SparseMatrixCLIL{Int64, Int64})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:356
  [9] alias_eliminate_graph!(state::TearingState{NonlinearSystem}; kwargs::@Kwargs{allow_symbolic::Bool, allow_parameter::Bool, conservative::Bool})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:11
 [10] alias_eliminate_graph!
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:4 [inlined]
 [11] alias_elimination!(state::TearingState{NonlinearSystem}; kwargs::@Kwargs{allow_symbolic::Bool, allow_parameter::Bool, conservative::Bool})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:50
 [12] alias_elimination!
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/alias_elimination.jl:46 [inlined]
 [13] _structural_simplify!(state::TearingState{…}, io::Nothing; simplify::Bool, check_consistency::Bool, fully_determined::Nothing, warn_initialize_determined::Bool, dummy_derivative::Bool, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systemstructure.jl:705
 [14] _structural_simplify!
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systemstructure.jl:686 [inlined]
 [15] #structural_simplify!#1566
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systemstructure.jl:679 [inlined]
 [16] __structural_simplify(sys::NonlinearSystem, io::Nothing; simplify::Bool, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systems.jl:91
 [17] __structural_simplify
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systems.jl:72 [inlined]
 [18] 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 ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systems.jl:33
 [19] structural_simplify (repeats 2 times)
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/systems.jl:28 [inlined]
 [20] ModelingToolkit.InitializationProblem{…}(sys::ODESystem, t::Float64, 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, force_time_independent::Bool, algebraic_only::Bool, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/diffeqs/abstractodesystem.jl:1407
 [21] maybe_build_initialization_problem(sys::ODESystem, op::Dict{…}, u0map::Dict{…}, pmap::Dict{…}, t::Float64, defs::Dict{…}, guesses::Vector{…}, missing_unknowns::Set{…}; implicit_dae::Bool, u0_constructor::Function, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/problem_utils.jl:658
 [22] maybe_build_initialization_problem
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/problem_utils.jl:649 [inlined]
 [23] process_SciMLProblem(constructor::Type, sys::ODESystem, u0map::Vector{…}, pmap::SciMLBase.NullParameters; build_initializeprob::Bool, implicit_dae::Bool, t::Float64, guesses::Vector{…}, warn_initialize_determined::Bool, initialization_eqs::Vector{…}, eval_expression::Bool, eval_module::Module, fully_determined::Nothing, check_initialization_units::Bool, tofloat::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, force_initialization_time_independent::Bool, algebraic_only::Bool, allow_incomplete::Bool, is_initializeprob::Bool, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/problem_utils.jl:826
 [24] (ODEProblem{})(sys::ODESystem, u0map::Vector{…}, tspan::Tuple{…}, parammap::SciMLBase.NullParameters; callback::Nothing, check_length::Bool, warn_initialize_determined::Bool, eval_expression::Bool, eval_module::Module, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/diffeqs/abstractodesystem.jl:748
 [25] ODEProblem
    @ ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/diffeqs/abstractodesystem.jl:730 [inlined]
 [26] (ODEProblem{true})(::ODESystem, ::Vector{Pair{Num, Real}}, ::Vararg{Any}; kwargs::@Kwargs{guesses::Vector{Pair{Num, Real}}})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/diffeqs/abstractodesystem.jl:723
 [27] ODEProblem(::ODESystem, ::Vector{Pair{Num, Real}}, ::Vararg{Any}; kwargs::@Kwargs{guesses::Vector{Pair{Num, Real}}})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/vIsAP/src/systems/diffeqs/abstractodesystem.jl:712
 [28] init_sim!(s::RamAirKite{Float64, Vector{Float64}, 21}, measure::Measurement; prn::Bool)
    @ KiteModels ~/Code/KiteModels.jl/src/ram_air_kite.jl:395
 [29] init_sim!(s::RamAirKite{Float64, Vector{Float64}, 21}, measure::Measurement)
    @ KiteModels ~/Code/KiteModels.jl/src/ram_air_kite.jl:381
 [30] top-level scope
    @ ~/Code/KiteModels.jl/examples/input_output_function.jl:48
 [31] include(fname::String)
    @ Main ./sysimg.jl:38
 [32] top-level scope
    @ REPL[1]:1
in expression starting at /home/bart/Code/KiteModels.jl/examples/input_output_function.jl:48
Some type information was truncated. Use `show(err)` to see complete types.
@1-Bart-1
Copy link
Author

Updating to the latest version of MTK solved this issue. But the latest version also makes structural_simplify performance a lot worse, almost 10x slower than on version 0.9.71

@ChrisRackauckas
Copy link
Member

Compilation or type stability issues?

@ufechner7
Copy link

ufechner7 commented Apr 14, 2025

Compilation or type stability issues?

How can we determine that?

@ChrisRackauckas
Copy link
Member

@inferred and flame graphs.

No Sign up for free to join this conversation on GitHub. Already have an account? No Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants