Skip to content

Commit 28cdca3

Browse files
committed
begin cleanup
1 parent f9b6281 commit 28cdca3

10 files changed

+356
-328
lines changed

scripts/benchmark.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ if !isdir(joinpath(scripts_dir, save_dir))
1111
mkdir(joinpath(scripts_dir, save_dir))
1212
end
1313

14-
function benchmark_fmm(ns_fmm, is_direct; expansion_order = 2, n_per_branch=50, theta=4)
14+
function benchmark_fmm(ns_fmm, is_direct; expansion_order = 2, n_per_branch=50, multipole_acceptance_criterion=4)
1515
times_fmm = zeros(length(ns_fmm))
1616
times_direct = zeros(length(ns_fmm)) .* NaN
1717
# max_errs = zeros(length(orders))
@@ -23,7 +23,7 @@ function benchmark_fmm(ns_fmm, is_direct; expansion_order = 2, n_per_branch=50,
2323
ms = rand(n)
2424
xs = rand(n,3)
2525
masses = [Mass(xs[i,:],[ms[i]],zeros(1),zeros(3)) for i in 1:length(ms)]
26-
@elapsed fmm.fmm!(masses, derivatives, expansion_order, n_per_branch, theta)
26+
@elapsed fmm.fmm!(masses, derivatives, expansion_order, n_per_branch, multipole_acceptance_criterion)
2727
@elapsed fmm.direct!(masses; reflex=false)
2828

2929
println("\nBegin Benchmark Test:")
@@ -38,7 +38,7 @@ function benchmark_fmm(ns_fmm, is_direct; expansion_order = 2, n_per_branch=50,
3838
# fmm
3939
# println("\t\tBuilding Tree...")
4040
println("\t\tComputing FMM...")
41-
times_fmm[i] = @elapsed tree = fmm.fmm!(masses, expansion_order, n_per_branch, theta, B2M!, P2P!)
41+
times_fmm[i] = @elapsed tree = fmm.fmm!(masses, expansion_order, n_per_branch, multipole_acceptance_criterion, B2M!, P2P!)
4242
println("\t\tFMM time: $(times_fmm[i]) seconds")
4343
for ii in 1:n
4444
potentials_fmm[ii] = masses[ii].potential[1]

scripts/simple_gravitational.jl

+57-57
Large diffs are not rendered by default.

src/b2m.jl

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
z = b_z - c_z
1111
y = b_y - c_y
1212
qx, qy, qz = system[i_body,VECTOR_STRENGTH]
13-
r, theta, phi = cartesian_2_spherical(x,y,z)
14-
regular_harmonic!(harmonics, r ,theta, -phi, P) # Ylm^* -> -dx[3]
13+
r, multipole_acceptance_criterion, phi = cartesian_2_spherical(x,y,z)
14+
regular_harmonic!(harmonics, r ,multipole_acceptance_criterion, -phi, P) # Ylm^* -> -dx[3]
1515
# update values
1616
for l in 0:P
1717
for m in 0:l
@@ -39,8 +39,8 @@ end
3939
z = b_z - c_z
4040
y = b_y - c_y
4141
q = system[i_body,SCALAR_STRENGTH]
42-
r, theta, phi = cartesian_2_spherical(x,y,z)
43-
regular_harmonic!(harmonics, r, theta, -phi, P) # Ylm^* -> -dx[3]
42+
r, multipole_acceptance_criterion, phi = cartesian_2_spherical(x,y,z)
43+
regular_harmonic!(harmonics, r, multipole_acceptance_criterion, -phi, P) # Ylm^* -> -dx[3]
4444
# update values
4545
for l in 0:P
4646
for m in 0:l

src/derivatives.jl

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
"""
22
dr_k/dx_idx_j
33
"""
4-
function d2rdx2(r, theta, phi)
4+
function d2rdx2(r, multipole_acceptance_criterion, phi)
55
derivatives = zeros(3,3,3)
66
derivatives[:,:,1] .= [
7-
(1-cos(phi)^2 * sin(theta)^2)/r -sin(theta)^2*cos(phi)*sin(phi)/r -sin(theta)*cos(phi)*cos(theta)/r;
8-
(-sin(theta)^2*cos(phi)*sin(phi))/r (1-sin(theta)^2*sin(phi)^2)/r -sin(theta)*sin(phi)*cos(theta)/r;
9-
-sin(theta)*cos(phi)*cos(theta)/r -sin(theta)*sin(phi)*cos(theta)/r sin(theta)^2/r
7+
(1-cos(phi)^2 * sin(multipole_acceptance_criterion)^2)/r -sin(multipole_acceptance_criterion)^2*cos(phi)*sin(phi)/r -sin(multipole_acceptance_criterion)*cos(phi)*cos(multipole_acceptance_criterion)/r;
8+
(-sin(multipole_acceptance_criterion)^2*cos(phi)*sin(phi))/r (1-sin(multipole_acceptance_criterion)^2*sin(phi)^2)/r -sin(multipole_acceptance_criterion)*sin(phi)*cos(multipole_acceptance_criterion)/r;
9+
-sin(multipole_acceptance_criterion)*cos(phi)*cos(multipole_acceptance_criterion)/r -sin(multipole_acceptance_criterion)*sin(phi)*cos(multipole_acceptance_criterion)/r sin(multipole_acceptance_criterion)^2/r
1010
]
1111
derivatives[:,:,2] .= [
12-
cos(theta)/sin(theta)*(1-cos(phi)^2*(1+2*sin(theta)^2))/r^2 -cos(theta)/sin(theta)*sin(phi)*cos(phi)*(1+2*sin(theta)^2)/r^2 cos(phi)*(1-2*cos(theta)^2)/r^2;
13-
-cos(theta)/sin(theta)*sin(phi)*cos(phi)*(1+2*sin(theta)^2)/r^2 cos(theta)/sin(theta)*(1-sin(phi)^2*(1+2*sin(theta)^2))/r^2 (2*sin(theta)^2-1)/r^2*sin(phi);
14-
cos(phi)*(1-2*cos(theta)^2)/r^2 (2*sin(theta)^2-1)/r^2*sin(phi) 2*sin(theta)*cos(theta)/r^2
12+
cos(multipole_acceptance_criterion)/sin(multipole_acceptance_criterion)*(1-cos(phi)^2*(1+2*sin(multipole_acceptance_criterion)^2))/r^2 -cos(multipole_acceptance_criterion)/sin(multipole_acceptance_criterion)*sin(phi)*cos(phi)*(1+2*sin(multipole_acceptance_criterion)^2)/r^2 cos(phi)*(1-2*cos(multipole_acceptance_criterion)^2)/r^2;
13+
-cos(multipole_acceptance_criterion)/sin(multipole_acceptance_criterion)*sin(phi)*cos(phi)*(1+2*sin(multipole_acceptance_criterion)^2)/r^2 cos(multipole_acceptance_criterion)/sin(multipole_acceptance_criterion)*(1-sin(phi)^2*(1+2*sin(multipole_acceptance_criterion)^2))/r^2 (2*sin(multipole_acceptance_criterion)^2-1)/r^2*sin(phi);
14+
cos(phi)*(1-2*cos(multipole_acceptance_criterion)^2)/r^2 (2*sin(multipole_acceptance_criterion)^2-1)/r^2*sin(phi) 2*sin(multipole_acceptance_criterion)*cos(multipole_acceptance_criterion)/r^2
1515
]
1616
derivatives[:,:,3] .= [
17-
2*cos(phi)*sin(phi)/r^2/sin(theta)^2 (2*sin(phi)^2-1)/r^2/sin(theta)^2 0;
18-
(2*sin(phi)^2-1)/r^2/sin(theta)^2 -2*sin(phi)*cos(phi)/r^2/sin(theta)^2 0;
17+
2*cos(phi)*sin(phi)/r^2/sin(multipole_acceptance_criterion)^2 (2*sin(phi)^2-1)/r^2/sin(multipole_acceptance_criterion)^2 0;
18+
(2*sin(phi)^2-1)/r^2/sin(multipole_acceptance_criterion)^2 -2*sin(phi)*cos(phi)/r^2/sin(multipole_acceptance_criterion)^2 0;
1919
0 0 0
2020
]
2121
return derivatives
@@ -24,16 +24,16 @@ end
2424
"""
2525
dr_j/dx_i
2626
"""
27-
function drdx(r,theta,phi)
27+
function drdx(r,multipole_acceptance_criterion,phi)
2828
derivatives = [
29-
sin(theta)*cos(phi) cos(theta)*cos(phi)/r -sin(phi)/r/sin(theta);
30-
sin(theta)*sin(phi) cos(theta)*sin(phi)/r cos(phi)/r/sin(theta);
31-
cos(theta) -sin(theta)/r 0
29+
sin(multipole_acceptance_criterion)*cos(phi) cos(multipole_acceptance_criterion)*cos(phi)/r -sin(phi)/r/sin(multipole_acceptance_criterion);
30+
sin(multipole_acceptance_criterion)*sin(phi) cos(multipole_acceptance_criterion)*sin(phi)/r cos(phi)/r/sin(multipole_acceptance_criterion);
31+
cos(multipole_acceptance_criterion) -sin(multipole_acceptance_criterion)/r 0
3232
]
3333
# derivatives = [
34-
# sin(theta)*cos(phi) sin(theta)*sin(phi) cos(theta);
35-
# cos(theta)*cos(phi)/r cos(theta)*sin(phi)/r -sin(theta)/r;
36-
# -sin(phi)/r/sin(theta) cos(phi)/r/sin(theta) 0
34+
# sin(multipole_acceptance_criterion)*cos(phi) sin(multipole_acceptance_criterion)*sin(phi) cos(multipole_acceptance_criterion);
35+
# cos(multipole_acceptance_criterion)*cos(phi)/r cos(multipole_acceptance_criterion)*sin(phi)/r -sin(multipole_acceptance_criterion)/r;
36+
# -sin(phi)/r/sin(multipole_acceptance_criterion) cos(phi)/r/sin(multipole_acceptance_criterion) 0
3737
# ]
3838
return derivatives
3939
end

src/estimate_cost.jl

+8-8
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ function allocate_l2b(expansion_order, type=Float64)
4141
potential_jacobian = zeros(type,3,4)
4242
potential_hessian = zeros(type,3,3,4)
4343
derivative_harmonics = zeros(Complex{type}, ((expansion_order+1) * (expansion_order+2)) >> 1)
44-
derivative_harmonics_theta = zeros(Complex{type}, ((expansion_order+1) * (expansion_order+2)) >> 1)
45-
derivative_harmonics_theta_2 = zeros(Complex{type}, ((expansion_order+1) * (expansion_order+2)) >> 1)
44+
derivative_harmonics_multipole_acceptance_criterion = zeros(Complex{type}, ((expansion_order+1) * (expansion_order+2)) >> 1)
45+
derivative_harmonics_multipole_acceptance_criterion_2 = zeros(Complex{type}, ((expansion_order+1) * (expansion_order+2)) >> 1)
4646
workspace = zeros(type,3,4)
47-
return vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_theta, derivative_harmonics_theta_2, workspace
47+
return vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_multipole_acceptance_criterion, derivative_harmonics_multipole_acceptance_criterion_2, workspace
4848
end
4949
5050
function get_tau_b2m(system, branch, b2m_n_bodies, harmonics_m2m_l2l, expansion_order)
@@ -74,15 +74,15 @@ function estimate_tau_fmm(expansion_order, type=Float64)
7474
# harmonics_l2l, L = allocate_m2m_l2l(expansion_order, type)
7575
# alloc_l2l = @belapsed harmonics_l2l, L = allocate_m2m_l2l(expansion_order, type)
7676
# tau_l2l = @belapsed L2L!(branch1, branch2, harmonics_l2l, L, expansion_order)
77-
vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_theta, derivative_harmonics_theta_2, workspace = allocate_l2b(expansion_order, type)
78-
alloc_l2b = @elapsed vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_theta, derivative_harmonics_theta_2, workspace = allocate_l2b(expansion_order, type)
79-
alloc_l2b = @elapsed vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_theta, derivative_harmonics_theta_2, workspace = allocate_l2b(expansion_order, type)
77+
vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_multipole_acceptance_criterion, derivative_harmonics_multipole_acceptance_criterion_2, workspace = allocate_l2b(expansion_order, type)
78+
alloc_l2b = @elapsed vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_multipole_acceptance_criterion, derivative_harmonics_multipole_acceptance_criterion_2, workspace = allocate_l2b(expansion_order, type)
79+
alloc_l2b = @elapsed vector_potential, potential_jacobian, potential_hessian, derivative_harmonics, derivative_harmonics_multipole_acceptance_criterion, derivative_harmonics_multipole_acceptance_criterion_2, workspace = allocate_l2b(expansion_order, type)
8080
body_position = rand(SVector{3,type})
8181
expansion_center = 10 * rand(SVector{3,type})
8282
tau_l2b = @elapsed L2B_loop!(vector_potential, potential_jacobian, potential_hessian, body_position, expansion_center,
83-
branch2.local_expansion, derivative_harmonics, derivative_harmonics_theta, derivative_harmonics_theta_2, expansion_order, workspace)
83+
branch2.local_expansion, derivative_harmonics, derivative_harmonics_multipole_acceptance_criterion, derivative_harmonics_multipole_acceptance_criterion_2, expansion_order, workspace)
8484
tau_l2b = @elapsed L2B_loop!(vector_potential, potential_jacobian, potential_hessian, body_position, expansion_center,
85-
branch2.local_expansion, derivative_harmonics, derivative_harmonics_theta, derivative_harmonics_theta_2, expansion_order, workspace)
85+
branch2.local_expansion, derivative_harmonics, derivative_harmonics_multipole_acceptance_criterion, derivative_harmonics_multipole_acceptance_criterion_2, expansion_order, workspace)
8686
return alloc_m2m_l2l, tau_m2m_l2l, alloc_m2l, tau_m2l, alloc_l2b, tau_l2b
8787
end
8888

0 commit comments

Comments
 (0)