DUNE-GRID-GLUE (2.10)
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 | |
typedef Dune::FieldVector< T, dimworld > | WorldCoords |
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. | |
Public Member Functions | |
OverlappingMerge () | |
the coordinate type used in this interface | |
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... | |
Public Attributes | |
unsigned int | counter |
Counts the number of times the computeIntersection method has been called. More... | |
Protected Types | |
using | IntersectionListProvider = SimplicialIntersectionListProvider< grid1Dim, grid2Dim > |
The computed intersections. | |
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 | |
std::vector< std::vector< unsigned int > > | grid1ElementCorners_ |
Temporary internal data. | |
Detailed Description
class Dune::GridGlue::OverlappingMerge< dim1, dim2, dimworld, T >
Computing overlapping grid intersections for grids of different dimensions.
- Template Parameters
-
dim1 Grid dimension of grid 1 dim2 Grid dimension of grid 2 dimworld World dimension T Type used for coordinates
Member Function Documentation
◆ build() [1/2]
|
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]
|
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()
|
protectedinherited |
Compute the intersection between two overlapping elements.
- Returns
- true if at least one intersection point was found
◆ computeIntersections() [1/2]
|
protectedpure virtualinherited |
Compute the intersection between two overlapping elements.
The result is a set of simplices stored in the vector intersections.
◆ computeIntersections() [2/2]
|
protected |
Compute the intersection between two overlapping elements.
The result is a set of simplices.
- Parameters
-
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
References Dune::GridGlue::IntersectionComputation< CM >::computeIntersection().
◆ intersectionList()
|
inlinefinalvirtualinherited |
list of intersections
- Note
- only valid after
build()
was called
Implements Dune::GridGlue::Merger< double, grid1Dim, grid2Dim, dimworld >.
◆ parent()
|
inlineinherited |
get index of grid-n's parent simplex for given merged grid simplex
- Template Parameters
-
n specify which grid
- Parameters
-
idx index of the merged grid simplex
- Returns
- index of the parent simplex
◆ parentLocal()
|
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
-
n specify which grid
- Parameters
-
idx the index of the merged grid simplex corner the index of the simplex' corner
- Returns
- local coordinates in grid-n grid1
◆ parents()
|
inlineinherited |
doc me
Member Data Documentation
◆ counter
|
inherited |
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 files:
- dune/grid-glue/merging/overlappingmerge.hh
- dune/grid-glue/merging/overlappingmerge.cc
