Closed
Description
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
Assignees
Labels
No labels