15 #ifndef parsed_tools_non_matching_coupling_h
16 #define parsed_tools_non_matching_coupling_h
47 template <
int dim,
int spacedim>
94 const dealii::ComponentMask &
embedded_mask = dealii::ComponentMask(),
95 const dealii::ComponentMask &
space_mask = dealii::ComponentMask(),
101 const std::string &quadrature_type =
"gauss",
103 const unsigned int quadrature_repetitions = 1,
113 const dealii::DoFHandler<spacedim, spacedim> &
space_dh,
116 const dealii::DoFHandler<dim, spacedim> &
embedded_dh,
125 template <
typename SparsityType>
132 template <
typename MatrixType>
149 dealii::Triangulation<spacedim, spacedim> &space_tria,
150 dealii::Triangulation<dim, spacedim> &embedded_tria,
151 const bool apply_delta_refinements =
true)
const;
217 dealii::SmartPointer<const dealii::GridTools::Cache<spacedim, spacedim>,
224 dealii::SmartPointer<const dealii::DoFHandler<spacedim, spacedim>,
231 dealii::SmartPointer<const dealii::AffineConstraints<double>,
238 dealii::SmartPointer<const dealii::GridTools::Cache<dim, spacedim>,
245 dealii::SmartPointer<const dealii::DoFHandler<dim, spacedim>,
252 dealii::SmartPointer<const dealii::AffineConstraints<double>,
267 mutable std::vector<std::tuple<
268 typename dealii::Triangulation<spacedim, spacedim>::cell_iterator,
269 typename dealii::Triangulation<dim, spacedim>::cell_iterator,
270 dealii::Quadrature<spacedim>>>
277 template <
int dim,
int spacedim>
278 template <
typename MatrixType>
282 const auto &space_mapping = space_cache->get_mapping();
283 const auto &embedded_mapping = embedded_cache->get_mapping();
284 if (coupling_type == CouplingType::approximate_L2)
286 dealii::NonMatching::create_coupling_mass_matrix(*space_cache,
295 *embedded_constraints);
297 else if (coupling_type == CouplingType::exact_L2)
299 if (cells_and_quads.empty() ==
true)
303 this->quadrature_order,
304 this->quadrature_tolerance);
317 *embedded_constraints);
323 template <
int dim,
int spacedim>
324 template <
typename SparsityType>
330 if (coupling_type == CouplingType::approximate_L2)
332 const auto &embedded_mapping = embedded_cache->get_mapping();
334 dealii::NonMatching::create_coupling_sparsity_pattern(
344 *embedded_constraints);
346 else if (coupling_type == CouplingType::exact_L2)
348 cells_and_quads.clear();
352 this->quadrature_order,
353 this->quadrature_tolerance);
363 *embedded_constraints);
369 "The requested coupling type is not implemented."));
const std::string section_name
#define Assert(cond, exc)
static ::ExceptionBase & ExcNotInitialized()
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
Quadrature< spacedim > compute_intersection(const typename Triangulation< dim0, spacedim >::cell_iterator &cell0, const typename Triangulation< dim1, spacedim >::cell_iterator &cell1, const unsigned int degree, const Mapping< dim0, spacedim > &mapping0=(ReferenceCells::get_hypercube< dim0 >() .template get_default_linear_mapping< dim0, spacedim >()), const Mapping< dim1, spacedim > &mapping1=(ReferenceCells::get_hypercube< dim1 >() .template get_default_linear_mapping< dim1, spacedim >()))
Intersect cell0 and cell1 and construct a Quadrature<spacedim> of degree degreeover the intersection,...
void create_coupling_sparsity_pattern_with_exact_intersections(const std::vector< std::tuple< typename Triangulation< dim0, spacedim >::cell_iterator, typename Triangulation< dim1, spacedim >::cell_iterator, Quadrature< spacedim >>> &intersections_info, const DoFHandler< dim0, spacedim > &space_dh, const DoFHandler< dim1, spacedim > &immersed_dh, Sparsity &sparsity, const AffineConstraints< number > &constraints=AffineConstraints< number >(), const ComponentMask &space_comps=ComponentMask(), const ComponentMask &immersed_comps=ComponentMask(), const AffineConstraints< number > &immersed_constraints=AffineConstraints< number >())
Create a coupling sparsity pattern of two non-matching, overlapped grids.
void assemble_coupling_mass_matrix_with_exact_intersections(const DoFHandler< dim0, spacedim > &, const DoFHandler< dim1, spacedim > &, const std::vector< std::tuple< typename Triangulation< dim0, spacedim >::cell_iterator, typename Triangulation< dim1, spacedim >::cell_iterator, Quadrature< spacedim >>> &, Matrix &matrix, const AffineConstraints< typename Matrix::value_type > &, const ComponentMask &, const ComponentMask &, const Mapping< dim0, spacedim > &, const Mapping< dim1, spacedim > &, const AffineConstraints< typename Matrix::value_type > &)
Create the coupling mass matrix for non-matching, overlapping grids in an "exact" way,...