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 | Namespaces | Macros | Enumerations
oda.h File Reference

The class that manages the octree mesh that support FEM computations. Note that this file is a refactored version from Dendro4 which is changed to support Dendro-5.0 Currently we use mesh based FEM computations but in future we will move towards the mesh - free FEM computation methods. More...

#include "dendro.h"
#include <iostream>
#include <vector>
#include "mpi.h"
#include "mesh.h"
#include "parUtils.h"
#include "testUtils.h"
#include "asyncExchangeContex.h"
#include "oct2vtk.h"
#include "odaUtils.h"
#include "matRecord.h"
#include <assert.h>
#include "oda.tcc"
Include dependency graph for oda.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ot::LoopCounter
 : Simple structure to keep the loop counters More...
 
class  ot::DA
 

Namespaces

 ot
 Simple class to manage async data transfer in the ODA class.
 

Macros

#define VECType   DendroScalar
 
#define MATType   DendroScalar
 

Enumerations

enum  ot::DA_FLAGS::LoopType {
  ALL, WRITABLE, INDEPENDENT, W_DEPENDENT,
  W_BOUNDARY, LOCAL_ELEMENTS, PREGHOST_ELEMENTS, POSTGHOST_ELEMENTS
}
 loop flags, ALL : Loop over all the elements (note here we loop only on the local + level 1 ghost elements). WRITABLE: Loop over INDEPENDENT U W_DEPENDENT INDEPENDENT : Loop over all the local elements which DOES NOT point to any ghost node region. W_DEPENDENT : Loop over all local elements which has AT LEAST ONE node which point to ghost node region W_BOUNDARY : Loop over all the local elements which is on the domain boundary. More...
 
enum  ot::DA_FLAGS::BdyType {
  X_MIN, X_MAX, Y_MIN, Y_MAX,
  Z_MIN, Z_MAX
}
 
enum  ot::DA_FLAGS::Refine { DA_NO_CHANGE, DA_REFINE, DA_COARSEN }
 contains the refine flags. DA_NO_CHANGE : no change needed for the octant DA_REFINE : refine the octant DA_COARSEN: coarsen the octant.
 
enum  WriteMode { SET_VALUES =0, ADD_VALUES }
 
enum  ot::DAType { OCT, PETSC }
 : DA type OCT: uses Dendro DA and PETSC uses petsc based DA
 
enum  ot::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.
 

Detailed Description

The class that manages the octree mesh that support FEM computations. Note that this file is a refactored version from Dendro4 which is changed to support Dendro-5.0 Currently we use mesh based FEM computations but in future we will move towards the mesh - free FEM computation methods.

Distributed Array (DA) methods currently uses ot::Mesh class to provide interface to write FEM loops.

Author
Milinda Fernando date: 10/29/2018

Enumeration Type Documentation

◆ BdyType

X_MIN : boundary of the x min on the computational domain. X_MIN : boundary of the x min on the computational domain

Y_MIN : boundary of the y min on the computational domain Y_MIN : boundary of the y min on the computational domain

Z_MIN : boundary of the z min on the computational domain Z_MIN : boundary of the z min on the computational domain

◆ LoopType

loop flags, ALL : Loop over all the elements (note here we loop only on the local + level 1 ghost elements). WRITABLE: Loop over INDEPENDENT U W_DEPENDENT INDEPENDENT : Loop over all the local elements which DOES NOT point to any ghost node region. W_DEPENDENT : Loop over all local elements which has AT LEAST ONE node which point to ghost node region W_BOUNDARY : Loop over all the local elements which is on the domain boundary.

LOCAL_ELEMENTS : Loop over local elements of the mesh PREGHOST_ELEMENTS : Loop over pre ghost elements. POSTGHOST_ELEMENTS : Loop over post ghost elements