Skip to content

Commit f2d7e98

Browse files
Merge pull request #546 from ErikQQY/qqy/refactor_sde
Refactor SDEProblem constructor
2 parents 0e396bf + 500a725 commit f2d7e98

17 files changed

+47
-47
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
3535
Adapt = "3"
3636
ArrayInterface = "6, 7"
3737
DataStructures = "0.18"
38-
DiffEqBase = "6.122"
38+
DiffEqBase = "6.130.1"
3939
DiffEqNoiseProcess = "5.13"
4040
DocStringExtensions = "0.8, 0.9"
4141
FillArrays = "0.6, 0.7, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 1"
@@ -49,7 +49,7 @@ OrdinaryDiffEq = "6.52"
4949
RandomNumbers = "1.5.3"
5050
RecursiveArrayTools = "2"
5151
Reexport = "0.2, 1.0"
52-
SciMLBase = "1.70"
52+
SciMLBase = "2.0.6"
5353
SciMLOperators = "0.2.9, 0.3"
5454
SparseDiffTools = "2"
5555
StaticArrays = "0.11, 0.12, 1.0"

test/adaptive/sde_linearadaptive_tests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ add_probs[2] = prob_sde_additivesystem
1111

1212
for i in 1:2
1313
global sol,sol2,err1
14-
bigprob = SDEProblem(probs[i].f,probs[i].g,big.(probs[i].u0),(big.(probs[i].tspan[1]),big.(probs[i].tspan[2])),noise=probs[i].noise)
15-
add_bigprob = SDEProblem(add_probs[i].f,add_probs[i].g,big.(add_probs[i].u0),(big.(add_probs[i].tspan[1]),big.(add_probs[i].tspan[2])),noise=add_probs[i].noise)
14+
bigprob = SDEProblem(probs[i].f,big.(probs[i].u0),(big.(probs[i].tspan[1]),big.(probs[i].tspan[2])),noise=probs[i].noise)
15+
add_bigprob = SDEProblem(add_probs[i].f,big.(add_probs[i].u0),(big.(add_probs[i].tspan[1]),big.(add_probs[i].tspan[2])),noise=add_probs[i].noise)
1616
## SRIW1
1717

1818
Random.seed!(100)

test/commutative_tests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ end
4444

4545
ff_commute = SDEFunction(f_commute,σ,analytic=f_commute_analytic)
4646

47-
prob = SDEProblem(ff_commute,σ,u0,(0.0,1.0),noise_rate_prototype=rand(2,4))
47+
prob = SDEProblem(ff_commute,u0,(0.0,1.0),noise_rate_prototype=rand(2,4))
4848

4949
sol = solve(prob,RKMilCommute(),dt=1/2^(8))
5050
sol = solve(prob,RKMilGeneral(ii_approx=IICommutative()),dt=1/2^(8))
@@ -67,7 +67,7 @@ sim2 = test_convergence(dts,prob,RKMilGeneral(p=2),trajectories=Int(2e2))
6767

6868
ff_commute_oop = SDEFunction(f_commute_oop,σ_oop,analytic=f_commute_analytic)
6969

70-
proboop = SDEProblem(ff_commute_oop,σ_oop,u0,(0.0,1.0),noise_rate_prototype=rand(2,4))
70+
proboop = SDEProblem(ff_commute_oop,u0,(0.0,1.0),noise_rate_prototype=rand(2,4))
7171

7272
sol = solve(proboop,RKMilCommute(),dt=1/2^(8))
7373
sol = solve(proboop,RKMilGeneral(ii_approx=IICommutative()),dt=1/2^(8))

test/iif_methods.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ f1_no_noise(u,p,t) = μ
1212
f1_no_noise_analytic(u0,p,t,W) = u0.*exp.(2μ*t)
1313

1414
ff1_μ = SplitSDEFunction(f1_μ,f2,σ,analytic=f1_μ_analytic)
15-
prob = SDEProblem(ff1_μ,σ,1/2,(0.0,1.0))
15+
prob = SDEProblem(ff1_μ,1/2,(0.0,1.0))
1616
ff1_no_noise = SplitSDEFunction(f1_no_noise,f2,no_noise,analytic=f1_no_noise_analytic)
17-
no_noise_prob = SDEProblem(ff1_no_noise,no_noise,1/2,(0.0,1.0))
17+
no_noise_prob = SDEProblem(ff1_no_noise,1/2,(0.0,1.0))
1818

1919
sol = solve(prob,IIF1M(),dt=1/10)
2020

@@ -74,7 +74,7 @@ end
7474
f2(du,u,p,t) = du .= μ .* u
7575

