Skip to content

Commit a201c75

Browse files
committed
update to AbsLaplacianPower
1 parent 8db1743 commit a201c75

File tree

3 files changed

+12
-17
lines changed

3 files changed

+12
-17
lines changed

src/MultivariateOrthogonalPolynomials.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import HarmonicOrthogonalPolynomials: BivariateOrthogonalPolynomial, Multivariat
2424

2525
export UnitTriangle, UnitDisk, JacobiTriangle, TriangleWeight, WeightedTriangle, PartialDerivative, Laplacian,
2626
MultivariateOrthogonalPolynomial, BivariateOrthogonalPolynomial, Zernike, RadialCoordinate,
27-
zerniker, zernikez, Weighted, Block, ZernikeWeight
27+
zerniker, zernikez, Weighted, Block, ZernikeWeight, AbsLaplacianPower
2828

2929

3030
include("disk.jl")

src/disk.jl

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,14 @@ end
252252
# Fractional Laplacian
253253
###
254254

255-
struct FractionalDiskLaplacian{T}
256-
β::T # (-Δ)^(β) acting on (1-r^2)^β * Zernike(β)
255+
function *(L::AbsLaplacianPower, WZ::Weighted{<:Any,<:Zernike{<:Any}})
256+
@assert axes(L,1) == axes(WZ,1) && WZ.P.a == 0 && WZ.P.b == L.α
257+
WZ.P * Diagonal(WeightedZernikeFractionalLaplacianDiag{typeof(L.α)}(L.α))
257258
end
258259

259-
# gives the entries for the (negative!) fractional Laplacian (-Δ)^(β) times (1-r^2)^β * Zernike(β)
260+
# gives the entries for the (negative!) fractional Laplacian (-Δ)^(α) times (1-r^2)^α * Zernike(α)
260261
struct WeightedZernikeFractionalLaplacianDiag{T} <: AbstractBlockVector{T}
261-
β::T
262+
α::T
262263
end
263264

264265
axes(::WeightedZernikeFractionalLaplacianDiag) = (blockedrange(oneto(∞)),)
@@ -276,23 +277,17 @@ function Base.view(W::WeightedZernikeFractionalLaplacianDiag{T}, K::Block{1}) wh
276277
else #if iseven(l)
277278
m = Vcat(interlace(Array(1:2:l),Array(1:2:l)))
278279
end
279-
return convert(AbstractVector{T}, 2^(2*W.β)*fractionalcfs2d.(l-1,m,W.β))
280+
return convert(AbstractVector{T}, 2^(2*W.α)*fractionalcfs2d.(l-1,m,W.α))
280281
end
281282

282283
# generic d-dimensional ball fractional coefficients without the 2^(2*β) factor. m is assumed to be entered as abs(m)
283-
function fractionalcfs(l::Integer, m::Integer, β, d::Integer)
284+
function fractionalcfs(l::Integer, m::Integer, α, d::Integer)
284285
n = (l-m)÷2
285-
return exp(loggamma(1+β+n)+loggamma((d+2*m)/2+β+n)-loggamma(n+1)-loggamma((d+2*m)/2+n))
286+
return exp(loggamma(α+n+1)+loggamma((d+2*m)/2+α+n)-loggamma(n+1)-loggamma((d+2*m)/2+n))
286287
end
287288
# 2 dimensional special case, again without the 2^(2*β) factor
288289
fractionalcfs2d(l::Integer, m::Integer, β) = fractionalcfs(l,m,β,2)
289290

290-
function *(L::FractionalDiskLaplacian, WZ::Weighted{<:Any,<:Zernike{<:Any}})
291-
@assert WZ.P.a == 0 && WZ.P.b == L.β
292-
WZ.P * Diagonal(WeightedZernikeFractionalLaplacianDiag{typeof(L.β)}(L.β))
293-
end
294-
295-
296291
"""
297292
ModalInterlace
298293
"""

test/test_disk.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using MultivariateOrthogonalPolynomials, ClassicalOrthogonalPolynomials, StaticArrays, BlockArrays, BandedMatrices, FastTransforms, LinearAlgebra, RecipesBase, Test
2-
import MultivariateOrthogonalPolynomials: DiskTrav, grid, ZernikeTransform, ZernikeITransform, FractionalDiskLaplacian, *
2+
import MultivariateOrthogonalPolynomials: DiskTrav, grid, ZernikeTransform, ZernikeITransform, *
33
import ClassicalOrthogonalPolynomials: HalfWeighted
44

55

@@ -251,7 +251,7 @@ end
251251
WZ = Weighted(Zernike(1.))
252252
Δ = Laplacian(axes(WZ,1))
253253
Δ_Z = Zernike(1) \* WZ)
254-
Δfrac = FractionalDiskLaplacian(1.)
254+
Δfrac = AbsLaplacianPower(axes(WZ,1),1.)
255255
Δ_Zfrac = Zernike(1) \ (Δfrac * WZ)
256256
@test Δ_Z[1:100,1:100] -Δ_Zfrac[1:100,1:100]
257-
end
257+
end

0 commit comments

Comments
 (0)