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.
Namespaces | Macros | Functions
testUtils.h File Reference

A Set of utilities to test octrees. More...

#include <mpi.h>
#include <vector>
#include "TreeNode.h"
#include "treenode2vtk.h"
#include <climits>
#include <math.h>
#include <block.h>
#include <functional>
#include "testUtils.tcc"
Include dependency graph for testUtils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 seq
 Collection of Generic Sequential Functions.
 
 test
 A collection of functions for debugging.
 
 par
 Collection of Generic Parallel Functions: Sorting, Partitioning, Searching,...
 
 ot
 Simple class to manage async data transfer in the ODA class.
 

Macros

#define NUM_CHILDREN   8
 
#define ROTATION_OFFSET   16
 

Functions

template<typename T >
bool seq::test::isSorted (const std::vector< T > &nodes)
 
template<typename T >
bool seq::test::isSorted_all_pairs (const std::vector< T > &nodes)
 
template<typename T >
bool seq::test::isSorted (T *nodes, unsigned int sz)
 
template<typename T >
bool seq::test::isNAN (const T *in, const unsigned int sz)
 checks whether the numeric array constains nan values.
 
template<typename T >
bool seq::test::isBlockNAN (const T *in, const unsigned int *sz)
 checks whether the numeric array constains nan values. for block local region
 
template<typename T >
bool seq::test::isBlockNAN (const T *in, const unsigned int *sz, unsigned int flag)
 checks whether the numeric array constains nan values. for block local region
 
template<typename T >
bool seq::test::isUniqueAndSorted (const std::vector< T > &nodes)
 
template<typename T >
bool seq::test::containsAncestor (const std::vector< T > &nodes)
 
template<typename T >
bool seq::test::isComplete (const std::vector< T > &nodes)
 
template<typename T >
bool seq::test::checkE2EMapping (const std::vector< unsigned int > &E2EMap, const std::vector< T > &allNodes, unsigned int localBegin, unsigned int localEnd, unsigned int k_s, unsigned numDirections)
 
template<typename T >
bool seq::test::checkE2NMapping (const std::vector< unsigned int > &E2EMap, const std::vector< unsigned int > &E2NMap, const std::vector< T > &allNodes, unsigned int numDirections, unsigned int elementOrder)
 : Check whether the E2N mapping is correct based on the DG indexing. This assumes that StensilSz is 1 More...
 
template<typename T >
bool par::test::isSorted (const std::vector< T > &nodes, MPI_Comm comm)
 
template<typename T >
bool par::test::isUniqueAndSorted (const std::vector< T > &nodes, MPI_Comm comm)
 
template<typename T >
bool par::test::containsAncestor (const std::vector< T > &nodes, MPI_Comm comm)
 
template<typename T >
bool par::test::isComplete (const std::vector< T > &nodes, MPI_Comm comm)
 
template<typename T >
bool ot::test::isLinear (const std::vector< T > &nodes)
 
template<typename T >
bool ot::test::isBalanced (unsigned int dim, unsigned int maxDepth, char *failFileName, const std::vector< T > &nodes, bool incCorn, unsigned int maxLevDiff)
 
template<typename T >
bool ot::test::isBalancedInternal (unsigned int dim, unsigned int maxDepth, char *failFileName, const std::vector< T > &nodes, TreeNode holder, bool incCorn, unsigned int maxLevDiff)
 
template<typename T , typename B >
bool ot::test::isBlockListValid (const std::vector< T > &pNodes, std::vector< T > &blockList, unsigned int d_min, unsigned int d_max, unsigned int nBegin, unsigned int nEnd)
 for a given sorted 2:1 balanced octree and a block list this procedure checks that for each block, number of octants at level l (reg grid level) cross all blocks should equal to the level l octants across the octree. This ensures that blocks have captured all the octants corresponding to regular grid level l . More...
 

Detailed Description

A Set of utilities to test octrees.

Author
Rahul S. Sampath, rahul.nosp@m..sam.nosp@m.path@.nosp@m.gmai.nosp@m.l.com
Milinda Shayamal Fernando. School of COmputing, University of Utah milin.nosp@m.da@c.nosp@m.s.uta.nosp@m.h.ed.nosp@m.u

Function Documentation

◆ checkE2EMapping()

template<typename T >
bool seq::test::checkE2EMapping ( const std::vector< unsigned int > &  E2EMap,
const std::vector< T > &  allNodes,
unsigned int  localBegin,
unsigned int  localEnd,
unsigned int  k_s,
unsigned  numDirections 
)
Author
Milinda Fernando Check whether the local E2E mapping is correct.

◆ checkE2NMapping()

template<typename T >
bool seq::test::checkE2NMapping ( const std::vector< unsigned int > &  E2EMap,
const std::vector< unsigned int > &  E2NMap,
const std::vector< T > &  allNodes,
unsigned int  numDirections,
unsigned int  elementOrder 
)

: Check whether the E2N mapping is correct based on the DG indexing. This assumes that StensilSz is 1

Author
: Milinda Fernando.

◆ isBlockListValid()

template<typename T , typename B >
bool ot::test::isBlockListValid ( const std::vector< T > &  pNodes,
std::vector< T > &  blockList,
unsigned int  d_min,
unsigned int  d_max,
unsigned int  nBegin,
unsigned int  nEnd 
)

for a given sorted 2:1 balanced octree and a block list this procedure checks that for each block, number of octants at level l (reg grid level) cross all blocks should equal to the level l octants across the octree. This ensures that blocks have captured all the octants corresponding to regular grid level l .

Author
Milinda Fernanado
Parameters
[in]pNodes2:1 balance sorted octree
[in]blockListset of computed block list.
[in]d_minmin depth of the octree
[in]d_maxmax depth of the octree