Memosa-FVM  0.2
Array< T > Class Template Reference

#include <Array.h>

Inheritance diagram for Array< T >:
Collaboration diagram for Array< T >:

Public Types

typedef NumTypeTraits< T >
::T_Scalar 
T_Scalar
 
typedef NumTypeTraits< T >
::T_BuiltIn 
T_BuiltIn
 

Public Member Functions

 Array (const int length)
 
 Array (Array &parent, const int offset, const int length)
 
virtual ~Array ()
 
void resize (const int newLength)
 
 DEFINE_TYPENAME ("Array<"+NumTypeTraits< T >::getTypeName()+">")
 
virtual int getDimension () const
 
int getLength () const
 
virtual PrimType getPrimType () const
 
virtual void getShape (int *shp) const
 
T & operator[] (int n)
 
const T & operator[] (int n) const
 
void operator= (const T &x)
 
void operator= (const Array &o)
 
virtual ArrayBaseoperator+= (const ArrayBase &obase)
 
virtual ArrayBaseoperator-= (const ArrayBase &obase)
 
virtual ArrayBaseoperator/= (const ArrayBase &obase)
 
virtual void setMax (const ArrayBase &obase)
 
virtual ArrayBasesafeDivide (const ArrayBase &obase)
 
virtual ArrayBasenormalize (const ArrayBase &obase)
 
virtual ArrayBaseoperator*= (const ArrayBase &obase)
 
virtual bool operator< (const double tolerance) const
 
virtual void print (ostream &os) const
 
virtual ArrayBasesaxpy (const ArrayBase &alphabase, const ArrayBase &xbase)
 
virtual ArrayBasemsaxpy (const ArrayBase &alphabase, const ArrayBase &xbase)
 
virtual void * getData () const
 
virtual int getDataSize () const
 
virtual void zero ()
 
void disownData () const
 
virtual shared_ptr< ArrayBasedotWith (const ArrayBase &abase, const int lengthToUse) const
 
virtual shared_ptr< ArrayBasegetOneNorm (const int lengthToUse) const
 
virtual shared_ptr< ArrayBasereduceSum () const
 
virtual void setSum (const ArrayBase &sumBase)
 
virtual void scatter (ArrayBase &other_, const ArrayBase &indices_, const int offset=0) const
 
virtual void gather (const ArrayBase &other_, const ArrayBase &indices_, const int offset=0)
 
virtual shared_ptr< ArraygetSubset (const Array< int > &indices)
 
virtual void setSubsetFromSubset (const ArrayBase &other_, const ArrayBase &fromIndices_, const ArrayBase &toIndices_)
 
virtual void copyFrom (const IContainer &oc)
 
virtual void copyPartial (const IContainer &oc, const int iBeg, const int iEnd)
 
virtual void zeroPartial (const int iBeg, const int iEnd)
 
virtual void limit (const double min, const double max)
 
virtual shared_ptr< ArrayBaseoperator- () const
 
virtual void inject (IContainer &coarseI, const IContainer &coarseIndexI, const int length) const
 
virtual void correct (const IContainer &coarseI, const IContainer &coarseIndexI, const IContainer *scaleI, const int length)
 
virtual shared_ptr< IContainernewClone () const
 
virtual shared_ptr< ArrayBasenewSizedClone (const int size) const
 
virtual shared_ptr< IContainernewCopy () const
 
virtual shared_ptr< ArrayBasecreateOffsetArray (const int offset, const int length)
 
- Public Member Functions inherited from ArrayBase
 ArrayBase ()
 
virtual ~ArrayBase ()
 
- Public Member Functions inherited from IContainer
 IContainer ()
 
virtual ~IContainer ()
 
IContaineroperator= (const IContainer &oc)
 

Private Member Functions

 Array (const Array &)
 

Private Attributes

int _length
 
T * _data
 
bool _ownData
 

Detailed Description

template<class T>
class Array< T >

Definition at line 14 of file Array.h.

Member Typedef Documentation

template<class T>
typedef NumTypeTraits<T>::T_BuiltIn Array< T >::T_BuiltIn

Definition at line 20 of file Array.h.

template<class T>
typedef NumTypeTraits<T>::T_Scalar Array< T >::T_Scalar

Definition at line 19 of file Array.h.

Constructor & Destructor Documentation

template<class T>
Array< T >::Array ( const int  length)
inlineexplicit
template<class T>
Array< T >::Array ( Array< T > &  parent,
const int  offset,
const int  length 
)
inline

Definition at line 33 of file Array.h.

33  :
34  ArrayBase(),
35  _length(length),
36  _data(parent._data+offset),
37  _ownData(false)
38  {
39  logCtorVerbose("with offset %d and length %d" , offset, _length);
40  }
#define logCtorVerbose(str,...)
Definition: RLogInterface.h:29
bool _ownData
Definition: Array.h:501
ArrayBase()
Definition: ArrayBase.h:17
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual Array< T >::~Array ( )
inlinevirtual