7676
ff1_A = SplitSDEFunction(f1_A,f2,σ,analytic=f1_A_analytic)
77-
prob = SDEProblem(ff1_A,σ,u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
77+
prob = SDEProblem(ff1_A,u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
7878

7979
f1_no_noise(du,u,p,t) = A
8080
f2(du,u,p,t) = (du .= μ .* u)
@@ -86,7 +86,7 @@ function f1_no_noise_analytic(u0,p,t,W)
8686
exp(tmp)*u0
8787
end
8888
ff1_A = SplitSDEFunction(f1_no_noise,f2,σ22,analytic=f1_no_noise_analytic)
89-
prob_no_noise = SDEProblem(ff1_A,σ22,u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
89+
prob_no_noise = SDEProblem(ff1_A,u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
9090

9191

9292
sol = solve(prob,IIF1M(),dt=1/10)

test/mass_matrix_tests.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ function g!(du,u,p,t)
2323
@. du = 0.0
2424
end
2525

26-
prob2 = SDEProblem(SDEFunction(mm_g,g!;analytic=mm_analytic),g!,ones(3),(0.0,1.0))
27-
prob = SDEProblem(SDEFunction(mm_f,g!;analytic=mm_analytic,mass_matrix=mm_A),g!,
26+
prob2 = SDEProblem(SDEFunction(mm_g,g!;analytic=mm_analytic),ones(3),(0.0,1.0))
27+
prob = SDEProblem(SDEFunction(mm_f,g!;analytic=mm_analytic,mass_matrix=mm_A),
2828
ones(3),(0.0,1.0))
2929

3030
sol = solve(prob, ImplicitRKMil(theta=1), dt = 0.01, adaptive = false)
@@ -60,7 +60,7 @@ function mm_g2(du,u,p,t)
6060
mul!(du,mm_A,u)
6161
end
6262
prob2 = SDEProblem(no_mm_f2,no_mm_g2,ones(3),(0.0,1.0))
63-
prob = SDEProblem(SDEFunction(mm_f2,no_mm_g2;mass_matrix=mm_A),no_mm_g2,ones(3),(0.0,1.0))
63+
prob = SDEProblem(SDEFunction(mm_f2,no_mm_g2;mass_matrix=mm_A),ones(3),(0.0,1.0))
6464

6565
Random.seed!(1)
6666
sol = solve(prob, ImplicitEM(theta=1), dt = 0.01, adaptive = false)

test/multivariate_geometric.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ function f_analytic(u0,p,t,W)
1919
exp(tmp)*u0
2020
end
2121

22-
prob2 = SDEProblem(SDEFunction(f,σ,analytic=f_analytic),σ,u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
22+
prob2 = SDEProblem(SDEFunction(f,σ,analytic=f_analytic),u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
2323

2424
sol2 = solve(prob2,EM(),dt=1/100)
2525

@@ -51,7 +51,7 @@ function f_analytic_iip(u0,p,t,W)
5151
exp(tmp)*u0
5252
end
5353

54-
prob2 = SDEProblem(SDEFunction(f_iip,σ_iip,analytic=f_analytic_iip),σ_iip,u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
54+
prob2 = SDEProblem(SDEFunction(f_iip,σ_iip,analytic=f_analytic_iip),u0,(0.0,1.0),noise_rate_prototype=rand(2,2))
5555

5656
sol2 = solve(prob2,EM(),dt=1/100)
5757

test/noncommutative_tests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ end
4444

4545
ff_noncommute = SDEFunction(f_noncommute,g_noncommute,analytic=f_noncommute_analytic)
4646

47-
prob = SDEProblem(ff_noncommute,g_noncommute,u0,(0.0,1.0),noise_rate_prototype=rand(4,m))
47+
prob = SDEProblem(ff_noncommute,u0,(0.0,1.0),noise_rate_prototype=rand(4,m))
4848

4949
sol = solve(prob,EM(),dt=1/2^(8))
5050
sol = solve(prob,RKMilGeneral(p=10),dt=1/2^(8))
@@ -58,7 +58,7 @@ sim3 = test_convergence(dts,prob,RKMilGeneral(p=2),trajectories=Int(1e2))
5858
@test abs(sim3.𝒪est[:final] - 1) < 0.2
5959

6060
ff_noncommute_stratonovich = SDEFunction(f_noncommute,g_noncommute,analytic=f_noncommute_analytic_stratonovich)
61-
prob_stratonovich = SDEProblem(ff_noncommute_stratonovich,g_noncommute,u0,(0.0,1.0),noise_rate_prototype=rand(4,m))
61+
prob_stratonovich = SDEProblem(ff_noncommute_stratonovich,u0,(0.0,1.0),noise_rate_prototype=rand(4,m))
6262

6363
sim4 = test_convergence(dts,prob_stratonovich,EulerHeun(),trajectories=Int(1e2))
6464
@test abs(sim4.𝒪est[:final] - 1.0) < 0.2

test/nondiagonal_tests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ function ggprime(du, u, p, t)
4747
du .= coeff*u
4848
end
4949

50-
prob = SDEProblem(SDEFunction(f_nondiag,g_nondiag,analytic=f_analytic_nondiag),g_nondiag,u0,(0.0,1.0),noise_rate_prototype=zeros(2,2))
51-
probiip = SDEProblem(SDEFunction(f_nondiag_iip,g_nondiag_iip,analytic=f_analytic_nondiag),g_nondiag_iip,u0,(0.0,1.0),noise_rate_prototype=zeros(2,2))
50+
prob = SDEProblem(SDEFunction(f_nondiag,g_nondiag,analytic=f_analytic_nondiag),u0,(0.0,1.0),noise_rate_prototype=zeros(2,2))
51+
probiip = SDEProblem(SDEFunction(f_nondiag_iip,g_nondiag_iip,analytic=f_analytic_nondiag),u0,(0.0,1.0),noise_rate_prototype=zeros(2,2))
5252

5353
## Just solve to test compatibility
5454
IEM = solve(probiip,ImplicitEM())

test/ode_convergence_regression.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ using StochasticDiffEq, DiffEqDevTools, Test
33
linear = (u,p,t) -> (p*u)
44
g = (u,p,t) -> zero(u)
55
linear_analytic = (u0,p,t,W) -> u0*exp(p*t)
6-
prob = SDEProblem(SDEFunction(linear,g,analytic=linear_analytic),g,
6+
prob = SDEProblem(SDEFunction(linear,g,analytic=linear_analytic),
77
1/2,(0.0,1.0),1.01)
88

99
dts = (1/2) .^ (7:-1:4) #14->7 good plot
@@ -14,7 +14,7 @@ sim2 = test_convergence(dts,prob,SKenCarp(),trajectories=20)
1414
linear = (du,u,p,t) -> (du.=p.*u)
1515
g = (du,u,p,t) -> (du.=0)
1616
linear_analytic = (u0,p,t,W) -> u0*exp.(p.*t)
17-
prob = SDEProblem(SDEFunction(linear,g,analytic=linear_analytic),g,
17+
prob = SDEProblem(SDEFunction(linear,g,analytic=linear_analytic),
1818
rand(4,2),(0.0,1.0),1.01)
1919

2020
dts = (1/2) .^ (7:-1:4) #14->7 good plot
@@ -28,7 +28,7 @@ sim2 = test_convergence(dts,prob,SKenCarp(),trajectories=20)
2828
linear = (u,p,t) -> (p*u)
2929
g = (u,p,t) -> zero(u)
3030
linear_analytic = (u0,p,t,W) -> u0*exp(p*t)
31-
prob = SDEProblem(SDEFunction(linear,g,analytic=linear_analytic),g, 1/2,(0.0,1.0),1.01)
31+
prob = SDEProblem(SDEFunction(linear,g,analytic=linear_analytic), 1/2,(0.0,1.0),1.01)
3232
dts = 1 .//2 .^(10:-1:2)
3333

3434
sim2 = test_convergence(dts,prob, DRI1(),trajectories=20)

test/outofplace_arrays.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ A = [-1.0 0.0; 0.0 -0.5]
55
u0 = [1.0, 1.0]; tspan = (0.0,1.0)
66
_f = (u,p,t) -> t*(A*u)
77
_g = (u,p,t) -> 1.0
8-
prob = SDEProblem(SDEFunction(_f, _g), _g, u0, tspan)
8+
prob = SDEProblem(SDEFunction(_f, _g), u0, tspan)
99
integrator = init(prob, SKenCarp(); adaptive=false, dt=0.01)
1010
step!(integrator)
1111
@test_broken solve(prob, SOSRI(); adaptive=false, dt=0.01) isa RODESolution
@@ -18,7 +18,7 @@ solve(prob, SOSRA2(); adaptive=false, dt=0.01)
1818

1919
println("Vector g")
2020
_g = (u,p,t) -> [1.0, 1.0]
21-
prob = SDEProblem(SDEFunction(_f, _g), _g, u0, tspan)
21+
prob = SDEProblem(SDEFunction(_f, _g), u0, tspan)
2222
println("Implicit EM")
2323
integrator = init(prob, ImplicitEM(); adaptive=false, dt=0.01)
2424
step!(integrator)

0 commit comments

Comments
 (0)