Memosa-FVM  0.2
SourceDiscretizationforFracture< T, Diag, OffDiag > Class Template Reference

#include <SourceDiscretizationforFracture.h>

Inheritance diagram for SourceDiscretizationforFracture< T, Diag, OffDiag >:
Collaboration diagram for SourceDiscretizationforFracture< T, Diag, OffDiag >:

Public Types

typedef Array< T > TArray
 
typedef Vector< T, 3 > VectorT3
 
typedef CRMatrix< Diag,
OffDiag, T > 
CCMatrix
 
typedef CCMatrix::DiagArray DiagArray
 

Public Member Functions

 SourceDiscretizationforFracture (const MeshList &meshes, const GeomFields &geomFields, const Field &varField, const Field &sourceField, const Field &sourcecoefField)
 
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 Field_sourcecoefField
 

Additional Inherited Members

- Protected Attributes inherited from Discretization
const MeshList_meshes
 

Detailed Description

template<class T, class Diag, class OffDiag>
class SourceDiscretizationforFracture< T, Diag, OffDiag >

Definition at line 19 of file SourceDiscretizationforFracture.h.

Member Typedef Documentation

template<class T , class Diag , class OffDiag >
typedef CRMatrix<Diag,OffDiag,T> SourceDiscretizationforFracture< T, Diag, OffDiag >::CCMatrix

Definition at line 31 of file SourceDiscretizationforFracture.h.

template<class T , class Diag , class OffDiag >
typedef CCMatrix::DiagArray SourceDiscretizationforFracture< T, Diag, OffDiag >::DiagArray

Definition at line 33 of file SourceDiscretizationforFracture.h.

template<class T , class Diag , class OffDiag >
typedef Array<T> SourceDiscretizationforFracture< T, Diag, OffDiag >::TArray

Definition at line 27 of file SourceDiscretizationforFracture.h.

template<class T , class Diag , class OffDiag >
typedef Vector<T,3> SourceDiscretizationforFracture< T, Diag, OffDiag >::VectorT3

Definition at line 29 of file SourceDiscretizationforFracture.h.

Constructor & Destructor Documentation

template<class T , class Diag , class OffDiag >
SourceDiscretizationforFracture< T, Diag, OffDiag >::SourceDiscretizationforFracture ( const MeshList meshes,
const GeomFields geomFields,
const Field varField,
const Field sourceField,
const Field sourcecoefField 
)
inline

Definition at line 35 of file SourceDiscretizationforFracture.h.

39  :
40  Discretization(meshes),
41  _geomFields(geomFields),
42  _varField(varField),
43  _sourceField(sourceField),
44  _sourcecoefField(sourcecoefField)
45  {}
Discretization(const MeshList &meshes)

Member Function Documentation

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

Implements Discretization.

Definition at line 48 of file SourceDiscretizationforFracture.h.

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

50  {
51  const StorageSite& cells = mesh.getCells();
52 
53  const TArray& cellVolume = dynamic_cast<const TArray&>(_geomFields.volume[cells]);
54 
55  const TArray& source = dynamic_cast<const TArray&>(_sourceField[cells]);
56 
57  const TArray& sourcecoef = dynamic_cast<const TArray&>(_sourcecoefField[cells]);
58 
59  const MultiField::ArrayIndex cVarIndex(&_varField, &cells);
60 
61  TArray& rCell = dynamic_cast<TArray&>(rField[cVarIndex]);
62 
63  const int nCells = cells.getSelfCount();
64 
65  CCMatrix& matrix = dynamic_cast<CCMatrix&>(mfmatrix.getMatrix(cVarIndex,cVarIndex));
66 
67  DiagArray& diag = matrix.getDiag();
68 
69  for(int c=0; c<nCells; c++)
70  {
71  rCell[c] += cellVolume[c]*(1.0+source[c]);
72  diag[c] += cellVolume[c]*sourcecoef[c];
73 
74  //if (c >= 400){
75  //cout << c << ": " << cellVolume[c] << " " << diag[c] << "\n" << endl;}
76  }
77  }
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
const StorageSite & getCells() const
Definition: Mesh.h:109
Field volume
Definition: GeomFields.h:26

Member Data Documentation

template<class T , class Diag , class OffDiag >
const GeomFields& SourceDiscretizationforFracture< T, Diag, OffDiag >::_geomFields
private
template<class T , class Diag , class OffDiag >
const Field& SourceDiscretizationforFracture< T, Diag, OffDiag >::_sourcecoefField
private
template<class T , class Diag , class OffDiag >
const Field& SourceDiscretizationforFracture< T, Diag, OffDiag >::_sourceField
private
template<class T , class Diag , class OffDiag >
const Field& SourceDiscretizationforFracture< T, Diag, OffDiag >::_varField
private

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