![]() |
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.
|
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 | |
This file contains all the parameters related to NLSM simulation.
Contains utility functions for NLSM simulation.
contains the profile parameters.
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.
void nlsm::initData | ( | const double | xx1, |
const double | yy1, | ||
const double | zz1, | ||
double * | var | ||
) |
Initialize all the variables for a given point in space.
[in] | coord | coordinates of the point. |
[out] | var | pointer to the list of variables, computed. var size should be (VAR::U_SYMAT5+1) |
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.
[in] | fName | file name |
[in] | comm | MPI communicator. |
double nlsm::NLSM_COMPD_MAX ={NLSM_GRID_MAX_X,NLSM_GRID_MAX_Y,NLSM_GRID_MAX_Z} |
min bh domain
double nlsm::NLSM_RK45_DESIRED_TOL =1e-6 |
desired tolerance value for the rk45 method (adaptive time stepping. )