![]() |
Reference documentation for deal.II version 9.1.1
|
Classes | |
| class | ImmersedSurfaceQuadrature |
Functions | |
| template<int dim0, int dim1, int spacedim, typename Sparsity , typename number = double> | |
| void | create_coupling_sparsity_pattern (const DoFHandler< dim0, spacedim > &space_dh, const DoFHandler< dim1, spacedim > &immersed_dh, const Quadrature< dim1 > &quad, Sparsity &sparsity, const AffineConstraints< number > &constraints=AffineConstraints< number >(), const ComponentMask &space_comps=ComponentMask(), const ComponentMask &immersed_comps=ComponentMask(), const Mapping< dim0, spacedim > &space_mapping=StaticMappingQ1< dim0, spacedim >::mapping, const Mapping< dim1, spacedim > &immersed_mapping=StaticMappingQ1< dim1, spacedim >::mapping) |
| template<int dim0, int dim1, int spacedim, typename Sparsity , typename number = double> | |
| void | create_coupling_sparsity_pattern (const GridTools::Cache< dim0, spacedim > &cache, const DoFHandler< dim0, spacedim > &space_dh, const DoFHandler< dim1, spacedim > &immersed_dh, const Quadrature< dim1 > &quad, Sparsity &sparsity, const AffineConstraints< number > &constraints=AffineConstraints< number >(), const ComponentMask &space_comps=ComponentMask(), const ComponentMask &immersed_comps=ComponentMask(), const Mapping< dim1, spacedim > &immersed_mapping=StaticMappingQ1< dim1, spacedim >::mapping) |
| template<int dim0, int dim1, int spacedim, typename Matrix > | |
| void | create_coupling_mass_matrix (const DoFHandler< dim0, spacedim > &space_dh, const DoFHandler< dim1, spacedim > &immersed_dh, const Quadrature< dim1 > &quad, Matrix &matrix, const AffineConstraints< typename Matrix::value_type > &constraints=AffineConstraints< typename Matrix::value_type >(), const ComponentMask &space_comps=ComponentMask(), const ComponentMask &immersed_comps=ComponentMask(), const Mapping< dim0, spacedim > &space_mapping=StaticMappingQ1< dim0, spacedim >::mapping, const Mapping< dim1, spacedim > &immersed_mapping=StaticMappingQ1< dim1, spacedim >::mapping) |
| template<int dim0, int dim1, int spacedim, typename Matrix > | |
| void | create_coupling_mass_matrix (const GridTools::Cache< dim0, spacedim > &cache, const DoFHandler< dim0, spacedim > &space_dh, const DoFHandler< dim1, spacedim > &immersed_dh, const Quadrature< dim1 > &quad, Matrix &matrix, const AffineConstraints< typename Matrix::value_type > &constraints=AffineConstraints< typename Matrix::value_type >(), const ComponentMask &space_comps=ComponentMask(), const ComponentMask &immersed_comps=ComponentMask(), const Mapping< dim1, spacedim > &immersed_mapping=StaticMappingQ1< dim1, spacedim >::mapping) |
A namespace for functions offering tools to handle two meshes with no alignment requirements, but where one of the meshes is embedded inside the other in the real-space.
Typically these functions allow for computations on the real-space intersection between the two meshes e.g. surface integrals and construction of mass matrices.
| void NonMatching::create_coupling_sparsity_pattern | ( | const DoFHandler< dim0, spacedim > & | space_dh, |
| const DoFHandler< dim1, spacedim > & | immersed_dh, | ||
| const Quadrature< dim1 > & | quad, | ||
| Sparsity & | sparsity, | ||
| const AffineConstraints< number > & | constraints = AffineConstraints<number>(), |
||
| const ComponentMask & | space_comps = ComponentMask(), |
||
| const ComponentMask & | immersed_comps = ComponentMask(), |
||
| const Mapping< dim0, spacedim > & | space_mapping = StaticMappingQ1<dim0, spacedim>::mapping, |
||
| const Mapping< dim1, spacedim > & | immersed_mapping = StaticMappingQ1<dim1, spacedim>::mapping |
||
| ) |
Create a coupling sparsity pattern for non-matching, overlapping grids.
Given two non-matching triangulations, representing the domains
and
, with
, and two finite element spaces
and
, compute the sparsity pattern that would be necessary to assemble the matrix
where
is the finite element space associated with the space_dh passed to this function (or part of it, if specified in space_comps), while
is the finite element space associated with the immersed_dh passed to this function (or part of it, if specified in immersed_comps).
The sparsity is filled by locating the position of quadrature points (obtained by the reference quadrature quad) defined on elements of
with respect to the embedding triangulation
. For each overlapping cell, the entries corresponding to space_comps in space_dh and immersed_comps in immersed_dh are added to the sparsity pattern.
The space_comps and immersed_comps masks are assumed to be ordered in the same way: the first component of space_comps will couple with the first component of immersed_comps, the second with the second, and so on. If one of the two masks has more non-zero than the other, then the excess components will be ignored.
If the domain
does not fall within
, an exception will be thrown by the algorithm that computes the quadrature point locations. In particular, notice that this function only makes sens for dim1 lower or equal than dim0. A static assert guards that this is actually the case.
For both spaces, it is possible to specify a custom Mapping, which defaults to StaticMappingQ1 for both.
This function will also work in parallel, provided that the immersed triangulation is of type parallel::shared::Triangulation<dim1,spacedim>. An exception is thrown if you use an immersed parallel::distributed::Triangulation<dim1,spacedim>.
See the tutorial program step-60 for an example on how to use this function.
Definition at line 135 of file coupling.cc.
| void NonMatching::create_coupling_sparsity_pattern | ( | const GridTools::Cache< dim0, spacedim > & | cache, |
| const DoFHandler< dim0, spacedim > & | space_dh, | ||
| const DoFHandler< dim1, spacedim > & | immersed_dh, | ||
| const Quadrature< dim1 > & | quad, | ||
| Sparsity & | sparsity, | ||
| const AffineConstraints< number > & | constraints = AffineConstraints<number>(), |
||
| const ComponentMask & | space_comps = ComponentMask(), |
||
| const ComponentMask & | immersed_comps = ComponentMask(), |
||
| const Mapping< dim1, spacedim > & | immersed_mapping = StaticMappingQ1<dim1, spacedim>::mapping |
||
| ) |
Same as above, but takes an additional GridTools::Cache object, instead of creating one internally. In this version of the function, the parameter space_mapping cannot be specified, since it is taken from the cache parameter.
Definition at line 167 of file coupling.cc.
| void NonMatching::create_coupling_mass_matrix | ( | const DoFHandler< dim0, spacedim > & | space_dh, |
| const DoFHandler< dim1, spacedim > & | immersed_dh, | ||
| const Quadrature< dim1 > & | quad, | ||
| Matrix & | matrix, | ||
| const AffineConstraints< typename Matrix::value_type > & | constraints = AffineConstraints<typename Matrix::value_type>(), |
||
| const ComponentMask & | space_comps = ComponentMask(), |
||
| const ComponentMask & | immersed_comps = ComponentMask(), |
||
| const Mapping< dim0, spacedim > & | space_mapping = StaticMappingQ1<dim0, spacedim>::mapping, |
||
| const Mapping< dim1, spacedim > & | immersed_mapping = StaticMappingQ1<dim1, spacedim>::mapping |
||
| ) |
Create a coupling mass matrix for non-matching, overlapping grids.
Given two non-matching triangulations, representing the domains
and
, with
, and two finite element spaces
and
, compute the coupling matrix
where
is the finite element space associated with the space_dh passed to this function (or part of it, if specified in space_comps), while
is the finite element space associated with the immersed_dh passed to this function (or part of it, if specified in immersed_comps).
The corresponding sparsity patterns can be computed by calling the make_coupling_sparsity_pattern function. The elements of the matrix are computed by locating the position of quadrature points defined on elements of
with respect to the embedding triangulation
.
The space_comps and immersed_comps masks are assumed to be ordered in the same way: the first component of space_comps will couple with the first component of immersed_comps, the second with the second, and so on. If one of the two masks has more non-zero entries non-zero than the other, then the excess components will be ignored.
If the domain
does not fall within
, an exception will be thrown by the algorithm that computes the quadrature point locations. In particular, notice that this function only makes sense for dim1 lower or equal than dim0. A static assert guards that this is actually the case.
For both spaces, it is possible to specify a custom Mapping, which defaults to StaticMappingQ1 for both.
This function will also work in parallel, provided that the immersed triangulation is of type parallel::shared::Triangulation<dim1,spacedim>. An exception is thrown if you use an immersed parallel::distributed::Triangulation<dim1,spacedim>.
See the tutorial program step-60 for an example on how to use this function.
Definition at line 322 of file coupling.cc.
| void NonMatching::create_coupling_mass_matrix | ( | const GridTools::Cache< dim0, spacedim > & | cache, |
| const DoFHandler< dim0, spacedim > & | space_dh, | ||
| const DoFHandler< dim1, spacedim > & | immersed_dh, | ||
| const Quadrature< dim1 > & | quad, | ||
| Matrix & | matrix, | ||
| const AffineConstraints< typename Matrix::value_type > & | constraints = AffineConstraints<typename Matrix::value_type>(), |
||
| const ComponentMask & | space_comps = ComponentMask(), |
||
| const ComponentMask & | immersed_comps = ComponentMask(), |
||
| const Mapping< dim1, spacedim > & | immersed_mapping = StaticMappingQ1<dim1, spacedim>::mapping |
||
| ) |
Same as above, but takes an additional GridTools::Cache object, instead of creating one internally. In this version of the function, the parameter space_mapping cannot specified, since it is taken from the cache parameter.
Definition at line 350 of file coupling.cc.
1.8.16