InterpolateBoundaryData

In finite element simulations, it is often necessary to impose non-homogeneous Dirichlet boundary conditions. The InterpolateBoundaryDataOperator in ExtendableFEM provides a convenient way to prescribe interpolated values on the boundary.

API Reference

ExtendableFEM.InterpolateBoundaryData — Type
InterpolateBoundaryData(
    u;
    ...
) -> InterpolateBoundaryData{_A, Nothing} where _A
InterpolateBoundaryData(
    u,
    data;
    kwargs...
) -> InterpolateBoundaryData

Construct an operator that enforces the unknown u to match the standard finite element interpolation of a user-provided boundary data function on the boundary of the domain.

Arguments

  • u: The unknown (field variable) to be constrained.
  • data: A function with signature data!(result, qpinfo) that computes the desired boundary values at each quadrature point. The qpinfo argument provides information such as global coordinates (qpinfo.x).

Keyword Arguments

  • bonus_quadorder: additional quadrature order added to the quadorder chosen by the interpolator. Default: 0

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

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

  • penalty: penalty for fixed degrees of freedom. Default: 1.0e30

  • plot: plot unicode plot of boundary data into terminal when assembled. Default: false

  • regions: subset of regions where operator should be assembly only. Default: Any[]

  • verbosity: verbosity level. Default: 0

source
ExtendableFEM.apply! — Method
apply!(U::FEVectorBlock, O::InterpolateBoundaryData; offset = 0, kwargs...)

applies the boundary data of O to U, i.e., sets the boundary dofs to the correct values that have been computed during the last assemble! call.

source
ExtendableFEM.apply_penalties! — Method
apply_penalties!(A, b, sol, O::InterpolateBoundaryData{UT}, SC::SolverConfiguration; kwargs...)

modifies the linear system A|b such that the boundary dofs are penalized and attain the correct values from the last assemble! call of O. Also applies the correct values to sol.

source
ExtendableFEM.assemble! — Method
assemble!(A, b, sol, O::InterpolateBoundaryData{UT}, SC::SolverConfiguration; kwargs...)

assembles the correct boundary values for O by interpolating the boundary data with the current kwargs (where e.g. time and params might have changed).

source
ExtendableFEM.fixed_vals — Method
fixed_vals(O::InterpolateBoundaryData)

returns the currently assembled values for the fixed degrees of freedom of O

source