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.
Public Member Functions | Protected Attributes | List of all members
ode::solver::RK Class Reference
Inheritance diagram for ode::solver::RK:
Inheritance graph
Collaboration diagram for ode::solver::RK:
Collaboration graph

Public Member Functions

 RK (ot::Mesh *pMesh, double pTBegin, double pTEnd, double pTh)
virtual void performSingleIteration ()
virtual void applyInitialConditions ()
virtual void applyBoundaryConditions ()
virtual void rkSolve ()
void freeMesh ()
 free memeory of the mesh

Protected Attributes

unsigned int m_uiOrder
unsigned int m_uiNrp
MPI_Comm m_uiComm
double m_uiTimeBegin
double m_uiTimeEnd
double m_uiT_h
double m_uiCurrentTime
double m_uiT_h_prev
double m_uiTimeStepCurrent
unsigned int m_uiCurrentStep
const double RK45_STAGE_1_COEF =16.0/135.0
const double RK45_STAGE_1_T =1.0
const double RK45_STAGE_1_U =1.0
const double RK45_STAGE_2_COEF =0.0
const double RK45_STAGE_2_T =(1.0/4.0)
const double RK45_STAGE_2_U =(1.0/4.0)
const double RK45_STAGE_3_COEF =6656.0/12825.0
const double RK45_STAGE_3_T =(3.0/8.0)
const double RK45_STAGE_3_U1 =(3.0/32.0)
const double RK45_STAGE_3_U2 =(9.0/32.0)
const double RK45_STAGE_4_COEF =28561.0/56430
const double RK45_STAGE_4_T =(12.0/13.0)
const double RK45_STAGE_4_U1 =(1932.0/2197.0)
const double RK45_STAGE_4_U2 =(-7200.0/2197.0)
const double RK45_STAGE_4_U3 =(7296.0/2197.0)
const double RK45_STAGE_5_COEF =-9.0/50.0
const double RK45_STAGE_5_T =1.0
const double RK45_STAGE_5_U1 =(439.0/216.0)
const double RK45_STAGE_5_U2 =(-8.0)
const double RK45_STAGE_5_U3 =(3680.0/513.0)
const double RK45_STAGE_5_U4 =(-845.0/4104.0)
const double RK45_STAGE_6_COEF =2.0/55.0
const double RK45_STAGE_6_T =0.5
const double RK45_STAGE_6_U1 =(-8.0/27.0)
const double RK45_STAGE_6_U2 =(2.0)
const double RK45_STAGE_6_U3 =(-3544.0/2565.0)
const double RK45_STAGE_6_U4 =(1859.0/4104.0)
const double RK45_STAGE_6_U5 =(-11.0/40.0)
std::vector< unsigned int > m_uiRefinedOctIDs
std::vector< unsigned int > m_uiCoarsenOctIDs

Constructor & Destructor Documentation

◆ RK()

ode::solver::RK::RK ( ot::Mesh pMesh,
double  pTBegin,
double  pTEnd,
double  pTh 

Constructor initializing minmum required parameters.

Member Function Documentation

◆ applyBoundaryConditions()

virtual void ode::solver::RK::applyBoundaryConditions ( )

function to apply boundary conditions.

Reimplemented in ode::solver::RK45Transport, and ode::solver::RK45Maxwell.

◆ applyInitialConditions()

virtual void ode::solver::RK::applyInitialConditions ( )

apply intial conditions

Reimplemented in ode::solver::RK45Transport.

◆ performSingleIteration()

virtual void ode::solver::RK::performSingleIteration ( )

stet the begin value for time stepper. stet the end value for time stepper. set the current time step set the current time value set the dt value for the solver One time step iteration iteration for RK45 update

Reimplemented in ode::solver::RK45Transport.

Member Data Documentation

◆ m_uiCoarsenOctIDs

std::vector<unsigned int> ode::solver::RK::m_uiCoarsenOctIDs

TO store the coarsened oct IDs

◆ m_uiComm

MPI_Comm ode::solver::RK::m_uiComm

MPI communicator

◆ m_uiCurrentStep

unsigned int ode::solver::RK::m_uiCurrentStep

current step

◆ m_uiCurrentTime

double ode::solver::RK::m_uiCurrentTime

current time value.

◆ m_uiMesh

ot::Mesh* ode::solver::RK::m_uiMesh

pointer for geometric grid (the grid generated by tree construction and balancing)

◆ m_uiNrp

unsigned int ode::solver::RK::m_uiNrp

number of nodes in 1D element.

◆ m_uiOrder

unsigned int ode::solver::RK::m_uiOrder

element (octant) order.

◆ m_uiRefinedOctIDs

std::vector<unsigned int > ode::solver::RK::m_uiRefinedOctIDs

To store the refined oct IDs

◆ m_uiT_h

double ode::solver::RK::m_uiT_h

size of a one time sten

◆ m_uiT_h_prev

double ode::solver::RK::m_uiT_h_prev

size of the previous time step

◆ m_uiTimeBegin

double ode::solver::RK::m_uiTimeBegin

starting time value for simulation

◆ m_uiTimeEnd

double ode::solver::RK::m_uiTimeEnd

Ending time value for simulation

◆ m_uiTimeStepCurrent

double ode::solver::RK::m_uiTimeStepCurrent

current time step


const double ode::solver::RK::RK45_STAGE_1_COEF =16.0/135.0

RK45 stage 1 coefficient


const double ode::solver::RK::RK45_STAGE_2_COEF =0.0

RK45 stage 2 coefficient


const double ode::solver::RK::RK45_STAGE_3_COEF =6656.0/12825.0

RK45 stage 3 coefficient


const double ode::solver::RK::RK45_STAGE_4_COEF =28561.0/56430

RK45 stage 4 coefficient


const double ode::solver::RK::RK45_STAGE_5_COEF =-9.0/50.0

RK45 stage 5 coefficient


const double ode::solver::RK::RK45_STAGE_6_COEF =2.0/55.0

RK45 stage 6 coefficient

The documentation for this class was generated from the following files: