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.
|
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"
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. | |
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.
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
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