Memosa-FVM  0.2
COMETBoundary< T > Class Template Reference

#include <COMETBoundary.h>

Collaboration diagram for COMETBoundary< T >:

Public Types

typedef NumTypeTraits< T >
::T_Scalar 
T_Scalar
 
typedef Array< int > IntArray
 
typedef Array< T_ScalarTArray
 
typedef Vector< T_Scalar, 3 > VectorT3
 
typedef Array< VectorT3VectorT3Array
 
typedef Kspace< T > Tkspace
 
typedef kvol< T > Tkvol
 
typedef pmode< T > Tmode
 
typedef Tmode::Refl_pair Refl_pair
 
typedef Gradient< T > GradType
 
typedef Array< GradTypeGradArray
 
typedef GradientModel< T > GradModelType
 
typedef
GradModelType::GradMatrixType 
GradMatrix
 

Public Member Functions

 COMETBoundary (const StorageSite &faces, const Mesh &mesh, const GeomFields &geomFields, Tkspace &kspace, COMETModelOptions< T > &opts, const int fg_id)
 
void applyTemperatureWallFine (FloatValEvaluator< T > &bTemp) const
 
void applyTemperatureWallCoarse (FloatValEvaluator< T > &bTemp) const
 
void applyTemperatureWallFine (int f, const T Twall, const GradMatrix &gMat) const
 
void applyTemperatureWallCoarse (int f, const T Twall) const
 

Protected Attributes

const StorageSite_faces
 
const StorageSite_cells
 
const CRConnectivity_faceCells
 
const CRConnectivity_cellCells
 
const VectorT3Array_faceArea
 
const VectorT3Array_cellCoords
 
Tkspace_kspace
 
TArray_eArray
 
const GeomFields_geomFields
 
const Mesh_mesh
 

Detailed Description

template<class T>
class COMETBoundary< T >

Definition at line 25 of file COMETBoundary.h.

Member Typedef Documentation

template<class T>
typedef Array<GradType> COMETBoundary< T >::GradArray

Definition at line 39 of file COMETBoundary.h.

template<class T>
typedef GradModelType::GradMatrixType COMETBoundary< T >::GradMatrix

Definition at line 41 of file COMETBoundary.h.

template<class T>
typedef GradientModel<T> COMETBoundary< T >::GradModelType

Definition at line 40 of file COMETBoundary.h.

template<class T>
typedef Gradient<T> COMETBoundary< T >::GradType

Definition at line 38 of file COMETBoundary.h.

template<class T>
typedef Array<int> COMETBoundary< T >::IntArray

Definition at line 30 of file COMETBoundary.h.

template<class T>
typedef Tmode::Refl_pair COMETBoundary< T >::Refl_pair

Definition at line 37 of file COMETBoundary.h.

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

Definition at line 29 of file COMETBoundary.h.

template<class T>
typedef Array<T_Scalar> COMETBoundary< T >::TArray

Definition at line 31 of file COMETBoundary.h.

template<class T>
typedef Kspace<T> COMETBoundary< T >::Tkspace

Definition at line 34 of file COMETBoundary.h.

template<class T>
typedef kvol<T> COMETBoundary< T >::Tkvol

Definition at line 35 of file COMETBoundary.h.

template<class T>
typedef pmode<T> COMETBoundary< T >::Tmode

Definition at line 36 of file COMETBoundary.h.

template<class T>
typedef Vector<T_Scalar,3> COMETBoundary< T >::VectorT3

Definition at line 32 of file COMETBoundary.h.

template<class T>
typedef Array<VectorT3> COMETBoundary< T >::VectorT3Array

Definition at line 33 of file COMETBoundary.h.

Constructor & Destructor Documentation

template<class T>
COMETBoundary< T >::COMETBoundary ( const StorageSite faces,
const Mesh mesh,
const GeomFields geomFields,
Tkspace kspace,
COMETModelOptions< T > &  opts,
const int  fg_id 
)
inline

Definition at line 43 of file COMETBoundary.h.

