Skip to content

Error: ArgumentError: xxx is neither an observed nor an unknown variable. #3138

Closed
@bradcarman

Description

@bradcarman

MWE (note this requires the Hydraulic branch for the ModelingToolkitStandardLibrary): The following code produces the error "ERROR: ArgumentError: mass₊s(t) is neither an observed nor an unknown variable."

using ModelingToolkitStandardLibrary.Hydraulic.IsothermalCompressible: FixedPressure,
                                                                       Orifice, Volume,
                                                                       HydraulicFluid, HydraulicPort, liquid_density
using ModelingToolkitStandardLibrary.Blocks: Ramp, Constant
using ModelingToolkitStandardLibrary.Mechanical.Translational: Force, MechanicalPort, Mass

using ModelingToolkit
using ModelingToolkit: t_nounits as t, D_nounits as D
using OrdinaryDiffEq

@mtkmodel System begin
    @components begin
        src = FixedPressure(p = 101325)
        res = Orifice()
        act = Volume(direction = -1, area = 0.1)
        mass = Mass(m=1e-5)
        fluid = HydraulicFluid(density = 1000, bulk_modulus = 2.0e9)
    end
    @equations begin
        connect(src.port, res.port₁)
        connect(res.port₂, act.port)
        connect(act.flange, mass.flange)

        connect(fluid, src.port)
    end
end

@mtkbuild sys = System()

initialization_eqs = [
    sys.act.x ~ 1
    sys.act.dx ~ 0
]

initsys = ModelingToolkit.generate_initializesystem(sys; initialization_eqs)
initsys = structural_simplify(initsys)
initprob = NonlinearProblem(initsys, [t=>0], [])
initsol = solve(initprob; abstol=1e-6)
initsol[sys.mass.s]

The full stack trace is:

Stacktrace:
  [1] build_explicit_observed_function(sys::NonlinearSystem, ts::Num; inputs::Nothing, expression::Bool, eval_expression::Bool, eval_module::Module, output_type::Type, checkbounds::Bool, drop_expr::Function, ps::Vector{…}, return_inplace::Bool, param_only::Bool, op::Type, throw::Bool)
    @ ModelingToolkit C:\Users\bradl\.julia\packages\ModelingToolkit\OYoU3\src\systems\diffeqs\odesystem.jl:501
  [2] #observed#269
    @ C:\Users\bradl\.julia\packages\ModelingToolkit\OYoU3\src\systems\abstractsystem.jl:843 [inlined]
  [3] observed
    @ C:\Users\bradl\.julia\packages\ModelingToolkit\OYoU3\src\systems\abstractsystem.jl:820 [inlined]
  [4] #347
    @ C:\Users\bradl\.julia\packages\ModelingToolkit\OYoU3\src\systems\abstractsystem.jl:1684 [inlined]
  [5] get!(default::ModelingToolkit.var"#347#348"{…}, h::Dict{…}, key::SymbolicUtils.BasicSymbolic{…})
    @ Base .\dict.jl:479
  [6] (::ModelingToolkit.ObservedFunctionCache{NonlinearSystem})(::Num)
    @ ModelingToolkit C:\Users\bradl\.julia\packages\ModelingToolkit\OYoU3\src\systems\abstractsystem.jl:1683
  [7] observed
    @ C:\Users\bradl\.julia\packages\SciMLBase\tEuIM\src\scimlfunctions.jl:4525 [inlined]
  [8] observed
    @ C:\Users\bradl\.julia\packages\SymbolicIndexingInterface\cwAFH\src\index_provider_interface.jl:212 [inlined]
  [9] _getu(sys::SciMLBase.NonlinearSolution{…}, ::SymbolicIndexingInterface.ScalarSymbolic, ::SymbolicIndexingInterface.ScalarSymbolic, sym::Num)
    @ SymbolicIndexingInterface C:\Users\bradl\.julia\packages\SymbolicIndexingInterface\cwAFH\src\state_indexing.jl:155
 [10] getu
    @ C:\Users\bradl\.julia\packages\SymbolicIndexingInterface\cwAFH\src\state_indexing.jl:31 [inlined]
 [11] getindex(A::SciMLBase.NonlinearSolution{…}, sym::Num)
    @ SciMLBase C:\Users\bradl\.julia\packages\SciMLBase\tEuIM\src\solutions\solution_interface.jl:70

The current environment is:

Status `C:\Work\Packages\ModelingToolkitStandardLibrary.jl\Project.toml`
  [d360d2e6] ChainRulesCore v1.25.0
  [2b5f629d] DiffEqBase v6.158.1
  [615f187c] IfElse v0.1.1
⌃ [961ee093] ModelingToolkit v9.45.0
⌃ [0c5d862f] Symbolics v6.13.1
  [37e2e46d] LinearAlgebra

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions