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

#include <ElecDiagonalTensor.h>

Collaboration diagram for ElecDiagonalTensor< T, N >:

Public Types

enum  { TN = 3*N+1 }
 
typedef ElecDiagonalTensor< T, N > This_T
 
typedef NumTypeTraits< T >
::T_Scalar 
T_Scalar
 
typedef NumTypeTraits< T >
::T_BuiltIn 
T_BuiltIn
 

Public Member Functions

 ElecDiagonalTensor ()
 
 ElecDiagonalTensor (const ElecDiagonalTensor &o)
 
 ElecDiagonalTensor (const T &o)
 
T & operator[] (int n)
 
const T & operator[] (int n) const
 
void printFromC (ostream &os) const
 
ElecDiagonalTensoroperator= (const T &o)
 
ElecDiagonalTensoroperator= (const ElecDiagonalTensor &o)
 
ElecDiagonalTensoroperator= (const ElecOffDiagonalTensor< T, N > &o)
 
ElecDiagonalTensor operator- ()
 
ElecDiagonalTensoroperator+= (const ElecDiagonalTensor &o)
 
ElecDiagonalTensoroperator+= (const ElecOffDiagonalTensor< T, N > &o)
 
ElecDiagonalTensoroperator+= (const T s)
 
ElecDiagonalTensoroperator-= (const ElecDiagonalTensor &o)
 
ElecDiagonalTensoroperator-= (const T s)
 
ElecDiagonalTensoroperator/= (const T s)
 
ElecDiagonalTensoroperator/= (const ElecDiagonalTensor &o)
 
ElecDiagonalTensoroperator*= (const T s)
 
ElecDiagonalTensoroperator*= (const ElecDiagonalTensor &o)
 
void zero ()
 
mag2 () const
 
bool operator< (const double tolerance) 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 ElecDiagonalTensor &x)
 
static ElecDiagonalTensor getZero ()
 
static double doubleMeasure (const ElecDiagonalTensor &x)
 
static ElecDiagonalTensor getNegativeUnity ()
 
static ElecDiagonalTensor getUnity ()
 
static void accumulateOneNorm (ElecDiagonalTensor &sum, const ElecDiagonalTensor &v)
 
static void accumulateDotProduct (ElecDiagonalTensor &sum, const ElecDiagonalTensor &v0, const ElecDiagonalTensor &v1)
 
static void reduceSum (T_Scalar &sum, const This_T &x)
 
static void safeDivide (ElecDiagonalTensor &x, const ElecDiagonalTensor &y)
 
static void normalize (ElecDiagonalTensor &x, const ElecDiagonalTensor &y)
 
static void setMax (ElecDiagonalTensor &x, const ElecDiagonalTensor &y)
 

Private Attributes

_data [3 *N+1]
 

Detailed Description

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

Definition at line 35 of file ElecDiagonalTensor.h.

Member Typedef Documentation

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

Definition at line 41 of file ElecDiagonalTensor.h.

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

Definition at line 40 of file ElecDiagonalTensor.h.

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

Definition at line 39 of file ElecDiagonalTensor.h.

Member Enumeration Documentation

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

Definition at line 38 of file ElecDiagonalTensor.h.

38 { TN = 3*N+1 } ;

Constructor & Destructor Documentation

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

Definition at line 43 of file ElecDiagonalTensor.h.

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

Definition at line 46 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

47  {
48  for(int i=0; i<TN; i++)
49  _data[i] = o._data[i];
50  }
template<class T, int N>
ElecDiagonalTensor< T, N >::ElecDiagonalTensor ( const T &  o)
inline

Definition at line 52 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

53  {
54  for(int i=0; i<N; i++)
55  _data[i] = o;
56  for(int i=N; i<TN; i++)
57  _data[i] = 0;
58  }

Member Function Documentation

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

Definition at line 248 of file ElecDiagonalTensor.h.

