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.
Enumerations | Functions | Variables
nlsm Namespace Reference

This file contains all the parameters related to NLSM simulation. More...

Enumerations

enum  VAR { U_CHI =0, U_PHI }
 These variable indexes are based on the variables defined in rkNLSM.h.
 

Functions

void readParamFile (const char *fName, MPI_Comm comm)
 internal variables needed for rk update. More...
 
void initData (const double xx1, const double yy1, const double zz1, double *var)
 Initialize all the variables for a given point in space. More...
 
void analyticalSol (const double xx1, const double yy1, const double zz1, const double t, double *var)
 
void blockAdaptiveOctree (std::vector< ot::TreeNode > &tmpNodes, const Point &pt_min, const Point &pt_max, const unsigned int regLev, const unsigned int maxDepth, MPI_Comm comm)
 : Generates block adaptive octree for the given binary blockhole problem.
 
double computeWTol (double x, double y, double z, double tol_min)
 wavelet tolerance as a function of space.
 

Variables

 r = symbols('r')
 initialize
 
 chi = dendro.scalar("chi","[pp]")
 
 phi = dendro.scalar("phi","[pp]")
 
 d = dendro.set_first_derivative('grad')
 
 d2s = dendro.set_second_derivative('grad2')
 
 d2 = dendro.d2
 
int phi_rhs = sum( d2(i,i,chi) for i in dendro.e_i ) - sin(2*chi)/r**2
 evolution equations
 
 chi_rhs = phi
 
list outs = [phi_rhs, chi_rhs]
 evolution equations
 
list vnames = ['phi_rhs', 'chi_rhs']
 
double NLSM_COMPD_MIN [3] ={NLSM_GRID_MIN_X,NLSM_GRID_MIN_Y,NLSM_GRID_MIN_Z}
 min bh domain add these to the parameter file.
 
double NLSM_COMPD_MAX [3] ={NLSM_GRID_MAX_X,NLSM_GRID_MAX_Y,NLSM_GRID_MAX_Z}
 min bh domain More...
 
double NLSM_CFL_FACTOR =0.1
 CFL stability number number (specifies how dt=NLSM_CFL_FACTOR*dx)
 
double NLSM_OCTREE_MIN [3] ={0.0,0.0,0.0}
 min coords of the OCTREE
 
double NLSM_OCTREE_MAX [3] ={(double)(1u<<NLSM_MAXDEPTH),(double)(1u<<NLSM_MAXDEPTH),(double)(1u<<NLSM_MAXDEPTH)}
 max coords of the OCTREE
 
unsigned int NLSM_IO_OUTPUT_FREQ =10
 solution output frequency
 
unsigned int NLSM_TIME_STEP_OUTPUT_FREQ =10
 timestep norms out put freq.
 
unsigned int NLSM_REMESH_TEST_FREQ =10
 remesh test frequency
 
unsigned int NLSM_CHECKPT_FREQ =10
 checkpoint store frequency
 
unsigned int NLSM_RESTORE_SOLVER =0
 restore the solver from check point if set to 1.
 
unsigned int NLSM_ENABLE_BLOCK_ADAPTIVITY =0
 use the block adaptivity and disable the AMR
 
std::string NLSM_VTU_FILE_PREFIX ="nlsm_gr"
 file prefix for VTU
 
std::string NLSM_CHKPT_FILE_PREFIX ="nlsm_cp"
 file prefix for write check point
 
std::string NLSM_PROFILE_FILE_PREFIX ="nlsm_prof"
 file prefix to write profile info.
 
unsigned int NLSM_NUM_REFINE_VARS =2
 number of refine variables
 
unsigned int NLSM_REFINE_VARIABLE_INDICES [NLSM_NUM_VARS] ={0,1}
 indices of refine var ids
 
unsigned int NLSM_NUM_EVOL_VARS_VTU_OUTPUT =2
 number of evolution variables written to vtu files
 
unsigned int NLSM_VTU_OUTPUT_EVOL_INDICES [NLSM_NUM_VARS] ={0,1}
 evolution variable IDs written to vtu files
 
double NLSM_IO_OUTPUT_GAP =1.0
 solution output gap (instead of freq. we can use to output the solution if currentTime > lastIOOutputTime + NLSM_IO_OUTPUT_GAP)
 
unsigned int NLSM_DENDRO_GRAIN_SZ =1000
 prefered grain sz to use when selecting active npes
 
double NLSM_DENDRO_AMR_FAC =0.1
 AMR coarsening factor (we coarsen if tol<NLSM_DENDRO_AMR_FAC*NLSM_WAVELET_TOL)
 
double NLSM_WAVELET_TOL =0.0001
 wavelet tolerance value.
 
double NLSM_LOAD_IMB_TOL =0.1
 load-imbalance tolerance value.
 
unsigned int NLSM_SPLIT_FIX =2
 : Splitter fix value
 
unsigned int NLSM_ASYNC_COMM_K =4
 : async. communication at a time. (upper bound shoud be NLSM_NUM_VARS)
 
double NLSM_RK45_TIME_BEGIN =0
 simulation begin time.
 
double NLSM_RK45_TIME_END =10
 simulation end time
 
double NLSM_RK45_TIME_STEP_SIZE =NLSM_CFL_FACTOR*(NLSM_COMPD_MAX[0]-NLSM_COMPD_MIN[0])*(1.0/(double)(1u<<NLSM_MAXDEPTH))
 rk time step size.
 
double NLSM_RK45_DESIRED_TOL =1e-6
 
unsigned int NLSM_ID_TYPE =0
 BBH initial data type.
 
double NLSM_GRID_MIN_X =-50.0
 physical coordinates for grid, x_min
 
double NLSM_GRID_MAX_X =50.0
 physical coordinates for grid, x_max
 
double NLSM_GRID_MIN_Y =-50.0
 physical coordinates for grid, y_min
 
double NLSM_GRID_MAX_Y =50.0
 physical coordinates for grid, y_max
 
double NLSM_GRID_MIN_Z =-50.0
 physical coordinates for grid, z_min
 
double NLSM_GRID_MAX_Z =50.0
 physical coordinates for grid, z_max
 
double NLSM_BLK_MIN_X =-6.0
 physical coordinates for the blk adaptive x_min
 
double NLSM_BLK_MIN_Y =-6.0
 physical coordinates for the blk adaptive x_min
 
double NLSM_BLK_MIN_Z =-6.0
 physical coordinates for the blk adaptive x_min
 
double NLSM_BLK_MAX_X =6.0
 physical coordinates for the blk adaptive x_min
 
double NLSM_BLK_MAX_Y =6.0
 physical coordinates for the blk adaptive x_min
 
double NLSM_BLK_MAX_Z =6.0
 physical coordinates for the blk adaptive x_min
 
unsigned int NLSM_DIM =3
 : dimension of the grid
 
unsigned int NLSM_MAXDEPTH =8
 : max refinement level
 
double KO_DISS_SIGMA =0.01
 : Kreiss-Oliger dissipation
 
double NLSM_ID_AMP1 = 0.5
 : Initial data Gaussian amplitude
 
double NLSM_ID_AMP2 = 0.5
 : Initial data Gaussian amplitude
 
double NLSM_ID_DELTA1 = 1.0
 : Initial data Gaussian width
 
double NLSM_ID_DELTA2 = 1.0
 : Initial data Gaussian width
 
double NLSM_ID_XC1 = 0.0
 : Initial data Gaussian x offset
 
double NLSM_ID_YC1 = 0.0
 
double NLSM_ID_ZC1 = 0.0
 
double NLSM_ID_XC2 = 0.0
 : Initial data Gaussian x offset
 
double NLSM_ID_YC2 = 0.0
 
double NLSM_ID_ZC2 = 0.0
 
double NLSM_ID_EPSX1 = 0.0
 : Initial data Gaussian elliptic x factor
 
double NLSM_ID_EPSY1 = 0.0
 : Initial data Gaussian elliptic y factor
 
double NLSM_ID_EPSX2 = 0.0
 : Initial data Gaussian elliptic x factor
 
double NLSM_ID_EPSY2 = 0.0
 : Initial data Gaussian elliptic y factor
 
double NLSM_ID_R1 = 0.0
 : Initial data Gaussian R
 
double NLSM_ID_R2 = 0.0
 : Initial data Gaussian R
 
double NLSM_ID_NU1 = 0.0
 : Initial data Gaussian nu
 
double NLSM_ID_NU2 = 0.0
 : Initial data Gaussian nu
 
double NLSM_ID_OMEGA = 0.0
 : Initial data Gaussian Omega
 

Detailed Description

This file contains all the parameters related to NLSM simulation.

Contains utility functions for NLSM simulation.

contains the profile parameters.

Author
Milinda Fernando School of Computing, University of Utah

Function Documentation

◆ analyticalSol()

void nlsm::analyticalSol ( const double  xx1,
const double  yy1,
const double  zz1,
const double  t,
double *  var 
)

analytical solution based on the d'Alembert's formular.

◆ initData()

void nlsm::initData ( const double  xx1,
const double  yy1,
const double  zz1,
double *  var 
)

Initialize all the variables for a given point in space.

Parameters
[in]coordcoordinates of the point.
[out]varpointer to the list of variables, computed. var size should be (VAR::U_SYMAT5+1)
Note
This function is taken from the old single core nlsm version.

◆ readParamFile()

void nlsm::readParamFile ( const char *  fName,
MPI_Comm  comm 
)

internal variables needed for rk update.

: Read the parameter file and initialize the variables in parameters.h file.

Parameters
[in]fNamefile name
[in]commMPI communicator.

Variable Documentation

◆ NLSM_COMPD_MAX

double nlsm::NLSM_COMPD_MAX ={NLSM_GRID_MAX_X,NLSM_GRID_MAX_Y,NLSM_GRID_MAX_Z}

min bh domain

Todo:
add these to the parameter file.

◆ NLSM_RK45_DESIRED_TOL

double nlsm::NLSM_RK45_DESIRED_TOL =1e-6

desired tolerance value for the rk45 method (adaptive time stepping. )