Definition at line 43 of file Array.h.

44  {
45  if (_ownData)
46  {
47  logDtorVerbose("of length %d with own data" , _length);
48  delete [] _data;
49  }
50  else
51  {
52  logDtorVerbose("of length %d with offset data" , _length);
53  }
54  }
bool _ownData
Definition: Array.h:501
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
#define logDtorVerbose(str,...)
Definition: RLogInterface.h:36
template<class T>
Array< T >::Array ( const Array< T > &  )
private

Member Function Documentation

template<class T>
virtual void Array< T >::copyFrom ( const IContainer oc)
inlinevirtual

Implements ArrayBase.

Definition at line 383 of file Array.h.

Referenced by DensityOfStates< T >::addMode(), DensityOfStates< T >::binEntireKspace(), DensityOfStates< T >::copyDOS(), DensityOfStates< T >::mergeBins(), and DensityOfStates< T >::refineBins().

384  {
385  const Array& other = dynamic_cast<const Array&>(oc);
386  operator=(other);
387  }
void operator=(const T &x)
Definition: Array.h:104
Definition: Array.h:14
template<class T>
virtual void Array< T >::copyPartial ( const IContainer oc,
const int  iBeg,
const int  iEnd 
)
inlinevirtual

Implements ArrayBase.

Definition at line 390 of file Array.h.

391  {
392  const Array& other = dynamic_cast<const Array&>(oc);
393  for(int i=iBeg;i<iEnd;i++)
394  _data[i] = other._data[i];
395  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
template<class T>
virtual void Array< T >::correct ( const IContainer coarseI,
const IContainer coarseIndexI,
const IContainer scaleI,
const int  length 
)
inlinevirtual

Implements ArrayBase.

Definition at line 439 of file Array.h.

441  {
442  const Array& coarse = dynamic_cast<const Array&>(coarseI);
443  const Array<int>& coarseIndex = dynamic_cast<const Array<int>& >(coarseIndexI);
444 
445  if (scaleI)
446  {
447  const Array& scaleArray =
448  dynamic_cast<const Array&>(*scaleI);
449  if (scaleArray.getLength() == 1)
450  {
451  const T& scale = scaleArray[0];
452  //cout << "correction scale" << scale << endl;
453 
454  for(int i=0; i<length; i++)
455  _data[i] += coarse[coarseIndex[i]]*scale;
456 
457  }
458  else
459  throw CException("invalid scale array");
460  }
461  else
462  {
463  for(int i=0; i<length; i++)
464  if (coarseIndex[i]>=0)
465  _data[i] += coarse[coarseIndex[i]];
466  }
467  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int getLength() const
Definition: Array.h:87
template<class T>
virtual shared_ptr<ArrayBase> Array< T >::createOffsetArray ( const int  offset,
const int  length 
)
inlinevirtual

Implements ArrayBase.

Definition at line 491 of file Array.h.

492  {
493  return shared_ptr<Array>(new Array(*this,offset,length));
494  }
Array(const int length)
Definition: Array.h:22
template<class T>
Array< T >::DEFINE_TYPENAME ( "Array<"+NumTypeTraits< T >::getTypeName()+">"  )
template<class T>
void Array< T >::disownData ( ) const
inline

Definition at line 286 of file Array.h.

286 {_ownData = false;}
bool _ownData
Definition: Array.h:501
template<class T>
virtual shared_ptr<ArrayBase> Array< T >::dotWith ( const ArrayBase abase,
const int  lengthToUse 
) const
inlinevirtual

Implements ArrayBase.

Definition at line 291 of file Array.h.

292  {
293  const Array& a = dynamic_cast<const Array&>(abase);
294  T sum(NumTypeTraits<T>::getZero());
295  for(int i=0; i<lengthToUse; i++)
297  shared_ptr<Array> nPtr(new Array(1));
298  (*nPtr)[0] = sum;
299  return nPtr;
300  }
Array(const int length)
Definition: Array.h:22
Definition: Array.h:14
T * _data
Definition: Array.h:500
template<class T>
virtual void Array< T >::gather ( const ArrayBase other_,
const ArrayBase indices_,
const int  offset = 0 
)
inlinevirtual

Implements ArrayBase.

Definition at line 347 of file Array.h.

348  {
349  const Array<int>& indices = dynamic_cast<const Array<int>& >(indices_);
350  const Array& other = dynamic_cast<const Array& >(other_);
351  for(int ii=0; ii<indices.getLength(); ii++)
352  _data[indices[ii]] = other[offset+ii];
353  }
T * _data
Definition: Array.h:500
int getLength() const
Definition: Array.h:87
template<class T>
virtual int Array< T >::getDimension ( ) const
inlinevirtual

Implements ArrayBase.

Definition at line 82 of file Array.h.

83  {
84  return NumTypeTraits<T>::getDimension() + 1;
85  };
template<class T>
int Array< T >::getLength ( ) const
inlinevirtual

Implements ArrayBase.

Definition at line 87 of file Array.h.

Referenced by Mesh::addCRConn(), COMETInterface< T >::addFAS(), ScatteringKernel< T >::addFreqs(), DensityOfStates< T >::addMode(), COMETDiscretizer< T >::ArrayAbs(), COMETESBGKDiscretizer< T >::ArrayAbs(), COMETModel< T >::binwiseHeatFluxIntegral(), COMETModel< T >::calcBandFlux(), COMETModel< T >::calcBandRelEnergy(), Kspace< T >::calcBandTemp(), COMETModel< T >::calcBandTemps(), DensityOfStates< T >::calcBinFlux(), COMETModel< T >::calcModeFlux(), checkIBFaces(), Mesh::COMETfindCommonFaces(), CRMatrix< T_Diag, T_OffDiag, X >::compute_ILU0(), NcDataWriter::connectivities(), DensityOfStates< T >::copyDOS(), Array< Vector< int, 2 > >::correct(), ScatteringKernel< T >::correctDetailedBalance(), COMETModel< T >::correctSingleNeighbor(), Mesh::countCRConn(), MeshAssembler::countInterfaceNodes(), MeshPartitioner::CRConnectivityPrint(), Mesh::CRConnectivityPrint(), IBManager::CRConnectivityPrintFile(), MeshPartitioner::CRConnectivityPrintFile(), Mesh::CRConnectivityPrintFile(), FluentReader::createMesh(), Mesh::createRowColSiteCRConn(), Mesh::createScatterGatherCountsBuffer(), CRMatrix< T_Diag, T_OffDiag, X >::createScatterGatherCountsBuffer(), Mesh::createScatterGatherIndicesBuffer(), CRMatrix< T_Diag, T_OffDiag, X >::createScatterGatherIndicesBuffer(), CRMatrix< T_Diag, T_OffDiag, X >::createScatterGatherValuesBBuffer(), GradientMatrix< T_Scalar >::createScatterGatherValuesBuffer(), CRMatrix< T_Diag, T_OffDiag, X >::createScatterGatherValuesCRMtrxBuffer(), Kspace< T >::createSyncGather(), Field::createSyncGatherArrays(), MultiField::createSyncGatherArrays(), Field::createSyncGatherArraysLevel1(), MultiField::createSyncGatherArraysLevel1(), Field::createSyncGatherArraysVectorFields(), Field::createSyncGatherArraysVectorFieldsLevel1(), MeshPartitioner::DEBUG_faceCells_faceNodes(), MeshDismantler::debug_gather_mappers(), MeshPartitioner::DEBUG_level1_scatter_gather_cells(), MeshPartitioner::DEBUG_local_global(), MeshAssembler::debug_localNodeToGlobal(), MeshAssembler::debug_localToGlobal_mappers(), PartMesh::debug_print(), MeshDismantler::debug_scatter_mappers(), MeshAssembler::debug_sync_localToGlobal_mappers(), SpikeMatrix< T_Diag, T_OffDiag, X >::denseMtrxLU(), COMETInterface< T >::Distribute(), COMETInterface< T >::DistributeResid(), PartMesh::dumpTecplot(), CRMatrix< T_Diag, T_OffDiag, X >::eliminateRowGhost(), DensityOfStates< T >::findBin(), Grid::findNeighbors(), Kspace< T >::findTransmission(), COMETModel< T >::FinishCoarseMesh(), Array< Vector< int, 2 > >::gather(), Mesh::getCellCells2(), FluentReader::getCommonNodeMap(), MeshDismantler::getGatherArrays(), FluentReader::getGhostCellMap(), GradientMatrix< T_Scalar >::getGradient(), MeshAssembler::getInnerNodesCount(), CRConnectivity::getLocalizedSubset(), CRConnectivity::getLocalizedSubsetOfFaceCells(), MeshDismantler::getScatterArrays(), FlowModel< T >::Impl::getStressTensor(), CRConnectivity::getSubset(), Array< Vector< int, 2 > >::getSubset(), ScatteringKernel< T >::getTypeIIsource(), ScatteringKernel< T >::getTypeIsource(), KSearchTree::KSearchTree(), CRConnectivity::localize(), COMETInterface< T >::makeDMMcoeffs(), DensityOfStates< T >::makeDMMreflection(), DensityOfStates< T >::makeDMMtransmission(), COMETInterface< T >::makeEquilibriumArray(), COMETInterface< T >::makeValueArray(), DensityOfStates< T >::mergeBins(), Mesh::Mesh(), PartMesh::mesh_tecplot(), MeshPartitioner::mesh_tecplot(), PartMesh::mesh_xdmfplot(), MeshPartitioner::mesh_xdmfplot(), ArrowHeadMatrix< X, K >::multiply(), SquareMatrix< T, N >::multiply(), KSConnectivity< T >::multiplyOther(), KSConnectivity< T >::multiplySelf(), MeshPartitioner::preserve_cell_order(), DensityOfStates< T >::refineBins(), CRConnectivity::reorder(), DensityOfStates< T >::saveNormDOS(), COMETDiscretizer< T >::scaledResid(), Array< Vector< int, 2 > >::scatter(), MeshAssembler::setCellsSite(), DensityOfStates< T >::setDensity(), SpikeStorage::setGlobalIndices(), DensityOfStates< T >::setMids(), FVMParticles::setParticles(), Array< Vector< int, 2 > >::setSubsetFromSubset(), Array< Vector< int, 2 > >::setSum(), COMETModel< T >::smooth(), DensityOfStates< T >::sumOutgoing(), Kspace< T >::syncGather(), Field::syncGatherVectorFields(), Field::syncGatherVectorFieldsLevel1(), MultiFieldMatrix::syncGhostCoarsening(), COMETModel< T >::syncGhostCoarsening(), CRMatrix< T_Diag, T_OffDiag, X >::syncIndices(), Field::syncScatter(), MultiField::syncScatter(), Kspace< T >::syncScatter(), Field::syncScatterLevel1(), MultiField::syncScatterLevel1(), Field::syncScatterVectorFields(), Field::syncScatterVectorFieldsLevel1(), GradientMatrix< T_Scalar >::syncValues(), TDMA(), StructureDeformationModel< T >::updateBoundaryMesh(), ScatteringKernel< T >::updateSource(), ScatteringKernel< T >::updateSource2(), ScatteringKernel< T >::updateSourceTerm(), ScatteringKernel< T >::updateSourceTermTest(), Kspace< T >::weightArray(), ScalarArrayWriter< T >::write(), and VectorArrayWriter< T, N >::write().

87 {return _length;}
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<ArrayBase> Array< T >::getOneNorm ( const int  lengthToUse) const
inlinevirtual

Implements ArrayBase.

Definition at line 303 of file Array.h.

304  {
305  T sum(NumTypeTraits<T>::getZero());
306  for(int i=0; i<lengthToUse; i++)
308  shared_ptr<Array> nPtr(new Array(1));
309  (*nPtr)[0] = sum;
310  return nPtr;
311  }
Array(const int length)
Definition: Array.h:22
T * _data
Definition: Array.h:500
template<class T>
virtual PrimType Array< T >::getPrimType ( ) const
inlinevirtual

Implements ArrayBase.

Definition at line 89 of file Array.h.

90  {
92  }
static PrimType getPrimType()
Definition: NumType.h:27
template<class T>
virtual void Array< T >::getShape ( int *  shp) const
inlinevirtual

Implements ArrayBase.

Definition at line 94 of file Array.h.

95  {
96  *shp = _length;
98  }
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<Array> Array< T >::getSubset ( const Array< int > &  indices)
inlinevirtual

Definition at line 356 of file Array.h.

357  {
358  shared_ptr<Array> subPtr(new Array(indices.getLength()));
359  Array& sub = *subPtr;
360 
361  for(int ii=0; ii<indices.getLength(); ii++)
362  {
363  sub[ii] = _data[indices[ii]];
364  }
365 
366  return subPtr;
367  }
Array(const int length)
Definition: Array.h:22
Definition: Array.h:14
T * _data
Definition: Array.h:500
int getLength() const
Definition: Array.h:87
template<class T>
virtual void Array< T >::inject ( IContainer coarseI,
const IContainer coarseIndexI,
const int  length 
) const
inlinevirtual

Implements ArrayBase.

Definition at line 428 of file Array.h.

429  {
430  Array& coarse = dynamic_cast<Array&>(coarseI);
431  const Array<int>& coarseIndex = dynamic_cast<const Array<int>& >(coarseIndexI);
432 
433  for(int i=0; i<length; i++)
434  if (coarseIndex[i]>=0)
435  coarse[coarseIndex[i]] += _data[i];
436  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
template<class T>
virtual void Array< T >::limit ( const double  min,
const double  max 
)
inlinevirtual

Reimplemented from ArrayBase.

Definition at line 404 of file Array.h.

405  {
406  if (_length == 1)
407  {
409  }
410  else
411  throw CException("invalid array for limit");
412  }
static void limit(T &val, const double min, const double max)
Definition: NumType.h:150
double max(double x, double y)
Definition: Octree.cpp:18
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
double min(double x, double y)
Definition: Octree.cpp:23
template<class T>
virtual ArrayBase& Array< T >::msaxpy ( const ArrayBase alphabase,
const ArrayBase xbase 
)
inlinevirtual

Implements ArrayBase.

Definition at line 260 of file Array.h.

261  {
262  const Array& alpha = dynamic_cast<const Array& >(alphabase);
263  const Array& x = dynamic_cast<const Array& >(xbase);
264 
265  if (alpha._length == 1 && x._length == _length)
266  {
267  for(int i=0;i<_length;i++)
268  _data[i] -= alpha._data[0]*x._data[i];
269  }
270  else
271  throw CException("invalid arrays for msaxpy");
272  return *this;
273  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<IContainer> Array< T >::newClone ( ) const
inlinevirtual

Implements IContainer.

Definition at line 470 of file Array.h.

Referenced by CRMatrix< T_Diag, T_OffDiag, X >::iluSolve().

471  {
472  return shared_ptr<Array>(new Array(_length));
473  }
Array(const int length)
Definition: Array.h:22
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<IContainer> Array< T >::newCopy ( ) const
inlinevirtual

Implements IContainer.

Definition at line 483 of file Array.h.

Referenced by MovingMeshModel< T >::advance(), PlateDeformationModel< T >::init(), StructureDeformationModel< T >::init(), MovingMeshModel< T >::init(), and FlowModel< T >::Impl::solveMomentum().

484  {
485  shared_ptr<Array> c(new Array(_length));
486  *c = *this;
487  return c;
488  }
Array(const int length)
Definition: Array.h:22
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<ArrayBase> Array< T >::newSizedClone ( const int  size) const
inlinevirtual

Implements ArrayBase.

Definition at line 476 of file Array.h.

477  {
478  return shared_ptr<Array>(new Array(size));
479  }
Array(const int length)
Definition: Array.h:22
template<class T>
virtual ArrayBase& Array< T >::normalize ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 186 of file Array.h.

187  {
188  const Array& o = dynamic_cast<const Array& >(obase);
189  if (_length == 1 && o._length==1)
190  {
191  for(int i=0;i<_length;i++)
193  }
194  else
195  throw CException("invalid array for normalize");
196  return *this;
197  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual ArrayBase& Array< T >::operator*= ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 200 of file Array.h.

201  {
202  const Array& o = dynamic_cast<const Array& >(obase);
203  if (o._length == 1)
204  {
205  for(int i=0;i<_length;i++)
206  _data[i] *= o._data[0];
207  }
208  else if (o._length == _length)
209  {
210  for(int i=0;i<_length;i++)
211  _data[i] *= o._data[i];
212  }
213  else
214  throw CException("invalid array for operator *=");
215  return *this;
216  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual ArrayBase& Array< T >::operator+= ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 117 of file Array.h.

118  {
119  const Array& o = dynamic_cast<const Array& >(obase);
120  if (o._length == _length)
121  {
122  for(int i=0;i<_length;i++)
123  _data[i] += o._data[i];
124  }
125  else
126  throw CException("invalid array for operator +=");
127  return *this;
128  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<ArrayBase> Array< T >::operator- ( ) const
inlinevirtual

Reimplemented from ArrayBase.

Definition at line 415 of file Array.h.

416  {
417  if (_length == 1)
418  {
419  Array* nPtr(new Array(1));
420  (*nPtr)[0] = -_data[0];
421  return shared_ptr<ArrayBase>(nPtr);
422  }
423  throw CException("invalid array for operator-");
424  }
Array(const int length)
Definition: Array.h:22
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual ArrayBase& Array< T >::operator-= ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 130 of file Array.h.

131  {
132  const Array& o = dynamic_cast<const Array& >(obase);
133  if (o._length == _length)
134  {
135  for(int i=0;i<_length;i++)
136  _data[i] -= o._data[i];
137  }
138  else
139  throw CException("invalid array for operator -=");
140  return *this;
141  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual ArrayBase& Array< T >::operator/= ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 143 of file Array.h.

144  {
145  const Array& o = dynamic_cast<const Array& >(obase);
146  if (o._length == 1)
147  {
148  for(int i=0;i<_length;i++)
149  _data[i] /= o._data[0];
150  }
151  else if (o._length == _length)
152  {
153  for(int i=0;i<_length;i++)
154  _data[i] /= o._data[i];
155  }
156  else
157  throw CException("invalid array for operator /=");
158  return *this;
159  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual bool Array< T >::operator< ( const double  tolerance) const
inlinevirtual

Implements ArrayBase.

Definition at line 218 of file Array.h.

219  {
220  if (_length == 1)
221  {
222  return (_data[0] <tolerance);
223  }
224  else
225  throw CException("invalid array for operator<");
226  }
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
void Array< T >::operator= ( const T &  x)
inline

Definition at line 104 of file Array.h.

Referenced by Array< Vector< int, 2 > >::copyFrom().

105  {
106  for(int i=0;i<_length;i++)
107  _data[i] = x;
108  }
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
void Array< T >::operator= ( const Array< T > &  o)
inline

Definition at line 110 of file Array.h.

111  {
112  for(int i=0;i<_length;i++)
113  _data[i] = o._data[i];
114  }
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
T& Array< T >::operator[] ( int  n)
inline

Definition at line 101 of file Array.h.

101 {return _data[n];}
T * _data
Definition: Array.h:500
template<class T>
const T& Array< T >::operator[] ( int  n) const
inline

Definition at line 102 of file Array.h.

102 {return _data[n];}
T * _data
Definition: Array.h:500
template<class T>
virtual void Array< T >::print ( ostream &  os) const
inlinevirtual

Implements ArrayBase.

Definition at line 228 of file Array.h.

229  {
230  if (_length > 0)
231  {
232  for ( int i = 0; i < _length; i++ )
233  if ( i < _length-1)
234  os <<_data[i] << endl;
235  else
236  os <<_data[i];
237  }
238  else
239  throw CException("invalid array for print");
240  }
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual shared_ptr<ArrayBase> Array< T >::reduceSum ( ) const
inlinevirtual

Implements ArrayBase.

Definition at line 314 of file Array.h.

315  {
317  for(int i=0; i<_length; i++)
319  shared_ptr<Array<T_Scalar> > nPtr(new Array<T_Scalar>(1));
320  (*nPtr)[0] = sum;
321  return nPtr;
322  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
NumTypeTraits< T >::T_Scalar T_Scalar
Definition: Array.h:19
template<class T>
void Array< T >::resize ( const int  newLength)
inline

Definition at line 56 of file Array.h.

Referenced by DensityOfStates< T >::addMode(), DensityOfStates< T >::binEntireKspace(), DensityOfStates< T >::copyDOS(), KSConnectivity< T >::expandMySelfOther(), KSConnectivity< T >::expandMySelfSelf(), KSConnectivity< T >::finishCountOther(), KSConnectivity< T >::finishCountSelf(), Kspace< T >::getVelocities(), Kspace< T >::Kspace(), COMETInterface< T >::makeCoarseCoeffs(), Kspace< T >::makeFreqArray(), DensityOfStates< T >::mergeBins(), DensityOfStates< T >::refineBins(), DensityOfStates< T >::setDensity(), MeshPartitioner::setMeshColors(), and DensityOfStates< T >::setMids().

57  {
58  if (_ownData)
59  {
60  T* newData = new T[newLength];
61  if (_data)
62  {
63  int len;
64  if(newLength<_length)
65  len=newLength;
66  else
67  len=_length;
68 
69  for(int i=0; i<len; i++)
70  newData[i] = _data[i];
71  delete [] _data;
72  }
73  _data = newData;
74  _length = newLength;
75  }
76  else
77  throw CException("cannot resize offset array");
78  }
bool _ownData
Definition: Array.h:501
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual ArrayBase& Array< T >::safeDivide ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 173 of file Array.h.

174  {
175  const Array& o = dynamic_cast<const Array& >(obase);
176  if (_length == 1 && o._length==1)
177  {
178  for(int i=0;i<_length;i++)
180  }
181  else
182  throw CException("invalid array for safeDivide");
183  return *this;
184  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual ArrayBase& Array< T >::saxpy ( const ArrayBase alphabase,
const ArrayBase xbase 
)
inlinevirtual

Implements ArrayBase.

Definition at line 243 of file Array.h.

244  {
245  const Array& alpha = dynamic_cast<const Array& >(alphabase);
246  const Array& x = dynamic_cast<const Array& >(xbase);
247 
248  if (alpha._length == 1 && x._length == _length)
249  {
250  for(int i=0;i<_length;i++)
251  _data[i] += alpha._data[0]*x._data[i];
252  }
253  else
254  throw CException("invalid arrays for saxpy");
255  return *this;
256  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual void Array< T >::scatter ( ArrayBase other_,
const ArrayBase indices_,
const int  offset = 0 
) const
inlinevirtual

Implements ArrayBase.

Definition at line 338 of file Array.h.

339  {
340  const Array<int>& indices = dynamic_cast<const Array<int>& >(indices_);
341  Array& other = dynamic_cast<Array& >(other_);
342  for(int ii=0; ii<indices.getLength(); ii++)
343  other[offset+ii] = _data[indices[ii]];
344  }
T * _data
Definition: Array.h:500
int getLength() const
Definition: Array.h:87
template<class T>
virtual void Array< T >::setMax ( const ArrayBase obase)
inlinevirtual

Implements ArrayBase.

Definition at line 161 of file Array.h.

162  {
163  const Array& o = dynamic_cast<const Array& >(obase);
164  if (_length == 1 && o._length==1)
165  {
166  for(int i=0;i<_length;i++)
168  }
169  else
170  throw CException("invalid array for setMax");
171  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
template<class T>
virtual void Array< T >::setSubsetFromSubset ( const ArrayBase other_,
const ArrayBase fromIndices_,
const ArrayBase toIndices_ 
)
inlinevirtual

Implements ArrayBase.

Definition at line 370 of file Array.h.

372  {
373  const Array<int>& toIndices = dynamic_cast<const Array<int>& >(toIndices_);
374  const Array<int>& fromIndices = dynamic_cast<const Array<int>& >(fromIndices_);
375  const Array& other = dynamic_cast<const Array& >(other_);
376  for(int ii=0; ii<fromIndices.getLength(); ii++)
377  {
378  _data[toIndices[ii]] = other[fromIndices[ii]];
379  }
380  }
T * _data
Definition: Array.h:500
int getLength() const
Definition: Array.h:87
template<class T>
virtual void Array< T >::setSum ( const ArrayBase sumBase)
inlinevirtual

Implements ArrayBase.

Definition at line 325 of file Array.h.

326  {
327  const Array<T_Scalar>& sum =
328  dynamic_cast<const Array<T_Scalar>& >(sumBase);
329  if (sum.getLength() == 1)
330  {
331  const T_Scalar& s = sum[0];
332  for(int i=0; i<_length; i++)
333  _data[i]=s;
334  }
335  }
Definition: Array.h:14
T * _data
Definition: Array.h:500
int _length
Definition: Array.h:499
NumTypeTraits< T >::T_Scalar T_Scalar
Definition: Array.h:19
int getLength() const
Definition: Array.h:87
template<class T>
virtual void Array< T >::zero ( )
inlinevirtual

Implements IContainer.

Definition at line 281 of file Array.h.

Referenced by DensityOfStates< T >::addMode(), MovingMeshModel< T >::advance(), COMETBoundaryConditions< X, Diag, OffDiag >::applyPressureInletBC(), COMETBoundaryConditions< X, Diag, OffDiag >::applyRealWallBC(), COMETBoundary< T >::applyTemperatureWallFine(), COMETBoundaryConditions< X, Diag, OffDiag >::applyZeroGradientBC(), ArrowHeadMatrix< X, K >::ArrowHeadMatrix(), DensityOfStates< T >::binEntireKspace(), DensityOfStates< T >::binMode(), COMETModel< T >::binwiseHeatFluxIntegral(), COMETModel< T >::calcBandFlux(), COMETModel< T >::calcBandRelEnergy(), COMETModel< T >::calcBandTemps(), COMETModel< T >::calcDomainStats(), COMETModel< T >::calcModeFlux(), COMETModel< T >::calcModeTemps(), MeshMetricsCalculator< T >::calculateBoundaryNodeNormal(), MeshMetricsCalculator< T >::calculateCellCentroids(), MeshMetricsCalculator< T >::calculateCellVolumes(), MeshMetricsCalculator< T >::calculateFaceAreas(), ScatteringKernel< T >::calculatePsi(), COMETModel< T >::coarsenInterfaceCells(), COMETESBGKDiscretizer< T >::COMETConvectionFine(), COMETDiscretizer< T >::COMETConvectionFine(), COMETESBGKDiscretizer< T >::COMETSolve(), COMETDiscretizer< T >::COMETSolveCoarse(), COMETDiscretizer< T >::COMETSolveFine(), COMETESBGKDiscretizer< T >::COMETSolveFine(), COMETDiscretizer< T >::COMETSolveFull(), FlowModel< T >::Impl::computeContinuityResidual(), VacancyModel< T >::Impl::computeIBFaceConcentration(), KineticModel< T >::computeIBFaceDsf(), COMETModel< T >::computeIBFaceDsf(), ElectricModel< T >::Impl::computeIBFacePotential(), ThermalModel< T >::Impl::computeIBFaceTemperature(), FlowModel< T >::Impl::computeIBFaceVelocity(), KineticModel< T >::computeSolidFaceDsf(), COMETModel< T >::computeSolidFaceDsf(), KineticModel< T >::computeSolidFacePressure(), COMETModel< T >::computeSolidFacePressure(), ContactModel< T >::Impl::computeSolidSurfaceForce(), ElectricModel< T >::Impl::computeSolidSurfaceForce(), FlowModel< T >::Impl::computeSolidSurfaceForce(), KineticModel< T >::computeSurfaceForce(), COMETModel< T >::computeSurfaceForce(), COMETDiscretizer< T >::correctInterface(), DiagonalMatrix< Diag, X >::createCoarseMatrix(), CRMatrixRect< T_Coeff, X, B >::createCoarseMatrix(), CRMatrix< T_Diag, T_OffDiag, X >::createCoarseMatrix(), GenericIBDiscretization< X, Diag, OffDiag >::discretize(), GenericKineticIBDiscretization< X, Diag, OffDiag >::discretize(), MomentumPressureGradientDiscretization< X >::discretize(), KSConnectivity< T >::emptyConnections(), SpikeMatrix< T_Diag, T_OffDiag, X >::exchange_gTgB(), SpikeMatrix< T_Diag, T_OffDiag, X >::exchange_reducedSol(), KSConnectivity< T >::expandMySelfOther(), KSConnectivity< T >::expandMySelfSelf(), COMETESBGKDiscretizer< T >::findResid(), COMETDiscretizer< T >::findResidCoarse(), COMETDiscretizer< T >::findResidFine(), COMETESBGKDiscretizer< T >::findResidFine(), COMETDiscretizer< T >::findResidFull(), COMETModel< T >::FinishCoarseMesh(), KSConnectivity< T >::finishCountOther(), KSConnectivity< T >::finishCountSelf(), GradientModel< Vector< T, 3 > >::getLeastSquaresGradientMatrix2D(), GradientModel< Vector< T, 3 > >::getLeastSquaresGradientMatrix3D(), FlowModel< T >::Impl::getPersistenceData(), PlateModel< T >::Impl::getPersistenceData(), KineticModel< T >::getPersistenceData(), ElectricModel< T >::Impl::getPersistenceData(), COMETModel< T >::getPersistenceData(), ScatteringKernel< T >::getTypeIIsource(), ScatteringKernel< T >::getTypeIsource(), Mesh::getUpdatedNodesCoordCoupling(), Kspace< T >::getVelocities(), COMETModel< T >::init(), FluxJacobianMatrix< OffDiag, X >::initAssembly(), CRMatrixTranspose< T_Coeff, X, B >::initAssembly(), CRMatrixRect< T_Coeff, X, B >::initAssembly(), DiagonalMatrix< Diag, X >::initAssembly(), CRMatrix< T_Diag, T_OffDiag, X >::initAssembly(), COMETModel< T >::initFromOld(), COMETModel< T >::injectResid(), ScatteringKernel< T >::IterateToEquilibrium(), SpikeMatrix< T_Diag, T_OffDiag, X >::luSolver(), KineticModel< T >::MacroparameterIBCell(), COMETInterface< T >::makeCoarseCoeffs(), COMETModel< T >::MakeInteriorCoarseMesh(), DensityOfStates< T >::mergeBins(), COMETModel< T >::modewiseHeatFluxIntegral(), ArrowHeadMatrix< X, K >::multiply(), SquareMatrix< T, N >::multiply(), KSConnectivity< T >::multiplyOther(), KSConnectivity< T >::multiplySelf(), COMETDiscretizer< T >::ScatterPhonons(), ScatteringKernel< T >::scatterPhonons(), COMETESBGKDiscretizer< T >::setBoundaryValFine(), DensityOfStates< T >::setDensity(), SpikeMatrix< T_Diag, T_OffDiag, X >::setgBgT(), SpikeMatrix< T_Diag, T_OffDiag, X >::setReducedRHS(), SpikeMatrix< T_Diag, T_OffDiag, X >::setRHS(), ShockTube< T >::solve(), SquareMatrix< T, N >::SquareMatrix(), SquareMatrixESBGK< T >::SquareMatrixESBGK(), SpikeStorage::syncCellIDs(), ElectricModel< T >::Impl::updateConvectionFlux(), COMETDiscretizer< T >::updateGhostFine(), COMETInterface< T >::updateOtherGhost(), COMETInterface< T >::updateResid(), ScatteringKernel< T >::updateSource(), ScatteringKernel< T >::updateSource2(), ScatteringKernel< T >::updateSourceTerm(), ScatteringKernel< T >::updateSourceTermTest(), MovingMeshModel< T >::volChange(), SquareMatrix< T, N >::zero(), SquareMatrixESBGK< T >::zero(), and ArrowHeadMatrix< X, K >::zero().

282  {
283  memset(_data,0,getDataSize());
284  }
virtual int getDataSize() const
Definition: Array.h:276
T * _data
Definition: Array.h:500
template<class T>
virtual void Array< T >::zeroPartial ( const int  iBeg,
const int  iEnd 
)
inlinevirtual

Implements ArrayBase.

Definition at line 398 of file Array.h.

399  {
400  for(int i=iBeg;i<iEnd;i++)
402  }
T * _data
Definition: Array.h:500

Member Data Documentation

template<class T>
bool Array< T >::_ownData
mutableprivate

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