250  {
251  for(int i=0; i<N; i++)
252  NumTypeTraits<T>::accumulateDotProduct(sum[i],v0[i],v1[i]);
253  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::accumulateOneNorm ( ElecDiagonalTensor< T, N > &  sum,
const ElecDiagonalTensor< T, N > &  v 
)
inlinestatic

Definition at line 242 of file ElecDiagonalTensor.h.

243  {
244  for(int i=0; i<N; i++)
246  }
template<class T, int N>
static double ElecDiagonalTensor< T, N >::doubleMeasure ( const ElecDiagonalTensor< T, N > &  x)
inlinestatic

Definition at line 219 of file ElecDiagonalTensor.h.

220  {
221  return 0.0;
222  }
template<class T, int N>
static int ElecDiagonalTensor< T, N >::getDataSize ( )
inlinestatic
template<class T, int N>
static int ElecDiagonalTensor< T, N >::getDimension ( )
inlinestatic

Definition at line 67 of file ElecDiagonalTensor.h.

67 {return 1;}
template<class T, int N>
static ElecDiagonalTensor ElecDiagonalTensor< T, N >::getNegativeUnity ( )
inlinestatic

Definition at line 224 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

225  {
227  for(int i=0; i<N; i++)
229 
230  return n;
231  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::getShape ( int *  shp)
inlinestatic

Definition at line 69 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::TN.

template<class T, int N>
static string ElecDiagonalTensor< T, N >::getTypeName ( )
inlinestatic

Definition at line 60 of file ElecDiagonalTensor.h.

References intAsString().

61  {
62  return "ElecDiagonalTensor<" + NumTypeTraits<T>::getTypeName() +
63  "," + intAsString(N) +
64  ">";
65  }
string intAsString(const int i)
Definition: Vector.h:11
template<class T, int N>
static ElecDiagonalTensor ElecDiagonalTensor< T, N >::getUnity ( )
inlinestatic

Definition at line 233 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

234  {
236  for(int i=0; i<N; i++)
238 
239  return n;
240  }
template<class T, int N>
static ElecDiagonalTensor ElecDiagonalTensor< T, N >::getZero ( )
inlinestatic

Definition at line 212 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::zero().

213  {
215  z.zero();
216  return z;
217  }
template<class T, int N>
T ElecDiagonalTensor< T, N >::mag2 ( ) const
inline

Definition at line 199 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

Referenced by ElecDiagonalTensor< T, N >::operator<().

200  {
202  for(int i=0; i<N; i++)
203  r+=_data[i]*_data[i];
204  return r;
205  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::normalize ( ElecDiagonalTensor< T, N > &  x,
const ElecDiagonalTensor< T, N > &  y 
)
inlinestatic

Definition at line 267 of file ElecDiagonalTensor.h.

268  {
269  for(int i=0; i<N; i++)
270  NumTypeTraits<T>::normalize(x[i],y[i]);
271  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator*= ( const T  s)
inline

Definition at line 180 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

181  {
182  throw CException("operator not defined for diag *= s");
183  for(int i=0;i<TN;i++)
184  _data[i] *= s;
185  return *this;
186  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator*= ( const ElecDiagonalTensor< T, N > &  o)
inline

Definition at line 189 of file ElecDiagonalTensor.h.

190  {
191  throw CException("no operator defined for *= diag");
192  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator+= ( const ElecDiagonalTensor< T, N > &  o)
inline

Definition at line 129 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

130  {
131  for(int i=0;i<TN;i++)
132  _data[i] += o[i];
133  return *this;
134  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator+= ( const ElecOffDiagonalTensor< T, N > &  o)
inline

Definition at line 137 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

138  {
139  _data[3*N] += o[N];
140  return *this;
141  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator+= ( const T  s)
inline

Definition at line 142 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

143  {
144  for(int i=0;i<N;i++)
145  _data[i] += s;
146  _data[3*N] += s;
147  return *this;
148  }
template<class T, int N>
ElecDiagonalTensor ElecDiagonalTensor< T, N >::operator- ( )
inline

Definition at line 121 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

122  {
124  for(int i=0;i<TN;i++)
125  r[i]=-_data[i];
126  return r;
127  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator-= ( const ElecDiagonalTensor< T, N > &  o)
inline

Definition at line 150 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

151  {
152  for(int i=0;i<TN;i++)
153  _data[i] -= o[i];
154  return *this;
155  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator-= ( const T  s)
inline

Definition at line 157 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

158  {
159  for(int i=0;i<N;i++)
160  _data[i] -= s;
161  _data[3*N] -= s;
162  return *this;
163  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator/= ( const T  s)
inline

Definition at line 165 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

166  {
167  throw CException("operator not defined for diag /= s");
168  for(int i=0;i<TN;i++)
169  _data[i] /= s;
170  return *this;
171  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator/= ( const ElecDiagonalTensor< T, N > &  o)
inline

Definition at line 174 of file ElecDiagonalTensor.h.

175  {
176  throw CException("no operator defined for /= diag");
177  }
template<class T, int N>
bool ElecDiagonalTensor< T, N >::operator< ( const double  tolerance) const
inline

Definition at line 207 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::mag2().

208  {
209  return mag2() < tolerance*tolerance;
210  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator= ( const T &  o)
inline

Definition at line 97 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

98  {
99  for(int i=0;i<N;i++)
100  _data[i] = o;
101  for(int i=N; i<TN; i++)
102  _data[i] = 0;
103  return *this;
104  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator= ( const ElecDiagonalTensor< T, N > &  o)
inline

Definition at line 106 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

107  {
108  for(int i=0;i<TN;i++)
109  _data[i] = o[i];
110  return *this;
111  }
template<class T, int N>
ElecDiagonalTensor& ElecDiagonalTensor< T, N >::operator= ( const ElecOffDiagonalTensor< T, N > &  o)
inline

Definition at line 113 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

114  {
115  for(int i=0;i<TN;i++)
116  _data[i] = 0;
117  _data[3*N] = o[N];
118  return *this;
119  }
template<class T, int N>
T& ElecDiagonalTensor< T, N >::operator[] ( int  n)
inline

Definition at line 76 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

76 {return _data[n];}
template<class T, int N>
const T& ElecDiagonalTensor< T, N >::operator[] ( int  n) const
inline

Definition at line 78 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data.

78 {return _data[n];}
template<class T, int N>
void ElecDiagonalTensor< T, N >::printFromC ( ostream &  os) const
inline

Definition at line 80 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::_data, and ElecDiagonalTensor< T, N >::TN.

Referenced by operator<<().

81  {
82  os << "[ " ;
83  for(int i=0;i<TN;i++)
84  os << _data[i] << " " ;
85  os << "]";
86  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::reduceSum ( T_Scalar sum,
const This_T x 
)
inlinestatic

Definition at line 255 of file ElecDiagonalTensor.h.

256  {
257  for(int i=0; i<N; i++)
258  NumTypeTraits<T>::reduceSum(sum,x[i]);
259  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::safeDivide ( ElecDiagonalTensor< T, N > &  x,
const ElecDiagonalTensor< T, N > &  y 
)
inlinestatic

Definition at line 261 of file ElecDiagonalTensor.h.

262  {
263  for(int i=0; i<N; i++)
264  NumTypeTraits<T>::safeDivide(x[i],y[i]);
265  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::setMax ( ElecDiagonalTensor< T, N > &  x,
const ElecDiagonalTensor< T, N > &  y 
)
inlinestatic

Definition at line 273 of file ElecDiagonalTensor.h.

274  {
275  for(int i=0; i<N; i++)
276  NumTypeTraits<T>::setMax(x[i],y[i]);
277  }
template<class T, int N>
static void ElecDiagonalTensor< T, N >::write ( FILE *  fp,
const ElecDiagonalTensor< T, N > &  x 
)
inlinestatic

Definition at line 88 of file ElecDiagonalTensor.h.

References ElecDiagonalTensor< T, N >::TN.

89  {
90  for(int i=0; i<TN; i++)
91  {
92  NumTypeTraits<T>::write(fp,x[i]);
93  fprintf(fp, " ");
94  }
95  }
template<class T, int N>
void ElecDiagonalTensor< T, N >::zero ( )
inline

Definition at line 194 of file ElecDiagonalTensor.h.

Referenced by ElecDiagonalTensor< T, N >::getZero().

195  {
196  for(int i=0;i<TN;i++) _data[i] = NumTypeTraits<T>::getZero();
197  }

Member Data Documentation


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