Skip to content

modelingtoolkitize with irregular named tuple parameters #538

Open
@jebej

Description

@jebej
using OrdinaryDiffEq, ModelingToolkit

function purcell_single_ode(du,u,p,t)
    Δ,g,κ,γ = p
    α = u[1]
    dα = -γ/2 * α
    for i in 1:length(Δ)
        β = u[1+i]
        dα += -1im*(g[i]*β)
        du[1+i] = -1im*(Δ[i]*β + g[i]*α) - κ[i]/2*β
    end
    du[1] =return nothing
end

fun = ODEFunction{true}(purcell_single_ode);

p ==[5,-8,2], g=[0.4,0.08,0.1]*2π, κ=[2,3,1], γ=0.02)

prob = ODEProblem(fun,ComplexF64[1;zeros(length(p.Δ))],(0.0,5),p)
sol = solve(prob,DP8(),abstol=1e-9,reltol=1e-9);

sys = modelingtoolkitize(prob)
ERROR: KeyError: key 'Δ' not found
Stacktrace:
 [1] getindex at .\dict.jl:477 [inlined]
 [2] #1 at .\none:0 [inlined]
 [3] iterate at .\generator.jl:47 [inlined]
 [4] join(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Base.Generator{String,ModelingToolkit.var"#1#2"}, ::String) at .\strings\io.jl:294
 [5] join(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Base.Generator{String,ModelingToolkit.var"#1#2"}) at .\strings\io.jl:293
 [6] sprint(::Function, ::Base.Generator{String,ModelingToolkit.var"#1#2"}; context::Nothing, sizehint::Int64) at .\strings\io.jl:105
 [7] sprint at .\strings\io.jl:101 [inlined]
 [8] join at .\strings\io.jl:300 [inlined]
 [9] map_subscripts at C:\Users\Jeremy\.julia\packages\ModelingToolkit\TAGTl\src\variables.jl:14 [inlined]
 [10] _broadcast_getindex_evalf at .\broadcast.jl:631 [inlined]
 [11] _broadcast_getindex at .\broadcast.jl:604 [inlined]
 [12] #19 at .\broadcast.jl:1024 [inlined]
 [13] ntuple at .\ntuple.jl:41 [inlined]
 [14] copy at .\broadcast.jl:1024 [inlined]
 [15] materialize at .\broadcast.jl:820 [inlined]
 [16] Variable(::Symbol, ::Symbol) at C:\Users\Jeremy\.julia\packages\ModelingToolkit\TAGTl\src\variables.jl:59
 [17] #111 at .\none:0 [inlined]
 [18] iterate at .\generator.jl:47 [inlined]
 [19] collect(::Base.Generator{NTuple{4,Symbol},ModelingToolkit.var"#111#114"}) at .\array.jl:665
 [20] modelingtoolkitize(::ODEProblem{Array{Complex{Float64},1},Tuple{Float64,Float64},true,NamedTuple{(:Δ, :g, :κ, :γ),Tuple{Array{Int64,1},Array{Float64,1},Array{Int64,1},Float64}},ODEFunction{true,typeof(purcell_single_ode),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem}) at C:\Users\Jeremy\.julia\packages\ModelingToolkit\TAGTl\src\systems\diffeqs\modelingtoolkitize.jl:11

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions