dune-grid-glue 2.8-git
|
Computing overlapping grid intersections for grids of different dimensions. More...
#include <dune/grid-glue/merging/overlappingmerge.hh>
Public Types | |
typedef T | ctype |
the numeric type used in this interface More... | |
typedef Dune::FieldVector< T, dimworld > | WorldCoords |
the coordinate type used in this interface More... | |
using | Grid1Coords = typename Base::Grid1Coords |
Type used for local coordinates on the grid1 side. More... | |
using | Grid2Coords = typename Base::Grid2Coords |
Type used for local coordinates on the grid2 side. More... | |
using | IntersectionList = typename Base::IntersectionList |
Public Member Functions | |
OverlappingMerge () | |
the coordinate type used in this interface More... | |
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... | |
void | clear () override |
std::shared_ptr< IntersectionList > | intersectionList () const final |
void | enableFallback (bool fallback) |
void | enableBruteForce (bool bruteForce) |
unsigned int | nSimplices () const |
get the number of simplices in the merged grid The indices are then in 0..nSimplices()-1 More... | |
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... | |
Public Attributes | |
unsigned int | counter |
Counts the number of times the computeIntersection method has been called. More... | |
Protected Types | |
typedef StandardMerge< T, dim1, dim2, dimworld >::SimplicialIntersection | SimplicialIntersection |
using | IntersectionListProvider = SimplicialIntersectionListProvider< grid1Dim, grid2Dim > |
The computed intersections. More... | |
using | RemoteSimplicialIntersection = SimplicialIntersection |
Protected Member Functions | |
void | computeIntersections (const Dune::GeometryType &grid1ElementType, const std::vector< Dune::FieldVector< T, dimworld > > &grid1ElementCorners, std::bitset<(1<< dim1)> &neighborIntersects1, unsigned int grid1Index, const Dune::GeometryType &grid2ElementType, const std::vector< Dune::FieldVector< T, dimworld > > &grid2ElementCorners, std::bitset<(1<< dim2)> &neighborIntersects2, unsigned int grid2Index, std::vector< SimplicialIntersection > &intersections) |
Compute the intersection between two overlapping elements. 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... | |
Protected Attributes | |
bool | valid |
std::shared_ptr< IntersectionListProvider > | intersectionListProvider_ |
std::shared_ptr< IntersectionList > | intersectionList_ |
std::vector< std::vector< unsigned int > > | grid1ElementCorners_ |
Temporary internal data. More... | |
std::vector< std::vector< unsigned int > > | grid2ElementCorners_ |
std::vector< std::vector< int > > | elementNeighbors1_ |
std::vector< std::vector< int > > | elementNeighbors2_ |
Computing overlapping grid intersections for grids of different dimensions.
dim1 | Grid dimension of grid 1 |
dim2 | Grid dimension of grid 2 |
dimworld | World dimension |
T | Type used for coordinates |
typedef T Dune::GridGlue::OverlappingMerge< dim1, dim2, dimworld, T >::ctype |
the numeric type used in this interface
|
inherited |
Type used for local coordinates on the grid1 side.
|
inherited |
Type used for local coordinates on the grid2 side.
|
inherited |
|
protectedinherited |
The computed intersections.
|
protectedinherited |
|
protected |
typedef Dune::FieldVector<T, dimworld> Dune::GridGlue::OverlappingMerge< dim1, dim2, dimworld, T >::WorldCoords |
the coordinate type used in this interface
|
inline |
the coordinate type used in this interface
|
overrideinherited |
builds the merged grid
Note that the indices are used consequently throughout the whole class interface just like they are introduced here.
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 |
|
pure virtualinherited |
builds the merged grid
Note that the indices are used consequently throughout the whole class interface just like they are introduced here.
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 |
|
inlineoverridevirtualinherited |
|
protectedinherited |
Compute the intersection between two overlapping elements.
|
protectedpure virtualinherited |
Compute the intersection between two overlapping elements.
The result is a set of simplices stored in the vector intersections.
|
protected |
Compute the intersection between two overlapping elements.
The result is a set of simplices.
grid1ElementType | Type of the first element to be intersected |
grid1ElementCorners | World coordinates of the corners of the first element |
grid2ElementType | Type of the second element to be intersected |
grid2ElementCorners | World coordinates of the corners of the second element |
|
inlineinherited |
|
inlineinherited |
|
inlinefinalvirtualinherited |
list of intersections
build()
was called Implements Dune::GridGlue::Merger< double, grid1Dim, grid2Dim, dimworld >.
|
inlineinherited |
get the number of simplices in the merged grid The indices are then in 0..nSimplices()-1
|
inlineinherited |
get index of grid-n's parent simplex for given merged grid simplex
n | specify which grid |
idx | index of the merged grid simplex |
|
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>")
n | specify which grid |
idx | the index of the merged grid simplex |
corner | the index of the simplex' corner |
|
inlineinherited |
doc me
|
inherited |
Counts the number of times the computeIntersection method has been called.
Used temporarily to speed up the implementation
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Temporary internal data.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |