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

#include <GenericPhononBCS.h>

Collaboration diagram for BaseGenericPhononBCS< X, Diag, OffDiag >:

Public Types

typedef NumTypeTraits< X >
::T_Scalar 
T_Scalar
 
typedef Array< T_ScalarTArray
 
typedef Array< int > IntArray
 
typedef Vector< T_Scalar, 3 > VectorT3
 
typedef CRMatrix< Diag,
OffDiag, X > 
CCMatrix
 
typedef CCMatrix::PairWiseAssembler CCAssembler
 
typedef FluxJacobianMatrix
< Diag, X > 
FMatrix
 
typedef DiagonalMatrix< Diag, X > BBMatrix
 
typedef Array< Diag > DiagArray
 
typedef Array< OffDiag > OffDiagArray
 
typedef Array< X > XArray
 
typedef Array< VectorT3VectorT3Array
 

Public Member Functions

 BaseGenericPhononBCS (const StorageSite &faces, const Mesh &mesh, const GeomFields &geomFields, Field &varField, MultiFieldMatrix &matrix, MultiField &xField, MultiField &rField)
 
void applyDirichletBC (int f, const X &bValue) const
 
void applyDirichletBC (const X &bValue) const
 
void applyDirichletBC (const FloatValEvaluator< X > &bValue) const
 
void applyExtrapolationBC () const
 
void applyExtrapolationBC (const int f) const
 
void applyInterfaceBC () const
 
void applyFlowBC (const TArray &convFlux, const X &bValue) const
 
void applyNonzeroDiagBC () const
 
void applyNonzeroDiagBC (int f) const
 

Protected Attributes

const StorageSite_faces
 
const StorageSite_cells
 
const IntArray_ibType
 
const CRConnectivity_faceCells
 
const Field_varField
 
const MultiField::ArrayIndex _xIndex
 
CCMatrix_dRdX
 
CCAssembler_assembler
 
DiagArray_dRdXDiag
 
XArray_x
 
XArray_r
 
const Field_areaMagField
 
const TArray_faceAreaMag
 
const Field_areaField
 
const VectorT3Array_faceArea
 

Detailed Description

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

Definition at line 22 of file GenericPhononBCS.h.

Member Typedef Documentation

template<class X, class Diag, class OffDiag>
typedef DiagonalMatrix<Diag,X> BaseGenericPhononBCS< X, Diag, OffDiag >::BBMatrix

Definition at line 37 of file GenericPhononBCS.h.

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

Definition at line 34 of file GenericPhononBCS.h.

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

Definition at line 33 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
typedef Array<Diag> BaseGenericPhononBCS< X, Diag, OffDiag >::DiagArray

Definition at line 39 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
typedef FluxJacobianMatrix<Diag,X> BaseGenericPhononBCS< X, Diag, OffDiag >::FMatrix

Definition at line 36 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
typedef Array<int> BaseGenericPhononBCS< X, Diag, OffDiag >::IntArray

Definition at line 29 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
typedef Array<OffDiag> BaseGenericPhononBCS< X, Diag, OffDiag >::OffDiagArray

Definition at line 40 of file GenericPhononBCS.h.

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

Definition at line 26 of file GenericPhononBCS.h.

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

Definition at line 28 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
typedef Vector<T_Scalar,3> BaseGenericPhononBCS< X, Diag, OffDiag >::VectorT3

Definition at line 31 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
typedef Array<VectorT3> BaseGenericPhononBCS< X, Diag, OffDiag >::VectorT3Array

Definition at line 43 of file GenericPhononBCS.h.

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

Definition at line 42 of file GenericPhononBCS.h.

Constructor & Destructor Documentation

template<class X, class Diag, class OffDiag>
BaseGenericPhononBCS< X, Diag, OffDiag >::BaseGenericPhononBCS ( const StorageSite faces,
const Mesh mesh,
const GeomFields geomFields,
Field varField,
MultiFieldMatrix matrix,
MultiField xField,
MultiField rField 
)
inline

Definition at line 46 of file GenericPhononBCS.h.

51  :
52  _faces(faces),
53  _cells(mesh.getCells()),
54  _ibType(dynamic_cast<const IntArray&>(geomFields.ibType[_cells])),
56  _varField(varField),
58  _dRdX(dynamic_cast<CCMatrix&>(matrix.getMatrix(_xIndex,_xIndex))),
61  _x(dynamic_cast<XArray&>(xField[_xIndex])),
62  _r(dynamic_cast<XArray&>(rField[_xIndex])),
63  _areaMagField(geomFields.areaMag),
64  _faceAreaMag(dynamic_cast<const TArray&>(_areaMagField[_faces])),
65  _areaField(geomFields.area),
66  _faceArea(dynamic_cast<const VectorT3Array&>(_areaField[_faces]))
67  {}
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
const Field & _areaField
Array< Diag > & getDiag()
Definition: CRMatrix.h:856
const StorageSite & _faces
CCAssembler & _assembler
Field ibType
Definition: GeomFields.h:38
const IntArray & _ibType
const VectorT3Array & _faceArea
const StorageSite & getCells() const
Definition: Mesh.h:109
const TArray & _faceAreaMag
const Field & _areaMagField
const CRConnectivity & getFaceCells(const StorageSite &site) const
Definition: Mesh.cpp:388
const StorageSite & _cells
const CRConnectivity & _faceCells
const MultiField::ArrayIndex _xIndex
Field area
Definition: GeomFields.h:23
PairWiseAssembler & getPairWiseAssembler(const CRConnectivity &pairs)
Definition: CRMatrix.h:867
Field areaMag
Definition: GeomFields.h:25

Member Function Documentation

template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC ( int  f,
const X &  bValue 
) const
inline

Definition at line 69 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_assembler, BaseGenericPhononBCS< X, Diag, OffDiag >::_dRdXDiag, BaseGenericPhononBCS< X, Diag, OffDiag >::_faceCells, BaseGenericPhononBCS< X, Diag, OffDiag >::_ibType, BaseGenericPhononBCS< X, Diag, OffDiag >::_r, BaseGenericPhononBCS< X, Diag, OffDiag >::_x, CRMatrix< T_Diag, T_OffDiag, X >::PairWiseAssembler::getCoeff01(), CRMatrix< T_Diag, T_OffDiag, X >::PairWiseAssembler::getCoeff10(), and Mesh::IBTYPE_FLUID.

Referenced by BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC(), and BaseGenericPhononBCS< X, Diag, OffDiag >::applyFlowBC().

70  {
71  const int c0 = _faceCells(f,0);
72  const int c1 = _faceCells(f,1);
73 
74  if (_ibType[c0] != Mesh::IBTYPE_FLUID)
75  return;
76 
77  const OffDiag dRC0dXC1 = _assembler.getCoeff01(f);
78 
79  // since we know the boundary value, compute the boundary
80  // x correction and it's contribution to the residual for c0; we
81  // can then eliminate the coefficient to the boundary cell
82 
83  const X dXC1 = bValue - _x[c1];
84  const X dRC0 = dRC0dXC1*dXC1;
85  _r[c0] += dRC0;
86 
88 
89  // set the boundary value and make its correction equation an
90  // identity
91  _x[c1] = bValue;
95 
96  }
OffDiag & getCoeff10(const int np)
Definition: CRMatrix.h:131
CCAssembler & _assembler
const IntArray & _ibType
OffDiag & getCoeff01(const int np)
Definition: CRMatrix.h:126
const CRConnectivity & _faceCells
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC ( const X &  bValue) const
inline

Definition at line 98 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_faces, BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC(), and StorageSite::getCount().

99  {
100  for(int i=0; i<_faces.getCount(); i++)
101  applyDirichletBC(i,bValue);
102  }
const StorageSite & _faces
void applyDirichletBC(int f, const X &bValue) const
int getCount() const
Definition: StorageSite.h:39
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC ( const FloatValEvaluator< X > &  bValue) const
inline

Definition at line 104 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_faces, BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC(), and StorageSite::getCount().

105  {
106  for(int i=0; i<_faces.getCount(); i++)
107  applyDirichletBC(i,bValue[i]);
108  }
const StorageSite & _faces
void applyDirichletBC(int f, const X &bValue) const
int getCount() const
Definition: StorageSite.h:39
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyExtrapolationBC ( ) const
inline

Definition at line 111 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_faces, and StorageSite::getCount().

Referenced by BaseGenericPhononBCS< X, Diag, OffDiag >::applyFlowBC().

112  {
113  for(int i=0; i<_faces.getCount(); i++)
115  }
const StorageSite & _faces
void applyExtrapolationBC() const
int getCount() const
Definition: StorageSite.h:39
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyExtrapolationBC ( const int  f) const
inline

Definition at line 119 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_assembler, BaseGenericPhononBCS< X, Diag, OffDiag >::_dRdX, BaseGenericPhononBCS< X, Diag, OffDiag >::_dRdXDiag, BaseGenericPhononBCS< X, Diag, OffDiag >::_faceCells, BaseGenericPhononBCS< X, Diag, OffDiag >::_ibType, BaseGenericPhononBCS< X, Diag, OffDiag >::_r, BaseGenericPhononBCS< X, Diag, OffDiag >::_x, CRMatrix< T_Diag, T_OffDiag, X >::PairWiseAssembler::getCoeff01(), CRMatrix< T_Diag, T_OffDiag, X >::PairWiseAssembler::getCoeff10(), Mesh::IBTYPE_FLUID, and CRMatrix< T_Diag, T_OffDiag, X >::setBoundary().

120  {
121  const int c0 = _faceCells(f,0);
122  const int c1 = _faceCells(f,1);
123 
124  if (_ibType[c0] != Mesh::IBTYPE_FLUID)
125  return;
126 
127  // the current value of flux and its Jacobians
128  const Diag dFluxdXC1 = -_dRdXDiag[c1];
129 
130  const X xc0mxc1 = _x[c0]-_x[c1];
131 
132  // eliminate boundary dependency from cell equation
133  _dRdXDiag[c0] += dFluxdXC1;
134  _r[c0] += dFluxdXC1*xc0mxc1;
135  _assembler.getCoeff01(f) = 0;
136 
137  // boundary value equation
140  _r[c1] = xc0mxc1;
141  _dRdX.setBoundary(c1);
142 
143  }
OffDiag & getCoeff10(const int np)
Definition: CRMatrix.h:131
CCAssembler & _assembler
const IntArray & _ibType
OffDiag & getCoeff01(const int np)
Definition: CRMatrix.h:126
void setBoundary(const int nr)
Definition: CRMatrix.h:1056
const CRConnectivity & _faceCells
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyFlowBC ( const TArray convFlux,
const X &  bValue 
) const
inline

Definition at line 152 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_faces, BaseGenericPhononBCS< X, Diag, OffDiag >::applyDirichletBC(), BaseGenericPhononBCS< X, Diag, OffDiag >::applyExtrapolationBC(), and StorageSite::getCount().

153  {
154  for(int f=0; f<_faces.getCount(); f++)
155  if (convFlux[f] < 0)
156  applyDirichletBC(f,bValue);
157  else
159  }
const StorageSite & _faces
void applyDirichletBC(int f, const X &bValue) const
void applyExtrapolationBC() const
int getCount() const
Definition: StorageSite.h:39
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyInterfaceBC ( ) const
inline

Definition at line 146 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_faces, and StorageSite::getCount().

147  {
148  for(int i=0; i<_faces.getCount(); i++)
149  applyInterfaceBC(i);
150  }
void applyInterfaceBC() const
const StorageSite & _faces
int getCount() const
Definition: StorageSite.h:39
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyNonzeroDiagBC ( ) const
inline

Definition at line 161 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_faces, and StorageSite::getCount().

162  {
163  for(int i=0; i<_faces.getCount(); i++)
165  }
const StorageSite & _faces
void applyNonzeroDiagBC() const
int getCount() const
Definition: StorageSite.h:39
template<class X, class Diag, class OffDiag>
void BaseGenericPhononBCS< X, Diag, OffDiag >::applyNonzeroDiagBC ( int  f) const
inline

Definition at line 167 of file GenericPhononBCS.h.

References BaseGenericPhononBCS< X, Diag, OffDiag >::_dRdXDiag, BaseGenericPhononBCS< X, Diag, OffDiag >::_faceCells, BaseGenericPhononBCS< X, Diag, OffDiag >::_ibType, and Mesh::IBTYPE_FLUID.

168  {
169  const int c0 = _faceCells(f,0);
170  const int c1 = _faceCells(f,1);
171 
172  if (_ibType[c0] != Mesh::IBTYPE_FLUID)
173  return;
174 
175  _dRdXDiag[c1][0] = T_Scalar(-1.0);
176  }
NumTypeTraits< X >::T_Scalar T_Scalar
const IntArray & _ibType
const CRConnectivity & _faceCells

Member Data Documentation

template<class X, class Diag, class OffDiag>
const Field& BaseGenericPhononBCS< X, Diag, OffDiag >::_areaField
protected

Definition at line 193 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
const Field& BaseGenericPhononBCS< X, Diag, OffDiag >::_areaMagField
protected

Definition at line 191 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
CCAssembler& BaseGenericPhononBCS< X, Diag, OffDiag >::_assembler
protected
template<class X, class Diag, class OffDiag>
const StorageSite& BaseGenericPhononBCS< X, Diag, OffDiag >::_cells
protected

Definition at line 181 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
CCMatrix& BaseGenericPhononBCS< X, Diag, OffDiag >::_dRdX
protected
template<class X, class Diag, class OffDiag>
const VectorT3Array& BaseGenericPhononBCS< X, Diag, OffDiag >::_faceArea
protected

Definition at line 194 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
const TArray& BaseGenericPhononBCS< X, Diag, OffDiag >::_faceAreaMag
protected

Definition at line 192 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
XArray& BaseGenericPhononBCS< X, Diag, OffDiag >::_r
protected
template<class X, class Diag, class OffDiag>
const Field& BaseGenericPhononBCS< X, Diag, OffDiag >::_varField
protected

Definition at line 184 of file GenericPhononBCS.h.

template<class X, class Diag, class OffDiag>
XArray& BaseGenericPhononBCS< X, Diag, OffDiag >::_x
protected
template<class X, class Diag, class OffDiag>
const MultiField::ArrayIndex BaseGenericPhononBCS< X, Diag, OffDiag >::_xIndex
protected

Definition at line 185 of file GenericPhononBCS.h.


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