Skip to content

Unhelpful initialization error #4237

@baggepinnen

Description

@baggepinnen

The following multibody system fails to initialize, and the error message gives no guidance on where the issue might be. It also simplifies to 14 variables of which 6 are algebraic and 8 diff, while open modelica simplifies to 8 differential variables only.

using Test, ModelingToolkit, Multibody, Random
t = Multibody.t
using LinearAlgebra
@component function WheelInWorld(; name)
    systems = @named begin
        # world = World(n=[0,0,-1])
        world = World()
        wheel = RollingWheel(radius = 0.3, m = 2, I_axis = 0.06,
                            I_long = 0.12,
                            x0 = 0.2,
                            z0 = 0.2,
                            angles = [0,0,0],
                            der_angles = [0, -5, -1])
    end

    pars = @parameters begin
    end

    vars = @variables begin
    end

    equations = Equation[]

    return System(equations, t; name, systems)
end

@named worldwheel = WheelInWorld()

prob = ODEProblem(ssys, [], (0, 4); guesses, missing_guess_value = MissingGuessValue.Random(Random.GLOBAL_RNG))
julia> prob = ODEProblem(ssys, defs, (0, 4); guesses, missing_guess_value = MissingGuessValue.Random(Random.GLOBAL_RNG))
ERROR: SingularException(7)
Stacktrace:
  [1] checknonsingular
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/factorization.jl:69 [inlined]
  [2] _check_lu_success
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:84 [inlined]
  [3] #lu!#180
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:92 [inlined]
  [4] lu!
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:90 [inlined]
  [5] lu!
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:89 [inlined]
  [6] _lu
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:347 [inlined]
  [7] lu(::Matrix{Float64}; kwargs::@Kwargs{})
    @ LinearAlgebra ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341
  [8] lu
    @ ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined]
  [9] \(A::Matrix{Float64}, B::Vector{Float64})
    @ LinearAlgebra ~/.julia/juliaup/julia-1.12.4+0.x64.linux.gnu/share/julia/stdlib/v1.12/LinearAlgebra/src/generic.jl:1234
 [10] macro expansion
    @ ~/.julia/packages/SymbolicUtils/pgFkI/src/code.jl:542 [inlined]
 [11] macro expansion
    @ ~/.julia/packages/Symbolics/9I6NM/src/build_function.jl:380 [inlined]
 [12] macro expansion
    @ ~/.julia/packages/RuntimeGeneratedFunctions/BenR2/src/RuntimeGeneratedFunctions.jl:165 [inlined]
 [13] macro expansion
    @ ./none:0 [inlined]
 [14] generated_callfunc
    @ ./none:0 [inlined]
 [15] (::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{…})(::Vector{…}, ::MTKParameters{…}, ::Int64)
    @ RuntimeGeneratedFunctions ~/.julia/packages/RuntimeGeneratedFunctions/BenR2/src/RuntimeGeneratedFunctions.jl:152
 [16] macro expansion
    @ ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/codegen_utils.jl:-1 [inlined]
 [17] _generated_call
    @ ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/codegen_utils.jl:411 [inlined]
 [18] GeneratedFunctionWrapper
    @ ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/codegen_utils.jl:408 [inlined]
 [19] ObservedWrapper
    @ ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/problem_utils.jl:641 [inlined]
 [20] call_composed
    @ ./operators.jl:1100 [inlined]
 [21] call_composed
    @ ./operators.jl:1099 [inlined]
 [22] ComposedFunction
    @ ./operators.jl:1096 [inlined]
 [23] (::ModelingToolkitBase.ReconstructInitializeprob{…})(srcvalp::SymbolicIndexingInterface.ProblemState{…}, dstvalp::SciMLBase.SCCNonlinearProblem{…})
    @ ModelingToolkitBase ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/problem_utils.jl:871
 [24] remake_initialization_data(sys::System, odefn::@NamedTuple{}, u0::Vector{…}, t0::Int64, p::MTKParameters{…}, newu0::Vector{…}, newp::MTKParameters{…})
    @ ModelingToolkitBase ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/nonlinear/initializesystem.jl:547
 [25] #invokelatest_gr#232
    @ ./reflection.jl:1295 [inlined]
 [26] invokelatest_gr
    @ ./reflection.jl:1289 [inlined]
 [27] process_SciMLProblem(constructor::Type, sys::System, op::Dict{…}; build_initializeprob::Bool, implicit_dae::Bool, t::Int64, guesses::Dict{…}, warn_initialize_determined::Bool, initialization_eqs::Vector{…}, eval_expression::Bool, eval_module::Module, fully_determined::Nothing, check_initialization_units::Bool, u0_eltype::Nothing, tofloat::Bool, u0_constructor::typeof(identity), p_constructor::typeof(identity), check_length::Bool, symbolic_u0::Bool, warn_cyclic_dependency::Bool, circular_dependency_max_cycle_length::Int64, circular_dependency_max_cycles::Int64, initsys_mtkcompile_kwargs::@NamedTuple{}, substitution_limit::Int64, use_scc::Bool, time_dependent_init::Bool, algebraic_only::Bool, missing_guess_value::ModelingToolkitBase.MissingGuessValue.var"typeof(MissingGuessValue)", allow_incomplete::Bool, is_initializeprob::Bool, kwargs::@Kwargs{})
    @ ModelingToolkitBase ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/systems/problem_utils.jl:1578
 [28] (ODEProblem{})(sys::System, op::Dict{…}, tspan::Tuple{…}; callback::Nothing, check_length::Bool, eval_expression::Bool, expression::Type, eval_module::Module, check_compatibility::Bool, kwargs::@Kwargs{})
    @ ModelingToolkitBase ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/problems/odeproblem.jl:105
 [29] ODEProblem
    @ ~/.julia/dev/ModelingToolkit/lib/ModelingToolkitBase/src/problems/odeproblem.jl:96 [inlined]
 [30] ODEProblem
    @ ./none:-1 [inlined]
 [31] #ODEProblem#820
    @ ./none:-1 [inlined]
 [32] top-level scope
    @ REPL[8]:1
Some type information was truncated. Use `show(err)` to see complete types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions