# Cannot access MTK's observed variables in steady-state solutions (NonlinearSolution)

**URL:** https://discourse.julialang.org/t/cannot-access-mtks-observed-variables-in-steady-state-solutions-nonlinearsolution/108524
**Category:** Modelling & Simulations
**Created:** [January 8, 2024, 3:57pm UTC](https://discourse.julialang.org/t/cannot-access-mtks-observed-variables-in-steady-state-solutions-nonlinearsolution/108524 "2024-01-08T15:57:24Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Wen-Wei\_Tseng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wen-wei_tseng/32/28839_2.png) [@Wen-Wei\_Tseng](https://discourse.julialang.org/u/Wen-Wei_Tseng)
#### Post date: [January 8, 2024, 3:57pm UTC](https://discourse.julialang.org/t/cannot-access-mtks-observed-variables-in-steady-state-solutions-nonlinearsolution/108524/1 "2024-01-08T15:57:24Z")

</div>

MWE:

```julia
using DifferentialEquations
using ModelingToolkit

@variables t x(t) RHS(t)
@parameters τ
D = Differential(t)

eqs = [
    RHS ~ (1 - x) / τ
    D(x) ~ RHS
]

@named sys = ODESystem(eqs, defaults=[x=>0.0, τ=>3.0])

sys = structural_simplify(sys)

prob = ODEProblem(sys, [], (0.0, 10.0))
sol = solve(prob)
sol[sys.x]
sol[sys.RHS]

ssprob = SteadyStateProblem(sys, [])
sssol = solve(ssprob, DynamicSS(Rodas5()))
sssol[sys.x]
sssol[sys.RHS] # MethodError: No method matching... (details below)

```

`versioninfo()` :

```julia
Julia Version 1.10.0
Commit 3120989f39 (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 16 × AMD Ryzen 7 6800H with Radeon Graphics
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
  Threads: 23 on 16 virtual cores

```

`Pkg.status()` :

```julia
Status `D:\github\test\Project.toml`
  [0c46a032] DifferentialEquations v7.12.0
  [961ee093] ModelingToolkit v8.75.0

```

> **Manifest**
>
> ```julia
> Status `D:\github\test\Manifest.toml`
> [47edcb42] ADTypes v0.2.6
> [1520ce14] AbstractTrees v0.4.4
> ⌅ [79e6a3ab] Adapt v3.7.2
> [ec485272] ArnoldiMethod v0.2.0
> [4fba245c] ArrayInterface v7.7.0
> [4c555306] ArrayLayouts v1.5.1
> [aae01518] BandedMatrices v1.4.0
> [e2ed5e7c] Bijections v0.1.6
> [62783981] BitTwiddlingConvenienceFunctions v0.1.5
> ⌃ [764a87c0] BoundaryValueDiffEq v5.6.0
> [fa961155] CEnum v0.5.0
> [2a0fbf3d] CPUSummary v0.2.4
> [00ebfdb7] CSTParser v3.4.0
> [49dc2e85] Calculus v0.5.1
> [d360d2e6] ChainRulesCore v1.19.0
> [fb6a15b2] CloseOpenIntervals v0.1.12
> [861a8166] Combinatorics v1.0.2
> [a80b9123] CommonMark v0.8.12
> [38540f10] CommonSolve v0.2.4
> [bbf7d656] CommonSubexpressions v0.3.0
> [34da2185] Compat v4.10.1
> [b152e2b5] CompositeTypes v0.1.3
> [2569d6c7] ConcreteStructs v0.2.3
> [187b0558] ConstructionBase v1.5.4
> [adafc99b] CpuId v0.3.1
> [a8cc5b0e] Crayons v4.1.1
> [9a962f9c] DataAPI v1.15.0
> [864edb3b] DataStructures v0.18.16
> [e2d170a0] DataValueInterfaces v1.0.0
> [bcd4f6db] DelayDiffEq v5.45.1
> [2b5f629d] DiffEqBase v6.145.6
> [459566f4] DiffEqCallbacks v2.36.1
> [77a26b50] DiffEqNoiseProcess v5.20.0
> [163ba53b] DiffResults v1.1.0
> [b552c78f] DiffRules v1.15.1
> [0c46a032] DifferentialEquations v7.12.0
> [b4f34e82] Distances v0.10.11
> [31c24e10] Distributions v0.25.106
> [ffbed154] DocStringExtensions v0.9.3
> ⌅ [5b8099bc] DomainSets v0.6.7
> [fa6b7ba4] DualNumbers v0.6.8
> [7c1d4256] DynamicPolynomials v0.5.3
> [4e289a0a] EnumX v1.0.4
> [f151be2c] EnzymeCore v0.6.5
> [d4d017d3] ExponentialUtilities v1.25.0
> [e2ba6199] ExprTools v0.1.10
> [9d29842c] FastAlmostBandedMatrices v0.1.0
> [7034ab61] FastBroadcast v0.2.8
> [9aa1b823] FastClosures v0.3.2
> [29a986be] FastLapackInterface v2.0.0
> [1a297f60] FillArrays v1.9.3
> [6a86dc24] FiniteDiff v2.22.0
> [59287772] Formatting v0.4.2
> [f6369f11] ForwardDiff v0.10.36
> [069b7b12] FunctionWrappers v1.1.3
> [77dc65aa] FunctionWrappersWrappers v0.1.3
> [d9f16b24] Functors v0.4.5
> ⌃ [46192b85] GPUArraysCore v0.1.5
> [c145ed77] GenericSchur v0.5.3
> [c27321d9] Glob v1.3.1
> [86223c79] Graphs v1.9.0
> [3e5b6fbb] HostCPUFeatures v0.1.16
> [34004b35] HypergeometricFunctions v0.3.23
> [615f187c] IfElse v0.1.1
> [d25df0c9] Inflate v0.1.4
> [8197267c] IntervalSets v0.7.8
> [92d709cd] IrrationalConstants v0.2.2
> [82899510] IteratorInterfaceExtensions v1.0.0
> [692b3bcd] JLLWrappers v1.5.0
> [682c06a0] JSON v0.21.4
> [98e50ef6] JuliaFormatter v1.0.45
> [ccbc3e58] JumpProcesses v9.10.1
> [ef3ab10e] KLU v0.4.1
> [ba0b0d4f] Krylov v0.9.5
> [b964fa9f] LaTeXStrings v1.3.1
> [2ee39098] LabelledArrays v1.15.0
> [984bce1d] LambertW v0.4.6
> [23fbe1c1] Latexify v0.16.1
> [10f19ff3] LayoutPointers v0.1.15
> [50d2b5c4] Lazy v0.15.1
> [5078a376] LazyArrays v1.8.3
> [2d8b4e74] LevyArea v1.0.0
> [d3d80556] LineSearches v7.2.0
> [7ed4a6bd] LinearSolve v2.22.1
> [2ab3a3ac] LogExpFunctions v0.3.26
> [bdcacae8] LoopVectorization v0.12.166
> [d8e11817] MLStyle v0.4.17
> [1914dd2f] MacroTools v0.5.12
> [d125e4d3] ManualMemory v0.1.8
> [a3b82374] MatrixFactorizations v2.1.0
> [bb5d69b7] MaybeInplace v0.1.1
> [e1d29d7a] Missings v1.1.0
> [961ee093] ModelingToolkit v8.75.0
> [46d2c3a1] MuladdMacro v0.2.4
> [102ac46a] MultivariatePolynomials v0.5.4
> [d8a4904e] MutableArithmetics v1.4.0
> [d41bc354] NLSolversBase v7.8.3
> [2774e3e8] NLsolve v4.5.1
> [77ba4419] NaNMath v1.0.2
> [8913a72c] NonlinearSolve v3.4.0
> [6fe1bfb0] OffsetArrays v1.13.0
> [429524aa] Optim v1.7.8
> [bac558e1] OrderedCollections v1.6.3
> [1dea7af3] OrdinaryDiffEq v6.69.0
> [90014a1f] PDMats v0.11.31
> [65ce6f38] PackageExtensionCompat v1.0.2
> [d96e819e] Parameters v0.12.3
> [69de0a69] Parsers v2.8.1
> [e409e4f3] PoissonRandom v0.4.4
> [f517fe37] Polyester v0.7.9
> [1d0040c9] PolyesterWeave v0.2.1
> [85a6dd25] PositiveFactorizations v0.2.4
> [d236fae5] PreallocationTools v0.4.17
> [aea7be01] PrecompileTools v1.2.0
> [21216c6a] Preferences v1.4.1
> [1fd47b50] QuadGK v2.9.1
> [74087812] Random123 v1.6.2
> [e6cf234a] RandomNumbers v1.5.3
> [3cdcf5f2] RecipesBase v1.3.4
> [731186ca] RecursiveArrayTools v3.4.2
> [f2c3362d] RecursiveFactorization v0.2.21
> [189a3867] Reexport v1.2.2
> [ae029012] Requires v1.3.0
> [ae5879a3] ResettableStacks v1.1.1
> [79098fc4] Rmath v0.7.1
> [7e49a35a] RuntimeGeneratedFunctions v0.5.12
> [94e857df] SIMDTypes v0.1.0
> [476501e8] SLEEFPirates v0.6.42
> [0bca4576] SciMLBase v2.17.0
> [c0aeaf25] SciMLOperators v0.3.7
> [efcf1570] Setfield v1.1.1
> [727e6d20] SimpleNonlinearSolve v1.2.0
> [699a6c99] SimpleTraits v0.9.4
> [ce78b400] SimpleUnPack v1.1.0
> [a2af1166] SortingAlgorithms v1.2.1
> [47a9eef4] SparseDiffTools v2.15.0
> [e56a9233] Sparspak v0.3.9
> [276daf66] SpecialFunctions v2.3.1
> [aedffcd0] Static v0.8.8
> [0d7ed370] StaticArrayInterface v1.5.0
> [90137ffa] StaticArrays v1.9.0
> [1e83bf80] StaticArraysCore v1.4.2
> [82ae8749] StatsAPI v1.7.0
> [2913bbd2] StatsBase v0.34.2
> [4c63d2b9] StatsFuns v1.3.0
> [9672c7b4] SteadyStateDiffEq v2.0.1
> [789caeaf] StochasticDiffEq v6.64.0
> [7792a7ef] StrideArraysCore v0.5.2
> [c3572dad] Sundials v4.23.1
> [2efcf032] SymbolicIndexingInterface v0.3.3
> [d1185830] SymbolicUtils v1.5.0
> [0c5d862f] Symbolics v5.16.0
> [3783bdb8] TableTraits v1.0.1
> [bd369af6] Tables v1.11.1
> [8290d209] ThreadingUtilities v0.5.2
> [a759f4b9] TimerOutputs v0.5.23
> [0796e94c] Tokenize v0.5.28
> [d5829a12] TriangularSolve v0.1.20
> [410a4b4d] Tricks v0.1.8
> [781d530d] TruncatedStacktraces v1.4.0
> [5c2747f8] URIs v1.5.1
> [3a884ed6] UnPack v1.0.2
> [1986cc42] Unitful v1.19.0
> [a7c27f48] Unityper v0.1.6
> [3d5dd08c] VectorizationBase v0.21.65
> [19fa3120] VertexSafeGraphs v0.2.0
> [1d5cc7b8] IntelOpenMP_jll v2024.0.2+0
> [856f044c] MKL_jll v2024.0.0+0
> [efe28fd5] OpenSpecFun_jll v0.5.5+0
> [f50d1b31] Rmath_jll v0.4.0+0
> ⌅ [fb77eaff] Sundials_jll v5.2.2+0
> [0dad84c5] ArgTools v1.1.1
> [56f22d72] Artifacts
> [2a0f44e3] Base64
> [ade2ca70] Dates
> [8ba89e20] Distributed
> [f43a241f] Downloads v1.6.0
> [7b1f6079] FileWatching
> [9fa8497b] Future
> [b77e0a4c] InteractiveUtils
> [4af54fe1] LazyArtifacts
> [b27032c2] LibCURL v0.6.4
> [76f85450] LibGit2
> [8f399da3] Libdl
> [37e2e46d] LinearAlgebra
> [56ddb016] Logging
> [d6f4376e] Markdown
> [a63ad114] Mmap
> [ca575930] NetworkOptions v1.2.0
> [44cfe95a] Pkg v1.10.0
> [de0858da] Printf
> [3fa0cd96] REPL
> [9a3f8284] Random
> [ea8e919c] SHA v0.7.0
> [9e88b42a] Serialization
> [1a1011a3] SharedArrays
> [6462fe0b] Sockets
> [2f01184e] SparseArrays v1.10.0
> [10745b16] Statistics v1.10.0
> [4607b0f0] SuiteSparse
> [fa267f1f] TOML v1.0.3
> [a4e569a6] Tar v1.10.0
> [8dfed614] Test
> [cf7118a7] UUIDs
> [4ec0a83e] Unicode
> [e66e0078] CompilerSupportLibraries_jll v1.0.5+1
> [deac9b47] LibCURL_jll v8.4.0+0
> [e37daf67] LibGit2_jll v1.6.4+0
> [29816b5a] LibSSH2_jll v1.11.0+1
> [c8ffd9c3] MbedTLS_jll v2.28.2+1
> [14a3606d] MozillaCACerts_jll v2023.1.10
> [4536629a] OpenBLAS_jll v0.3.23+2
> [05823500] OpenLibm_jll v0.8.1+2
> [bea87d4a] SuiteSparse_jll v7.2.1+1
> [83775a58] Zlib_jll v1.2.13+1
> [8e850b90] libblastrampoline_jll v5.8.0+1
> [8e850ede] nghttp2_jll v1.52.0+1
> [3f19e933] p7zip_jll v17.4.0+2
> Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`
> 
> ```

> **show(err)**
>
> ```julia
> 1-element ExceptionStack:
> LoadError: MethodError: no method matching (::SciMLBase.var"#187#189"{ODEFunction{true, SciMLBase.AutoSpecialize, ModelingToolkit.var"#k#503"{RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋arg1, :ˍ₋arg2, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0x66fdb9d8, 0x7065c0d5, 0xc5193f8f, 0x42e87a59, 0x20f809cd), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :ˍ₋arg1, :ˍ₋arg2, :t), ModelingToolkit.var"#_RGF_ModTag", ModelingToolkit.var"#_RGF_ModTag", (0xf649ba8a, 0xa091b803, 0x21fee2a4, 0xeaade6c7, 0xa4cf5818), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolkit.var"#generated_observed#510"{ODESystem, Dict{Any, Any}, Vector{SymbolicUtils.BasicSymbolic{Real}}}, Nothing, ODESystem}, Num})(::Vector{Float64}, ::Vector{Float64})
> 
> ```

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [January 8, 2024, 3:58pm UTC](https://discourse.julialang.org/t/cannot-access-mtks-observed-variables-in-steady-state-solutions-nonlinearsolution/108524/2 "2024-01-08T15:58:04Z")

</div>

Yes we need to pass these on, it’s something that has recently come up in the new initialization stuff but we just haven’t gotten to it. Open an issue please.

---

<div class="post-metadata">

### Author: ![Wen-Wei\_Tseng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wen-wei_tseng/32/28839_2.png) [@Wen-Wei\_Tseng](https://discourse.julialang.org/u/Wen-Wei_Tseng)
#### Post date: [January 8, 2024, 4:13pm UTC](https://discourse.julialang.org/t/cannot-access-mtks-observed-variables-in-steady-state-solutions-nonlinearsolution/108524/3 "2024-01-08T16:13:39Z")

</div>

Done. Thank you for your quick response: [Cannot access observed variables in NonlinearSolution · Issue #2420 · SciML/ModelingToolkit.jl · GitHub](https://github.com/SciML/ModelingToolkit.jl/issues/2420)

---

<div class="post-metadata">

### Author: ![Wen-Wei\_Tseng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wen-wei_tseng/32/28839_2.png) [@Wen-Wei\_Tseng](https://discourse.julialang.org/u/Wen-Wei_Tseng)
#### Post date: [January 10, 2024, 8:42am UTC](https://discourse.julialang.org/t/cannot-access-mtks-observed-variables-in-steady-state-solutions-nonlinearsolution/108524/4 "2024-01-10T08:42:20Z")

</div>

Right now, I use the `TerminateSteadyState()` callback as a workaround.

```julia
# ...
sys = ODESystem(eqs, defaults=[x=>0.0, τ=>3.0])
prob = ODEProblem(sys, [], Inf)
sol = solve(prob, Rodas5(), save_everystep=false, callback=TerminateSteadyState())
sol[end] # Steady state of state variable(s)
sol[sys.RHS][end] # Steady state of observed variables

```
