-
-
Notifications
You must be signed in to change notification settings - Fork 47
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
While the basic ParametrizedInterpolation example works fine on my machine, trying to use it inside of @mtkmodel failed.
Expected behavior
I expected a solution to the equation, or perhaps a better error message if I am doing something wrong.
Minimal Reproducible Example 👇
using ModelingToolkit, ModelingToolkitStandardLibrary.Electrical,
ModelingToolkitStandardLibrary.Blocks, DataInterpolations, DifferentialEquations
using ModelingToolkit: t_nounits as t, D_nounits as D
@mtkmodel Borm begin
@components begin
I_input = RealInput()
end
@variables begin
I(t) = 0
end
@equations begin
D(I) ~ I_input.u
end
end
uu = [0,10]
xx = [0,10]
@mtkmodel IsolatedBorm begin
@components begin
borm = Borm()
I_input = ParametrizedInterpolation(interp_type=ConstantInterpolation, u=uu, x=xx)
clock = ContinuousClock()
end
@equations begin
connect(clock.output, I_input.input)
connect(I_input.output, borm.I_input)
end
end
@mtkbuild room = IsolatedBorm()
solve(ODEProblem(room, [], (0,10)))Error & Stacktrace
ERROR: LoadError: UndefRefError: access to undefined reference
Stacktrace:
[1] getindex
@ .\essentials.jl:917 [inlined]
[2] iterate (repeats 2 times)
@ .\array.jl:902 [inlined]
[3] _zip_iterate_some
@ .\iterators.jl:444 [inlined]
[4] _zip_iterate_some
@ .\iterators.jl:446 [inlined]
[5] _zip_iterate_all
@ .\iterators.jl:436 [inlined]
[6] iterate
@ .\iterators.jl:426 [inlined]
[7] ==(A::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, B::Vector{Any})
@ Base .\abstractarray.jl:3033
[8] _eq
@ .\tuple.jl:551 [inlined]
[9] ==
@ .\tuple.jl:547 [inlined]
[10] !=
@ .\operators.jl:277 [inlined]
[11] (::ModelingToolkitStandardLibrary.Blocks.CachedInterpolation{…})(u::SubArray{…}, x::SubArray{…}, args::Tuple{})
@ ModelingToolkitStandardLibrary.Blocks C:\Users\a1058035\.julia\packages\ModelingToolkitStandardLibrary\b10Ky\src\Blocks\sources.jl:808
[12] macro expansion
@ C:\Users\a1058035\.julia\packages\SymbolicUtils\KmZ71\src\code.jl:411 [inlined]
[13] macro expansion
@ C:\Users\a1058035\.julia\packages\Symbolics\3yEdi\src\build_function.jl:368 [inlined]
[14] macro expansion
@ C:\Users\a1058035\.julia\packages\RuntimeGeneratedFunctions\2SjTC\src\RuntimeGeneratedFunctions.jl:161 [inlined]
[15] macro expansion
@ .\none:0 [inlined]
[16] generated_callfunc
@ .\none:0 [inlined]
[17] (::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{…})(::Vector{…}, ::Vector{…}, ::MTKParameters{…}, ::Float64)
@ RuntimeGeneratedFunctions C:\Users\a1058035\.julia\packages\RuntimeGeneratedFunctions\2SjTC\src\RuntimeGeneratedFunctions.jl:148
[18] macro expansion
@ C:\Users\a1058035\.julia\packages\ModelingToolkit\hlGut\src\systems\codegen_utils.jl:0 [inlined]
[19] _generated_call
@ C:\Users\a1058035\.julia\packages\ModelingToolkit\hlGut\src\systems\codegen_utils.jl:353 [inlined]
[20] GeneratedFunctionWrapper
@ C:\Users\a1058035\.julia\packages\ModelingToolkit\hlGut\src\systems\codegen_utils.jl:350 [inlined]
[21] ODEFunction
@ C:\Users\a1058035\.julia\packages\SciMLBase\wQHrI\src\scimlfunctions.jl:2592 [inlined]
[22] initialize!
@ C:\Users\a1058035\.julia\packages\OrdinaryDiffEqTsit5\o07IY\src\tsit_perform_step.jl:175 [inlined]
[23] initialize!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, cache::OrdinaryDiffEqCore.DefaultCache{…})
@ OrdinaryDiffEqCore C:\Users\a1058035\.julia\packages\OrdinaryDiffEqCore\oFTse\src\perform_step\composite_perform_step.jl:38
[24] __init(prob::ODEProblem{…}, alg::CompositeAlgorithm{…}, timeseries_init::Tuple{}, ts_init::Tuple{}, ks_init::Tuple{}; saveat::Tuple{}, tstops::Tuple{}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_on::Bool, save_start::Bool, save_end::Nothing, callback::Nothing, dense::Bool, calck::Bool, dt::Float64, dtmin::Float64, dtmax::Float64, force_dtmin::Bool, adaptive::Bool, gamma::Rational{…}, abstol::Nothing, reltol::Nothing, qmin::Rational{…}, qmax::Int64, qsteady_min::Int64, qsteady_max::Int64, beta1::Nothing, beta2::Nothing, qoldinit::Rational{…}, controller::Nothing, fullnormalize::Bool, failfactor::Int64, maxiters::Int64, internalnorm::typeof(DiffEqBase.ODE_DEFAULT_NORM), internalopnorm::typeof(LinearAlgebra.opnorm), isoutofdomain::typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), unstable_check::typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), verbose::Bool, timeseries_errors::Bool, dense_errors::Bool, advance_to_tstop::Bool, stop_at_next_tstop::Bool, initialize_save::Bool, progress::Bool, progress_steps::Int64, progress_name::String, progress_message::typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), progress_id::Symbol, userdata::Nothing, allow_extrapolation::Bool, initialize_integrator::Bool, alias::ODEAliasSpecifier, initializealg::OrdinaryDiffEqCore.DefaultInit, kwargs::@Kwargs{…})
@ OrdinaryDiffEqCore C:\Users\a1058035\.julia\packages\OrdinaryDiffEqCore\oFTse\src\solve.jl:577
[25] __init (repeats 2 times)
@ C:\Users\a1058035\.julia\packages\OrdinaryDiffEqCore\oFTse\src\solve.jl:11 [inlined]
[26] #__solve#62
@ C:\Users\a1058035\.julia\packages\OrdinaryDiffEqCore\oFTse\src\solve.jl:6 [inlined]
[27] __solve
@ C:\Users\a1058035\.julia\packages\OrdinaryDiffEqCore\oFTse\src\solve.jl:1 [inlined]
[28] #__solve#3
@ C:\Users\a1058035\.julia\packages\OrdinaryDiffEqDefault\MdlB6\src\default_alg.jl:48 [inlined]
[29] __solve
@ C:\Users\a1058035\.julia\packages\OrdinaryDiffEqDefault\MdlB6\src\default_alg.jl:47 [inlined]
[30] #__solve#54
@ C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:896 [inlined]
[31] __solve
@ C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:887 [inlined]
[32] #solve_call#31
@ C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:127 [inlined]
[33] solve_call(::ODEProblem{…})
@ DiffEqBase C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:84
[34] solve_up(::ODEProblem{…}, ::Nothing, ::Vector{…}, ::MTKParameters{…}; originator::SciMLBase.ChainRulesOriginator, kwargs::@Kwargs{})
@ DiffEqBase C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:665
[35] solve_up
@ C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:658 [inlined]
[36] solve(::ODEProblem{…}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{})
@ DiffEqBase C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:553
[37] solve(::ODEProblem{…})
@ DiffEqBase C:\Users\a1058035\.julia\packages\DiffEqBase\4uSBa\src\solve.jl:543Environment (please complete the following information):
- Output of
using Pkg; Pkg.status()
[82cc6244] DataInterpolations v8.5.0
[0c46a032] DifferentialEquations v7.16.1
[961ee093] ModelingToolkit v10.21.0
[16a59e39] ModelingToolkitStandardLibrary v2.25.0
[0c5d862f] Symbolics v6.52.0Julia Version 1.11.5
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working