48  :
49  _faces(faces),
50  _cells(mesh.getCells()),
52  _cellCells(mesh.getCellCells()),
53  _faceArea(dynamic_cast<const VectorT3Array&>(geomFields.area[_faces])),
54  _cellCoords(dynamic_cast<const VectorT3Array&>(geomFields.coordinate[_cells])),
55  _kspace(kspace),
56  _eArray(kspace.geteArray()),
57  _geomFields(geomFields),
58  _mesh(mesh)
59  {}
Field coordinate
Definition: GeomFields.h:19
Tkspace & _kspace
const VectorT3Array & _cellCoords
const Mesh & _mesh
const VectorT3Array & _faceArea
const GeomFields & _geomFields
const CRConnectivity & getCellCells() const
Definition: Mesh.cpp:480
const CRConnectivity & _faceCells
const StorageSite & _faces
const StorageSite & getCells() const
Definition: Mesh.h:109
const CRConnectivity & getFaceCells(const StorageSite &site) const
Definition: Mesh.cpp:388
TArray & _eArray
const StorageSite & _cells
Field area
Definition: GeomFields.h:23
const CRConnectivity & _cellCells

Member Function Documentation

template<class T>
void COMETBoundary< T >::applyTemperatureWallCoarse ( FloatValEvaluator< T > &  bTemp) const
inline

Definition at line 72 of file COMETBoundary.h.

References COMETBoundary< T >::_faces, and StorageSite::getCount().

Referenced by COMETModel< T >::applyTemperatureBoundaries(), and COMETModel< T >::initializeTemperatureBoundaries().

73  {
74  for (int j=0; j<_faces.getCount();j++)
75  {
76  applyTemperatureWallCoarse(j, bTemp[j]);
77  }
78  }
void applyTemperatureWallCoarse(FloatValEvaluator< T > &bTemp) const
Definition: COMETBoundary.h:72
const StorageSite & _faces
int getCount() const
Definition: StorageSite.h:39
template<class T>
void COMETBoundary< T >::applyTemperatureWallCoarse ( int  f,
const T  Twall 
) const
inline

Definition at line 190 of file COMETBoundary.h.

References COMETBoundary< T >::_eArray, COMETBoundary< T >::_faceArea, COMETBoundary< T >::_faceCells, COMETBoundary< T >::_kspace, pmode< T >::calce0(), Kspace< T >::getGlobalIndex(), pmode< T >::getIndex(), Kspace< T >::getkvol(), Kspace< T >::getlength(), kvol< T >::getmode(), kvol< T >::getmodenum(), and pmode< T >::getv().

191  {
192 
193  const int c0 = _faceCells(f,0);
194  const int c1 = _faceCells(f,1);
195 
196  int numK=_kspace.getlength();
197 
198  for (int k=0;k<numK;k++)
199  {
200  Tkvol& kv=_kspace.getkvol(k);
201  int numM=kv.getmodenum();
202 
203  for (int m=0;m<numM;m++)
204  {
205  Tmode& mode=kv.getmode(m);
206  VectorT3 vg = mode.getv();
207  const int index=mode.getIndex()-1;
208  const VectorT3 en = _faceArea[f];
209  const T vg_dot_en = vg[0]*en[0]+vg[1]*en[1]+vg[2]*en[2];
210  const int c0ind=_kspace.getGlobalIndex(c0,index);
211  const int c1ind=_kspace.getGlobalIndex(c1,index);
212 
213  if (vg_dot_en > T_Scalar(0.0))
214  {
215  _eArray[c1ind]=_eArray[c0ind];
216  }
217  else
218  _eArray[c1ind]=mode.calce0(Twall);
219  }
220  }
221  }
Tkspace & _kspace
Tkvol & getkvol(int n) const
Definition: Kspace.h:390
int getlength() const
Definition: Kspace.h:391
kvol< T > Tkvol
Definition: COMETBoundary.h:35
int getmodenum()
Definition: kvol.h:43
int getGlobalIndex(const int cell, const int count)
Definition: Kspace.h:1216
const VectorT3Array & _faceArea
const CRConnectivity & _faceCells
pmode< T > Tmode
Definition: COMETBoundary.h:36
NumTypeTraits< T >::T_Scalar T_Scalar
Definition: COMETBoundary.h:29
TArray & _eArray
template<class T>
void COMETBoundary< T >::applyTemperatureWallFine ( FloatValEvaluator< T > &  bTemp) const
inline

Definition at line 61 of file COMETBoundary.h.

References COMETBoundary< T >::_faces, COMETBoundary< T >::_geomFields, COMETBoundary< T >::_mesh, StorageSite::getCount(), and GradientModel< T >::getGradientMatrix().

Referenced by COMETModel< T >::initializeTemperatureBoundaries().

62  {
63 
65 
66  for (int j=0; j<_faces.getCount();j++)
67  {
68  applyTemperatureWallFine(j, bTemp[j], gradMatrix);
69  }
70  }
GradModelType::GradMatrixType GradMatrix
Definition: COMETBoundary.h:41
void applyTemperatureWallFine(FloatValEvaluator< T > &bTemp) const
Definition: COMETBoundary.h:61
const Mesh & _mesh
const GeomFields & _geomFields
const StorageSite & _faces
static GradMatrixType & getGradientMatrix(const Mesh &mesh, const GeomFields &geomFields)
int getCount() const
Definition: StorageSite.h:39
template<class T>
void COMETBoundary< T >::applyTemperatureWallFine ( int  f,
const T  Twall,
const GradMatrix gMat 
) const
inline

Definition at line 80 of file COMETBoundary.h.

References COMETBoundary< T >::_cellCells, COMETBoundary< T >::_cellCoords, COMETBoundary< T >::_eArray, COMETBoundary< T >::_faceArea, COMETBoundary< T >::_faceCells, COMETBoundary< T >::_faces, COMETBoundary< T >::_geomFields, COMETBoundary< T >::_kspace, COMETBoundary< T >::_mesh, pmode< T >::calce0(), GeomFields::coordinate, Mesh::getCellFaces(), GradientMatrix< T_Scalar >::getCoeff(), CRConnectivity::getCount(), Mesh::getFaces(), Kspace< T >::getGlobalIndex(), pmode< T >::getIndex(), Kspace< T >::getkvol(), Kspace< T >::getlength(), kvol< T >::getmode(), kvol< T >::getmodenum(), Kspace< T >::gettotmodes(), pmode< T >::getv(), and Array< T >::zero().

