@@ -6,12 +6,12 @@ using ClassicalOrthogonalPolynomials, FastTransforms, BlockBandedMatrices, Block
6
6
LazyArrays, SpecialFunctions, LinearAlgebra, BandedMatrices, LazyBandedMatrices, ArrayLayouts,
7
7
HarmonicOrthogonalPolynomials, RecurrenceRelationships
8
8
9
- import Base: axes, in, == , + , - , / , * , ^ , \ , copy, copyto!, OneTo, getindex, size, oneto, all, resize!, BroadcastStyle, similar, fill!, setindex!, convert, show, summary
9
+ import Base: axes, in, == , + , - , / , * , ^ , \ , copy, copyto!, OneTo, getindex, size, oneto, all, resize!, BroadcastStyle, similar, fill!, setindex!, convert, show, summary, diff
10
10
import Base. Broadcast: Broadcasted, broadcasted, DefaultArrayStyle
11
11
import DomainSets: boundary, EuclideanDomain
12
12
13
13
import QuasiArrays: LazyQuasiMatrix, LazyQuasiArrayStyle, domain
14
- import ContinuumArrays: @simplify , Weight, weight, grid, plotgrid, TransformFactorization, ExpansionLayout, plotvalues, unweighted, plan_transform, checkpoints, transform_ldiv, AbstractBasisLayout, basis_axes, Inclusion, grammatrix, weaklaplacian, layout_broadcasted
14
+ import ContinuumArrays: @simplify , Weight, weight, grid, plotgrid, TransformFactorization, ExpansionLayout, plotvalues, unweighted, plan_transform, checkpoints, transform_ldiv, AbstractBasisLayout, basis_axes, Inclusion, grammatrix, weaklaplacian, layout_broadcasted, laplacian, abslaplacian, laplacian_axis, abslaplacian_axis, diff_layout, operatororder, broadcastbasis
15
15
16
16
import ArrayLayouts: MemoryLayout, sublayout, sub_materialize
17
17
import BlockArrays: block, blockindex, BlockSlice, viewblock, blockcolsupport, AbstractBlockStyle, BlockStyle
@@ -23,17 +23,31 @@ import InfiniteArrays: InfiniteCardinal, OneToInf
23
23
24
24
import ClassicalOrthogonalPolynomials: jacobimatrix, Weighted, orthogonalityweight, HalfWeighted, WeightedBasis, pad, recurrencecoefficients, clenshaw, weightedgrammatrix, Clenshaw
25
25
import HarmonicOrthogonalPolynomials: BivariateOrthogonalPolynomial, MultivariateOrthogonalPolynomial, Plan,
26
- PartialDerivative, AngularMomentum , BlockOneTo, BlockRange1, interlace,
26
+ AngularMomentum, angularmomentum , BlockOneTo, BlockRange1, interlace,
27
27
MultivariateOPLayout, AbstractMultivariateOPLayout, MAX_PLOT_BLOCKS
28
28
29
29
export MultivariateOrthogonalPolynomial, BivariateOrthogonalPolynomial,
30
30
UnitTriangle, UnitDisk,
31
31
JacobiTriangle, TriangleWeight, WeightedTriangle,
32
32
DunklXuDisk, DunklXuDiskWeight, WeightedDunklXuDisk,
33
33
Zernike, ZernikeWeight, zerniker, zernikez,
34
- PartialDerivative, Laplacian, AbsLaplacianPower, AngularMomentum,
34
+ AngularMomentum,
35
35
RadialCoordinate, Weighted, Block, jacobimatrix, KronPolynomial, RectPolynomial,
36
- grammatrix, oneto
36
+ grammatrix, oneto, coordinates, Laplacian, AbsLaplacian, laplacian, abslaplacian, angularmomentum, weaklaplacian
37
+
38
+
39
+ laplacian_axis (:: Inclusion{<:SVector{2}} , A; dims... ) = diff (A, (2 ,0 ); dims... ) + diff (A, (0 , 2 ); dims... )
40
+ abslaplacian_axis (:: Inclusion{<:SVector{2}} , A; dims... ) = - (diff (A, (2 ,0 ); dims... ) + diff (A, (0 , 2 ); dims... ))
41
+ coordinates (P) = (first .(axes (P,1 )), last .(axes (P,1 )))
42
+
43
+ function diff_layout (:: AbstractBasisLayout , a, (k,j):: NTuple{2,Int} ; dims... )
44
+ (k < 0 || j < 0 ) && throw (ArgumentError (" order must be non-negative" ))
45
+ k == j == 0 && return a
46
+ ((k,j) == (1 ,0 ) || (k,j) == (0 ,1 )) && return diff (a, Val ((k,j)); dims... )
47
+ k ≥ j && return diff (diff (a, (1 ,0 )), (k- 1 ,j))
48
+ diff (diff (a, (0 ,1 )), (k,j- 1 ))
49
+ end
50
+
37
51
38
52
include (" ModalInterlace.jl" )
39
53
include (" clenshawkron.jl" )
0 commit comments