1- # Laplacian
2-
3- struct Laplacian{T,D} <: LazyQuasiMatrix{T}
4- axis:: Inclusion{T,D}
5- end
6-
7- Laplacian {T} (axis:: Inclusion{<:Any,D} ) where {T,D} = Laplacian {T,D} (axis)
8- # Laplacian{T}(domain) where T = Laplacian{T}(Inclusion(domain))
9- # Laplacian(axis) = Laplacian{eltype(axis)}(axis)
10-
11- axes (D:: Laplacian ) = (D. axis, D. axis)
12- == (a:: Laplacian , b:: Laplacian ) = a. axis == b. axis
13- copy (D:: Laplacian ) = Laplacian (copy (D. axis))
14-
15- @simplify function * (Δ:: Laplacian , P:: AbstractSphericalHarmonic )
1+ function laplacian (P:: AbstractSphericalHarmonic ; dims... )
162 # Spherical harmonics are the eigenfunctions of the Laplace operator on the unit sphere
173 P * Diagonal (mortar (Fill .((- (0 : ∞)- (0 : ∞). ^ 2 ), 1 : 2 : ∞)))
184end
19-
20- # Negative fractional Laplacian (-Δ)^α or equiv. abs(Δ)^α
21-
22- struct AbsLaplacianPower{T,D,A} <: LazyQuasiMatrix{T}
23- axis:: Inclusion{T,D}
24- α:: A
25- end
26-
27- AbsLaplacianPower {T} (axis:: Inclusion{<:Any,D} ,α) where {T,D} = AbsLaplacianPower {T,D,typeof(α)} (axis,α)
28-
29- axes (D:: AbsLaplacianPower ) = (D. axis, D. axis)
30- == (a:: AbsLaplacianPower , b:: AbsLaplacianPower ) = a. axis == b. axis && a. α == b. α
31- copy (D:: AbsLaplacianPower ) = AbsLaplacianPower (copy (D. axis), D. α)
32-
33- abs (Δ:: Laplacian ) = AbsLaplacianPower (axes (Δ,1 ),1 )
34- - (Δ:: Laplacian ) = abs (Δ)
35-
36- ^ (D:: AbsLaplacianPower , k) = AbsLaplacianPower (D. axis, D. α* k)
0 commit comments