Skip to content

Initialization System fails to remove an equation #3312

@bradcarman

Description

@bradcarman

Take the following. The equation left in the initialization system is already an observable.

using ModelingToolkit
using ModelingToolkitStandardLibrary.Blocks
using ModelingToolkit: t_nounits as t, D_nounits as D

vars = @variables y(t) dy(t) ddy(t)
systems = @named begin
    src = SampledData(Float64)
    int = Integrator()
end 
eqs = [
    y ~ src.output.u
    D(y) ~ dy
    D(dy) ~ ddy
    connect(src.output, int.input)
]

@mtkbuild sys = ODESystem(eqs, t; systems)
initprob = ModelingToolkit.InitializationProblem(sys, 0.0) # Warning: Initialization system is overdetermined. 1 equations for 0 unknowns.

As can be seen we have an overdetermined system, which I believe is a bug.

If we look at the equations we see...

julia> initprob.f.sys |> equations
1-element Vector{Equation}:
 0 ~ -src₊output₊u(t) + ModelingToolkitStandardLibrary.Blocks.get_sampled_data(t, src₊buffer)

But if we look at the observed, we can see that src₊output₊u(t) is already known and shouldn't be an equation.

julia> ModelingToolkit.observed(initprob.f.sys)[2]
src₊output₊u(t) ~ ModelingToolkitStandardLibrary.Blocks.get_sampled_data(0.0, src₊buffer)

Versions...

Status `C:\Users\bradl\AppData\Local\Temp\jl_uvgnDL\Project.toml`

  [961ee093] ModelingToolkit v9.60.0
  [16a59e39] ModelingToolkitStandardLibrary v2.19.0 `C:\Work\ModelingToolkitStandardLibrary.jl`

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions