Memosa-FVM  0.2
PhononCollisionDiscretization< X, Diag, OffDiag > Class Template Reference

#include <PhononCollisionDiscretization.h>

Inheritance diagram for PhononCollisionDiscretization< X, Diag, OffDiag >:
Collaboration diagram for PhononCollisionDiscretization< X, Diag, OffDiag >:

Public Types

typedef NumTypeTraits< X >
::T_Scalar 
T_Scalar
 
typedef CRMatrix< Diag,
OffDiag, X > 
CCMatrix
 
typedef CCMatrix::DiagArray DiagArray
 
typedef CCMatrix::PairWiseAssembler CCAssembler
 
typedef Array< X > XArray
 
typedef Array< T_ScalarTArray
 

Public Member Functions

 PhononCollisionDiscretization (const MeshList &meshes, const GeomFields &geomFields, const Field &varField, const Field &sourceField, const X tau)
 
void discretize (const Mesh &mesh, MultiFieldMatrix &mfmatrix, MultiField &, MultiField &rField)
 
- Public Member Functions inherited from Discretization
 Discretization (const MeshList &meshes)
 
virtual ~Discretization ()
 
 DEFINE_TYPENAME ("Discretization")
 

Private Attributes

const GeomFields_geomFields
 
const Field_varField
 
const Field_sourceField
 
const X _tau
 

Additional Inherited Members

- Protected Attributes inherited from Discretization
const MeshList_meshes
 

Detailed Description

template<class X, class Diag, class OffDiag>
class PhononCollisionDiscretization< X, Diag, OffDiag >

Definition at line 19 of file PhononCollisionDiscretization.h.

Member Typedef Documentation

template<class X , class Diag , class OffDiag >
typedef CCMatrix::PairWiseAssembler PhononCollisionDiscretization< X, Diag, OffDiag >::CCAssembler

Definition at line 27 of file PhononCollisionDiscretization.h.

template<class X , class Diag , class OffDiag >
typedef CRMatrix<Diag,OffDiag,X> PhononCollisionDiscretization< X, Diag, OffDiag >::CCMatrix

Definition at line 25 of file PhononCollisionDiscretization.h.

template<class X , class Diag , class OffDiag >
typedef CCMatrix::DiagArray PhononCollisionDiscretization< X, Diag, OffDiag >::DiagArray

Definition at line 26 of file PhononCollisionDiscretization.h.

template<class X , class Diag , class OffDiag >
typedef NumTypeTraits<X>::T_Scalar PhononCollisionDiscretization< X, Diag, OffDiag >::T_Scalar

Definition at line 23 of file PhononCollisionDiscretization.h.

template<class X , class Diag , class OffDiag >
typedef Array<T_Scalar> PhononCollisionDiscretization< X, Diag, OffDiag >::TArray

Definition at line 30 of file PhononCollisionDiscretization.h.

template<class X , class Diag , class OffDiag >
typedef Array<X> PhononCollisionDiscretization< X, Diag, OffDiag >::XArray

Definition at line 29 of file PhononCollisionDiscretization.h.

Constructor & Destructor Documentation

template<class X , class Diag , class OffDiag >
PhononCollisionDiscretization< X, Diag, OffDiag >::PhononCollisionDiscretization ( const MeshList meshes,
const GeomFields geomFields,
const Field varField,
const Field sourceField,
const X  tau 
)
inline

Definition at line 32 of file PhononCollisionDiscretization.h.

36  : //relaxation time
37  Discretization(meshes),
38  _geomFields(geomFields),
39  _varField(varField),
40  _sourceField(sourceField),
41  _tau(tau)
42  {}
Discretization(const MeshList &meshes)

Member Function Documentation

template<class X , class Diag , class OffDiag >
void PhononCollisionDiscretization< X, Diag, OffDiag >::discretize ( const Mesh mesh,
MultiFieldMatrix mfmatrix,
MultiField ,
MultiField rField 
)
inlinevirtual

Implements Discretization.

Definition at line 45 of file PhononCollisionDiscretization.h.

References PhononCollisionDiscretization< X, Diag, OffDiag >::_geomFields, PhononCollisionDiscretization< X, Diag, OffDiag >::_sourceField, PhononCollisionDiscretization< X, Diag, OffDiag >::_tau, PhononCollisionDiscretization< X, Diag, OffDiag >::_varField, Mesh::getCells(), CRMatrix< T_Diag, T_OffDiag, X >::getDiag(), MultiFieldMatrix::getMatrix(), StorageSite::getSelfCount(), and GeomFields::volume.

47  {
48  const StorageSite& cells = mesh.getCells();
49 
50  const TArray& cellVolume = dynamic_cast<const TArray&>(_geomFields.volume[cells]);
51 
52  const XArray& source = dynamic_cast<const XArray&>(_sourceField[cells]);
53 
54  const MultiField::ArrayIndex cVarIndex(&_varField, &cells);
55  CCMatrix& matrix = dynamic_cast<CCMatrix&>(mfmatrix.getMatrix(cVarIndex,cVarIndex));
56  DiagArray& diag = matrix.getDiag();
57 
58  const XArray& x = dynamic_cast<const XArray&>(_varField[cells]);
59  TArray& rCell = dynamic_cast<TArray&>(rField[cVarIndex]);
60 
61  const int nCells = cells.getSelfCount();
62 
63  for(int c=0; c<nCells; c++)
64  {
65  rCell[c] -= cellVolume[c]*(x[c]-source[c])/_tau;
66  diag[c]-=cellVolume[c]/_tau;
67  }
68 
69  }
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
int getSelfCount() const
Definition: StorageSite.h:40
pair< const Field *, const StorageSite * > ArrayIndex
Definition: MultiField.h:21
CRMatrix< Diag, OffDiag, X > CCMatrix
const StorageSite & getCells() const
Definition: Mesh.h:109
Field volume
Definition: GeomFields.h:26

Member Data Documentation

template<class X , class Diag , class OffDiag >
const GeomFields& PhononCollisionDiscretization< X, Diag, OffDiag >::_geomFields
private
template<class X , class Diag , class OffDiag >
const Field& PhononCollisionDiscretization< X, Diag, OffDiag >::_sourceField
private
template<class X , class Diag , class OffDiag >
const X PhononCollisionDiscretization< X, Diag, OffDiag >::_tau
private
template<class X , class Diag , class OffDiag >
const Field& PhononCollisionDiscretization< X, Diag, OffDiag >::_varField
private

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