-
-
Notifications
You must be signed in to change notification settings - Fork 231
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Seems SDE simulations are broken?
MWE:
using ModelingToolkit, StochasticDiffEq
# Create SDE system.
@parameters p d
@variables t X(t)
D = Differential(t)
eqs = [D(X) ~ p - d*X]
noise_eqs = [sqrt(p), -sqrt(d*X)]
@named ssys = SDESystem(eqs, noise_eqs, t, [X], [p, d])
ssys = complete(ssys)
# Create and solves a SDEProblem.
u0 = [X => 10.0]
tspan = (0.0, 10.0)
ps = [p => 2.0, d => 0.5]
sprob = SDEProblem(ssys, u0, tspan, ps)
solve(sprob, ImplicitEM())
yields a
ERROR: MethodError: no method matching issplit(::ImplicitEM{…})
Closest candidates are:
issplit(::OrdinaryDiffEq.OrdinaryDiffEqStabilizedIRK.IRKC)
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/HQ92J/lib/OrdinaryDiffEqStabilizedIRK/src/alg_utils.jl:5
issplit(::Union{OrdinaryDiffEq.CFNLIRK3, OrdinaryDiffEq.CNAB2, OrdinaryDiffEq.CNLF2, OrdinaryDiffEq.KenCarp3, OrdinaryDiffEq.KenCarp4, OrdinaryDiffEq.KenCarp47, OrdinaryDiffEq.KenCarp5, OrdinaryDiffEq.KenCarp58, OrdinaryDiffEq.SBDF})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/alg_utils.jl:98
issplit(::Union{OrdinaryDiffEq.OrdinaryDiffEqAlgorithm, OrdinaryDiffEq.DAEAlgorithm})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/alg_utils.jl:97
Stacktrace:
[1] islinearfunction(f::Function, alg::ImplicitEM{…})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/derivative_utils.jl:437
[2] build_J_W(alg::ImplicitEM{…}, u::Vector{…}, uprev::Vector{…}, p::ModelingToolkit.MTKParameters{…}, t::Float64, dt::Float64, f::SDEFunction{…}, ::Type{…}, ::Val{…})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/derivative_utils.jl:868
[3] build_nlsolver(alg::ImplicitEM{…}, nlalg::OrdinaryDiffEq.NLNewton{…}, u::Vector{…}, uprev::Vector{…}, p::ModelingToolkit.MTKParameters{…}, t::Float64, dt::Float64, f::SDEFunction{…}, rate_prototype::Vector{…}, ::Type{…}, ::Type{…}, ::Type{…}, γ::Float64, c::Float64, α::Int64, ::Val{…})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/nlsolve/utils.jl:178
[4] build_nlsolver
@ ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/nlsolve/utils.jl:146 [inlined]
[5] build_nlsolver
@ ~/.julia/packages/OrdinaryDiffEq/HQ92J/src/nlsolve/utils.jl:136 [inlined]
[6] alg_cache(alg::ImplicitEM{…}, prob::SDEProblem{…}, u::Vector{…}, ΔW::Vector{…}, ΔZ::Nothing, p::ModelingToolkit.MTKParameters{…}, rate_prototype::Vector{…}, noise_rate_prototype::Vector{…}, jump_rate_prototype::Nothing, ::Type{…}, ::Type{…}, ::Type{…}, uprev::Vector{…}, f::SDEFunction{…}, t::Float64, dt::Float64, ::Type{…})
@ StochasticDiffEq ~/.julia/packages/StochasticDiffEq/aR0ZE/src/caches/sdirk_caches.jl:23
[7] __init(_prob::SDEProblem{…}, alg::ImplicitEM{…}, timeseries_init::Vector{…}, ts_init::Vector{…}, ks_init::Type, recompile::Type{…}; saveat::Tuple{}, tstops::Tuple{}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_noise::Bool, save_on::Bool, save_start::Bool, save_end::Nothing, callback::Nothing, dense::Bool, calck::Bool, dt::Float64, adaptive::Bool, gamma::Rational{…}, abstol::Nothing, reltol::Nothing, qmin::Rational{…}, qmax::Rational{…}, qsteady_min::Int64, qsteady_max::Int64, beta2::Nothing, beta1::Nothing, qoldinit::Rational{…}, controller::Nothing, fullnormalize::Bool, failfactor::Int64, delta::Rational{…}, maxiters::Int64, dtmax::Float64, dtmin::Float64, internalnorm::typeof(DiffEqBase.ODE_DEFAULT_NORM), isoutofdomain::typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), unstable_check::typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), verbose::Bool, force_dtmin::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, initialize_integrator::Bool, seed::UInt64, alias_u0::Bool, alias_jumps::Bool, kwargs::@Kwargs{})
@ StochasticDiffEq ~/.julia/packages/StochasticDiffEq/aR0ZE/src/solve.jl:474
[8] __init (repeats 2 times)
@ ~/.julia/packages/StochasticDiffEq/aR0ZE/src/solve.jl:18 [inlined]
[9] __solve(prob::SDEProblem{…}, alg::ImplicitEM{…}, timeseries::Vector{…}, ts::Vector{…}, ks::Nothing, recompile::Type{…}; kwargs::@Kwargs{…})
@ StochasticDiffEq ~/.julia/packages/StochasticDiffEq/aR0ZE/src/solve.jl:6
[10] __solve (repeats 5 times)
@ ~/.julia/packages/StochasticDiffEq/aR0ZE/src/solve.jl:1 [inlined]
[11] #solve_call#44
@ ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:612 [inlined]
[12] solve_call
@ ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:569 [inlined]
[13] solve_up(prob::SDEProblem{…}, sensealg::Nothing, u0::Vector{…}, p::ModelingToolkit.MTKParameters{…}, args::ImplicitEM{…}; kwargs::@Kwargs{})
@ DiffEqBase ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:1080
[14] solve_up
@ ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:1066 [inlined]
[15] #solve#51
@ ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:1003 [inlined]
[16] solve(prob::SDEProblem{…}, args::ImplicitEM{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:993
[17] top-level scope
@ ~/Desktop/Julia Playground/Environment - Temporary/playground.jl:18
Some type information was truncated. Use `show(err)` to see complete types.
on
(Environment - Temporary) pkg> st
Status `~/Desktop/Julia Playground/Environment - Temporary/Project.toml`
[961ee093] ModelingToolkit v9.21.0
[789caeaf] StochasticDiffEq v6.65.1
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working