Skip to content

Commit b1d3222

Browse files
committed
ZernikeDIsk constructor
1 parent 9157ee8 commit b1d3222

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

src/Disk/Disk.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,19 @@ fromrectcfs(S, v) = fromtensor(S, checkerboard(totensor(rectspace(S),v)))
8888
evaluate(cfs::AbstractVector, S::ChebyshevDisk, x) = evaluate(torectcfs(S,cfs), rectspace(S), ipolar(x))
8989

9090

91-
function _coefficients(disk2cxf, v̂::AbstractVector, ::ChebyshevDisk, ::ZernikeDisk)
91+
function _coefficients(disk2cxf, v̂::AbstractVector{T}, ::ChebyshevDisk, ::ZernikeDisk) where T
9292
F = totensor(ChebyshevDisk(), v̂)
9393
F *= sqrt(convert(T,π))
9494
n = size(F,1)
9595
= disk2cxf \ pad(F,n,4n-3)
9696
trivec(F̌)
9797
end
9898

99-
function _coefficients(disk2cxf, v::AbstractVector, ::ZernikeDisk, ::ChebyshevDisk)
99+
function _coefficients(disk2cxf, v::AbstractVector{T}, ::ZernikeDisk, ::ChebyshevDisk) where T
100100
= tridevec(v)
101-
/= sqrt(convert(T,π))
102-
n = size(F,1)
103-
F = disk2cxf \ pad(F̌,n,4n-3)
101+
n = size(F̌,1)
102+
F = disk2cxf * pad(F̌,n,4n-3)
103+
F /= sqrt(convert(T,π))
104104
fromtensor(ChebyshevDisk(), F)
105105
end
106106

@@ -113,7 +113,7 @@ end
113113
function coefficients(cfs::AbstractVector, ZD::ZernikeDisk, CD::ChebyshevDisk)
114114
c = tridevec(cfs) # TODO: wasteful
115115
n = size(c,1)
116-
_coefficients(CDisk2CxfPlan(n), cfs, CD, ZD)
116+
_coefficients(CDisk2CxfPlan(n), cfs, ZD, CD)
117117
end
118118

119119

test/test_disk.jl

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
using Revise, ApproxFun, MultivariateOrthogonalPolynomials
1+
using Revise
2+
using ApproxFun, MultivariateOrthogonalPolynomials
23
import MultivariateOrthogonalPolynomials: checkerboard, icheckerboard, CDisk2CxfPlan
34
import ApproxFunBase: totensor
45
import ApproxFunOrthogonalPolynomials: jacobip
56

67

7-
88
function chebydiskeval(c::AbstractMatrix{T}, r, θ) where T
99
ret = zero(T)
1010
for j = 1:2:size(c,2), k=1:size(c,1)
@@ -52,6 +52,7 @@ end
5252
P = CDisk2CxfPlan(n)
5353
d = P \ c
5454
@test d [1/sqrt(2)]
55+
5556
f = Fun((x,y) -> y, ChebyshevDisk()); n = 2;
5657
c = totensor(f.space, f.coefficients)
5758
c = pad(c, n, 4n-3)
@@ -80,7 +81,7 @@ end
8081
@test d[2,5] 1
8182
end
8283
@testset "different m and ℓ" begin
83-
for (m,ℓ) in ((0,2), (1,1), (2,2), (2,6), (3,3))
84+
for (m,ℓ) in ((0,0), (0,2), (1,1), (2,2), (2,6), (3,3))
8485
p1 = (r,θ) -> sqrt(2+2)*r^m*jacobip((ℓ-m)÷2, 0, m, 2r^2-1)*cos(m*θ)/sqrt(π)
8586
f = Fun((x,y) -> p1(sqrt(x^2+y^2), atan(y,x)), ChebyshevDisk());
8687
@test f(0.1*cos(0.2),0.1*sin(0.2)) p1(0.1,0.2)
@@ -99,3 +100,16 @@ end
99100
end
100101
end
101102

103+
@testset "ChebyshevDisk-ZernikeDisk" begin
104+
@test coefficients([sqrt(2/π)], ChebyshevDisk(), ZernikeDisk()) [1.0]
105+
@test coefficients([1.0], ZernikeDisk(), ChebyshevDisk()) [sqrt(2/π)]
106+
end
107+
108+
@testset "ZernikeDisk" begin
109+
f = Fun((x,y) -> 1, ZernikeDisk(), 10)
110+
@test f(0.1,0.2) 1.0
111+
f = Fun((x,y) -> 1, ZernikeDisk())
112+
@test f(0.1,0.2) 1.0
113+
f = Fun((x,y) -> exp(x*cos(y-0.1)), ZernikeDisk())
114+
@test f(0.1,0.2) exp(0.1*cos(0.1))
115+
end

0 commit comments

Comments
 (0)