JuliaApproximation / PiecewiseOrthogonalPolynomials.jl

A Julia package for piecewise spectral methods such as p-FEM
MIT License
5 stars 1 forks source link

PiecewiseOrthogonalPolynomials.jl

A Julia package for piecewise orthogonal polynomials which can be used in p-FEM

We can make piecewise integrated-Legendre bases using the quasi-matrix ContinuousPolynomial{1}:

using PiecewiseOrthogonalPolynomials, Plots

𝐗 = range(-1,1; length=4)
C = ContinuousPolynomial{1}(𝐗)
plot(C[:,Block(1)])
plot(C[:,Block.(2:3)])

The mass matrix can be constructed via:

M = C'C

We can also construct the stiffness matrix:

Δ = weaklaplacian(C)

We can truncate as follows:

N = 10
KR = Block.(Base.OneTo(N))
Mₙ = M[KR,KR]
Δₙ = Δ[KR,KR]

We can compute the reverse Cholesky in optimal complexity:

using MatrixFactorizations
L = reversecholesky(Symmetric(-Δₙ + Mₙ)).L