@@ -6,12 +6,12 @@ using ClassicalOrthogonalPolynomials, FastTransforms, BlockBandedMatrices, Block
66 LazyArrays, SpecialFunctions, LinearAlgebra, BandedMatrices, LazyBandedMatrices, ArrayLayouts,
77 HarmonicOrthogonalPolynomials, RecurrenceRelationships
88
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
1010import Base. Broadcast: Broadcasted, broadcasted, DefaultArrayStyle
1111import DomainSets: boundary, EuclideanDomain
1212
1313import 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
1515
1616import ArrayLayouts: MemoryLayout, sublayout, sub_materialize
1717import BlockArrays: block, blockindex, BlockSlice, viewblock, blockcolsupport, AbstractBlockStyle, BlockStyle
@@ -23,17 +23,31 @@ import InfiniteArrays: InfiniteCardinal, OneToInf
2323
2424import ClassicalOrthogonalPolynomials: jacobimatrix, Weighted, orthogonalityweight, HalfWeighted, WeightedBasis, pad, recurrencecoefficients, clenshaw, weightedgrammatrix, Clenshaw
2525import HarmonicOrthogonalPolynomials: BivariateOrthogonalPolynomial, MultivariateOrthogonalPolynomial, Plan,
26- PartialDerivative, AngularMomentum , BlockOneTo, BlockRange1, interlace,
26+ AngularMomentum, angularmomentum , BlockOneTo, BlockRange1, interlace,
2727 MultivariateOPLayout, AbstractMultivariateOPLayout, MAX_PLOT_BLOCKS
2828
2929export MultivariateOrthogonalPolynomial, BivariateOrthogonalPolynomial,
3030 UnitTriangle, UnitDisk,
3131 JacobiTriangle, TriangleWeight, WeightedTriangle,
3232 DunklXuDisk, DunklXuDiskWeight, WeightedDunklXuDisk,
3333 Zernike, ZernikeWeight, zerniker, zernikez,
34- PartialDerivative, Laplacian, AbsLaplacianPower, AngularMomentum,
34+ AngularMomentum,
3535 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+
3751
3852include (" ModalInterlace.jl" )
3953include (" clenshawkron.jl" )
0 commit comments