@@ -161,6 +161,7 @@ function DiffEqBase.SDEProblem{iip}(sys::SDESystem,u0map,tspan,p=parammap;
161161 version = nothing, tgrad=false,
162162 jac = false, Wfact = false,
163163 checkbounds = false, sparse = false,
164+ sparsenoise = sparse,
164165 linenumbers = true, parallel=SerialForm(),
165166 kwargs...)
166167```
@@ -172,6 +173,7 @@ function DiffEqBase.SDEProblem{iip}(sys::SDESystem,u0map,tspan,parammap=DiffEqBa
172173 version = nothing , tgrad= false ,
173174 jac = false , Wfact = false ,
174175 checkbounds = false , sparse = false ,
176+ sparsenoise = sparse,
175177 linenumbers = true , parallel= SerialForm (),
176178 kwargs... ) where iip
177179
@@ -180,7 +182,16 @@ function DiffEqBase.SDEProblem{iip}(sys::SDESystem,u0map,tspan,parammap=DiffEqBa
180182 sparse= sparse)
181183 u0 = varmap_to_vars (u0map,states (sys))
182184 p = varmap_to_vars (parammap,parameters (sys))
183- SDEProblem (f,f. g,u0,tspan,p;kwargs... )
185+ if typeof (sys. noiseeqs) <: AbstractVector
186+ noise_rate_prototype = nothing
187+ elseif sparsenoise
188+ I,J,V = findnz (SparseArrays. sparse (sys. noiseeqs))
189+ noise_rate_prototype = SparseArrays. sparse (I,J,zero (eltype (u0)))
190+ else
191+ noise_rate_prototype = zeros (eltype (u0),size (sys. noiseeqs))
192+ end
193+
194+ SDEProblem (f,f. g,u0,tspan,p;noise_rate_prototype= noise_rate_prototype,kwargs... )
184195end
185196
186197function DiffEqBase. SDEProblem (sys:: SDESystem , args... ; kwargs... )
0 commit comments