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.
workspace.h
1 //
2 // Created by milinda on 12/29/17.
8 //
9 
10 #ifndef SFCSORTBENCH_WORKSPACE_H
11 #define SFCSORTBENCH_WORKSPACE_H
12 
13 #include "point.h"
14 
15 #define JACOBIAN_3D_SIZE 9
16 //
17 // [0,1,2]
18 // J3d= [3,4,5]
19 // [6,7,8]
20 //
21 
22 namespace fem
23 {
24  namespace domain
25  {
26 
27  // octree grid points min max
28  extern Point grid_min;
29  extern Point grid_max;
30 
31  //domain min max
32  extern Point domain_min;
33  extern Point domain_max;
34 
35  extern double Rg_x;
36  extern double Rg_y;
37  extern double Rg_z;
38 
39  extern double Rd_x;
40  extern double Rd_y;
41  extern double Rd_z;
42 
43 
44  inline double gridX_to_X(double xg){return (((Rd_x/Rg_x)*(xg-fem::domain::grid_min.x()))+fem::domain::domain_min.x());};
45  inline double gridY_to_Y(double yg){return (((Rd_y/Rg_y)*(yg-fem::domain::grid_min.y()))+fem::domain::domain_min.y());};
46  inline double gridZ_to_Z(double zg){return (((Rd_z/Rg_z)*(zg-fem::domain::grid_min.z()))+fem::domain::domain_min.z());};
47 
48  inline double X_to_gridX(double xc){return (((Rg_x/Rd_x)*(xc-fem::domain::domain_min.x()))+fem::domain::grid_min.x());};
49  inline double Y_to_gridY(double yc){return (((Rg_y/Rd_y)*(yc-fem::domain::domain_min.y()))+fem::domain::grid_min.y());};
50  inline double Z_to_gridZ(double zc){return (((Rg_z/Rd_z)*(zc-fem::domain::domain_min.z()))+fem::domain::grid_min.z());};
51 
52 
53  } // end of namespace domain.
54 } // end of namespace fem
55 
56 
57 namespace fem
58 {
59 
60  namespace operators
61  {
62  namespace poisson
63  {
64 
65  extern double *Qx;
66  extern double *Qy;
67  extern double *Qz;
68 
69  extern double *imV1;
70  extern double *imV2;
71  extern double *imV3;
72 
73  extern double * pts_x;
74  extern double * pts_y;
75  extern double * pts_z;
76 
77  extern double ** jdXbydR;
78  extern double ** jdRbydX;
79  extern double * jfactor;
80 
81 
82 
87  void allocateWorkSpace(const unsigned int n);
88 
92  void deallocateWorkSpace();
93 
94 
95  } // end of nampspace possoin
96 
97  }// end of namespace operators
98 
99 }// end of namespace fem
100 
101 
102 
103 
104 #endif //SFCSORTBENCH_WORKSPACE_H
A point class.
Definition: point.h:36
workspace variables allocations
Definition: matvec.h:44