Memosa-FVM  0.2
SourceDiscretizationene.h
Go to the documentation of this file.
1 // This file os part of FVM
2 // Copyright (c) 2012 FVM Authors
3 // See LICENSE file for terms.
4 
5 #ifndef _SOURCEDISCRETIZATIONENE_H_
6 #define _SOURCEDISCRETIZATIONENE_H_
7 
8 #include "Field.h"
9 #include "MultiField.h"
10 #include "MultiFieldMatrix.h"
11 #include "Mesh.h"
12 #include "Discretization.h"
13 #include "StorageSite.h"
14 #include "GeomFields.h"
15 #include "CRConnectivity.h"
16 #include "CRMatrixRect.h"
17 #include "Vector.h"
18 #include "GradientModel.h"
19 
20 
21 template<class X>
23 {
24 public:
26 
32  typedef Array<X> XArray;
33 
34 
36  const GeomFields& geomFields,
37  Field& varField,
38  const Field& velocityField,
39  Field& muField,
40  Field& dissipationField,
41  Field& densityField,
42  Field& sourcekField,
43  const Field& gradientField) :
44 
45  Discretization(meshes),
46  _geomFields(geomFields),
47  _varField(varField),
48  _velocityField(velocityField),
49  _muField(muField),
50  _dissipationField(dissipationField),
51  _densityField(densityField),
52  _sourcekField(sourcekField),
53  _gradientField(gradientField)
54 
55  {}
56  void discretize(const Mesh& mesh, MultiFieldMatrix& mfmatrix,
57  MultiField& xField, MultiField& rField)
58  {
59 
60 
61  const StorageSite& cells = mesh.getCells();
62  const MultiField::ArrayIndex cVarIndex(&_varField,&cells);
63  const TArray& cellVolume = dynamic_cast<const TArray&>(_geomFields.volume[cells]);
64 
65  const VGradArray& vGrad =
66  dynamic_cast<const VGradArray&>(_gradientField[cells]);
67 
68  const TArray& muCell =
69  dynamic_cast<TArray&>(_muField[cells]);
70 
71  const TArray& eCell =
72  dynamic_cast<TArray&>(_dissipationField[cells]);
73 
74  const TArray & rhoCell =
75  dynamic_cast<const TArray&>(_densityField[cells]);
76 
77  TArray & sourceCell =
78  dynamic_cast<TArray&>(_sourcekField[cells]);
79 
80 
81  TArray& rCell =
82  dynamic_cast<XArray&>(rField[cVarIndex]);
83 
84 
85  const int nCells = cells.getCount();
86 
87 
88  for(int n=0; n<nCells; n++)
89  {
90  const VGradType& vg = vGrad[n];
91  VGradType vgSquare = vGrad[n];
92  T_Scalar rhoe = eCell[n]*rhoCell[n];
93  T_Scalar sum = 0;
94 
95  for(int i=0;i<3;i++)
96  {
97  for(int j=0;j<3;j++)
98 
99  {
100 
101  T_Scalar x = vg[i][j]*vg[i][j]+vg[i][j]*vg[j][i] ;
102  sum += x;
103 
104  //vgSquare[i][j] = vg[i][j]*vg[i][j]+vg[i][j]*vg[j][i] ;
105  //sum += vgSquare[i][j];
106  }
107  }
108 /*
109  cout << "sum" << sum << endl;
110  cout << "muCell" << muCell[n] << endl;
111  cout << "rhoe" << rhoCell[n] << endl;
112  cout << "epsilon" << eCell[n] << endl;
113  */
114 
115  sourceCell[n] = sum*muCell[n]-rhoe;
116  //cout << "rsource" << sourceCell[n]*cellVolume[n] << endl;
117  rCell[n] +=sourceCell[n]*cellVolume[n];
118  }
119 }
120 private:
130 
131 };
132 
133 #endif
134 
NumTypeTraits< X >::T_Scalar T_Scalar
SourceDiscretizationene(const MeshList &meshes, const GeomFields &geomFields, Field &varField, const Field &velocityField, Field &muField, Field &dissipationField, Field &densityField, Field &sourcekField, const Field &gradientField)
Gradient< VectorT3 > VGradType
Vector< T_Scalar, 3 > VectorT3
Definition: Field.h:14
Definition: Mesh.h:49
Array< Gradient< VectorT3 > > VGradArray
pair< const Field *, const StorageSite * > ArrayIndex
Definition: MultiField.h:21
const StorageSite & getCells() const
Definition: Mesh.h:109
Field volume
Definition: GeomFields.h:26
Definition: Array.h:14
int getCount() const
Definition: StorageSite.h:39
void discretize(const Mesh &mesh, MultiFieldMatrix &mfmatrix, MultiField &xField, MultiField &rField)
vector< Mesh * > MeshList
Definition: Mesh.h:439