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.
mathUtils.h
1 //
2 // Created by milinda on 3/31/17.
8 //
9 
10 #ifndef SFCSORTBENCH_MATHUTILS_H
11 #define SFCSORTBENCH_MATHUTILS_H
12 
13 #include <iostream>
14 #include <cmath>
15 #include <math.h>
16 #include "parUtils.h"
17 
26 template <typename T>
27 T normL2(T * vec1,T* vec2, unsigned int n,MPI_Comm comm);
28 
37 template <typename T>
38 T normLInfty(T *vec1, T *vec2, unsigned int n, MPI_Comm comm);
39 
40 
48 template <typename T>
49 T normLInfty(T *vec1, T *vec2, unsigned int n);
50 
51 
52 
60 template <typename T>
61 T normL2(T * vec,unsigned int n, MPI_Comm comm);
62 
63 
71 template <typename T>
72 T normL2(T * vec1,T* vec2, unsigned int n);
73 
80 template <typename T>
81 T normL2(T * vec,unsigned int n);
82 
83 
90 template <typename T>
91 T normLInfty(T * vec,unsigned int n);
92 
93 
101 template <typename T>
102 T normLInfty(T * vec,unsigned int n,MPI_Comm comm);
103 
110 template <typename T>
111 T vecMin(T * vec,unsigned int n);
112 
113 
120 template <typename T>
121 T vecMax(T * vec,unsigned int n);
122 
123 
130 template <typename T>
131 T vecMin(T * vec,unsigned int n,MPI_Comm comm);
132 
133 
140 template <typename T>
141 T vecMax(T * vec,unsigned int n,MPI_Comm comm);
142 
149 template <typename T>
150 T dot(const T* v1, const T*v2,const unsigned int n);
151 
159 template <typename T>
160 T dot(const T* v1, const T*v2,const unsigned int n,MPI_Comm comm);
161 
162 
171 template<typename T>
172 void mul(const T alpha, const T* v, const unsigned int n, T* out);
173 
174 
182 template <typename T>
183 T add(const T* v1, const T*v2,const unsigned int n, T* out);
184 
192 template <typename T>
193 T subt(const T* v1, const T*v2,const unsigned int n, T* out);
194 
195 template<typename T>
196 void kron(const T* M1, const T* M2, T* out, unsigned int r1,unsigned int c1, unsigned int r2, unsigned int c2);
197 
198 
199 
200 
201 #include "mathUtils.tcc"
202 
203 
204 #endif //SFCSORTBENCH_MATHUTILS_H
A set of parallel utilities.