From 8982d732f467585c1da09a52041faeb65781eee8 Mon Sep 17 00:00:00 2001 From: vyudu Date: Fri, 17 Oct 2025 14:12:18 -0400 Subject: [PATCH 1/3] fix: let StochasticDiffEq auto calculate noise process --- src/problems/sdeproblem.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/problems/sdeproblem.jl b/src/problems/sdeproblem.jl index e322775d2b..75203c574b 100644 --- a/src/problems/sdeproblem.jl +++ b/src/problems/sdeproblem.jl @@ -106,7 +106,7 @@ function calculate_noise_and_rate_prototype(sys::System, u0; sparsenoise = false elseif size(noiseeqs, 2) == 1 # scalar noise noise_rate_prototype = nothing - noise = WienerProcess(0.0, 0.0, 0.0) + noise = nothing elseif sparsenoise I, J, V = findnz(SparseArrays.sparse(noiseeqs)) noise_rate_prototype = SparseArrays.sparse(I, J, zero(eltype(u0))) From 25ce49059e05e86e00002c22c88e70b50ae1574e Mon Sep 17 00:00:00 2001 From: vyudu Date: Thu, 23 Oct 2025 10:59:39 -0400 Subject: [PATCH 2/3] revert to scalar noise, add iip path --- src/problems/sddeproblem.jl | 2 +- src/problems/sdeproblem.jl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/problems/sddeproblem.jl b/src/problems/sddeproblem.jl index f0e8e354aa..a0b02516e7 100644 --- a/src/problems/sddeproblem.jl +++ b/src/problems/sddeproblem.jl @@ -68,7 +68,7 @@ end end end - noise, noise_rate_prototype = calculate_noise_and_rate_prototype(sys, u0; sparsenoise) + noise, noise_rate_prototype = calculate_noise_and_rate_prototype(sys, u0; sparsenoise, iip) kwargs = process_kwargs(sys; callback, eval_expression, eval_module, op, kwargs...) if expression == Val{true} diff --git a/src/problems/sdeproblem.jl b/src/problems/sdeproblem.jl index 75203c574b..526701a48d 100644 --- a/src/problems/sdeproblem.jl +++ b/src/problems/sdeproblem.jl @@ -77,7 +77,7 @@ end t = tspan !== nothing ? tspan[1] : tspan, check_length, eval_expression, eval_module, check_compatibility, sparse, expression, kwargs...) - noise, noise_rate_prototype = calculate_noise_and_rate_prototype(sys, u0; sparsenoise) + noise, noise_rate_prototype = calculate_noise_and_rate_prototype(sys, u0; sparsenoise, iip) kwargs = process_kwargs(sys; expression, callback, eval_expression, eval_module, op, kwargs...) @@ -97,7 +97,7 @@ function check_compatible_system(T::Union{Type{SDEFunction}, Type{SDEProblem}}, check_is_continuous(sys, T) end -function calculate_noise_and_rate_prototype(sys::System, u0; sparsenoise = false) +function calculate_noise_and_rate_prototype(sys::System, u0; sparsenoise = false, iip = false) noiseeqs = get_noise_eqs(sys) if noiseeqs isa AbstractVector # diagonal noise @@ -106,7 +106,7 @@ function calculate_noise_and_rate_prototype(sys::System, u0; sparsenoise = false elseif size(noiseeqs, 2) == 1 # scalar noise noise_rate_prototype = nothing - noise = nothing + noise = iip ? WienerProcess!(0., 0., 0.) : WienerProcess(0., 0., 0.) elseif sparsenoise I, J, V = findnz(SparseArrays.sparse(noiseeqs)) noise_rate_prototype = SparseArrays.sparse(I, J, zero(eltype(u0))) From 350b6e9576046b965c5483c0d70161fb1f243724 Mon Sep 17 00:00:00 2001 From: vyudu Date: Thu, 23 Oct 2025 13:28:47 -0400 Subject: [PATCH 3/3] fix: load WienerProcess --- src/ModelingToolkit.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ModelingToolkit.jl b/src/ModelingToolkit.jl index 6c79eb4fb1..7952622697 100644 --- a/src/ModelingToolkit.jl +++ b/src/ModelingToolkit.jl @@ -22,7 +22,7 @@ using DiffEqCallbacks using Graphs import ExprTools: splitdef, combinedef import OrderedCollections -using DiffEqNoiseProcess: DiffEqNoiseProcess, WienerProcess +using DiffEqNoiseProcess: DiffEqNoiseProcess, WienerProcess, WienerProcess! using SymbolicIndexingInterface using LinearAlgebra, SparseArrays