Dendro
5.01
Dendro in Greek language means tree. The Dendro library is a large scale (262K cores on ORNL's Titan) distributed memory adaptive octree framework. The main goal of Dendro is to perform large scale multiphysics simulations efficeiently in mordern supercomputers. Dendro consists of efficient parallel data structures and algorithms to perform variational ( finite element) methods and finite difference mthods on 2:1 balanced arbitary adaptive octrees which enables the users to perform simulations raning from black holes (binary black hole mergers) to blood flow in human body, where applications ranging from relativity, astrophysics to biomedical engineering.
|
Simple class to manage async data transfer in the ODA class. More...
Classes | |
class | AsyncExchangeContex |
class | Block |
class | DA |
class | Key |
struct | LoopCounter |
: Simple structure to keep the loop counters More... | |
class | MatRecord |
class | Mesh |
class | Node |
struct | NodeTuple |
class | SearchKey |
class | subDA |
subDA based on the DA, where to perform computations sub domain of the main domain. More... | |
class | SubScatterMap |
class | TreeNode |
A class to manage octants. More... | |
Enumerations | |
enum | BlockType { UNSPECIFIED =0, INTRNL_INDEPENDENT, INTRNL_DEPENDENT, FULLY_INDEPENDENT, FULLY_DEPENDENT } |
Block type UNSPECIFIED : block flag type is not set INTRNL_INDEPENDENT: Block internal is independent from ghost nodes INTRNL_DEPENDENT: Block internal is dependent from ghost nodes FULLY_INDEPENDENT : Denotes that the all the block element nodal including padding regions are independent from ghost nodes. FULLY_DEPENDENT: Denotes that all the block element nodal including padding region is depend on the ghost nodes. | |
enum | SM_TYPE { FDM = 0, FEM_CG, FEM_DG, E2E_ONLY } |
type of the scatter map, based on numerical computation method | |
enum | EType { INDEPENDENT, W_DEPENDENT, UNKWON } |
enum | DAType { OCT, PETSC } |
: DA type OCT: uses Dendro DA and PETSC uses petsc based DA | |
enum | MVECType { MESH_BASED, MESH_FREE } |
: denotes the type of the matvec being computed, MESH_BASED - denotes the MatVec computation using mesh data structures. MESH_FREE - denotes the MatVec computation without using mesh data structures. | |
Functions | |
template<> | |
void | Mesh::init< WaveletDA::LoopType ::ALL > () |
template<> | |
void | Mesh::init< WaveletDA::INDEPENDENT > () |
template<> | |
void | Mesh::init< WaveletDA::DEPENDENT > () |
template<> | |
bool | Mesh::nextAvailable< WaveletDA::ALL > () |
template<> | |
bool | Mesh::nextAvailable< WaveletDA::INDEPENDENT > () |
template<> | |
bool | Mesh::nextAvailable< WaveletDA::DEPENDENT > () |
template<> | |
void | Mesh::next< WaveletDA::ALL > () |
template<> | |
void | Mesh::next< WaveletDA::INDEPENDENT > () |
template<> | |
void | Mesh::next< WaveletDA::DEPENDENT > () |
void | computeODAFlags (const ot::Mesh *pMesh, std::vector< unsigned int > &flagList) |
flag the elements for the ODA construction More... | |
void | computeLocalToGlobalNodalMap (const ot::Mesh *pMesh, std::vector< DendroIntL > &map, DendroIntL &globalNodeSz) |
computes the local to global nodal map. More... | |
std::ostream & | operator<< (std::ostream &os, TreeNode const &node) |
int | mergeOctrees (std::vector< TreeNode > &inOct1, std::vector< TreeNode > &inOct2, std::vector< TreeNode > &outOct, MPI_Comm comm) |
int | refineOctree (const std::vector< ot::TreeNode > &inp, std::vector< ot::TreeNode > &out) |
int | refineAndPartitionOctree (const std::vector< ot::TreeNode > &inp, std::vector< ot::TreeNode > &out, MPI_Comm comm) |
int | createRegularOctree (std::vector< ot::TreeNode > &out, unsigned int lev, unsigned int dim, unsigned int maxDepth, MPI_Comm comm) |
int | lineariseList (std::vector< ot::TreeNode > &list, bool skipLast) |
int | lineariseList (std::vector< ot::TreeNode > &list, MPI_Comm comm) |
bool | lessThanUsingWts (TreeNode const &a, TreeNode const &b) |
unsigned int | getNodeWeight (const TreeNode *t) |
bool | bPartComparator (TreeNode a, TreeNode b) |
TreeNode | getNCA (TreeNode first, TreeNode second) |
int | readPtsFromFile (char *filename, std::vector< double > &pts) |
Reads a list of points from a file. More... | |
int | readDataPtsFromFile (char *filename, std::vector< double > &pts, std::vector< double > &ptVals) |
int | writePtsToFile (char *filename, std::vector< double > &pts) |
int | writeDataPtsToFile (char *filename, std::vector< double > &pts, std::vector< double > &data) |
int | readNodesFromFile_binary (char *filename, std::vector< TreeNode > &nodes) |
int | readNodesFromFile (char *filename, std::vector< TreeNode > &nodes) |
int | writeNodesToFile_binary (char *filename, const std::vector< TreeNode > &nodes) |
int | writeNodesToFile (char *filename, const std::vector< TreeNode > &nodes) |
bool | areComparable (TreeNode first, TreeNode second) |
int | int2str (int n, char *s) |
char | int2char (int d) |
void | addBoundaryNodesType2 (std::vector< ot::TreeNode > &in, std::vector< ot::TreeNode > &bdy, unsigned int dim, unsigned int maxDepth) |
void | markBoundaryNodesAtAllLevels (std::vector< ot::TreeNode > &finestOctree, unsigned int nlevels, std::vector< ot::TreeNode > *coarserOctrees, unsigned int maxDepth) |
void | discardExtraBoundaryOctants (std::vector< ot::TreeNode > &in, unsigned int dim, unsigned int maxDepth) |
void | markHangingNodesAtAllLevels (std::vector< ot::TreeNode > &finestOctree, unsigned int nlevels, std::vector< ot::TreeNode > *coarserOctrees, MPI_Comm *activeComms, unsigned int dim, unsigned int maxDepth) |
void | addBoundaryNodesType1 (std::vector< ot::TreeNode > &in, std::vector< ot::TreeNode > &bdy, unsigned int dim, unsigned int maxDepth) |
void | flagNodesType1 (std::vector< ot::TreeNode > &in, MPI_Comm comm) |
void | flagNodesType2 (std::vector< ot::TreeNode > &in, MPI_Comm comm) |
void | flagNodesType3 (std::vector< ot::TreeNode > &in, MPI_Comm comm) |
Simple class to manage async data transfer in the ODA class.
Contains the test utilities for the mesh class.
contains ODA utility functions,
class derived from the TreeNode for scatter map computations.
contains treenode based search keys.
contains utilitity functions of mesh based distributed array(da)
void ot::computeLocalToGlobalNodalMap | ( | const ot::Mesh * | pMesh, |
std::vector< DendroIntL > & | map, | ||
DendroIntL & | globalNodeSz | ||
) |
computes the local to global nodal map.
[in] | pMesh | ot::Mesh generated form 2:1 balanced octree |
[out] | map | constructed local to global nodal map. |
void ot::computeODAFlags | ( | const ot::Mesh * | pMesh, |
std::vector< unsigned int > & | flagList | ||
) |
flag the elements for the ODA construction
contains ODA utility functions,
[in] | pMesh | : ot::Mesh |
[out] | flagList | flaged output |
int ot::readPtsFromFile | ( | char * | filename, |
std::vector< double > & | pts | ||
) |
Reads a list of points from a file.
filename | the file name |
pts | the points |