Skip to content

Supports approximating functions and solving differential equations on various higher dimensional domains such as disks and triangles

License

Notifications You must be signed in to change notification settings

JuliaApproximation/MultivariateOrthogonalPolynomials.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultivariateOrthogonalPolynomials.jl

Build Status codecov

This is an experimental package to add support for multivariate orthogonal polynomials on disks, spheres, triangles, and other simple geometries to ContinuumArrays.jl. At the moment it primarily supports triangles. For example, we can solve variable coefficient Helmholtz on the triangle with zero Dirichlet conditions as follows:

julia> using MultivariateOrthogonalPolynomials, StaticArrays, LinearAlgebra

julia> P = JacobiTriangle()
JacobiTriangle(0, 0, 0)

julia> x,y = first.(axes(P,1)), last.(axes(P,1));

julia> u = P * (P \ (exp.(x) .* cos.(y))) # Expand in Triangle OPs
JacobiTriangle(0, 0, 0) * [1.3365085377830084, 0.5687967596428205, -0.22812040274224554, 0.07733064070637755, 0.016169744493985644, -0.08714886622738759, 0.00338435674992512, 0.01220019521126353, -0.016867598915573725, 0.003930461395801074    ]

julia> u[SVector(0.1,0.2)] # Evaluate expansion
1.083141079608063

See the examples folder for more examples, including non-zero Dirichlet conditions, Neumann conditions, and piecing together multiple triangles. In particular, the examples from Olver, Townsend & Vasil 2019.

This code relies on Slevinsky's FastTransforms C library for calculating transforms between values and coefficients. At the moment the path to the compiled FastTransforms library is hard coded in c_transforms.jl.

References

About

Supports approximating functions and solving differential equations on various higher dimensional domains such as disks and triangles

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages