Quadrature
Usually quadrature is a hidden layer as quadrature rules are chosen automatically based on the polynomial degree of the ansatz functions and the specified quadorder of the user data.
Hence, quadrature rules are only needed if the user wants write his own low-level assembly.
Quadrature rules consist of points (coordinates of evaluation points with respect to reference geometry) and weights. There are constructors for several AbstractElementGeometries (from ExtendableGrids) and different order (some have generic formulas for arbitrary order), see below for a detailed list.
ExtendableFEMBase.QuadratureRule
— Typeabstract type QuadratureRule{T<:Real, ET<:ExtendableGrids.AbstractElementGeometry}
A struct that contains the name of the quadrature rule, the reference points and the weights for the parameter-determined element geometry.
ExtendableFEMBase.QuadratureRule
— Methodfunction QuadratureRule{T,ET}(order::Int) where {T<:Real, ET <: AbstractElementGeometry0D}
Constructs 0D quadrature rule of specified order (always point evaluation).
ExtendableFEMBase.QuadratureRule
— Methodfunction QuadratureRule{T,ET}(order::Int) where {T<:Real, ET <: AbstractElementGeometry1D}
Constructs 1D quadrature rule of specified order.
ExtendableFEMBase.QuadratureRule
— Methodfunction QuadratureRule{T,ET}(order::Int) where {T<:Real, ET <: Parallelepiped3D}
Constructs quadrature rule on Parallelepiped3D of specified order.
ExtendableFEMBase.QuadratureRule
— Methodfunction QuadratureRule{T,ET}(order::Int) where {T<:Real, ET <: Parallelogram2D}
Constructs quadrature rule on Parallelogram2D of specified order.
ExtendableFEMBase.QuadratureRule
— Methodfunction QuadratureRule{T,ET}(order::Int) where {T<:Real, ET <: Tetrahedron3D}
Constructs quadrature rule on Tetrahedron3D of specified order.
ExtendableFEMBase.QuadratureRule
— Methodfunction QuadratureRule{T,ET}(order::Int) where {T<:Real, ET <: Triangle2D}
Constructs quadrature rule on Triangle2D of specified order.
Base.eltype
— Methodeltype(
_::QuadratureRule{T<:Real, ET<:ExtendableGrids.AbstractElementGeometry}
) -> Any
Custom eltype
function for QuadratureRule{T,ET}
.
Base.show
— Methodshow(io::IO, Q::QuadratureRule)
Custom show
function for QuadratureRule{T,ET}
that prints some information.
ExtendableFEMBase.integrate!
— Methodintegrate!(
integral4items::AbstractArray{T},
grid::ExtendableGrids.ExtendableGrid{Tv, Ti},
AT::Type{<:ExtendableGrids.AssemblyType},
integrand;
offset,
bonus_quadorder,
quadorder,
time,
items,
force_quadrature_rule,
kwargs...
)
Integration that writes result on every item into integral4items.
ExtendableFEMBase.integrate
— Methodintegrate(
grid::ExtendableGrids.ExtendableGrid,
AT::Type{<:ExtendableGrids.AssemblyType},
integrand!,
resultdim::Int64;
T,
kwargs...
) -> Union{Float64, Vector{Float64}}
Integration that returns total integral.
ExtendableFEMBase.ref_integrate!
— Methodref_integrate!(
integral::AbstractArray,
EG::Type{<:ExtendableGrids.AbstractElementGeometry},
order::Int64,
integrand::Function
)
Integration for reference basis functions on reference domains (merely for testing stuff).
Note: area of reference geometry is not multiplied
Accumulating Vector (not relevant for users, but for completeness)
Internally a global integration uses an accumulating vector and calls the cell-wise integration.
ExtendableFEMBase.AccumulatingVector
— Typestruct AccumulatingVector{T} <: AbstractArray{T, 2}
vector that is acting as an AbstractArray{T, 2} and automatically accumulates all values from the second dimension
AV[k,j] += s for any j results in AV.entries[k] += s