Skip to content

Commit db34f05

Browse files
add weighted partial derivatives
actually test rectdisk import AngularMomentum
1 parent 311cb2e commit db34f05

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

src/rectdisk.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,28 @@ end
5757
DunklXuDisk+1) * _BandedBlockBandedMatrix(((k .+ T(2β)) ./ 2)', axes(k,1), (-1,1), (-1,1))
5858
end
5959

60+
@simplify function *(Dx::PartialDerivative{1}, w_P::WeightedDunklXuDisk)
61+
wP, P = w_P.args
62+
@assert P.β == wP.β
63+
β = P.β
64+
n = mortar(Fill.(oneto(∞),oneto(∞)))
65+
k = mortar(Base.OneTo.(oneto(∞)))
66+
dat = BlockBroadcastArray(hcat,
67+
(-4 .* (k .+- 1)).*(n .- k .+ 1)./(2k .+ (2β - 1))),
68+
0 .* n,
69+
(-k .* (k .+ 1) ./ ((2k .+ (2β - 1)) .* (k .+ β)) .* (n .+ k .+ 2β))
70+
)
71+
WeightedDunklXuDisk-1) * _BandedBlockBandedMatrix(dat', axes(k,1), (1,-1), (2,0))
72+
end
73+
74+
@simplify function *(Dy::PartialDerivative{2}, w_P::WeightedDunklXuDisk)
75+
wP, P = w_P.args
76+
@assert P.β == wP.β
77+
k = mortar(Base.OneTo.(oneto(∞)))
78+
T = promote_type(eltype(Dy), eltype(P)) # avoid bug in convert
79+
WeightedDunklXuDisk(P.β-1) * _BandedBlockBandedMatrix((T(-2).*k)', axes(k,1), (1,-1), (1,-1))
80+
end
81+
6082
# P^{(β)} ↗ P^{(β+1)}
6183
function dunklxu_raising(β)
6284
n = mortar(Fill.(oneto(∞),oneto(∞)))

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ using MultivariateOrthogonalPolynomials, Test
22

33
include("test_modalinterlace.jl")
44
include("test_disk.jl")
5+
include("test_rectdisk.jl")
56
include("test_triangle.jl")
67
# include("test_dirichlettriangle.jl")

test/test_rectdisk.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using MultivariateOrthogonalPolynomials, StaticArrays, BlockArrays, BlockBandedMatrices, ArrayLayouts,
22
QuasiArrays, Test, ClassicalOrthogonalPolynomials, BandedMatrices, FastTransforms, LinearAlgebra
3-
import MultivariateOrthogonalPolynomials: dunklxu_raising, dunklxu_lowering
3+
import MultivariateOrthogonalPolynomials: dunklxu_raising, dunklxu_lowering, AngularMomentum
44

55
@testset "Dunkl-Xu disk" begin
66
@testset "basics" begin
@@ -34,8 +34,8 @@ import MultivariateOrthogonalPolynomials: dunklxu_raising, dunklxu_lowering
3434

3535
@test (L*R)[Block.(1:N), Block.(1:N)] (I - X^2 - Y^2)[Block.(1:N), Block.(1:N)]
3636

37-
∂x = PartialDerivative{1}(P)
38-
∂y = PartialDerivative{2}(P)
37+
∂x = PartialDerivative{1}(axes(P, 1))
38+
∂y = PartialDerivative{2}(axes(P, 1))
3939

4040
Dx = Q \ (∂x * P)
4141
Dy = Q \ (∂y * P)
@@ -61,6 +61,12 @@ import MultivariateOrthogonalPolynomials: dunklxu_raising, dunklxu_lowering
6161

6262
@test A[Block.(1:N), Block.(1:N)] C
6363

64+
∂x = PartialDerivative{1}(axes(WQ, 1))
65+
∂y = PartialDerivative{2}(axes(WQ, 1))
66+
67+
wDx = WP \ (∂x * WQ)
68+
wDy = WP \ (∂y * WQ)
69+
6470
@testset "truncations" begin
6571
KR,JR = Block.(1:N),Block.(1:N)
6672

0 commit comments

Comments
 (0)