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.
Classes | Enumerations | Functions
ot Namespace Reference

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)
 

Detailed Description

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)

Author
Milinda Fernando School of Computing, University of Utah.
Milinda Fernando School of Computing, University of Utah
Milinda Fernando, School of Computing, University of Utah

Function Documentation

◆ computeLocalToGlobalNodalMap()

void ot::computeLocalToGlobalNodalMap ( const ot::Mesh pMesh,
std::vector< DendroIntL > &  map,
DendroIntL &  globalNodeSz 
)

computes the local to global nodal map.

Parameters
[in]pMeshot::Mesh generated form 2:1 balanced octree
[out]mapconstructed local to global nodal map.

◆ computeODAFlags()

void ot::computeODAFlags ( const ot::Mesh pMesh,
std::vector< unsigned int > &  flagList 
)

flag the elements for the ODA construction

contains ODA utility functions,

Parameters
[in]pMesh: ot::Mesh
[out]flagListflaged output
Author
Milinda Fernando, School of Computing, University of Utah

◆ readPtsFromFile()

int ot::readPtsFromFile ( char *  filename,
std::vector< double > &  pts 
)

Reads a list of points from a file.

Author
Rahul Sampath
Parameters
filenamethe file name
ptsthe points