SciML / ModelingToolkit.jl

An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations
https://mtk.sciml.ai/dev/
Other
1.41k stars 204 forks source link

Sym doesn't have a operation or arguments #2335

Open baggepinnen opened 11 months ago

baggepinnen commented 11 months ago

The following example errors with MTK (works with JuliaSimCompiler)

using ModelingToolkit
using Multibody
t = Multibody.t
D = Differential(t)
world = Multibody.world

@named body = Body(; m = 1, isroot = false, r_cm = [0, 0, 0])
@named damper = Translational.Damper(d=0.5)
@named spring = Translational.Spring(c=1)
@named joint = Prismatic(n = [0, 1, 0], isroot = true, useAxisFlange = true)

connections = [connect(world.frame_b, joint.frame_a)
               connect(damper.flange_b, spring.flange_b, joint.axis)
               connect(joint.support, damper.flange_a, spring.flange_a)
               connect(body.frame_a, joint.frame_b)]

@named model = ODESystem(connections, t, systems = [world, joint, body, damper, spring])
ssys = structural_simplify(IRSystem(model))
julia> ssys = structural_simplify((model), allow_parameter = false)
ERROR: Sym doesn't have a operation or arguments!
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] collect_to!
    @ ./essentials.jl:0
  [3] setindex!
    @ ./array.jl:1019 [inlined]
  [4] push!
    @ ~/.julia/packages/DataStructures/MKv4P/src/deque.jl:226 [inlined]
  [5] enqueue!
    @ ~/.julia/packages/DataStructures/MKv4P/src/queue.jl:28 [inlined]
  [6] #topsort_equations#1047
    @ ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/alias_elimination.jl:443
  [7] _Task
    @ ./boot.jl:453 [inlined]
  [8] Task (repeats 2 times)
    @ ./task.jl:5 [inlined]
  [9] macro expansion
    @ ./task.jl:521 [inlined]
 [10] #244
    @ ~/.julia/juliaup/julia-1.10.0-beta3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:1372
 [11] diff2term(O::SymbolicUtils.BasicSymbolic{Real})
    @ Symbolics ~/.julia/packages/Symbolics/gBKZv/src/utils.jl:0
 [12] tearing_reassemble(state::TearingState{…}, var_eq_matching::ModelingToolkit.BipartiteGraphs.Matching{…}; simplify::Bool, mm::ModelingToolkit.SparseMatrixCLIL{…})
    @ ModelingToolkit.StructuralTransformations ~/.julia/packages/ModelingToolkit/oIgbi/src/structural_transformation/symbolics_tearing.jl:260
 [13] tearing_reassemble
    @ ModelingToolkit.StructuralTransformations ~/.julia/packages/ModelingToolkit/oIgbi/src/structural_transformation/symbolics_tearing.jl:220 [inlined]
 [14] #dummy_derivative#132
    @ ModelingToolkit.StructuralTransformations ~/.julia/packages/ModelingToolkit/oIgbi/src/structural_transformation/symbolics_tearing.jl:635 [inlined]
 [15] _structural_simplify!(state::TearingState{…}, io::Nothing; simplify::Bool, check_consistency::Bool, fully_determined::Bool, kwargs::@Kwargs{…})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systemstructure.jl:612
 [16] _structural_simplify!
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systemstructure.jl:597 [inlined]
 [17] structural_simplify!(state::TearingState{…}, io::Nothing; simplify::Bool, check_consistency::Bool, fully_determined::Bool, kwargs::@Kwargs{…})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systemstructure.jl:563
 [18] __structural_simplify(sys::ODESystem, io::Nothing; simplify::Bool, kwargs::@Kwargs{allow_parameter::Bool})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systems.jl:56
 [19] __structural_simplify
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systems.jl:36 [inlined]
 [20] structural_simplify(sys::ODESystem, io::Nothing; simplify::Bool, kwargs::@Kwargs{allow_parameter::Bool})
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systems.jl:21
 [21] structural_simplify
    @ ModelingToolkit ~/.julia/packages/ModelingToolkit/oIgbi/src/systems/systems.jl:19 [inlined]
 [22] top-level scope
    @ REPL[150]:1
Some type information was truncated. Use `show(err)` to see complete types.
ChrisRackauckas commented 7 months ago

@YingboMa can you diagnose what this is? I can't eyeball what would even cause that error 😅

MaxCar0123456789 commented 5 months ago

Hello, I would like to know if there is a resolution for this issue. Thank you so much.

jgardona commented 4 months ago

I think its pretty dead now. :(