Holds the implementation of the CpGrid as a pimple. More...
Typedefs | |
typedef std::array< int, 3 > | coord_t |
Functions | |
void | partition (const CpGrid &grid, const std::array< int, 3 > &initial_split, int &num_part, std::vector< int > &cell_part, bool recursive=false, bool ensureConnectivity=true) |
Partition a CpGrid based on (ijk) coordinates, with splitting to ensure that each partition is connected. More... | |
void | addOverlapCornerCell (const CpGrid &grid, int owner, const CpGrid::Codim< 0 >::Entity &from, const CpGrid::Codim< 0 >::Entity &neighbor, const std::vector< int > &cell_part, std::vector< std::set< int > > &cell_overlap) |
Adds cells to the overlap that just share a point with an owner cell. | |
void | addOverlapLayer (const CpGrid &grid, int index, const CpGrid::Codim< 0 >::Entity &e, const int owner, const std::vector< int > &cell_part, std::vector< std::set< int > > &cell_overlap, int recursion_deps) |
void | addOverlapLayer (const CpGrid &grid, const std::vector< int > &cell_part, std::vector< std::set< int > > &cell_overlap, int mypart, int overlapLayers, bool all=false) |
Adds a layer of overlap cells to a partitioning. More... | |
template<typename T > | |
FieldVector< T, 3 > | cross (const FieldVector< T, 3 > &a, const FieldVector< T, 3 > &b) |
template<class Vector > | |
Vector::field_type | inner (const Vector &a, const Vector &b) |
template<typename T , template< typename, int > class Point> | |
T | determinantOf (const Point< T, 2 > *a) |
Calculates the determinant of a 2 x 2 matrix, represented in memory as an array of two-dimensional points. More... | |
template<typename T , template< typename, int > class Point> | |
T | determinantOf (const Point< T, 3 > *a) |
Calculates the determinant of a 3 x 3 matrix, represented in memory as an array of three-dimensional points. More... | |
template<typename T , template< typename, int > class Point, int Dim> | |
T | simplex_volume (const Point< T, Dim > *a) |
Computes the volume of a simplex consisting of (Dim+1) vertices embedded in Euclidean space of dimension (Dim) | |
template<typename T , template< typename, int > class Point> | |
T | area (const Point< T, 2 > *c) |
Computes the area of a 2-dimensional triangle. More... | |
template<typename T , template< typename, int > class Point> | |
T | area (const Point< T, 3 > *c) |
Computes the area of a 3-dimensional triangle. More... | |
template<typename T , template< typename, int > class Point> | |
T | volume (const Point< T, 3 > *c) |
Computes the volume of a 3D simplex (embedded i 3D space). | |
template<typename T , template< typename, int > class Point> | |
T | signed_area (const Point< T, 3 > *c, const Point< T, 3 > &normal) |
Computes the signed area of a triangle embedded in 3D space. More... | |
template<typename K , int n> | |
FieldVector< K, n > | operator- (const FieldVector< K, n > &v) |
Holds the implementation of the CpGrid as a pimple.
void Dune::addOverlapLayer | ( | const CpGrid & | grid, |
const std::vector< int > & | cell_part, | ||
std::vector< std::set< int > > & | cell_overlap, | ||
int | mypart, | ||
int | overlapLayers, | ||
bool | all = false |
||
) |
Adds a layer of overlap cells to a partitioning.
[in] | grid | The grid that is partitioned. |
[in] | cell_part | a vector containing each cells partition number. |
[out] | cell_overlap | a vector of sets that contains for each cell all the partition numbers that it is an overlap cell of. |
[in] | mypart | The partition number of the processor. |
[in] | all | Whether to compute the overlap for all partions or just the one associated by mypart. |
|
inline |
Computes the area of a 2-dimensional triangle.
Input is an array of corner points. Same function also exists for 3-dimensional triangles.
|
inline |
Computes the area of a 3-dimensional triangle.
Input is an array of corner points. Same function also exists for 2-dimensional triangles.
FieldVector<T, 3> Dune::cross | ( | const FieldVector< T, 3 > & | a, |
const FieldVector< T, 3 > & | b | ||
) |
|
inline |
Calculates the determinant of a 2 x 2 matrix, represented in memory as an array of two-dimensional points.
Same function also exists for 3 x 3 matrices.
|
inline |
Calculates the determinant of a 3 x 3 matrix, represented in memory as an array of three-dimensional points.
Same function also exists for 2 x 2 matrices.
Vector::field_type Dune::inner | ( | const Vector & | a, |
const Vector & | b | ||
) |
void Dune::partition | ( | const CpGrid & | grid, |
const std::array< int, 3 > & | initial_split, | ||
int & | num_part, | ||
std::vector< int > & | cell_part, | ||
bool | recursive = false , |
||
bool | ensureConnectivity = true |
||
) |
Partition a CpGrid based on (ijk) coordinates, with splitting to ensure that each partition is connected.
[in] | grid | the grid to partition |
[in] | initial_split | the number of parts in which to partition the grid, in each cardinal direction. Their product is the expected number of partitions produced. |
[out] | num_part | the resulting number of partitions. This may be lower than expected, because of inactive cells, or higher than expected, because of splits to ensure connectedness. |
[out] | cell_part | a vector containing, for each cell, its partition number |
T Dune::signed_area | ( | const Point< T, 3 > * | c, |
const Point< T, 3 > & | normal | ||
) |
Computes the signed area of a triangle embedded in 3D space.
Input is an array of corner points and a normal to determine the sign.