Skip to content

Linearization with bigfloat #3752

@baggepinnen

Description

@baggepinnen

fails, example below

using ModelingToolkit

@independent_variables t
@variables x(t)=big(0.0) y(t)=0 u(t)=0 r(t)=0 [input = true]
@parameters kp = 1
D = Differential(t)

eqs = [u ~ kp * (r - y)
       D(x) ~ -x + u
       y ~ x]

@named sys = System(eqs, t)

lsys, ssys, extras = linearize(sys, [r], [y])
julia> lsys, ssys, extras = linearize(sys, [r], [y])
┌ Warning: An empty operating point was passed to `linearization_function`. An operating point containing the variables that will be changed in `linearize` should be provided. Disable this warning by passing `warn_empty_op = false`.
└ @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/linearization.jl:52
┌ Warning: Initialization system is overdetermined. 2 equations for 0 unknowns. Initialization will default to using least squares. `SCCNonlinearProblem` can only be used for initialization of fully determined systems and hence will not be used here. To suppress this warning pass warn_initialize_determined = false. To make this warning into an error, pass fully_determined = true
└ @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/problems/initializationproblem.jl:106
ERROR: UndefRefError: access to undefined reference
Stacktrace:
  [1] getindex
    @ ./essentials.jl:917 [inlined]
  [2] _broadcast_getindex
    @ ./broadcast.jl:644 [inlined]
  [3] _getindex
    @ ./broadcast.jl:674 [inlined]
  [4] _broadcast_getindex
    @ ./broadcast.jl:650 [inlined]
  [5] getindex
    @ ./broadcast.jl:610 [inlined]
  [6] macro expansion
    @ ./broadcast.jl:973 [inlined]
  [7] macro expansion
    @ ./simdloop.jl:77 [inlined]
  [8] copyto!
    @ ./broadcast.jl:972 [inlined]
  [9] copyto!
    @ ./broadcast.jl:925 [inlined]
 [10] materialize!
    @ ./broadcast.jl:883 [inlined]
 [11] materialize!
    @ ./broadcast.jl:880 [inlined]
 [12] seed!(duals::Vector{ForwardDiff.Dual{…}}, x::Vector{BigFloat}, seed::ForwardDiff.Partials{1, BigFloat})
    @ ForwardDiff ~/.julia/packages/ForwardDiff/UBbGT/src/apiutils.jl:45
 [13] seed!
    @ ~/.julia/packages/ForwardDiff/UBbGT/src/apiutils.jl:45 [inlined]
 [14] vector_mode_dual_eval!
    @ ~/.julia/packages/ForwardDiff/UBbGT/src/apiutils.jl:30 [inlined]
 [15] vector_mode_jacobian(f!::DifferentiationInterface.FixTail{…}, y::Vector{…}, x::Vector{…}, cfg::ForwardDiff.JacobianConfig{…})
    @ ForwardDiff ~/.julia/packages/ForwardDiff/UBbGT/src/jacobian.jl:139
 [16] jacobian
    @ ~/.julia/packages/ForwardDiff/UBbGT/src/jacobian.jl:40 [inlined]
 [17] jacobian
    @ ~/.julia/packages/DifferentiationInterface/zJHX8/ext/DifferentiationInterfaceForwardDiffExt/twoarg.jl:470 [inlined]
 [18] PreparedJacobian
    @ ~/.julia/dev/ModelingToolkit/src/linearization.jl:189 [inlined]
 [19] (::ModelingToolkit.LinearizationFunction{…})(u::Vector{…}, p::MTKParameters{…}, t::Float64)
    @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/linearization.jl:307
 [20] solve(prob::LinearizationProblem{ModelingToolkit.LinearizationFunction{…}, Float64}; allow_input_derivatives::Bool)
    @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/linearization.jl:442
 [21] solve
    @ ~/.julia/dev/ModelingToolkit/src/linearization.jl:438 [inlined]
 [22] linearize(sys::System, lin_fun::ModelingToolkit.LinearizationFunction{…}; t::Float64, op::Dict{…}, allow_input_derivatives::Bool, p::SciMLBase.NullParameters)
    @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/linearization.jl:746
 [23] linearize(sys::System, inputs::Vector{…}, outputs::Vector{…}; op::Dict{…}, t::Float64, allow_input_derivatives::Bool, zero_dummy_der::Bool, kwargs::@Kwargs{})
    @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/linearization.jl:759
 [24] linearize(sys::System, inputs::Vector{Num}, outputs::Vector{Num})
    @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/linearization.jl:749
 [25] top-level scope
    @ REPL[12]:1
Some type information was truncated. Use `show(err)` to see complete types.

@oscardssmith you happen to know what's up with this?

Metadata

Metadata

Assignees

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