PeriDyno 1.0.0
Loading...
Searching...
No Matches
Reduction.h
Go to the documentation of this file.
1#pragma once
2
3#include "Vector.h"
4
5namespace dyno {
6
7 template<typename T>
9 {
10 public:
12
13 static Reduction* Create(const uint n);
15
16 T accumulate(const T * val, const uint num);
17
18 T maximum(const T* val, const uint num);
19
20 T minimum(const T* val, const uint num);
21
22 T average(const T* val, const uint num);
23
24 private:
25 Reduction(const uint num);
26
27 void allocAuxiliaryArray(const uint num);
28
30
32
35 };
36
37 template<>
39 {
40 public:
42
43 static Reduction* Create(const uint n);
45
46 Vec3f accumulate(const Vec3f * val, const uint num);
47
48 Vec3f maximum(const Vec3f* val, const uint num);
49
50 Vec3f minimum(const Vec3f* val, const uint num);
51
52 Vec3f average(const Vec3f* val, const uint num);
53
54 private:
55 void allocAuxiliaryArray(const uint num);
56
57
59
60 float* m_aux;
62 };
63
64 template<>
66 {
67 public:
69
70 static Reduction* Create(const uint n);
72
73 Vec3d accumulate(const Vec3d * val, const uint num);
74
75 Vec3d maximum(const Vec3d* val, const uint num);
76
77 Vec3d minimum(const Vec3d* val, const uint num);
78
79 Vec3d average(const Vec3d* val, const uint num);
80
81 private:
82 void allocAuxiliaryArray(const uint num);
83
84
86
87 double* m_aux;
89 };
90}
Vec3d accumulate(const Vec3d *val, const uint num)
Vec3d average(const Vec3d *val, const uint num)
Vec3d minimum(const Vec3d *val, const uint num)
void allocAuxiliaryArray(const uint num)
static Reduction * Create(const uint n)
Reduction< double > m_reduce_double
Definition Reduction.h:88
Vec3d maximum(const Vec3d *val, const uint num)
Vec3f maximum(const Vec3f *val, const uint num)
Vec3f average(const Vec3f *val, const uint num)
Vec3f minimum(const Vec3f *val, const uint num)
void allocAuxiliaryArray(const uint num)
Reduction< float > m_reduce_float
Definition Reduction.h:61
Vec3f accumulate(const Vec3f *val, const uint num)
static Reduction * Create(const uint n)
T average(const T *val, const uint num)
T maximum(const T *val, const uint num)
static Reduction * Create(const uint n)
uint getAuxiliaryArraySize(const uint n)
void allocAuxiliaryArray(const uint num)
Reduction(const uint num)
T accumulate(const T *val, const uint num)
T minimum(const T *val, const uint num)
#define T(t)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Vector< double, 3 > Vec3d
Definition Vector3D.h:94
Vector< float, 3 > Vec3f
Definition Vector3D.h:93
unsigned int uint
Definition VkProgram.h:14