BezierBernsteinMethods

This package implements Bezier-Bernstein methods on simplicial meshes.

References

  1. Kirby, R.C. Fast simplicial finite element algorithms using Bernstein polynomials. Numer. Math. 117, 631–652 (2011). https://doi.org/10.1007/s00211-010-0327-2
  2. Mark Ainsworth, Gaelle Andriamaro, and Oleg Davydov. Bernstein-Bézier Finite Elements of Arbitrary Order and Optimal Assembly Procedures. SIAM J. Sci. Comput. 33, 6 (November 2011), 3087–3109. https://doi.org/10.1137/11082539X
  3. Kirby, R.C. Low-Complexity Finite Element Algorithms for the de Rham Complex on Simplices. SIAM Journal on Scientific Computing 36:2, A846-A868 (2014). https://doi.org/10.1137/130927693

Index

BezierBernsteinMethods.bernsteinMethod
bernstein(p::Degree, control::AbstractVector{T}, λ::BPoint{D,T})

Compute Bezier polynomial at barycentric point λ with the degrees of freedom in control.

source
BezierBernsteinMethods.decasteljau!Method
decasteljau!(control::Vector{T}, λ::BPoint{D,T}, MultiIndices)

Classic DeCasteljau algorithm (can compute derivatives too!) on a (D-1)-dimensional simplex.

source
BezierBernsteinMethods.degree_elevation_operatorFunction
degree_elevation_operator(p::Degree, d::Dimension)

Return a matrix that maps degrees of freedom of a Bezier polynomial of degree p to the degrees of freedom corresponding to its order elevated Bezier polynomial.

source
BezierBernsteinMethods.mass_matrixMethod
mass_matrix(S::AbstractSimplex{D}, p::Degree, q::Degree, T::Type{<:Real} = Type{Float64})

Compute Bernstein mass matrix for degree (p,q) and dimension d.

source
BezierBernsteinMethods.multiindexMethod
MultiIndex(::LinearIndex{P<:Degree, D<:Dimension, I<:Integer})

Return the multi-index associated with linear index I and simplicial domain of degree P and dimension D.

source
BezierBernsteinMethods.subsetsMethod
subsets(v::NTuple{n,Int}, k::Int)

Generate the binomial(n,k) unique subsets of length k from set v and its complement.

Examples:

julia> α, β = subsets((1,2,3), 1);

julia> α
3-element Array{Tuple{Int64},1}:
 (1,)
 (2,)
 (3,)

julia> β
3-element Array{Tuple{Int64,Int64},1}:
 (2, 3)
 (1, 3)
 (1, 2)
source
IgaBase.dimsplinespaceMethod
dimsplinespace(p::Degree, d::Dimension)

Compute the dimension of the Bezier spline space on a simplex of degree p and numer of vertices d.

source
BezierBernsteinMethods.MultiIndicesType
MultiIndices(P::Degree, D::Dimension)
MultiIndices(D::Dimension)
MultiIndices(s::Simplex)
MultiIndices(s::BezierSimplex)

Returns an iterator corresponding to a Bezier simplex of polynomial degree P and dimension D.

source