SegmentIntegrator

Segment integrators allow to integrate a finite element function (FEVector) along arbitrary lines through mesh cells.

ExtendableFEMBase.SegmentIntegratorMethod
function SegmentIntegrator(
	EG::ElementGeometry,
	[kernel!::Function],
	oa_args::Array{<:Tuple{<:Any, DataType},1};
	kwargs...)

Generates an SegmentIntegrator that can integrate over segments of the specified geometry EG. To do so, it evaluates, at each quadrature point, the specified operator evaluations, postprocesses them with the kernel function (if provided) and accumulates the results with the quadrature weights. If no kernel is given, the arguments are integrated directly. If a kernel is provided it has be conform to the interface

kernel!(result, eval_args, qpinfo)

where qpinfo allows to access information at the current quadrature point. Additionally the length of the result needs to be specified via the kwargs.

Evaluation can be triggered via the integrate_segment! function after an initialize!

Operator evaluations are tuples that pair a tag (to identify an unknown or the position in the vector) with a FunctionOperator.

Keyword arguments:

  • factor: factor that should be multiplied during assembly. Default: 1

  • resultdim: dimension of result field (default = length of arguments). Default: 0

  • matrix_mode: integrator integrates basis functions of FEspace separately to assembly a matrix that maps solution to segment integrations (requires that kernel is linear). Default: false

  • name: name for operator used in printouts. Default: ''SegmentIntegrator''

  • params: array of parameters that should be made available in qpinfo argument of kernel function. Default: nothing

  • quadorder: quadrature order. Default: ''auto''

  • bonus_quadorder: additional quadrature order added to quadorder. Default: 0

  • entrytolerance: threshold to add entry to sparse matrix (only in matrixmode). Default: 0

  • verbosity: verbosity level. Default: 0

source
ExtendableFEMBase.initialize!Method
function initialize!(
	O::SegmentIntegrator{T, UT},
	sol;
	time = 0,
	kwargs...)

Initializes the SegmentIntegrator for the specified solution.

source
ExtendableFEMBase.integrate_segment!Method
function integrate_segment!(
	result::Array{T,1},
	SI::SegmentIntegrator,
	w::Array{Array{T,1},1},
	b::Array{Array{T,1},1},
	item
	) where {T}

Integrate a segment with world coordinates w and barycentric coordinates b in the cell with the given item number.

source