Skip to content

Commit 69adcc3

Browse files
committed
tests pass
1 parent 1b052af commit 69adcc3

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

src/HarmonicOrthogonalPolynomials.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ import BlockArrays: block, blockindex, unblock, BlockSlice
66
import DomainSets: indomain, Sphere
77
import LinearAlgebra: norm, factorize
88
import QuasiArrays: to_quasi_index, SubQuasiArray, *
9-
import ContinuumArrays: TransformFactorization, @simplify, ProjectionFactorization, plan_grid_transform, plan_transform, grid, grid_layout, plotgrid_layout, AbstractBasisLayout, MemoryLayout
9+
import ContinuumArrays: TransformFactorization, @simplify, ProjectionFactorization, plan_grid_transform, plan_transform, grid, grid_layout, plotgrid_layout, AbstractBasisLayout, MemoryLayout, abslaplacian, laplacian
1010
import ClassicalOrthogonalPolynomials: checkpoints, _sum, cardinality, increasingtruncations
1111
import BlockBandedMatrices: BlockRange1, _BandedBlockBandedMatrix
1212
import FastTransforms: Plan, interlace
1313
import QuasiArrays: LazyQuasiMatrix, LazyQuasiArrayStyle
1414
import InfiniteArrays: InfStepRange, RangeCumsum
1515

16-
export SphericalHarmonic, UnitSphere, SphericalCoordinate, RadialCoordinate, Block, associatedlegendre, RealSphericalHarmonic, sphericalharmonicy, abs, -, ^, AngularMomentum, Laplacian
16+
export SphericalHarmonic, UnitSphere, SphericalCoordinate, RadialCoordinate, Block, associatedlegendre, RealSphericalHarmonic, sphericalharmonicy, abs, -, ^, AngularMomentum, Laplacian, AbsLaplacian
1717
cardinality(::Sphere) = ℵ₁
1818

1919
include("multivariateops.jl")

src/laplace.jl

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,20 @@
1-
function laplacian(P::AbstractSphericalHarmonic; dims...)
1+
function abslaplacian(P::AbstractSphericalHarmonic; dims...)
22
# Spherical harmonics are the eigenfunctions of the Laplace operator on the unit sphere
3-
P * Diagonal(mortar(Fill.((-(0:∞)-(0:∞).^2), 1:2:∞)))
3+
P * Diagonal(mortar(Fill.((0:∞)+(0:∞).^2, 1:2:∞)))
4+
end
5+
6+
function abslaplacian(P::AbstractSphericalHarmonic, order; dims...)
7+
# Spherical harmonics are the eigenfunctions of the Laplace operator on the unit sphere
8+
P * Diagonal(mortar(Fill.(((0:∞)+(0:∞).^2) .^ order, 1:2:∞)))
9+
end
10+
11+
12+
function laplacian(P::AbstractSphericalHarmonic; dims...)
13+
# Spherical harmonics are the eigenfunctions of the Laplace operator on the unit sphere
14+
P * Diagonal(mortar(Fill.(-(0:∞)-(0:∞).^2, 1:2:∞)))
15+
end
16+
17+
function laplacian(P::AbstractSphericalHarmonic, order::Int; dims...)
18+
# Spherical harmonics are the eigenfunctions of the Laplace operator on the unit sphere
19+
P * Diagonal(mortar(Fill.((-(0:∞)-(0:∞).^2) .^ order, 1:2:∞)))
420
end

test/runtests.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ end
229229
= Laplacian(Rxyz)
230230
@testisa Laplacian
231231
@testisa Laplacian
232-
@test *(SΔ,S) isa ApplyQuasiArray
232+
@test *S isa ApplyQuasiArray
233233
@test *(RΔ,R) isa ApplyQuasiArray
234234
@test copy(SΔ) ====== copy(RΔ)
235235
@test axes(SΔ) == axes(RΔ) == (axes(S,1),axes(S,1)) == (axes(R,1),axes(R,1))
@@ -323,8 +323,8 @@ end
323323
S = SphericalHarmonic()
324324
xyz = axes(S,1)
325325
@test Laplacian(xyz) isa Laplacian
326-
@test Laplacian(xyz)^2 isa QuasiArrays.ApplyQuasiArray
327-
@test Laplacian(xyz)^3 isa QuasiArrays.ApplyQuasiArray
326+
@test Laplacian(xyz)^2 isa Laplacian
327+
@test Laplacian(xyz)^3 isa Laplacian
328328
f1 = c -> cos(c.θ)^2
329329
Δ_f1 = c -> -1-3*cos(2*c.θ)
330330
Δ2_f1 = c -> 6+18*cos(2*c.θ)
@@ -342,8 +342,8 @@ end
342342
S = SphericalHarmonic()[:,Block.(Base.OneTo(10))]
343343
xyz = axes(S,1)
344344
@test Laplacian(xyz) isa Laplacian
345-
@test Laplacian(xyz)^2 isa QuasiArrays.ApplyQuasiArray
346-
@test Laplacian(xyz)^3 isa QuasiArrays.ApplyQuasiArray
345+
@test Laplacian(xyz)^2 isa Laplacian
346+
@test Laplacian(xyz)^3 isa Laplacian
347347
f1 = c -> cos(c.θ)^2
348348
Δ_f1 = c -> -1-3*cos(2*c.θ)
349349
Δ2_f1 = c -> 6+18*cos(2*c.θ)
@@ -361,8 +361,8 @@ end
361361
S = RealSphericalHarmonic()[:,Block.(Base.OneTo(10))]
362362
xyz = axes(S,1)
363363
@test Laplacian(xyz) isa Laplacian
364-
@test Laplacian(xyz)^2 isa QuasiArrays.ApplyQuasiArray
365-
@test Laplacian(xyz)^3 isa QuasiArrays.ApplyQuasiArray
364+
@test Laplacian(xyz)^2 isa Laplacian
365+
@test Laplacian(xyz)^3 isa Laplacian
366366
f1 = c -> cos(c.θ)^2
367367
Δ_f1 = c -> -1-3*cos(2*c.θ)
368368
Δ2_f1 = c -> 6+18*cos(2*c.θ)

0 commit comments

Comments
 (0)