81  {
82 
83  const int c0 = _faceCells(f,0);
84  const int c1 = _faceCells(f,1);
85 
86  const int neibcount=_cellCells.getCount(c0);
87 
88  const VectorT3Array& faceCoords=
89  dynamic_cast<const VectorT3Array&>(_geomFields.coordinate[_faces]);
90 
91  GradArray Grads(_kspace.gettotmodes());
92  Grads.zero();
93  TArray pointMin(_kspace.gettotmodes());
94  pointMin=-1;
95  TArray pointMax(_kspace.gettotmodes());
96  pointMax.zero();
97  TArray pointLim(_kspace.gettotmodes());
98  pointLim=100;
99 
100  VectorT3 Gcoeff;
101 
102  for(int j=0;j<neibcount;j++) //first loop to get grad and max/min vals
103  {
104  const int cell1=_cellCells(c0,j);
105  const VectorT3 Gcoeff=gMat.getCoeff(c0, cell1);
106 
107  int c0ind=_kspace.getGlobalIndex(c0,0);
108  int c1ind=_kspace.getGlobalIndex(cell1,0);
109 
110  for(int k=0;k<_kspace.gettotmodes();k++)
111  {
112  const T e1=_eArray[c1ind];
113  const T e0=_eArray[c0ind];
114  T& curMax=pointMax[k];
115  T& curMin=pointMin[k];
116  Grads[k].accumulate(Gcoeff, e1-e0);
117 
118  if(e1>curMax)
119  curMax=e1;
120 
121  if(curMin==-1)
122  curMin=e1;
123  else
124  {
125  if(e1<curMin)
126  curMin=e1;
127  }
128 
129  c0ind++;
130  c1ind++;
131  }
132  }
133 
134  const StorageSite& allFaces(_mesh.getFaces());
135  const VectorT3Array& allFaceCoords=
136  dynamic_cast<const VectorT3Array&>(_geomFields.coordinate[allFaces]);
137  const CRConnectivity& cellFaces(_mesh.getCellFaces());
138 
139  for(int j=0;j<neibcount;j++) //second loop to calculate limiting coeff
140  {
141  const int f1(cellFaces(c0,j));
142  const VectorT3 dr0(allFaceCoords[f1]-_cellCoords[c0]);
143  int c0ind=_kspace.getGlobalIndex(c0,0);
144  //vanLeer lf;
145 
146  for(int k=0;k<_kspace.gettotmodes();k++)
147  {
148  const T minVal=pointMin[k];
149  const T maxVal=pointMax[k];
150  const T de0(Grads[k]*dr0);
151  T& cl=pointLim[k];
152  //computeLimitCoeff(cl, _eArray[c0ind], de0, minVal, maxVal, lf);
153  c0ind++;
154  }
155  }
156 
157  int numK=_kspace.getlength();
158 
159  VectorT3 rVec=_cellCoords[c1]-_cellCoords[c0];
160  VectorT3 fVec=faceCoords[f]-_cellCoords[c0];
161 
162  for (int k=0;k<numK;k++)
163  {
164  Tkvol& kv=_kspace.getkvol(k);
165  int numM=kv.getmodenum();
166 
167  for (int m=0;m<numM;m++)
168  {
169  Tmode& mode=kv.getmode(m);
170  VectorT3 vg = mode.getv();
171  const int index=mode.getIndex()-1;
172  const VectorT3 en = _faceArea[f];
173  const T vg_dot_en = vg[0]*en[0]+vg[1]*en[1]+vg[2]*en[2];
174  const int c0ind=_kspace.getGlobalIndex(c0,index);
175  const int c1ind=_kspace.getGlobalIndex(c1,index);
176  const GradType& grad=Grads[index];
177 
178  if (vg_dot_en > T_Scalar(0.0))
179  {
180  const T SOU=(fVec[0]*grad[0]+fVec[1]*grad[1]+
181  fVec[2]*grad[2])*pointLim[index];
182  _eArray[c1ind]=_eArray[c0ind]+SOU;
183  }
184  else
185  _eArray[c1ind]=mode.calce0(Twall);
186  }
187  }
188  }
int getCount(const int i) const
Field coordinate
Definition: GeomFields.h:19
Array< GradType > GradArray
Definition: COMETBoundary.h:39
Tkspace & _kspace
const VectorT3Array & _cellCoords
Tkvol & getkvol(int n) const
Definition: Kspace.h:390
int getlength() const
Definition: Kspace.h:391
Gradient< T > GradType
Definition: COMETBoundary.h:38
kvol< T > Tkvol
Definition: COMETBoundary.h:35
int getmodenum()
Definition: kvol.h:43
const CRConnectivity & getCellFaces() const
Definition: Mesh.cpp:454
const Mesh & _mesh
int getGlobalIndex(const int cell, const int count)
Definition: Kspace.h:1216
const VectorT3Array & _faceArea
const GeomFields & _geomFields
const StorageSite & getFaces() const
Definition: Mesh.h:108
const CRConnectivity & _faceCells
const StorageSite & _faces
pmode< T > Tmode
Definition: COMETBoundary.h:36
NumTypeTraits< T >::T_Scalar T_Scalar
Definition: COMETBoundary.h:29
TArray & _eArray
int gettotmodes()
Definition: Kspace.h:393
const CRConnectivity & _cellCells
Array< T_Scalar > TArray
Definition: COMETBoundary.h:31

Member Data Documentation

template<class T>
const CRConnectivity& COMETBoundary< T >::_cellCells
protected

Definition at line 228 of file COMETBoundary.h.

Referenced by COMETBoundary< T >::applyTemperatureWallFine().

template<class T>
const VectorT3Array& COMETBoundary< T >::_cellCoords
protected

Definition at line 230 of file COMETBoundary.h.

Referenced by COMETBoundary< T >::applyTemperatureWallFine().

template<class T>
const StorageSite& COMETBoundary< T >::_cells
protected

Definition at line 226 of file COMETBoundary.h.

template<class T>
TArray& COMETBoundary< T >::_eArray
protected
template<class T>
const VectorT3Array& COMETBoundary< T >::_faceArea
protected
template<class T>
const CRConnectivity& COMETBoundary< T >::_faceCells
protected
template<class T>
const StorageSite& COMETBoundary< T >::_faces
protected
template<class T>
const GeomFields& COMETBoundary< T >::_geomFields
protected

Definition at line 233 of file COMETBoundary.h.

Referenced by COMETBoundary< T >::applyTemperatureWallFine().

template<class T>
Tkspace& COMETBoundary< T >::_kspace
protected
template<class T>
const Mesh& COMETBoundary< T >::_mesh
protected

Definition at line 234 of file COMETBoundary.h.

Referenced by COMETBoundary< T >::applyTemperatureWallFine().


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