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

#include <TimeDerivativeDiscretization_Kmodel.h>

Inheritance diagram for TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >:
Collaboration diagram for TimeDerivativeDiscretization_Kmodel< 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

 TimeDerivativeDiscretization_Kmodel (const MeshList &meshes, const GeomFields &geomFields, Field &varField, Field &varN1Field, Field &varN2Field, const T_Scalar dT, const T_Scalar nonDimLength, const int Order)
 
void discretize (const Mesh &mesh, MultiFieldMatrix &mfmatrix, MultiField &xField, 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_varN1Field
 
const Field_varN2Field
 
const T_Scalar _dT
 
const T_Scalar _nonDimLength
 
const int _Order
 

Additional Inherited Members

- Protected Attributes inherited from Discretization
const MeshList_meshes
 

Detailed Description

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

Definition at line 21 of file TimeDerivativeDiscretization_Kmodel.h.

Member Typedef Documentation

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

Definition at line 28 of file TimeDerivativeDiscretization_Kmodel.h.

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

Definition at line 26 of file TimeDerivativeDiscretization_Kmodel.h.

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

Definition at line 27 of file TimeDerivativeDiscretization_Kmodel.h.

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

Definition at line 24 of file TimeDerivativeDiscretization_Kmodel.h.

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

Definition at line 31 of file TimeDerivativeDiscretization_Kmodel.h.

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

Definition at line 30 of file TimeDerivativeDiscretization_Kmodel.h.

Constructor & Destructor Documentation

template<class X , class Diag , class OffDiag >
TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::TimeDerivativeDiscretization_Kmodel ( const MeshList meshes,
const GeomFields geomFields,
Field varField,
Field varN1Field,
Field varN2Field,
const T_Scalar  dT,
const T_Scalar  nonDimLength,
const int  Order 
)
inline

Member Function Documentation

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

Implements Discretization.

Definition at line 51 of file TimeDerivativeDiscretization_Kmodel.h.

References TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_dT, TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_geomFields, TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_Order, TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_varField, TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_varN1Field, TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_varN2Field, Mesh::getCells(), CRMatrix< T_Diag, T_OffDiag, X >::getDiag(), MultiFieldMatrix::getMatrix(), StorageSite::getSelfCount(), and GeomFields::volume.

53  {
54  const StorageSite& cells = mesh.getCells();
55 
56  //const TArray& dsff =
57  // dynamic_cast<const TArray&>(_dsff[cells]);
58 
59  const TArray& cellVolume =
60  dynamic_cast<const TArray&>(_geomFields.volume[cells]);
61 
62  // Field& _varField = *_dsff.dsf[_direction];
63  //Field& _varN1Field = *_dsffN1.dsf[_direction];
64  //Field& _varN2Field = *_dsffN2.dsf[_direction];
65 
66 
67  const MultiField::ArrayIndex cVarIndex(&_varField,&cells);
68  CCMatrix& matrix =
69  dynamic_cast<CCMatrix&>(mfmatrix.getMatrix(cVarIndex,cVarIndex));
70 
71  DiagArray& diag = matrix.getDiag();
72 
73  const XArray& x = dynamic_cast<const XArray&>(_varField[cells]);
74  const XArray& xN1 = dynamic_cast<const XArray&>(_varN1Field[cells]);
75 
76  XArray& rCell = dynamic_cast<XArray&>(rField[cVarIndex]);
77 
78 
79  const int nCells = cells.getSelfCount();//getSelfCount();
80 
81  //cout << "cellVolume" << cellVolume[0] << endl ;
82  if (_Order > 1)
83  {
84  // second order
85  const XArray& xN2 = dynamic_cast<const XArray&>(_varN2Field[cells]);
86 
87  T_Scalar onePointFive(1.5);
88  T_Scalar two(2.0);
89  T_Scalar pointFive(0.5);
90 
91 
92  for(int c=0; c<nCells; c++)
93  {
94  const T_Scalar fbydT = cellVolume[c]/_dT; //pow(_nonDimLength,3);
95  rCell[c] -= fbydT*(onePointFive*x[c]- two*xN1[c]
96  + pointFive*xN2[c]);
97  diag[c] -= fbydT*onePointFive;
98  }
99  //cout << "Second diag[0] = " << diag[0] << endl ;
100  }
101 
102  else
103  {
104  for(int c=0; c<nCells; c++)
105  {
106  const T_Scalar fbydT = cellVolume[c]/_dT; //pow(_nonDimLength,3);
107  rCell[c] -= fbydT*(x[c]- xN1[c]);
108  diag[c] -= fbydT;
109  }
110  //cout << "First diag[0] = " << diag[0] << endl ;
111  }
112 
113  }
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 X , class Diag , class OffDiag >
const T_Scalar TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_dT
private
template<class X , class Diag , class OffDiag >
const GeomFields& TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_geomFields
private
template<class X , class Diag , class OffDiag >
const T_Scalar TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_nonDimLength
private

Definition at line 124 of file TimeDerivativeDiscretization_Kmodel.h.

template<class X , class Diag , class OffDiag >
const int TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_Order
private
template<class X , class Diag , class OffDiag >
const Field& TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_varField
private
template<class X , class Diag , class OffDiag >
const Field& TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_varN1Field
private
template<class X , class Diag , class OffDiag >
const Field& TimeDerivativeDiscretization_Kmodel< X, Diag, OffDiag >::_varN2Field
private

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