From c21125e296f6f579deb9c6af32d4f98ddbd531f2 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sun, 26 Apr 2026 18:36:00 -0400 Subject: [PATCH] Bump compat for StochasticDiffEq v7 / SciMLBase v3 ecosystem - Bump StochasticDiffEq compat from "6.28" to "6.28, 7" - Fix EnsembleSolution indexing: SciMLBase v3 changed EnsembleSolution to a 2D array; replace sol[i].u with sol.u[i].u and eachindex(sol) with eachindex(sol.u) in tests - Fix integer literals S0=100, t=0 to Float64 in tests; new ecosystem enforces strict type matching and no longer auto-promotes Int to Float in SDE solvers Refs: SciML/OrdinaryDiffEq.jl#3562, SciML/OrdinaryDiffEq.jl#3565 Co-Authored-By: Chris Rackauckas --- Project.toml | 2 +- test/runtests.jl | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Project.toml b/Project.toml index 4eeed56..bd88a62 100644 --- a/Project.toml +++ b/Project.toml @@ -15,7 +15,7 @@ DiffEqBase = "6.133.1, 7" DiffEqNoiseProcess = "5.13.0" Distributions = "0.25.100" RandomNumbers = "1.5.3" -StochasticDiffEq = "6.65.0" +StochasticDiffEq = "6.65.0, 7" julia = "1.10" [extras] diff --git a/test/runtests.jl b/test/runtests.jl index d30e50b..017135c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -27,8 +27,8 @@ end r = 0.03 sigma = 0.2 - S0 = 100 - t = 0 + S0 = 100.0 + t = 0.0 T = 1.0 days = 252 dt = 1 / days @@ -37,7 +37,7 @@ end sol = solve(prob, EM(); dt = dt) monte_prob = EnsembleProblem(prob) sol = solve(monte_prob, EM(); dt = dt, trajectories = 1000000) - us = [sol[i].u for i in eachindex(sol)] + us = [sol.u[i].u for i in eachindex(sol.u)] simulated = mean(us) tsteps = collect(0:dt:T) @@ -77,7 +77,7 @@ end prob = GeometricBrownianMotionProblem(μ, σ, u0, (0.0, t)) monte_prob = EnsembleProblem(prob) sol = solve(monte_prob, EM(); dt = 0.01, trajectories = 10000) - final_values = [sol[i].u[end] for i in eachindex(sol)] + final_values = [sol.u[i].u[end] for i in eachindex(sol.u)] simulated_mean = mean(final_values) simulated_var = var(final_values) @@ -118,7 +118,7 @@ end prob = OrnsteinUhlenbeckProblem(a, r, σ, u0, (0.0, t)) monte_prob = EnsembleProblem(prob) sol = solve(monte_prob, EM(); dt = 0.01, trajectories = 10000) - final_values = [sol[i].u[end] for i in eachindex(sol)] + final_values = [sol.u[i].u[end] for i in eachindex(sol.u)] simulated_mean = mean(final_values) simulated_var = var(final_values) @@ -166,7 +166,7 @@ end prob = CIRProblem(κ, θ, σ, u0, (0.0, t)) monte_prob = EnsembleProblem(prob) sol = solve(monte_prob, EM(); dt = 0.001, trajectories = 10000) - final_values = [sol[i].u[end] for i in eachindex(sol)] + final_values = [sol.u[i].u[end] for i in eachindex(sol.u)] simulated_mean = mean(final_values) simulated_var = var(final_values)