Memosa-FVM  0.2
Vector< T, N > Class Template Reference

#include <Vector.h>

Inheritance diagram for Vector< T, N >:
Collaboration diagram for Vector< T, N >:

Public Types

enum  { Length = N }
 
typedef Vector< T, N > This_T
 
typedef NumTypeTraits< T >
::T_Scalar 
T_Scalar
 
typedef NumTypeTraits< T >
::T_BuiltIn 
T_BuiltIn
 
typedef Vector< T_BuiltIn, N > VBuiltIn
 
typedef T T_NumType
 

Public Member Functions

 Vector ()
 
 Vector (const Vector &o)
 
void * getData ()
 
T & operator[] (int n)
 
const T & operator[] (int n) const
 
void printFromC (ostream &os) const
 
Vectoroperator= (const T &o)
 
Vectoroperator= (const Vector &o)
 
Vector operator- ()
 
Vectoroperator+= (const Vector &o)
 
Vectoroperator-= (const Vector &o)
 
Vectoroperator/= (const T s)
 
Vectoroperator/= (const Vector &o)
 
Vectoroperator*= (const T s)
 
Vectoroperator*= (const Vector &o)
 
void zero ()
 
mag2 () const
 
bool operator< (const double tolerance) const
 
bool greaterThanElementwise (const Vector &y) const
 

Static Public Member Functions

static string getTypeName ()
 
static int getDimension ()
 
static void getShape (int *shp)
 
static int getDataSize ()
 
static void write (FILE *fp, const Vector &x)
 
static Vector getZero ()
 
static void accumulateOneNorm (Vector &sum, const Vector &v)
 
static void accumulateDotProduct (Vector &sum, const Vector &v0, const Vector &v1)
 
static void reduceSum (T_Scalar &sum, const This_T &x)
 
static void safeDivide (Vector &x, const Vector &y)
 
static void normalize (Vector &x, const Vector &y)
 
static void setMax (Vector &x, const Vector &y)
 

Private Attributes

_data [N]
 

Detailed Description

template<class T, int N>
class Vector< T, N >

Definition at line 19 of file Vector.h.

Member Typedef Documentation

template<class T, int N>
typedef NumTypeTraits<T>::T_BuiltIn Vector< T, N >::T_BuiltIn

Definition at line 25 of file Vector.h.

template<class T, int N>
typedef T Vector< T, N >::T_NumType

Definition at line 28 of file Vector.h.

template<class T, int N>
typedef NumTypeTraits<T>::T_Scalar Vector< T, N >::T_Scalar

Definition at line 24 of file Vector.h.

template<class T, int N>
typedef Vector<T,N> Vector< T, N >::This_T

Definition at line 22 of file Vector.h.

template<class T, int N>
typedef Vector<T_BuiltIn,N> Vector< T, N >::VBuiltIn

Definition at line 26 of file Vector.h.

Member Enumeration Documentation

template<class T, int N>
anonymous enum
Enumerator
Length 

Definition at line 30 of file Vector.h.

30 {Length = N};

Constructor & Destructor Documentation

template<class T, int N>
Vector< T, N >::Vector ( )
inline

Definition at line 33 of file Vector.h.

33 {}
template<class T, int N>
Vector< T, N >::Vector ( const Vector< T, N > &  o)
inline

Definition at line 35 of file Vector.h.

36  {
37  for(int i=0;i<N;i++)
38  _data[i] = o[i];
39  }
T _data[N]
Definition: Vector.h:229

Member Function Documentation

template<class T, int N>
static void Vector< T, N >::accumulateDotProduct ( Vector< T, N > &  sum,
const Vector< T, N > &  v0,
const Vector< T, N > &  v1 
)
inlinestatic

Definition at line 195 of file Vector.h.

Referenced by VectorTranspose< X, K >::accumulateDotProduct().

196  {
197  for(int i=0; i<N; i++)
198  sum[i]+=v0[i]*v1[i];
199  }
template<class T, int N>
static void Vector< T, N >::accumulateOneNorm ( Vector< T, N > &  sum,
const Vector< T, N > &  v 
)
inlinestatic

Definition at line 189 of file Vector.h.

Referenced by VectorTranspose< X, K >::accumulateOneNorm().

190  {
191  for(int i=0; i<N; i++)
193  }
template<class T, int N>
void* Vector< T, N >::getData ( )
inline

Definition at line 51 of file Vector.h.

Referenced by FlowModel< T >::Impl::getPressureIntegralonIBFaces().

52  {
53  return _data;
54  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
static int Vector< T, N >::getDataSize ( )
inlinestatic

Definition at line 55 of file Vector.h.

56  {
58  }
template<class T, int N>
static int Vector< T, N >::getDimension ( )
inlinestatic

Definition at line 47 of file Vector.h.

template<class T, int N>
static void Vector< T, N >::getShape ( int *  shp)
inlinestatic

Definition at line 49 of file Vector.h.

49 { *shp = N; NumTypeTraits<T>::getShape(shp+1);}
template<class T, int N>
static string Vector< T, N >::getTypeName ( )
inlinestatic

Definition at line 41 of file Vector.h.

42  {
43  return "Vector<" + NumTypeTraits<T>::getTypeName() +
44  "," + intAsString(N) +
45  ">";
46  }
string intAsString(const int i)
Definition: Vector.h:11
template<class T, int N>
static Vector Vector< T, N >::getZero ( )
inlinestatic

Definition at line 182 of file Vector.h.

183  {
184  Vector z;
185  z.zero();
186  return z;
187  }
Definition: Vector.h:19
void zero()
Definition: Vector.h:156
template<class T, int N>
bool Vector< T, N >::greaterThanElementwise ( const Vector< T, N > &  y) const
inline

Definition at line 174 of file Vector.h.

175  {
176  for(int i=0; i<N; i++)
177  if (_data[i] <= y[i])
178  return false;
179  return true;
180  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
T Vector< T, N >::mag2 ( ) const
inline

Definition at line 161 of file Vector.h.

Referenced by Vector< int, 2 >::normalize(), Vector< int, 2 >::operator<(), and Vector< int, 2 >::setMax().

162  {
164  for(int i=0; i<N; i++)
165  r+=_data[i]*_data[i];
166  return r;
167  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
static void Vector< T, N >::normalize ( Vector< T, N > &  x,
const Vector< T, N > &  y 
)
inlinestatic

Definition at line 213 of file Vector.h.

Referenced by VectorTranspose< X, K >::normalize().

214  {
215  const T ymag = sqrt(y.mag2());
216  for(int i=0; i<N; i++)
217  NumTypeTraits<T>::safeDivide(x[i],ymag);
218  }
T mag2() const
Definition: Vector.h:161
Tangent sqrt(const Tangent &a)
Definition: Tangent.h:317
template<class T, int N>
Vector& Vector< T, N >::operator*= ( const T  s)
inline

Definition at line 141 of file Vector.h.

142  {
143  for(int i=0;i<N;i++)
144  _data[i] *= s;
145  return *this;
146  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector& Vector< T, N >::operator*= ( const Vector< T, N > &  o)
inline

Definition at line 149 of file Vector.h.

150  {
151  for(int i=0;i<N;i++)
152  _data[i] *= o[i];
153  return *this;
154  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector& Vector< T, N >::operator+= ( const Vector< T, N > &  o)
inline

Definition at line 112 of file Vector.h.

113  {
114  for(int i=0;i<N;i++)
115  _data[i] += o[i];
116  return *this;
117  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector Vector< T, N >::operator- ( )
inline

Definition at line 104 of file Vector.h.

105  {
106  Vector r;
107  for(int i=0;i<N;i++)
108  r[i]=-_data[i];
109  return r;
110  }
Definition: Vector.h:19
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector& Vector< T, N >::operator-= ( const Vector< T, N > &  o)
inline

Definition at line 119 of file Vector.h.

120  {
121  for(int i=0;i<N;i++)
122  _data[i] -= o[i];
123  return *this;
124  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector& Vector< T, N >::operator/= ( const T  s)
inline

Definition at line 126 of file Vector.h.

127  {
128  for(int i=0;i<N;i++)
129  _data[i] /= s;
130  return *this;
131  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector& Vector< T, N >::operator/= ( const Vector< T, N > &  o)
inline

Definition at line 134 of file Vector.h.

135  {
136  for(int i=0;i<N;i++)
137  _data[i] /= o[i];
138  return *this;
139  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
bool Vector< T, N >::operator< ( const double  tolerance) const
inline

Definition at line 169 of file Vector.h.

170  {
171  return mag2() < tolerance*tolerance;
172  }
T mag2() const
Definition: Vector.h:161
template<class T, int N>
Vector& Vector< T, N >::operator= ( const T &  o)
inline

Definition at line 81 of file Vector.h.

82  {
83  for(int i=0;i<N;i++)
84  _data[i] = o;
85  return *this;
86  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
Vector& Vector< T, N >::operator= ( const Vector< T, N > &  o)
inline

Definition at line 97 of file Vector.h.

98  {
99  for(int i=0;i<N;i++)
100  _data[i] = o[i];
101  return *this;
102  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
T& Vector< T, N >::operator[] ( int  n)
inline

Definition at line 60 of file Vector.h.

60 {return _data[n];}
T _data[N]
Definition: Vector.h:229
template<class T, int N>
const T& Vector< T, N >::operator[] ( int  n) const
inline

Definition at line 61 of file Vector.h.

61 {return _data[n];}
T _data[N]
Definition: Vector.h:229
template<class T, int N>
void Vector< T, N >::printFromC ( ostream &  os) const
inline

Definition at line 63 of file Vector.h.

Referenced by operator<<().

64  {
65  os << "[ " ;
66  os << scientific;
67  for(int i=0;i<N;i++)
68  os << _data[i] << " " ;
69  os << "]";
70  }
T _data[N]
Definition: Vector.h:229
template<class T, int N>
static void Vector< T, N >::reduceSum ( T_Scalar sum,
const This_T x 
)
inlinestatic

Definition at line 201 of file Vector.h.

Referenced by VectorTranspose< X, K >::reduceSum().

202  {
203  for(int i=0; i<N; i++)
204  NumTypeTraits<T>::reduceSum(sum,x[i]);
205  }
template<class T, int N>
static void Vector< T, N >::safeDivide ( Vector< T, N > &  x,
const Vector< T, N > &  y 
)
inlinestatic

Definition at line 207 of file Vector.h.

Referenced by VectorTranspose< X, K >::safeDivide().

208  {
209  for(int i=0; i<N; i++)
210  NumTypeTraits<T>::safeDivide(x[i],y[i]);
211  }
template<class T, int N>
static void Vector< T, N >::setMax ( Vector< T, N > &  x,
const Vector< T, N > &  y 
)
inlinestatic

Definition at line 221 of file Vector.h.

Referenced by VectorTranspose< X, K >::setMax().

222  {
223  if (x.mag2() < y.mag2())
224  for(int i=0; i<N; i++)
225  x[i]=y[i];
226  }
T mag2() const
Definition: Vector.h:161
template<class T, int N>
static void Vector< T, N >::write ( FILE *  fp,
const Vector< T, N > &  x 
)
inlinestatic

Definition at line 72 of file Vector.h.

73  {
74  for(int i=0; i<N; i++)
75  {
76  NumTypeTraits<T>::write(fp,x[i]);
77  fprintf(fp, " ");
78  }
79  }
template<class T, int N>
void Vector< T, N >::zero ( )
inline

Definition at line 156 of file Vector.h.

Referenced by ArrowHeadMatrix< X, K >::ArrowHeadMatrix(), Vector< int, 2 >::getZero(), COMETModel< T >::init(), and COMETDiscretizer< T >::updateeShifted().

157  {
158  for(int i=0;i<N;i++) _data[i] = NumTypeTraits<T>::getZero();
159  }

Member Data Documentation


The documentation for this class was generated from the following file: