Template Class ReducedCoupling¶
Defined in File reduced_coupling.h
Inheritance Relationships¶
Base Types¶
public ImmersX::TensorProductSpace< reduced_dim, dim, dim, 1 >(Template Class TensorProductSpace)public ImmersX::ParticleCoupling< dim >(Template Class ParticleCoupling)
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.