Skip to content

Cannot simulate SDEs with static array parameters/initial conditions #2851

@TorkelE

Description

@TorkelE

MWE (remove @SVector and it works)

using ModelingToolkit, StochasticDiffEq, StaticArrays
using ModelingToolkit: t_nounits as t, D_nounits as D

# Define some variables
@parameters σ ρ β
@variables x(t) y(t) z(t)
@brownian a
eqs = [D(x) ~ σ * (y - x) + 0.1a * x,
    D(y) ~ x *- z) - y + 0.1a * y,
    D(z) ~ x * y - β * z + 0.1a * z]

@mtkbuild de = System(eqs, t)

u0map = @SVector [x => 1.0, y => 0.0, z => 0.0]
parammap = @SVector=> 10.0, β => 26.0, ρ => 2.33]

prob = SDEProblem(de, u0map, (0.0, 100.0), parammap)
sol = solve(prob, LambaEulerHeun())

gives a

ERROR: DimensionMismatch: Sizes (Size(3, 1), Size(3,)) of input arrays do not match
Stacktrace:
  [1] _throw_size_mismatch(::SMatrix{3, 1, Float64, 3}, ::Vararg{Any})
    @ StaticArrays ~/.julia/packages/StaticArrays/MSJcA/src/traits.jl:117
  [2] same_size
    @ ~/.julia/packages/StaticArrays/MSJcA/src/traits.jl:111 [inlined]
  [3] macro expansion
    @ ~/.julia/packages/StaticArrays/MSJcA/src/mapreduce.jl:76 [inlined]
  [4] _map
    @ ~/.julia/packages/StaticArrays/MSJcA/src/mapreduce.jl:42 [inlined]
  [5] map
    @ ~/.julia/packages/StaticArrays/MSJcA/src/mapreduce.jl:39 [inlined]
  [6] muladd
    @ ~/.julia/packages/StaticArrays/MSJcA/src/linalg.jl:51 [inlined]
  [7] perform_step!(integrator::StochasticDiffEq.SDEIntegrator{…}, cache::StochasticDiffEq.LambaEulerHeunConstantCache)
    @ StochasticDiffEq ~/.julia/packages/StochasticDiffEq/PgPd0/src/perform_step/lamba.jl:119
  [8] solve!(integrator::StochasticDiffEq.SDEIntegrator{…})
    @ StochasticDiffEq ~/.julia/packages/StochasticDiffEq/PgPd0/src/solve.jl:618
  [9] #__solve#107
    @ ~/.julia/packages/StochasticDiffEq/PgPd0/src/solve.jl:7 [inlined]
 [10] __solve (repeats 4 times)
    @ ~/.julia/packages/StochasticDiffEq/PgPd0/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#53
    @ ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:1080 [inlined]
 [14] solve_up
    @ ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:1066 [inlined]
 [15] solve(prob::SDEProblem{…}, args::LambaEulerHeun; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{})
    @ DiffEqBase ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:1003
 [16] solve(prob::SDEProblem{…}, args::LambaEulerHeun)
    @ DiffEqBase ~/.julia/packages/DiffEqBase/c8MAQ/src/solve.jl:993
 [17] top-level scope
    @ ~/Desktop/Julia Playground/tmp/playground.jl:57
Some type information was truncated. Use `show(err)` to see complete types.

Metadata

Metadata

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