|
| ContactMerge (const T allowedOverlap, const Dune::VirtualFunction< WorldCoords, WorldCoords > *domainDirections, const Dune::VirtualFunction< WorldCoords, WorldCoords > *targetDirections) |
| Construct merger given overlap and possible projection directions. More...
|
|
| ContactMerge (const T allowedOverlap=T(0), std::function< WorldCoords(WorldCoords)> domainDirections=nullptr, std::function< WorldCoords(WorldCoords)> targetDirections=nullptr) |
| Construct merger given overlap and possible projection directions. More...
|
|
void | setSurfaceDirections (std::function< WorldCoords(WorldCoords)> domainDirections, std::function< WorldCoords(WorldCoords)> targetDirections) |
| Set surface direction functions. More...
|
|
void | setSurfaceDirections (const Dune::VirtualFunction< WorldCoords, WorldCoords > *domainDirections, const Dune::VirtualFunction< WorldCoords, WorldCoords > *targetDirections) |
| Set surface direction functions. More...
|
|
void | setOverlap (T overlap) |
| Set the allowed overlap of the surfaces. More...
|
|
T | getOverlap () const |
| Get the allowed overlap of the surfaces. More...
|
|
void | minNormalAngle (T angle) |
| set minimum angle in radians between normals at x and Φ(x) More...
|
|
T | minNormalAngle () const |
| get minimum angle in radians between normals at x and Φ(x) More...
|
|
unsigned int | nSimplices () const |
| get the number of simplices in the merged grid The indices are then in 0..nSimplices()-1 More...
|
|
void | clear () |
|
void | enableFallback (bool fallback) |
|
void | enableBruteForce (bool bruteForce) |
|
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...
|
|
bool | simplexRefined (unsigned int idx, std::vector< unsigned int > &indices) const |
| get the merged grid simplices refining a given grid-n simplex More...
|
|
GridTraits< n >::Coords | 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...
|
|
|
void | build (const std::vector< Dune::FieldVector< T, dimworld > > &grid1Coords, const std::vector< unsigned int > &grid1Elements, const std::vector< Dune::GeometryType > &grid1ElementTypes, const std::vector< Dune::FieldVector< T, dimworld > > &grid2Coords, const std::vector< unsigned int > &grid2Elements, const std::vector< Dune::GeometryType > &grid2ElementTypes) |
| builds the merged grid More...
|
|
void | computeCyclicOrder (const std::vector< std::array< LocalCoords, 2 > > &polytopeCorners, const LocalCoords ¢er, std::vector< int > &ordering) const |
| Order the corners of the intersection polytope in cyclic order. More...
|
|
void | setupNodalDirections (const std::vector< WorldCoords > &coords1, const std::vector< unsigned int > &elements1, const std::vector< Dune::GeometryType > &elementTypes1, const std::vector< WorldCoords > &coords2, const std::vector< unsigned int > &elements2, const std::vector< Dune::GeometryType > &elementTypes2) |
| Setup the direction vectors containing the directions for each vertex. More...
|
|
void | computeOuterNormalField (const std::vector< WorldCoords > &coords, const std::vector< unsigned int > &elements, const std::vector< Dune::GeometryType > &elementTypes, std::vector< WorldCoords > &normals) |
| If no direction field was specified compute the outer normal field. More...
|
|
void | removeDoubles (std::vector< std::array< LocalCoords, 2 > > &polytopeCorners) |
| Remove all multiples. More...
|
|
virtual void | computeIntersections (const Dune::GeometryType &grid1ElementType, const std::vector< Dune::FieldVector< T, dimworld > > &grid1ElementCorners, std::bitset<(1<< grid1Dim)> &neighborIntersects1, unsigned int grid1Index, const Dune::GeometryType &grid2ElementType, const std::vector< Dune::FieldVector< T, dimworld > > &grid2ElementCorners, std::bitset<(1<< grid2Dim)> &neighborIntersects2, unsigned int grid2Index, std::vector< RemoteSimplicialIntersection > &intersections)=0 |
| Compute the intersection between two overlapping elements. More...
|
|
bool | computeIntersection (unsigned int candidate0, unsigned int candidate1, const std::vector< Dune::FieldVector< T, dimworld > > &grid1Coords, const std::vector< Dune::GeometryType > &grid1_element_types, std::bitset<(1<< grid1Dim)> &neighborIntersects1, const std::vector< Dune::FieldVector< T, 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...
|
|
template<int dimworld, typename T = double>
class Dune::GridGlue::ContactMerge< dimworld, T >
Merge two codimension-1 surfaces that may be a positive distance apart.
- Template Parameters
-
dimworld | Dimension of the world coordinates. |
T | Type used for coordinates |
template<int dimworld, typename T = double>
void Dune::GridGlue::ContactMerge< dimworld, T >::build |
( |
const std::vector< Dune::FieldVector< T, dimworld > > & |
grid1Coords, |
|
|
const std::vector< unsigned int > & |
grid1Elements, |
|
|
const std::vector< Dune::GeometryType > & |
grid1ElementTypes, |
|
|
const std::vector< Dune::FieldVector< T, dimworld > > & |
grid2Coords, |
|
|
const std::vector< unsigned int > & |
grid2Elements, |
|
|
const std::vector< Dune::GeometryType > & |
grid2ElementTypes |
|
) |
| |
|
inlineprotectedvirtual |
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 |
Reimplemented from Dune::GridGlue::StandardMerge< T, dimworld-1, dimworld-1, dimworld >.