Implementation of the Merger concept for conforming interfaces.
More...
#include <dune/grid-glue/merging/conformingmerge.hh>
|
typedef T | ctype |
| the numeric type used in this interface
|
|
typedef Dune::FieldVector< T, dimworld > | WorldCoords |
| the coordinate type used in this interface
|
|
typedef Dune::FieldVector< T, dim > | LocalCoords |
| the coordinate type used in this interface
|
|
using | Grid1Coords = typename Base::Grid1Coords |
| Type used for local coordinates on the grid1 side.
|
|
using | Grid2Coords = typename Base::Grid2Coords |
| Type used for local coordinates on the grid2 side.
|
|
|
void | build (const std::vector< Dune::FieldVector< double, dimworld > > &grid1_Coords, const std::vector< unsigned int > &grid1_elements, const std::vector< Dune::GeometryType > &grid1_element_types, const std::vector< Dune::FieldVector< double, dimworld > > &grid2_coords, const std::vector< unsigned int > &grid2_elements, const std::vector< Dune::GeometryType > &grid2_element_types) override |
| builds the merged grid More...
|
|
virtual void | build (const std::vector< Dune::FieldVector< double, dimworld > > &grid1_coords, const std::vector< unsigned int > &grid1_elements, const std::vector< Dune::GeometryType > &grid1_element_types, const std::vector< Dune::FieldVector< double, dimworld > > &grid2_coords, const std::vector< unsigned int > &grid2_elements, const std::vector< Dune::GeometryType > &grid2_element_types)=0 |
| builds the merged grid More...
|
|
unsigned int | nSimplices () const |
| get the number of simplices in the merged grid The indices are then in 0..nSimplices()-1
|
|
unsigned int | parents (unsigned int idx) const |
|
unsigned int | parent (unsigned int idx, unsigned int parId=0) const |
| get index of grid-n's parent simplex for given merged grid simplex More...
|
|
auto | parentLocal (unsigned int idx, unsigned int corner, unsigned int parId=0) const |
| get the grid-n parent's simplex local coordinates for a particular merged grid simplex corner (parent's index can be obtained via "parent<n>") More...
|
|
|
unsigned int | counter |
| Counts the number of times the computeIntersection method has been called. More...
|
|
|
virtual void | computeIntersections (const Dune::GeometryType &grid1ElementType, const std::vector< Dune::FieldVector< double, dimworld > > &grid1ElementCorners, std::bitset<(1<< grid1Dim)> &neighborIntersects1, unsigned int grid1Index, const Dune::GeometryType &grid2ElementType, const std::vector< Dune::FieldVector< double, dimworld > > &grid2ElementCorners, std::bitset<(1<< grid2Dim)> &neighborIntersects2, unsigned int grid2Index, std::vector< SimplicialIntersection > &intersections)=0 |
| Compute the intersection between two overlapping elements. More...
|
|
bool | computeIntersection (unsigned int candidate0, unsigned int candidate1, const std::vector< Dune::FieldVector< double, dimworld > > &grid1Coords, const std::vector< Dune::GeometryType > &grid1_element_types, std::bitset<(1<< grid1Dim)> &neighborIntersects1, const std::vector< Dune::FieldVector< double, dimworld > > &grid2Coords, const std::vector< Dune::GeometryType > &grid2_element_types, std::bitset<(1<< grid2Dim)> &neighborIntersects2, bool insert=true) |
| Compute the intersection between two overlapping elements. More...
|
|
|
std::vector< std::vector< unsigned int > > | grid1ElementCorners_ |
| Temporary internal data.
|
|
template<int dim, int dimworld, typename T = double>
class Dune::GridGlue::ConformingMerge< dim, dimworld, T >
Implementation of the Merger concept for conforming interfaces.
- Template Parameters
-
dim | Grid dimension of the coupling grids. Must be the same for both sides |
dimworld | Dimension of the world coordinates. |
T | Type used for coordinates |
◆ build() [1/2]
void Dune::GridGlue::StandardMerge< double , grid1Dim, grid2Dim, dimworld >::build |
( |
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid1_Coords, |
|
|
const std::vector< unsigned int > & |
grid1_elements, |
|
|
const std::vector< Dune::GeometryType > & |
grid1_element_types, |
|
|
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid2_coords, |
|
|
const std::vector< unsigned int > & |
grid2_elements, |
|
|
const std::vector< Dune::GeometryType > & |
grid2_element_types |
|
) |
| |
|
overrideinherited |
builds the merged grid
Note that the indices are used consequently throughout the whole class interface just like they are introduced here.
- Parameters
-
grid1_coords | the grid1 vertices' coordinates ordered like e.g. in 3D x_0 y_0 z_0 x_1 y_1 ... y_(n-1) z_(n-1) |
grid1_elements | array with all grid1 elements represented as corner indices into grid1_coords |
grid1_element_types | array with the GeometryType of the elements listed grid1_elements |
grid2_coords | the grid2 vertices' coordinates ordered like e.g. in 3D x_0 y_0 z_0 x_1 y_1 ... y_(n-1) z_(n-1) |
grid2_elements | just like with the grid1_elements and grid1_coords |
grid2_element_types | array with the GeometryType of the elements listed grid2_elements |
◆ build() [2/2]
virtual void Dune::GridGlue::Merger< double , grid1Dim, grid2Dim, dimworld >::build |
( |
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid1_coords, |
|
|
const std::vector< unsigned int > & |
grid1_elements, |
|
|
const std::vector< Dune::GeometryType > & |
grid1_element_types, |
|
|
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid2_coords, |
|
|
const std::vector< unsigned int > & |
grid2_elements, |
|
|
const std::vector< Dune::GeometryType > & |
grid2_element_types |
|
) |
| |
|
pure virtualinherited |
builds the merged grid
Note that the indices are used consequently throughout the whole class interface just like they are introduced here.
- Parameters
-
grid1_coords | the grid1 vertices' coordinates ordered like e.g. in 3D x_0 y_0 z_0 x_1 y_1 ... y_(n-1) z_(n-1) |
grid1_elements | array with all grid1 elements represented as corner indices into grid1_coords |
grid1_element_types | array with the GeometryType of the elements listed grid1_elements |
grid2_coords | the grid2 vertices' coordinates ordered like e.g. in 3D x_0 y_0 z_0 x_1 y_1 ... y_(n-1) z_(n-1) |
grid2_elements | just like with the grid1_elements and grid1_coords |
grid2_element_types | array with the GeometryType of the elements listed grid2_elements |
◆ computeIntersection()
bool Dune::GridGlue::StandardMerge< double , grid1Dim, grid2Dim, dimworld >::computeIntersection |
( |
unsigned int |
candidate0, |
|
|
unsigned int |
candidate1, |
|
|
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid1Coords, |
|
|
const std::vector< Dune::GeometryType > & |
grid1_element_types, |
|
|
std::bitset<(1<< grid1Dim)> & |
neighborIntersects1, |
|
|
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid2Coords, |
|
|
const std::vector< Dune::GeometryType > & |
grid2_element_types, |
|
|
std::bitset<(1<< grid2Dim)> & |
neighborIntersects2, |
|
|
bool |
insert = true |
|
) |
| |
|
protectedinherited |
Compute the intersection between two overlapping elements.
- Returns
- true if at least one intersection point was found
◆ computeIntersections()
virtual void Dune::GridGlue::StandardMerge< double , grid1Dim, grid2Dim, dimworld >::computeIntersections |
( |
const Dune::GeometryType & |
grid1ElementType, |
|
|
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid1ElementCorners, |
|
|
std::bitset<(1<< grid1Dim)> & |
neighborIntersects1, |
|
|
unsigned int |
grid1Index, |
|
|
const Dune::GeometryType & |
grid2ElementType, |
|
|
const std::vector< Dune::FieldVector< double , dimworld > > & |
grid2ElementCorners, |
|
|
std::bitset<(1<< grid2Dim)> & |
neighborIntersects2, |
|
|
unsigned int |
grid2Index, |
|
|
std::vector< SimplicialIntersection > & |
intersections |
|
) |
| |
|
protectedpure virtualinherited |
Compute the intersection between two overlapping elements.
The result is a set of simplices stored in the vector intersections.
◆ intersectionList()
|
inlinefinalvirtualinherited |
◆ parent()
unsigned int Dune::GridGlue::Merger< double , grid1Dim, grid2Dim, dimworld >::parent |
( |
unsigned int |
idx, |
|
|
unsigned int |
parId = 0 |
|
) |
| const |
|
inlineinherited |
get index of grid-n's parent simplex for given merged grid simplex
- Template Parameters
-
- Parameters
-
idx | index of the merged grid simplex |
- Returns
- index of the parent simplex
◆ parentLocal()
auto Dune::GridGlue::Merger< double , grid1Dim, grid2Dim, dimworld >::parentLocal |
( |
unsigned int |
idx, |
|
|
unsigned int |
corner, |
|
|
unsigned int |
parId = 0 |
|
) |
| const |
|
inlineinherited |
get the grid-n parent's simplex local coordinates for a particular merged grid simplex corner (parent's index can be obtained via "parent<n>")
- Template Parameters
-
- Parameters
-
idx | the index of the merged grid simplex |
corner | the index of the simplex' corner |
- Returns
- local coordinates in grid-n grid1
◆ parents()
unsigned int Dune::GridGlue::Merger< double , grid1Dim, grid2Dim, dimworld >::parents |
( |
unsigned int |
idx | ) |
const |
|
inlineinherited |
◆ counter
Counts the number of times the computeIntersection method has been called.
Used temporarily to speed up the implementation
The documentation for this class was generated from the following file: