dune-grid-glue  2.3.0
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
ContactMerge< dimworld, T > Class Template Referenceabstract

Merge two codimension-1 surfaces that may be a positive distance apart. More...

#include <dune/grid-glue/merging/contactmerge.hh>

Inheritance diagram for ContactMerge< dimworld, T >:
Inheritance graph

Public Types

typedef T ctype
 the numeric type used in this interface More...
 
typedef Merger< T, grid1Dim,
grid2Dim, dimworld >
::Grid1Coords 
Grid1Coords
 Type used for local coordinates on the grid1 side. More...
 
typedef Merger< T, grid1Dim,
grid2Dim, dimworld >
::Grid2Coords 
Grid2Coords
 Type used for local coordinates on the grid2 side. More...
 
typedef Dune::FieldVector< T,
dimworld > 
WorldCoords
 the coordinate type used in this interface More...
 

Public Member Functions

virtual void build (const std::vector< Dune::FieldVector< T, dimworld > > &grid1_Coords, const std::vector< unsigned int > &grid1_elements, const std::vector< Dune::GeometryType > &grid1_element_types, const std::vector< Dune::FieldVector< T, dimworld > > &grid2_coords, const std::vector< unsigned int > &grid2_elements, const std::vector< Dune::GeometryType > &grid2_element_types)
 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 More...
 
void clear ()
 
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...
 

Public Attributes

unsigned int counter
 Counts the number of times the computeIntersection method has been called. More...
 

Protected Member Functions

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...
 

Protected Attributes

bool valid
 
std::vector
< RemoteSimplicialIntersection > 
intersections_
 The computed intersections. More...
 
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_
 

Detailed Description

template<int dimworld, typename T = double>
class ContactMerge< dimworld, T >

Merge two codimension-1 surfaces that may be a positive distance apart.

Template Parameters
dimworldDimension of the world coordinates.
TType used for coordinates

Member Typedef Documentation

typedef T StandardMerge< T, grid1Dim, grid2Dim, dimworld >::ctype
inherited

the numeric type used in this interface

typedef Merger<T,grid1Dim,grid2Dim,dimworld>::Grid1Coords StandardMerge< T, grid1Dim, grid2Dim, dimworld >::Grid1Coords
inherited

Type used for local coordinates on the grid1 side.

typedef Merger<T,grid1Dim,grid2Dim,dimworld>::Grid2Coords StandardMerge< T, grid1Dim, grid2Dim, dimworld >::Grid2Coords
inherited

Type used for local coordinates on the grid2 side.

typedef Dune::FieldVector<T, dimworld> StandardMerge< T, grid1Dim, grid2Dim, dimworld >::WorldCoords
inherited

the coordinate type used in this interface

Member Function Documentation

virtual void StandardMerge< T, grid1Dim, grid2Dim, dimworld >::build ( const std::vector< Dune::FieldVector< T, dimworld > > &  grid1_Coords,
const std::vector< unsigned int > &  grid1_elements,
const std::vector< Dune::GeometryType > &  grid1_element_types,
const std::vector< Dune::FieldVector< T, dimworld > > &  grid2_coords,
const std::vector< unsigned int > &  grid2_elements,
const std::vector< Dune::GeometryType > &  grid2_element_types 
)
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_coordsthe 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_elementsarray with all grid1 elements represented as corner indices into grid1_coords
grid1_element_typesarray with the GeometryType of the elements listed grid1_elements
grid2_coordsthe 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_elementsjust like with the grid1_elements and grid1_coords
grid2_element_typesarray with the GeometryType of the elements listed grid2_elements

Implements Merger< T, grid1Dim, grid2Dim, dimworld >.

void StandardMerge< T, grid1Dim, grid2Dim, dimworld >::clear ( )
inlinevirtualinherited
bool StandardMerge< T, grid1Dim, grid2Dim, dimworld >::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 
)
protectedinherited

Compute the intersection between two overlapping elements.

Returns
true if at least one intersection point was found
virtual void StandardMerge< T, grid1Dim, grid2Dim, dimworld >::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 
)
protectedpure virtualinherited

Compute the intersection between two overlapping elements.

The result is a set of simplices stored in the vector intersections.

unsigned int StandardMerge< T, grid1Dim, grid2Dim, dimworld >::nSimplices ( ) const
virtualinherited

get the number of simplices in the merged grid The indices are then in 0..nSimplices()-1

Implements Merger< T, grid1Dim, grid2Dim, dimworld >.

unsigned int Merger< T , 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
nspecify which grid
Parameters
idxindex of the merged grid simplex
Returns
index of the parent simplex
GridTraits<n>::Coords Merger< T , 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
nspecify which grid
Parameters
idxthe index of the merged grid simplex
cornerthe index of the simplex' corner
Returns
local coordinates in grid-n grid1
unsigned int Merger< T , grid1Dim, grid2Dim, dimworld >::parents ( unsigned int  idx) const
inlineinherited

doc me

bool Merger< T , grid1Dim, grid2Dim, dimworld >::simplexRefined ( unsigned int  idx,
std::vector< unsigned int > &  indices 
) const
inlineinherited

get the merged grid simplices refining a given grid-n simplex

Template Parameters
nspecify which grid (grid1/grid2: 0/1)
Parameters
idxindex of grid-n simplex
indiceswill be resized first and then filled with the refining simplices
Returns
TRUE <=> given simplex could be matched and is part of the merged grid

Member Data Documentation

unsigned int Merger< T , grid1Dim, grid2Dim, dimworld >::counter
inherited

Counts the number of times the computeIntersection method has been called.

Used temporarily to speed up the implementation

Referenced by StandardMerge< T, grid1Dim, grid2Dim, dimworld >::build().

std::vector<std::vector<int> > StandardMerge< T, grid1Dim, grid2Dim, dimworld >::elementNeighbors1_
protectedinherited
std::vector<std::vector<int> > StandardMerge< T, grid1Dim, grid2Dim, dimworld >::elementNeighbors2_
protectedinherited
std::vector<std::vector<unsigned int> > StandardMerge< T, grid1Dim, grid2Dim, dimworld >::grid1ElementCorners_
protectedinherited

Temporary internal data.

std::vector<std::vector<unsigned int> > StandardMerge< T, grid1Dim, grid2Dim, dimworld >::grid2ElementCorners_
protectedinherited
std::vector<RemoteSimplicialIntersection> StandardMerge< T, grid1Dim, grid2Dim, dimworld >::intersections_
protectedinherited

The computed intersections.

bool StandardMerge< T, grid1Dim, grid2Dim, dimworld >::valid
protectedinherited

The documentation for this class was generated from the following file: