PFASST++
particle_util.hpp
Go to the documentation of this file.
1 
5 #ifndef _EXAMPLES__BORIS__PARTICLE_UTIL_HPP_
6 #define _EXAMPLES__BORIS__PARTICLE_UTIL_HPP_
7 
8 #include <memory>
9 #include <vector>
10 using namespace std;
11 
12 
13 namespace pfasst
14 {
15  namespace examples
16  {
17  namespace boris
18  {
24  // TODO: check whether this function is still required
27  template<typename precision>
28  inline static vector<precision> cloud_component_factory(const size_t num_particles, const size_t dim);
29 
31  template<typename precision>
32  inline static void zero(vector<precision>& data);
34  template<typename precision>
35  inline static void zero(shared_ptr<vector<precision>>& data);
37 
40  template<typename precision>
41  inline static vector<precision> cross_prod(const vector<precision>& first,
42  const vector<precision>& second);
44  template<typename precision>
45  inline static void cross_prod_1part(typename vector<precision>::const_iterator __first,
46  typename vector<precision>::const_iterator __second,
47  typename vector<precision>::iterator __result);
49  template<typename precision>
50  inline static vector<precision> cross_prod_npart(const vector<precision>& first,
51  const vector<precision>& second);
52 
53 
55  template<typename precision>
56  inline static vector<precision> kronecker(const vector<precision>& first,
57  const vector<precision>& second);
58 
59 
61  template<typename precision>
62  inline static vector<precision> cmp_wise_mul(const vector<precision>& first,
63  const vector<precision>& second);
64 
66  template<typename precision>
67  inline static vector<precision> cmp_wise_div(const vector<precision>& first,
68  const vector<precision>& second);
69 
70 
72  template<typename precision>
73  inline static precision max(const vector<precision>& data);
75  template<typename precision>
76  inline static precision max_abs(const vector<precision>& data);
77 
78 
80  template<typename precision>
81  inline static precision norm_sq(const vector<precision>& data);
83  template<typename precision>
84  inline static precision norm_sq(typename vector<precision>::const_iterator __first,
85  typename vector<precision>::const_iterator __second);
87  template<typename precision>
88  inline static vector<precision> norm_sq_npart(const vector<precision>& data, const size_t npart);
89 
91  template<typename precision>
92  inline static precision norm0(const vector<precision>& data);
94  template<typename precision>
95  inline static precision norm0(typename vector<precision>::const_iterator __first,
96  typename vector<precision>::const_iterator __second);
98  template<typename precision>
99  inline static vector<precision> norm0_npart(const vector<precision>& data, const size_t npart);
101 
102 
105  template<typename precision>
106  inline vector<precision> operator+ (const vector<precision>& first,
107  const vector<precision>& second);
109  template<typename precision, typename ValueT>
110  inline vector<precision> operator+ (const vector<precision>& vec,
111  const ValueT& value );
113  template<typename precision, typename ValueT>
114  inline vector<precision> operator+ (const ValueT& value,
115  const vector<precision>& vec );
116 
118  template<typename precision>
119  inline vector<precision>& operator+=( vector<precision>& first,
120  const vector<precision>& second);
122  template<typename precision, typename ValueT>
123  inline vector<precision>& operator+=( vector<precision>& vec,
124  const ValueT& value );
125 
127  template<typename precision>
128  inline vector<precision> operator- (const vector<precision>& first,
129  const vector<precision>& second);
131  template<typename precision, typename ValueT>
132  inline vector<precision> operator- (const vector<precision>& vec,
133  const ValueT& value );
134 
136  template<typename precision>
137  inline vector<precision>& operator-=( vector<precision>& first,
138  const vector<precision>& second);
140  template<typename precision, typename ValueT>
141  inline vector<precision>& operator-=( vector<precision>& vec,
142  const ValueT& value );
143 
145  template<typename precision, typename ValueT>
146  inline vector<precision> operator* (const vector<precision>& vec,
147  const ValueT& value );
149  template<typename precision, typename ValueT>
150  inline vector<precision> operator* (const ValueT& value,
151  const vector<precision>& vec );
153  template<typename precision>
154  inline vector<precision> operator* (const vector<precision>& vec,
155  const vector<precision>& values);
156 
158  template<typename precision, typename ValueT>
159  inline vector<precision>& operator*=( vector<precision>& vec,
160  const ValueT& value );
161 
163  template<typename precision, typename ValueT>
164  inline vector<precision> operator/ (const vector<precision>& vec,
165  const ValueT& value );
167  template<typename precision>
168  inline vector<precision> operator/ (const vector<precision>& vec,
169  const vector<precision>& values);
170 
172  template<typename precision, typename ValueT>
173  inline vector<precision>& operator/=( vector<precision>& vec,
174  const ValueT& value );
176  } // ::pfasst::examples::boris
177  } // ::pfasst::examples
178 } // ::pfasst
179 
180 #include "particle_util_impl.hpp"
181 
182 #endif // _EXAMPLES__BORIS__PARTICLE_UTIL_HPP_
vector< precision > & operator+=(vector< precision > &vec, const ValueT &value)
tuple data
Definition: plot.py:7
vector< precision > operator+(const ValueT &value, const vector< precision > &vec)
static vector< precision > cloud_component_factory(const size_t num_particles, const size_t dim)
vector< precision > operator*(const vector< precision > &vec, const vector< precision > &values)
static vector< precision > kronecker(const vector< precision > &first, const vector< precision > &second)
STL namespace.
static precision max_abs(const vector< precision > &data)
static vector< precision > cmp_wise_mul(const vector< precision > &first, const vector< precision > &second)
vector< precision > & operator*=(vector< precision > &vec, const ValueT &value)
static vector< precision > cross_prod_npart(const vector< precision > &first, const vector< precision > &second)
vector< precision > operator-(const vector< precision > &vec, const ValueT &value)
static precision norm_sq(typename vector< precision >::const_iterator __first, typename vector< precision >::const_iterator __second)
static precision norm0(typename vector< precision >::const_iterator __first, typename vector< precision >::const_iterator __second)
vector< precision > operator/(const vector< precision > &vec, const vector< precision > &values)
static void zero(shared_ptr< vector< precision >> &data)
static vector< precision > norm0_npart(const vector< precision > &data, const size_t npart)
vector< precision > & operator-=(vector< precision > &vec, const ValueT &value)
static void cross_prod_1part(typename vector< precision >::const_iterator __first, typename vector< precision >::const_iterator __second, typename vector< precision >::iterator __result)
static vector< precision > norm_sq_npart(const vector< precision > &data, const size_t npart)
static vector< precision > cross_prod(const vector< precision > &first, const vector< precision > &second)
static vector< precision > cmp_wise_div(const vector< precision > &first, const vector< precision > &second)
static precision max(const vector< precision > &data)
vector< precision > & operator/=(vector< precision > &vec, const ValueT &value)