-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArraySolveTesting.jl
More file actions
32 lines (27 loc) · 882 Bytes
/
Copy pathArraySolveTesting.jl
File metadata and controls
32 lines (27 loc) · 882 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using DifferentialEquations, DiffEqGPU, SparseArrays, CUDA
function lorenz(du, u, p, t)
du[1] = p[1] * (u[2] - u[1])
du[2] = u[1] * (p[2] - u[3]) - u[2]
du[3] = u[1] * u[2] - p[3] * u[3]
du[4] = 0
end
function multiplicative_noise(du, u, p, t)
# println(du)
du[1, 1] = 0.1 #* u[1]
# du[2, 2] = 0.4
du[4, 1] = 1.0
end
NRate = spzeros(4, 2)
NRate[1, 1] = 1
NRate[4, 1] = 1
NRate[2, 2] = 1
# CUDA.allowscalar(false)
u0 = ComplexF32[1.0; 0.0; 0.0; 0.0]
tspan = (0.0f0, 10.0f0)
p = (10.0f0, 28.0f0, 8 / 3.0f0)
prob = SDEProblem(lorenz, multiplicative_noise, u0, tspan, p, noise_rate_prototype=NRate)
prob_func = (prob, i, repeat) -> remake(prob, p=p)
monteprob = EnsembleProblem(prob, prob_func=prob_func)
# EnsembleGPUArray(CUDA.CUDABackend())
# EnsembleCPUArray()
sol = solve(monteprob, SRA2(), EnsembleThreads(), trajectories=10_000, saveat=1.0f0)