Template Class ReducedCoupling

Inheritance Relationships

Base Types

Class Documentation

template<int reduced_dim, int dim, int spacedim = dim, int n_components = 1>
class ReducedCoupling : public ImmersX::TensorProductSpace<reduced_dim, dim, dim, 1>, public ImmersX::ParticleCoupling<dim>

Combines tensor-product space and particle coupling for lower-dimensional Lagrange multipliers.

This class inherits from TensorProductSpace and ParticleCoupling, providing methods to initialize, assemble coupling matrices, and handle constraints for reduced coupling problems in the context of immersed or embedded finite element methods.

Template Parameters:
  • reduced_dim – The reduced dimension of the problem.

  • dim – The dimension of the background domain.

  • spacedim – The space dimension (default: dim).

  • n_components – Number of components (default: 1).

Public Functions

ReducedCoupling(parallel::TriangulationBase<spacedim> &background_tria, const ReducedCouplingParameters<reduced_dim, dim, spacedim, n_components> &par)

Constructor that initializes the ReducedCoupling object with background triangulation and parameters.

Parameters:
  • background_tria – The background domain triangulation.

  • par – The tensor-product coupling parameters.

void initialize(const Mapping<spacedim> &mapping)

Initialize the tensor product space and particle coupling.

Parameters:

mapping – The background geometry mapping.

void initialize()

Initialize using the background mesh’s linear reference-cell mapping.

void set_time(const double time)

Set the time used by the reduced right-hand-side function.

void assemble_coupling_sparsity(DynamicSparsityPattern &dsp, const DoFHandler<spacedim> &dh, const AffineConstraints<double> &constraints) const

Assemble the sparsity pattern for the coupling matrix.

Parameters:
  • dsp – The dynamic sparsity pattern to fill.

  • dh – The DoFHandler for the background domain.

  • constraints – The affine constraints to apply.

template<typename MatrixType>
inline void assemble_multiplier_load_matrix(MatrixType &multiplier_load_matrix, const DoFHandler<spacedim> &dh, const AffineConstraints<double> &constraints) const

Assemble the matrix mapping multiplier coefficients to background loads.

The entries are (B^T)_ij = int_gamma int_D(s) v_i . (psi phi_c)_j dD ds, a surface integral over the cross sections D(s) along the reduced domain gamma. Point coupling instead uses the plain average 1/|S| int_S v_i . phi_j over the circle S of each inclusion, which does not grow with the size of the inclusion.

Template Parameters:

MatrixType – The matrix type (e.g., SparseMatrix<double>).

Parameters:
  • multiplier_load_matrix – The matrix to assemble.

  • dh – The DoFHandler for the background domain.

  • constraints – The affine constraints to apply.

template<typename MatrixType, typename VectorType>
inline void assemble_multiplier_load_matrix(MatrixType &multiplier_load_matrix, const DoFHandler<spacedim> &dh, const AffineConstraints<double> &constraints, VectorType &reduced_rhs) const

Assemble the matrix and add the load from prescribed background values.

reduced_rhs must already be initialized on the representative DoFs. Finish insert writes collectively before calling this additive assembly. Its prescribed data are retained; the affine background action is subtracted before the distributed vector is compressed.

template<typename MatrixType>
inline void assemble_coupling_matrix(MatrixType &matrix, const DoFHandler<spacedim> &dh, const AffineConstraints<double> &constraints) const

Compatibility spelling for assemble_multiplier_load_matrix().

template<typename MatrixType, typename VectorType>
inline void assemble_coupling_matrix(MatrixType &matrix, const DoFHandler<spacedim> &dh, const AffineConstraints<double> &constraints, VectorType &reduced_rhs) const

Compatibility overload retaining prescribed background values.

template<typename MatrixType>
void assemble_coupling_mass_matrix(MatrixType &mass_matrix) const

Assemble the mass matrix of the multiplier space.

The complete sampled Gram matrix integrates products of the lifted representative basis, including products of distinct transverse modes. It is independent of background coverage and remains the multiplier metric when only part of the physical support is coupled.

Template Parameters:

MatrixType – The matrix type (e.g., SparseMatrix<double>).

Parameters:

mass_matrix – The matrix to assemble.

template<typename MatrixType>
void assemble_overlap_mass_matrix(MatrixType &mass_matrix) const

Assemble the sampled Gram matrix on points inside the background.

template<typename MatrixType>
void assemble_outside_mass_matrix(MatrixType &mass_matrix) const

Assemble the sampled Gram matrix on points outside the background.

inline const std::vector<bool> &source_point_membership() const

Source-owned membership, in get_locally_owned_qpoints() order.

inline auto source_modal_data_values() const

Prescribed source coefficients, indexed by cell/entity, quadrature point, and selected mode.

These values are not projected onto overlap.

template<typename VectorType>
void assemble_reduced_rhs(VectorType &reduced_rhs) const

Assemble the right-hand side vector for the reduced space.

Reconstructs the prescribed field from its modal coefficient functions and pairs it with the lifted multiplier basis at located physical samples. No contribution is added at points outside the background.

Template Parameters:

VectorType – The vector type (e.g., Vector<double>).

Parameters:

reduced_rhs – The right-hand side vector to assemble.

template<typename VectorType>
void assemble_prescribed_rhs(VectorType &rhs) const

Integrate prescribed modal data on the complete nominal support.

const AffineConstraints<double> &get_coupling_constraints() const

Get the affine constraints associated with the coupling.

Returns:

The affine constraints.

Public Members

std::function<void(const std::vector<Point<spacedim>>&, const std::vector<double>&)> prepare_point_cloud_background

Optional preparation of a 0D background before particle ownership.

The default refines the existing background. A Problem may instead refine a serial preparation mesh and finalize its distributed Domain.