Memosa-FVM  0.2
KeModel< T >::Impl Class Reference

#include <KeModel_impl.h>

Collaboration diagram for KeModel< T >::Impl:

Public Types

typedef Array< T > TArray
 
typedef Vector< T, 3 > VectorT3
 
typedef Array< VectorT3VectorT3Array
 
typedef Gradient< VectorT3VGradType
 
typedef Array< Gradient
< VectorT3 > > 
VGradArray
 
typedef Gradient< T > EGradType
 
typedef Array< EGradTypeEGradArray
 
typedef Gradient< T > DGradType
 
typedef Array< DGradTypeDGradArray
 
typedef CRMatrix< T, T, T > T_Matrix
 

Public Member Functions

 Impl (const GeomFields &geomFields, KeFields &keFields, FlowFields &flowFields, const MeshList &meshes)
 
void init ()
 
KeBCMapgetBCMap ()
 
KeVCMapgetVCMap ()
 
KeBC< T > & getBC (const int id)
 
KeModelOptions< T > & getOptions ()
 
void updateTimek ()
 
void updateTimee ()
 
void initLinearizationk (LinearSystem &lsk)
 
void linearizeenergy (LinearSystem &lsk)
 
void initLinearization (LinearSystem &lse)
 
void linearizedissipation (LinearSystem &lse)
 
void getViscosity (const Mesh &mesh)
 
void advance (const int niter)
 
void printBCs ()
 

Private Attributes

const MeshList _meshes
 
const GeomFields_geomFields
 
KeFields_keFields
 
FlowFields_flowFields
 
KeBCMap _bcMap
 
KeVCMap _vcMap
 
KeModelOptions< T > _options
 
GradientModel< T > _energyGradientModel
 
GradientModel< T > _dissipationGradientModel
 
MFRPtr _initialNormk
 
MFRPtr _initialNorm
 
int _niters
 

Detailed Description

template<class T>
class KeModel< T >::Impl

Definition at line 34 of file KeModel_impl.h.

Member Typedef Documentation

template<class T>
typedef Array<DGradType> KeModel< T >::Impl::DGradArray

Definition at line 45 of file KeModel_impl.h.

template<class T>
typedef Gradient<T> KeModel< T >::Impl::DGradType

Definition at line 44 of file KeModel_impl.h.

template<class T>
typedef Array<EGradType> KeModel< T >::Impl::EGradArray

Definition at line 43 of file KeModel_impl.h.

template<class T>
typedef Gradient<T> KeModel< T >::Impl::EGradType

Definition at line 42 of file KeModel_impl.h.

template<class T>
typedef CRMatrix<T,T,T> KeModel< T >::Impl::T_Matrix

Definition at line 46 of file KeModel_impl.h.

template<class T>
typedef Array<T> KeModel< T >::Impl::TArray

Definition at line 37 of file KeModel_impl.h.

template<class T>
typedef Vector<T,3> KeModel< T >::Impl::VectorT3

Definition at line 38 of file KeModel_impl.h.

template<class T>
typedef Array<VectorT3> KeModel< T >::Impl::VectorT3Array

Definition at line 39 of file KeModel_impl.h.

template<class T>
typedef Array<Gradient<VectorT3> > KeModel< T >::Impl::VGradArray

Definition at line 41 of file KeModel_impl.h.

template<class T>
typedef Gradient<VectorT3> KeModel< T >::Impl::VGradType

Definition at line 40 of file KeModel_impl.h.

Constructor & Destructor Documentation

template<class T>
KeModel< T >::Impl::Impl ( const GeomFields geomFields,
KeFields keFields,
FlowFields flowFields,
const MeshList meshes 
)
inline

Definition at line 48 of file KeModel_impl.h.

References Model::_meshes, KeBC< T >::bcType, Mesh::getBoundaryFaceGroups(), Mesh::getID(), FaceGroup::groupType, FaceGroup::id, and KeVC< T >::vcType.

51  :
52  _meshes(meshes),
53  _geomFields(geomFields),
54  _keFields(keFields),
55  _flowFields(flowFields),
56  // _velocityGradientModel(_meshes,_flowFields.velocity,
57  // _flowFields.velocityGradient,_geomFields),
62  _initialNormk(),
63  _initialNorm(),
64  _niters(0)
65  {
66  const int numMeshes = _meshes.size();
67  for (int n=0; n<numMeshes; n++)
68  {
69  const Mesh& mesh = *_meshes[n];
70  /*
71  FlowVC<T> *vc1(new FlowVC<T>());
72  vc1->vcType = "flow";
73  _vcMap[mesh.getID()] = vc1;
74 */
75  KeVC<T> *vc(new KeVC<T>());
76  vc->vcType = "flow";
77  _vcMap[mesh.getID()] = vc;
78 
79  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
80  {
81  const FaceGroup& fg = *fgPtr;
82  KeBC<T> *bc(new KeBC<T>());
83 
84  _bcMap[fg.id] = bc;
85 
86  if ((fg.groupType == "symmetry"))
87  {
88  bc->bcType = "Symmetry";
89  }
90 
91  else if ((fg.groupType == "velocity-inlet"))
92  {
93  bc->bcType = "Specifiedkandepsilon";
94  }
95  else if ((fg.groupType == "wall"))
96  {
97  bc->bcType = "Wall";
98  }
99 
100  else if ((fg.groupType == "pressure-inlet") ||
101  (fg.groupType == "pressure-outlet"))
102  {
103  bc->bcType = "PressureBoundary";
104  }
105 
106  else
107  throw CException("KeModel: unknown face group type "
108  + fg.groupType);
109 
110  }
111  }
112  }
const FaceGroupList & getBoundaryFaceGroups() const
Definition: Mesh.h:187
shared_ptr< FaceGroup > FaceGroupPtr
Definition: Mesh.h:46
KeBCMap _bcMap
Definition: KeModel_impl.h:977
Definition: Mesh.h:28
Definition: KeBC.h:9
Definition: Mesh.h:49
string groupType
Definition: Mesh.h:42
Field energyGradient
Definition: KeFields.h:17
Field energy
Definition: KeFields.h:16
const int id
Definition: Mesh.h:41
GradientModel< T > _dissipationGradientModel
Definition: KeModel_impl.h:983
MFRPtr _initialNormk
Definition: KeModel_impl.h:984
KeVCMap _vcMap
Definition: KeModel_impl.h:979
const GeomFields & _geomFields
Definition: KeModel_impl.h:973
Definition: KeBC.h:21
KeFields & _keFields
Definition: KeModel_impl.h:974
Field dissipationGradient
Definition: KeFields.h:19
const MeshList _meshes
Definition: KeModel_impl.h:972
MFRPtr _initialNorm
Definition: KeModel_impl.h:985
FlowFields & _flowFields
Definition: KeModel_impl.h:975
int getID() const
Definition: Mesh.h:106
Field dissipation
Definition: KeFields.h:18
GradientModel< T > _energyGradientModel
Definition: KeModel_impl.h:982

Member Function Documentation

template<class T>
void KeModel< T >::Impl::advance ( const int  niter)
inline

Definition at line 875 of file KeModel_impl.h.

References Model::_meshes, KeModel< T >::getViscosity(), LinearSystem::initAssembly(), LinearSystem::initSolve(), LinearSystem::postSolve(), and LinearSystem::updateSolution().

876  {
877  for(int n=0; n<niter; n++)
878  {
879 
880  {
881  LinearSystem lsk;
882  initLinearizationk(lsk);
883 
884  lsk.initAssembly();
885 
886  linearizeenergy(lsk);
887 
888  lsk.initSolve();
889 
890  MFRPtr rNorm(_options.getLinearSolver().solve(lsk));
891 
892 
893  if (!_initialNormk) _initialNormk = rNorm;
894 
895  MFRPtr normRatio((*rNorm)/(*_initialNormk));
896 
897  if (_options.printNormalizedResiduals)
898  cout << _niters << ": " << *normRatio << endl;
899  else
900  cout << _niters << ": " << *rNorm << endl;
901 
902 
903  _options.getLinearSolver().cleanup();
904 
905  lsk.postSolve();
906  lsk.updateSolution();
907 
908 
909  _niters++;
910 
911  if (*rNorm < _options.absoluteTolerance ||
912  *normRatio < _options.relativeTolerance)
913  break;
914  }
915 
916  {
917  LinearSystem lse;
918  initLinearization(lse);
919 
920  lse.initAssembly();
921 
923 
924  lse.initSolve();
925 
926  MFRPtr rNorm(_options.getLinearSolver().solve(lse));
927 
928  if (!_initialNorm) _initialNorm = rNorm;
929 
930  MFRPtr normRatio((*rNorm)/(*_initialNorm));
931 
932  cout << _niters << ": " << *rNorm << endl;
933 
934 
935  _options.getLinearSolver().cleanup();
936 
937  lse.postSolve();
938  lse.updateSolution();
939 
940  _niters++;
941  if (*rNorm < _options.absoluteTolerance ||
942  *normRatio < _options.relativeTolerance)
943  break;
944  }
945 
946  const int numMeshes = _meshes.size();
947  for (int n=0; n<numMeshes; n++)
948  {
949  const Mesh& mesh = *_meshes[n];
950 
951  getViscosity(mesh);
952  }
953 
954  }
955 
956  }
void initAssembly()
Definition: Mesh.h:49
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
void updateSolution()
void initSolve()
void getViscosity(const Mesh &mesh)
Definition: KeModel_impl.h:824
void initLinearization(LinearSystem &lse)
Definition: KeModel_impl.h:560
MFRPtr _initialNormk
Definition: KeModel_impl.h:984
void linearizeenergy(LinearSystem &lsk)
Definition: KeModel_impl.h:388
const MeshList _meshes
Definition: KeModel_impl.h:972
shared_ptr< MultiFieldReduction > MFRPtr
MFRPtr _initialNorm
Definition: KeModel_impl.h:985
void linearizedissipation(LinearSystem &lse)
Definition: KeModel_impl.h:615
void initLinearizationk(LinearSystem &lsk)
Definition: KeModel_impl.h:333
template<class T>
KeBC<T>& KeModel< T >::Impl::getBC ( const int  id)
inline

Definition at line 276 of file KeModel_impl.h.

276 {return *_bcMap[id];}
KeBCMap _bcMap
Definition: KeModel_impl.h:977
template<class T>
KeBCMap& KeModel< T >::Impl::getBCMap ( )
inline

Definition at line 273 of file KeModel_impl.h.

273 {return _bcMap;}
KeBCMap _bcMap
Definition: KeModel_impl.h:977
template<class T>
KeModelOptions<T>& KeModel< T >::Impl::getOptions ( )
inline

Definition at line 278 of file KeModel_impl.h.

278 {return _options;}
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
template<class T>
KeVCMap& KeModel< T >::Impl::getVCMap ( )
inline

Definition at line 274 of file KeModel_impl.h.

274 {return _vcMap;}
KeVCMap _vcMap
Definition: KeModel_impl.h:979
template<class T>
void KeModel< T >::Impl::getViscosity ( const Mesh mesh)
inline

Definition at line 824 of file KeModel_impl.h.

References Mesh::getCells(), and StorageSite::getCount().

825  {
826  const StorageSite& cells = mesh.getCells();
827 
828 //turbulent viscosity
829  TArray& muCell =
830  dynamic_cast<TArray&>(_flowFields.eddyviscosity[cells]);
831 
832 //laminar viscosity
833  TArray& lmuCell =
834  dynamic_cast<TArray&>(_flowFields.viscosity[cells]);
835 
836 //total viscosity
837  TArray& tmuCell =
838  dynamic_cast<TArray&>(_flowFields.totalviscosity[cells]);
839 
840  const TArray & rhoCell =
841  dynamic_cast<const TArray&>(_flowFields.density[cells]);
842 
843  const TArray& eCell =
844  dynamic_cast<const TArray&>(_keFields.dissipation[cells]);
845 
846  const TArray& kCell =
847  dynamic_cast<const TArray&>(_keFields.energy[cells]);
848 
849  TArray& c1Cell =
850  dynamic_cast<TArray&>(_keFields.c1[cells]);
851 
852  TArray& c2Cell =
853  dynamic_cast<TArray&>(_keFields.c2[cells]);
854 
855 
856 
857  const int nCells = cells.getCount();
858  T two(2.0);
859  T cmu = _options.cmu;
860  T sigmak = _options.sigmak;
861  T sigmae = _options.sigmae;
862  for(int c=0; c<nCells; c++)
863  {
864  //cout << "c2" << c2Cell[c] << endl;
865  muCell[c] = (cmu*pow(kCell[c],two)*rhoCell[c])/eCell[c];
866  c1Cell[c] = muCell[c]/sigmak;
867  c2Cell[c] = muCell[c]/sigmae;
868  tmuCell[c] = muCell[c] + lmuCell[c];
869 
870  }
871 
872  }
Array< T > TArray
Definition: KeModel_impl.h:37
Field eddyviscosity
Definition: FlowFields.h:31
Field energy
Definition: KeFields.h:16
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
Field c1
Definition: KeFields.h:20
const StorageSite & getCells() const
Definition: Mesh.h:109
KeFields & _keFields
Definition: KeModel_impl.h:974
Field viscosity
Definition: FlowFields.h:21
Field density
Definition: FlowFields.h:22
Field c2
Definition: KeFields.h:21
int getCount() const
Definition: StorageSite.h:39
Field totalviscosity
Definition: FlowFields.h:32
FlowFields & _flowFields
Definition: KeModel_impl.h:975
Field dissipation
Definition: KeFields.h:18
template<class T>
void KeModel< T >::Impl::init ( )
inline

Definition at line 114 of file KeModel_impl.h.

References Model::_meshes, Mesh::getBoundaryFaceGroups(), Mesh::getCells(), StorageSite::getCount(), Mesh::getID(), Mesh::getInterfaceGroups(), and FaceGroup::site.

115  {
116  const int numMeshes = _meshes.size();
117  for (int n=0; n<numMeshes; n++)
118  {
119  const Mesh& mesh = *_meshes[n];
120  //const FlowVC<T>&vc1 = *_vcMap[mesh.getID()];
121  const KeVC<T>&vc = *_vcMap[mesh.getID()];
122 
123  const StorageSite& cells = mesh.getCells();
124  //energy(k)
125 
126  shared_ptr<TArray> kCell(new TArray(cells.getCount()));
127  *kCell = vc["InitialEnergy"];
128  _keFields.energy.addArray(cells,kCell);
129 
130  //dissipation(e)
131  shared_ptr<TArray> eCell(new TArray(cells.getCount()));
132  *eCell = vc["InitialDissipation"];
133  _keFields.dissipation.addArray(cells,eCell);
134 
135 
136  shared_ptr<TArray> sourcekCell(new TArray(cells.getCount()));
137  *sourcekCell = T(1.0);
138  _keFields.sourcek.addArray(cells,sourcekCell);
139 
140  shared_ptr<TArray> sourcedCell(new TArray(cells.getCount()));
141  *sourcedCell = T(1.0);
142  _keFields.sourced.addArray(cells,sourcedCell);
143 
144  shared_ptr<TArray> sourcecCell(new TArray(cells.getCount()));
145  *sourcecCell = T(1.0);
146  _keFields.sourcec.addArray(cells,sourcecCell);
147 
148  shared_ptr<TArray> sourcepCell(new TArray(cells.getCount()));
149  *sourcepCell = T(1.0);
150  _keFields.sourcep.addArray(cells,sourcepCell);
151 
152 
153  if (_options.transient)
154  {
156  dynamic_pointer_cast<ArrayBase>(eCell->newCopy()));
157  if (_options.timeDiscretizationOrder > 1)
159  dynamic_pointer_cast<ArrayBase>(eCell->newCopy()));
160 
161  }
162 
163 
164 /*
165  //initial velocity gradient array
166  shared_ptr<VGradArray> gradV(new VGradArray(cells.getCount()));
167  gradV->zero();
168  _flowFields.velocityGradient.addArray(cells,gradV);
169  */
170  //initial energy gradient array
171  shared_ptr<EGradArray> gradE(new EGradArray(cells.getCount()));
172  gradE->zero();
173  _keFields.energyGradient.addArray(cells,gradE);
174 
175  //initial dissipation gradient array
176  shared_ptr<DGradArray> gradD(new DGradArray(cells.getCount()));
177  gradD->zero();
179 
180  // density field
181  shared_ptr<TArray> densityCell(new TArray(cells.getCount()));
182  *densityCell = T(1.225);
183  //*densityCell = vc1["density"];
184  _flowFields.density.addArray(cells,densityCell);
185 
186  //c1
187  shared_ptr<TArray> c1Cell(new TArray(cells.getCount()));
188  *c1Cell = vc["c1"];
189  _keFields.c1.addArray(cells,c1Cell);
190 
191  //c2
192  shared_ptr<TArray> c2Cell(new TArray(cells.getCount()));
193  *c2Cell = vc["c2"];
194  _keFields.c2.addArray(cells,c2Cell);
195 
196  //kflux at faces
197  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
198  {
199  const FaceGroup& fg = *fgPtr;
200  const StorageSite& faces = fg.site;
201 
202  shared_ptr<TArray> fluxFace(new TArray(faces.getCount()));
203 
204  fluxFace->zero();
205  _keFields.kFlux.addArray(faces,fluxFace);
206 
207  }
208  foreach(const FaceGroupPtr fgPtr, mesh.getInterfaceGroups())
209  {
210  const FaceGroup& fg = *fgPtr;
211  const StorageSite& faces = fg.site;
212 
213  shared_ptr<TArray> fluxFace(new TArray(faces.getCount()));
214 
215  fluxFace->zero();
216  _keFields.kFlux.addArray(faces,fluxFace);
217 
218  }
219 
220  //eflux at faces
221  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
222  {
223  const FaceGroup& fg = *fgPtr;
224  const StorageSite& faces = fg.site;
225 
226  shared_ptr<TArray> fluxFace(new TArray(faces.getCount()));
227 
228  fluxFace->zero();
229  _keFields.eFlux.addArray(faces,fluxFace);
230 
231  }
232  foreach(const FaceGroupPtr fgPtr, mesh.getInterfaceGroups())
233  {
234  const FaceGroup& fg = *fgPtr;
235  const StorageSite& faces = fg.site;
236 
237  shared_ptr<TArray> fluxFace(new TArray(faces.getCount()));
238 
239  fluxFace->zero();
240  _keFields.eFlux.addArray(faces,fluxFace);
241 
242  }
243 
244 
245  //laminar viscosity
246  shared_ptr<TArray> lmuCell(new TArray(cells.getCount()));
247  *lmuCell = T(1.7894e-5);
248  // *lmuCell = vc["viscosity"];
249  _flowFields.viscosity.addArray(cells,lmuCell);
250 
251  //turbulent viscosity
252  shared_ptr<TArray> muCell(new TArray(cells.getCount()));
253  *muCell = T(1e-05);
254  //*muCell = vc["eddyviscosity"];
255  _flowFields.eddyviscosity.addArray(cells,muCell);
256 
257 
258  //total viscosity
259  shared_ptr<TArray> tmuCell(new TArray(cells.getCount()));
260  *tmuCell = T(1e-03);
261  // *tmuCell = vc["totalviscosity"];
262  _flowFields.totalviscosity.addArray(cells,tmuCell);
263 
264  }
265  //_keFields.energy.synclocal();
266  // _keFields.dissipation.synclocal();
267  _niters =0;
268  _initialNormk = MFRPtr();
269  _initialNorm = MFRPtr();
270 
271  }
Array< T > TArray
Definition: KeModel_impl.h:37
const FaceGroupList & getBoundaryFaceGroups() const
Definition: Mesh.h:187
shared_ptr< FaceGroup > FaceGroupPtr
Definition: Mesh.h:46
Definition: Mesh.h:28
Array< DGradType > DGradArray
Definition: KeModel_impl.h:45
Definition: Mesh.h:49
Field dissipationN2
Definition: KeFields.h:32
Field eddyviscosity
Definition: FlowFields.h:31
Field energyGradient
Definition: KeFields.h:17
Field energy
Definition: KeFields.h:16
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
Field c1
Definition: KeFields.h:20
Field eFlux
Definition: KeFields.h:27
Field sourcec
Definition: KeFields.h:35
const StorageSite & getCells() const
Definition: Mesh.h:109
MFRPtr _initialNormk
Definition: KeModel_impl.h:984
KeVCMap _vcMap
Definition: KeModel_impl.h:979
Definition: KeBC.h:21
void addArray(const StorageSite &, shared_ptr< ArrayBase > a)
Definition: Field.cpp:72
Field kFlux
Definition: KeFields.h:26
KeFields & _keFields
Definition: KeModel_impl.h:974
Field sourced
Definition: KeFields.h:34
Field dissipationGradient
Definition: KeFields.h:19
Field viscosity
Definition: FlowFields.h:21
Field density
Definition: FlowFields.h:22
Field c2
Definition: KeFields.h:21
int getCount() const
Definition: StorageSite.h:39
const MeshList _meshes
Definition: KeModel_impl.h:972
Field totalviscosity
Definition: FlowFields.h:32
shared_ptr< MultiFieldReduction > MFRPtr
MFRPtr _initialNorm
Definition: KeModel_impl.h:985
const FaceGroupList & getInterfaceGroups() const
Definition: Mesh.h:190
Field dissipationN1
Definition: KeFields.h:31
Field sourcep
Definition: KeFields.h:36
Array< EGradType > EGradArray
Definition: KeModel_impl.h:43
FlowFields & _flowFields
Definition: KeModel_impl.h:975
Field sourcek
Definition: KeFields.h:33
int getID() const
Definition: Mesh.h:106
Field dissipation
Definition: KeFields.h:18
StorageSite site
Definition: Mesh.h:40
template<class T>
void KeModel< T >::Impl::initLinearization ( LinearSystem lse)
inline

Definition at line 560 of file KeModel_impl.h.

References Model::_meshes, MultiField::addArray(), MultiFieldMatrix::addMatrix(), Mesh::getBoundaryFaceGroups(), Mesh::getCellCells(), Mesh::getCells(), StorageSite::getCount(), Mesh::getFaceCells(), Mesh::getInterfaceGroups(), LinearSystem::getMatrix(), LinearSystem::getX(), and FaceGroup::site.

561  {
562  const int numMeshes = _meshes.size();
563  for (int n=0; n<numMeshes; n++)
564  {
565  const Mesh& mesh = *_meshes[n];
566 
567  const StorageSite& cells = mesh.getCells();
569 
570  lse.getX().addArray(eIndex,_keFields.dissipation.getArrayPtr(cells));
571 
572  const CRConnectivity& cellCells = mesh.getCellCells();
573 
574  shared_ptr<Matrix> m(new CRMatrix<T,T,T>(cellCells));
575 
576  lse.getMatrix().addMatrix(eIndex,eIndex,m);
577 
578  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
579  {
580  const FaceGroup& fg = *fgPtr;
581  const StorageSite& faces = fg.site;
582 
583  MultiField::ArrayIndex fIndex(&_keFields.eFlux,&faces);
584  lse.getX().addArray(fIndex,_keFields.eFlux.getArrayPtr(faces));
585 
586  const CRConnectivity& faceCells = mesh.getFaceCells(faces);
587 
588  shared_ptr<Matrix> mft(new FluxJacobianMatrix<T,T>(faceCells));
589  lse.getMatrix().addMatrix(fIndex,eIndex,mft);
590 
591  shared_ptr<Matrix> mff(new DiagonalMatrix<T,T>(faces.getCount()));
592  lse.getMatrix().addMatrix(fIndex,fIndex,mff);
593  }
594  foreach(const FaceGroupPtr fgPtr, mesh.getInterfaceGroups())
595  {
596  const FaceGroup& fg = *fgPtr;
597  const StorageSite& faces = fg.site;
598 
599  MultiField::ArrayIndex fIndex(&_keFields.eFlux,&faces);
600  lse.getX().addArray(fIndex,_keFields.eFlux.getArrayPtr(faces));
601 
602  const CRConnectivity& faceCells = mesh.getFaceCells(faces);
603 
604  shared_ptr<Matrix> mft(new FluxJacobianMatrix<T,T>(faceCells));
605  lse.getMatrix().addMatrix(fIndex,eIndex,mft);
606 
607  shared_ptr<Matrix> mff(new DiagonalMatrix<T,T>(faces.getCount()));
608  lse.getMatrix().addMatrix(fIndex,fIndex,mff);
609  }
610 
611  }
612  }
const FaceGroupList & getBoundaryFaceGroups() const
Definition: Mesh.h:187
shared_ptr< FaceGroup > FaceGroupPtr
Definition: Mesh.h:46
Definition: Mesh.h:28
Definition: Mesh.h:49
pair< const Field *, const StorageSite * > ArrayIndex
Definition: MultiField.h:21
Field eFlux
Definition: KeFields.h:27
const CRConnectivity & getCellCells() const
Definition: Mesh.cpp:480
const StorageSite & getCells() const
Definition: Mesh.h:109
const CRConnectivity & getFaceCells(const StorageSite &site) const
Definition: Mesh.cpp:388
KeFields & _keFields
Definition: KeModel_impl.h:974
void addMatrix(const Index &rowI, const Index &colI, shared_ptr< Matrix > m)
int getCount() const
Definition: StorageSite.h:39
const MeshList _meshes
Definition: KeModel_impl.h:972
void addArray(const ArrayIndex &aIndex, shared_ptr< ArrayBase > a)
Definition: MultiField.cpp:270
const FaceGroupList & getInterfaceGroups() const
Definition: Mesh.h:190
MultiField & getX()
Definition: LinearSystem.h:32
shared_ptr< ArrayBase > getArrayPtr(const StorageSite &)
Definition: Field.cpp:63
Field dissipation
Definition: KeFields.h:18
MultiFieldMatrix & getMatrix()
Definition: LinearSystem.h:37
StorageSite site
Definition: Mesh.h:40
template<class T>
void KeModel< T >::Impl::initLinearizationk ( LinearSystem lsk)
inline

Definition at line 333 of file KeModel_impl.h.

References Model::_meshes, MultiField::addArray(), MultiFieldMatrix::addMatrix(), Mesh::getBoundaryFaceGroups(), Mesh::getCellCells(), Mesh::getCells(), StorageSite::getCount(), Mesh::getFaceCells(), Mesh::getInterfaceGroups(), LinearSystem::getMatrix(), LinearSystem::getX(), and FaceGroup::site.

334  {
335  const int numMeshes = _meshes.size();
336  for (int n=0; n<numMeshes; n++)
337  {
338  const Mesh& mesh = *_meshes[n];
339 
340  const StorageSite& cells = mesh.getCells();
341  MultiField::ArrayIndex kIndex(&_keFields.energy,&cells);
342 
343  lsk.getX().addArray(kIndex,_keFields.energy.getArrayPtr(cells));
344 
345  const CRConnectivity& cellCells = mesh.getCellCells();
346 
347  shared_ptr<Matrix> m(new CRMatrix<T,T,T>(cellCells));
348 
349  lsk.getMatrix().addMatrix(kIndex,kIndex,m);
350 
351  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
352  {
353  const FaceGroup& fg = *fgPtr;
354  const StorageSite& faces = fg.site;
355 
356  MultiField::ArrayIndex fIndex(&_keFields.kFlux,&faces);
357  lsk.getX().addArray(fIndex,_keFields.kFlux.getArrayPtr(faces));
358 
359  const CRConnectivity& faceCells = mesh.getFaceCells(faces);
360 
361  shared_ptr<Matrix> mft(new FluxJacobianMatrix<T,T>(faceCells));
362  lsk.getMatrix().addMatrix(fIndex,kIndex,mft);
363 
364  shared_ptr<Matrix> mff(new DiagonalMatrix<T,T>(faces.getCount()));
365  lsk.getMatrix().addMatrix(fIndex,fIndex,mff);
366  }
367 
368  foreach(const FaceGroupPtr fgPtr, mesh.getInterfaceGroups())
369  {
370  const FaceGroup& fg = *fgPtr;
371  const StorageSite& faces = fg.site;
372 
373  MultiField::ArrayIndex fIndex(&_keFields.kFlux,&faces);
374  lsk.getX().addArray(fIndex,_keFields.kFlux.getArrayPtr(faces));
375 
376  const CRConnectivity& faceCells = mesh.getFaceCells(faces);
377 
378  shared_ptr<Matrix> mft(new FluxJacobianMatrix<T,T>(faceCells));
379  lsk.getMatrix().addMatrix(fIndex,kIndex,mft);
380 
381  shared_ptr<Matrix> mff(new DiagonalMatrix<T,T>(faces.getCount()));
382  lsk.getMatrix().addMatrix(fIndex,fIndex,mff);
383  }
384 
385  }
386  }
const FaceGroupList & getBoundaryFaceGroups() const
Definition: Mesh.h:187
shared_ptr< FaceGroup > FaceGroupPtr
Definition: Mesh.h:46
Definition: Mesh.h:28
Definition: Mesh.h:49
Field energy
Definition: KeFields.h:16
pair< const Field *, const StorageSite * > ArrayIndex
Definition: MultiField.h:21
const CRConnectivity & getCellCells() const
Definition: Mesh.cpp:480
const StorageSite & getCells() const
Definition: Mesh.h:109
const CRConnectivity & getFaceCells(const StorageSite &site) const
Definition: Mesh.cpp:388
Field kFlux
Definition: KeFields.h:26
KeFields & _keFields
Definition: KeModel_impl.h:974
void addMatrix(const Index &rowI, const Index &colI, shared_ptr< Matrix > m)
int getCount() const
Definition: StorageSite.h:39
const MeshList _meshes
Definition: KeModel_impl.h:972
void addArray(const ArrayIndex &aIndex, shared_ptr< ArrayBase > a)
Definition: MultiField.cpp:270
const FaceGroupList & getInterfaceGroups() const
Definition: Mesh.h:190
MultiField & getX()
Definition: LinearSystem.h:32
shared_ptr< ArrayBase > getArrayPtr(const StorageSite &)
Definition: Field.cpp:63
MultiFieldMatrix & getMatrix()
Definition: LinearSystem.h:37
StorageSite site
Definition: Mesh.h:40
template<class T>
void KeModel< T >::Impl::linearizedissipation ( LinearSystem lse)
inline

Definition at line 615 of file KeModel_impl.h.

References Model::_meshes, BaseGenericBCS< X, Diag, OffDiag >::applyInterfaceBC(), KeBC< T >::bcType, LinearSystem::getB(), Mesh::getBoundaryFaceGroups(), Mesh::getCells(), StorageSite::getCount(), Mesh::getFaceCells(), Mesh::getInterfaceGroups(), LinearSystem::getMatrix(), MultiFieldMatrix::getMatrix(), FloatVarDict< T >::getVal(), LinearSystem::getX(), FaceGroup::id, Linearizer::linearize(), CRMatrix< T_Diag, T_OffDiag, X >::setDirichlet(), and FaceGroup::site.

616  {
617  //_velocityGradientModel.compute();
619 
620  DiscrList discretizations1;
621  if (_options.transient)
622  {
623 
624  shared_ptr<Discretization>
631  _options["timeStep"]));
632  discretizations1.push_back(td);
633 
634 }
635  shared_ptr<Discretization>
639  _keFields.c2,
641  discretizations1.push_back(dd);
642 
643  shared_ptr<Discretization>
650  _options.useCentralDifference));
651  discretizations1.push_back(cd);
652 
653 
654  shared_ptr<Discretization>
656  (_meshes,
657  _geomFields,
667  discretizations1.push_back(sd);
668 
669  shared_ptr<Discretization>
672 
673  discretizations1.push_back(dis);
674 
675  Linearizer linearizer;
676  linearizer.linearize(discretizations1,_meshes,lse.getMatrix(),
677  lse.getX(), lse.getB());
678 
679  const int numMeshes = _meshes.size();
680  for (int n=0; n<numMeshes; n++)
681  {
682  const Mesh& mesh = *_meshes[n];
683 
684  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
685  {
686  const FaceGroup& fg = *fgPtr;
687  const StorageSite& faces = fg.site;
688  // const int nFaces = faces.getCount();
689 
690  const KeBC<T>& bc = *_bcMap[fg.id];
691 
692 
693  GenericBCS<T,T,T> gbc(faces,mesh,
694  _geomFields,
697  lse.getMatrix(), lse.getX(), lse.getB());
698 
700  be(bc.getVal("specifiede"),faces);
701 
702  const StorageSite& cells = mesh.getCells();
703  const CRConnectivity& faceCells = mesh.getFaceCells(faces);
704  MultiFieldMatrix& MFMatrix = lse.getMatrix();
706  MultiField& b = lse.getB();
707  TArray& rCell = dynamic_cast<TArray&>(b[beIndex]);
708  T_Matrix& matrix = dynamic_cast<T_Matrix&>(MFMatrix.getMatrix(beIndex,beIndex));
709 
710  const TArray& faceAreaMag =dynamic_cast<const TArray &>(_geomFields.areaMag[faces]);
711 
712  const VectorT3Array& faceArea=dynamic_cast<const VectorT3Array&>(_geomFields.area[faces]);
713 
714  //const TArray& cellVolume = dynamic_cast<const TArray&>(_geomFields.volume[cells]);
715 
716  const VectorT3Array& faceCentroid =dynamic_cast<const VectorT3Array&> (_geomFields.coordinate[faces]);
717 
718  const VectorT3Array& cellCentroid = dynamic_cast<const VectorT3Array&>(_geomFields.coordinate[cells]);
719 
720  TArray& kCell = dynamic_cast< TArray&>(_keFields.energy[cells]);
721  TArray& eCell = dynamic_cast<TArray&>(_keFields.dissipation[cells]);
722  T cmu = _options.cmu;
723  T vonk = _options.vk;
724 
725  TArray& massFlux = dynamic_cast<TArray&>(_flowFields.massFlux[faces]);
726  const int nFaces = faces.getCount();
727 
728  // if (bc.bcType == "Specifiede")
729  if (bc.bcType == "Specifiedkandepsilon")
730  {
731  for(int f=0; f<nFaces; f++)
732  {
733  if (massFlux[f] > 0.)
734  gbc.applyExtrapolationBC(f);
735 
736  else
737  gbc.applyDirichletBC(f,be[f]);
738 
739  }
740 
741  }
742 
743  else if((bc.bcType == "Wall"))
744  {
745  for ( int f=0; f<nFaces; f++)
746  {
747 
748  const int c0 = faceCells(f,0);
749  // const int c1 = faceCells(f,1);
750  // T vol0 = cellVolume[c0];
751  // T vol1 = cellVolume[c1];
752  VectorT3 ds;
753  VectorT3 n = faceArea[f]/faceAreaMag[f];
754  /*
755  if (vol1==0)
756  ds =faceCentroid[f] - cellCentroid[c0];
757  else
758  ds = cellCentroid[c1]-faceCentroid[f];
759 
760  */
761  ds =faceCentroid[f] - cellCentroid[c0];
762  const T yp = ds[0]*n[0] + ds[1]*n[1] + ds[2]*n[2];
763  rCell[0] = T(0);
764  eCell[c0] = (pow(kCell[c0],1.5)*pow(cmu,0.75))/(vonk*yp);
765  matrix.setDirichlet(c0);
766 
767 
768  }
769 
770  }
771  else if ((bc.bcType == "PressureBoundary"))
772  {
773  for(int f=0; f<nFaces; f++)
774  {
775  if (massFlux[f] > 0.)
776  {
777  gbc.applyExtrapolationBC(f);
778  }
779  else
780  {
781  gbc.applyDirichletBC(f,be[f]);
782  }
783  }
784  }
785 
786  else if ((bc.bcType == "Symmetry"))
787  {
788  gbc.applySymmetryBC();
789  }
790  else
791  throw CException(bc.bcType + " not implemented for KeModel");
792  }
793 
794  foreach(const FaceGroupPtr fgPtr, mesh.getInterfaceGroups())
795  {
796  const FaceGroup& fg = *fgPtr;
797  const StorageSite& faces = fg.site;
798  GenericBCS<T,T,T> gbc(faces,mesh,
799  _geomFields,
802  lse.getMatrix(), lse.getX(), lse.getB());
803 
804  gbc.applyInterfaceBC();
805 
806 
807  }
808  }
809  DiscrList discretizations3;
810  shared_ptr<Discretization>
811  ud1(new Underrelaxer<T,T,T>
813  _options["dissipationURF"]));
814 
815  discretizations3.push_back(ud1);
816 
817  linearizer.linearize(discretizations3,_meshes,lse.getMatrix(),
818  lse.getX(), lse.getB());
819 
820 }
Array< T > TArray
Definition: KeModel_impl.h:37
const FaceGroupList & getBoundaryFaceGroups() const
Definition: Mesh.h:187
Matrix & getMatrix(const Index &rowIndex, const Index &colIndex)
shared_ptr< FaceGroup > FaceGroupPtr
Definition: Mesh.h:46
Field coordinate
Definition: GeomFields.h:19
KeBCMap _bcMap
Definition: KeModel_impl.h:977
CRMatrix< T, T, T > T_Matrix
Definition: KeModel_impl.h:46
Definition: Mesh.h:28
Field velocityGradient
Definition: FlowFields.h:18
Definition: KeBC.h:9
string bcType
Definition: KeBC.h:17
Definition: Mesh.h:49
Field dissipationN2
Definition: KeFields.h:32
Field eddyviscosity
Definition: FlowFields.h:31
FloatVal< T > getVal(const string varName) const
Definition: FloatVarDict.h:85
Field energy
Definition: KeFields.h:16
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
const int id
Definition: Mesh.h:41
GradientModel< T > _dissipationGradientModel
Definition: KeModel_impl.h:983
pair< const Field *, const StorageSite * > ArrayIndex
Definition: MultiField.h:21
Field eFlux
Definition: KeFields.h:27
Field sourcec
Definition: KeFields.h:35
vector< shared_ptr< Discretization > > DiscrList
Field continuityResidual
Definition: FlowFields.h:23
const StorageSite & getCells() const
Definition: Mesh.h:109
void applyInterfaceBC(const int f) const
Definition: GenericBCS.h:325
const GeomFields & _geomFields
Definition: KeModel_impl.h:973
const CRConnectivity & getFaceCells(const StorageSite &site) const
Definition: Mesh.cpp:388
KeFields & _keFields
Definition: KeModel_impl.h:974
Field sourced
Definition: KeFields.h:34
Field dissipationGradient
Definition: KeFields.h:19
Field density
Definition: FlowFields.h:22
Field c2
Definition: KeFields.h:21
int getCount() const
Definition: StorageSite.h:39
MultiField & getB()
Definition: LinearSystem.h:33
const MeshList _meshes
Definition: KeModel_impl.h:972
Field area
Definition: GeomFields.h:23
const FaceGroupList & getInterfaceGroups() const
Definition: Mesh.h:190
MultiField & getX()
Definition: LinearSystem.h:32
Field dissipationN1
Definition: KeFields.h:31
Field areaMag
Definition: GeomFields.h:25
Field sourcep
Definition: KeFields.h:36
FlowFields & _flowFields
Definition: KeModel_impl.h:975
Field dissipation
Definition: KeFields.h:18
virtual void linearize(DiscrList &discretizations, const MeshList &meshes, MultiFieldMatrix &matrix, MultiField &x, MultiField &b)
Definition: Linearizer.cpp:17
MultiFieldMatrix & getMatrix()
Definition: LinearSystem.h:37
Field velocity
Definition: FlowFields.h:15
StorageSite site
Definition: Mesh.h:40
Field massFlux
Definition: FlowFields.h:17
template<class T>
void KeModel< T >::Impl::linearizeenergy ( LinearSystem lsk)
inline

Definition at line 388 of file KeModel_impl.h.

References Model::_meshes, BaseGenericBCS< X, Diag, OffDiag >::applyInterfaceBC(), KeBC< T >::bcType, LinearSystem::getB(), Mesh::getBoundaryFaceGroups(), StorageSite::getCount(), Mesh::getInterfaceGroups(), LinearSystem::getMatrix(), FloatVarDict< T >::getVal(), LinearSystem::getX(), FaceGroup::id, Linearizer::linearize(), and FaceGroup::site.

389  {
390  //_velocityGradientModel.compute();
392  DiscrList discretizations;
393 
394  if (_options.transient)
395  {
396 
397  shared_ptr<Discretization>
404  _options["timeStep"]));
405 
406  discretizations.push_back(td);
407  }
408 
409  shared_ptr<Discretization>
413  _keFields.c1,
415  discretizations.push_back(dd);
416 
417  shared_ptr<Discretization>
424  _options.useCentralDifference));
425  discretizations.push_back(cd);
426 
427 
428  shared_ptr<Discretization>
430  (_meshes,
431  _geomFields,
432  _keFields.energy,
439  discretizations.push_back(sd);
440 
441  shared_ptr<Discretization>
444 
445  discretizations.push_back(ene);
446 
447  Linearizer linearizer;
448 
449  linearizer.linearize(discretizations,_meshes,lsk.getMatrix(),
450  lsk.getX(), lsk.getB());
451 
452  const int numMeshes = _meshes.size();
453  for (int n=0; n<numMeshes; n++)
454  {
455  const Mesh& mesh = *_meshes[n];
456 
457  foreach(const FaceGroupPtr fgPtr, mesh.getBoundaryFaceGroups())
458  {
459  const FaceGroup& fg = *fgPtr;
460  const StorageSite& faces = fg.site;
461  const KeBC<T>& bc = *_bcMap[fg.id];
462 
463  GenericBCS<T,T,T> gbc(faces,mesh,
464  _geomFields,
467  lsk.getMatrix(), lsk.getX(), lsk.getB());
468 
470  bk(bc.getVal("Specifiedk"),faces);
471  TArray& massFlux = dynamic_cast<TArray&>(_flowFields.massFlux[faces]);
472  const int nFaces = faces.getCount();
473 
474 
475 
476  // if (bc.bcType == "Specifiedk")
477  if ( bc.bcType == "Specifiedkandepsilon")
478  {
479  for(int f=0; f<nFaces; f++)
480  {
481 
482  //cout << "massflux" << massFlux[f] << endl;
483 
484  if (massFlux[f] > 0.)
485  {
486  gbc.applyExtrapolationBC(f);
487  }
488  else
489  {
490  gbc.applyDirichletBC(f,bk[f]);
491  }
492  }
493 
494  }
495 
496  else if ((bc.bcType == "Wall"))
497  {
498  for(int f=0; f<nFaces; f++)
499  {
500 
501  gbc.applyNeumannBC(f,0);
502  }
503  }
504  else if ((bc.bcType == "PressureBoundary"))
505  {
506  for(int f=0; f<nFaces; f++)
507  {
508 
509  if (massFlux[f] > 0.)
510  {
511  gbc.applyExtrapolationBC(f);
512  }
513  else
514  {
515  gbc.applyDirichletBC(f,bk[f]);
516  }
517  }
518  }
519 
520 
521 
522 
523  else if ((bc.bcType == "Symmetry"))
524  {
525  cout <<"nfaces" << nFaces << endl;
526 
527  gbc.applySymmetryBC();
528  }
529  else
530  throw CException(bc.bcType + " not implemented for KeModel");
531  }
532 
533  foreach(const FaceGroupPtr fgPtr, mesh.getInterfaceGroups())
534  {
535  const FaceGroup& fg = *fgPtr;
536  const StorageSite& faces = fg.site;
537  GenericBCS<T,T,T> gbc(faces,mesh,
538  _geomFields,
541  lsk.getMatrix(), lsk.getX(), lsk.getB());
542 
543  gbc.applyInterfaceBC();
544 
545  }
546  }
547  DiscrList discretizations2;
548  shared_ptr<Discretization>
549  ud(new Underrelaxer<T,T,T>
551  _options["energyURF"]));
552 
553  discretizations2.push_back(ud);
554 
555  linearizer.linearize(discretizations2,_meshes,lsk.getMatrix(),
556  lsk.getX(), lsk.getB());
557 
558  }
Array< T > TArray
Definition: KeModel_impl.h:37
const FaceGroupList & getBoundaryFaceGroups() const
Definition: Mesh.h:187
shared_ptr< FaceGroup > FaceGroupPtr
Definition: Mesh.h:46
KeBCMap _bcMap
Definition: KeModel_impl.h:977
Definition: Mesh.h:28
Field velocityGradient
Definition: FlowFields.h:18
Field energyN2
Definition: KeFields.h:29
Definition: KeBC.h:9
string bcType
Definition: KeBC.h:17
Definition: Mesh.h:49
Field eddyviscosity
Definition: FlowFields.h:31
FloatVal< T > getVal(const string varName) const
Definition: FloatVarDict.h:85
Field energyGradient
Definition: KeFields.h:17
Field energy
Definition: KeFields.h:16
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
const int id
Definition: Mesh.h:41
Field c1
Definition: KeFields.h:20
vector< shared_ptr< Discretization > > DiscrList
Field continuityResidual
Definition: FlowFields.h:23
void applyInterfaceBC(const int f) const
Definition: GenericBCS.h:325
const GeomFields & _geomFields
Definition: KeModel_impl.h:973
Field kFlux
Definition: KeFields.h:26
KeFields & _keFields
Definition: KeModel_impl.h:974
Field density
Definition: FlowFields.h:22
int getCount() const
Definition: StorageSite.h:39
MultiField & getB()
Definition: LinearSystem.h:33
const MeshList _meshes
Definition: KeModel_impl.h:972
const FaceGroupList & getInterfaceGroups() const
Definition: Mesh.h:190
MultiField & getX()
Definition: LinearSystem.h:32
Field sourcek
Definition: KeFields.h:33
FlowFields & _flowFields
Definition: KeModel_impl.h:975
Field dissipation
Definition: KeFields.h:18
Field energyN1
Definition: KeFields.h:28
virtual void linearize(DiscrList &discretizations, const MeshList &meshes, MultiFieldMatrix &matrix, MultiField &x, MultiField &b)
Definition: Linearizer.cpp:17
MultiFieldMatrix & getMatrix()
Definition: LinearSystem.h:37
Field velocity
Definition: FlowFields.h:15
GradientModel< T > _energyGradientModel
Definition: KeModel_impl.h:982
StorageSite site
Definition: Mesh.h:40
Field massFlux
Definition: FlowFields.h:17
template<class T>
void KeModel< T >::Impl::printBCs ( )
inline

Definition at line 958 of file KeModel_impl.h.

959  {
960  foreach(typename KeBCMap::value_type& pos, _bcMap)
961  {
962  cout << "Face Group " << pos.first << ":" << endl;
963  cout << " bc type " << pos.second->bcType << endl;
964  foreach(typename KeBC<T>::value_type& vp, *pos.second)
965  {
966  cout << " " << vp.first << " " << vp.second.constant << endl;
967  }
968  }
969  }
KeBCMap _bcMap
Definition: KeModel_impl.h:977
Definition: KeBC.h:9
template<class T>
void KeModel< T >::Impl::updateTimee ( )
inline

Definition at line 307 of file KeModel_impl.h.

References Model::_meshes, and Mesh::getCells().

308  {
309  const int numMeshes = _meshes.size();
310  for (int n=0; n<numMeshes; n++)
311  {
312  const Mesh& mesh = *_meshes[n];
313 
314  const StorageSite& cells = mesh.getCells();
315  TArray& e =
316  dynamic_cast<TArray&>(_keFields.dissipation[cells]);
317  TArray& eN1 =
318  dynamic_cast<TArray&>(_keFields.dissipationN1[cells]);
319 
320  if (_options.timeDiscretizationOrder > 1)
321  {
322  TArray& eN2 =
323  dynamic_cast<TArray&>(_keFields.dissipationN2[cells]);
324  eN2 = eN1;
325  }
326  eN1 = e;
327  }
328  }
Array< T > TArray
Definition: KeModel_impl.h:37
Definition: Mesh.h:49
Field dissipationN2
Definition: KeFields.h:32
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
const StorageSite & getCells() const
Definition: Mesh.h:109
KeFields & _keFields
Definition: KeModel_impl.h:974
const MeshList _meshes
Definition: KeModel_impl.h:972
Field dissipationN1
Definition: KeFields.h:31
Field dissipation
Definition: KeFields.h:18
template<class T>
void KeModel< T >::Impl::updateTimek ( )
inline

Definition at line 280 of file KeModel_impl.h.

References Model::_meshes, and Mesh::getCells().

281  {
282  const int numMeshes = _meshes.size();
283  for (int n=0; n<numMeshes; n++)
284  {
285  const Mesh& mesh = *_meshes[n];
286 
287  const StorageSite& cells = mesh.getCells();
288  TArray& k =
289  dynamic_cast<TArray&>(_keFields.energy[cells]);
290  TArray& kN1 =
291  dynamic_cast<TArray&>(_keFields.energyN1[cells]);
292 
293  if (_options.timeDiscretizationOrder > 1)
294  {
295  TArray& kN2 =
296  dynamic_cast<TArray&>(_keFields.energyN2[cells]);
297  kN2 = kN1;
298  }
299  kN1 = k;
300 
301  }
302  }
Array< T > TArray
Definition: KeModel_impl.h:37
Field energyN2
Definition: KeFields.h:29
Definition: Mesh.h:49
Field energy
Definition: KeFields.h:16
KeModelOptions< T > _options
Definition: KeModel_impl.h:980
const StorageSite & getCells() const
Definition: Mesh.h:109
KeFields & _keFields
Definition: KeModel_impl.h:974
const MeshList _meshes
Definition: KeModel_impl.h:972
Field energyN1
Definition: KeFields.h:28

Member Data Documentation

template<class T>
KeBCMap KeModel< T >::Impl::_bcMap
private

Definition at line 977 of file KeModel_impl.h.

template<class T>
GradientModel<T> KeModel< T >::Impl::_dissipationGradientModel
private

Definition at line 983 of file KeModel_impl.h.

template<class T>
GradientModel<T> KeModel< T >::Impl::_energyGradientModel
private

Definition at line 982 of file KeModel_impl.h.

template<class T>
FlowFields& KeModel< T >::Impl::_flowFields
private

Definition at line 975 of file KeModel_impl.h.

template<class T>
const GeomFields& KeModel< T >::Impl::_geomFields
private

Definition at line 973 of file KeModel_impl.h.

template<class T>
MFRPtr KeModel< T >::Impl::_initialNorm
private

Definition at line 985 of file KeModel_impl.h.

template<class T>
MFRPtr KeModel< T >::Impl::_initialNormk
private

Definition at line 984 of file KeModel_impl.h.

template<class T>
KeFields& KeModel< T >::Impl::_keFields
private

Definition at line 974 of file KeModel_impl.h.

template<class T>
const MeshList KeModel< T >::Impl::_meshes
private

Definition at line 972 of file KeModel_impl.h.

template<class T>
int KeModel< T >::Impl::_niters
private

Definition at line 986 of file KeModel_impl.h.

template<class T>
KeModelOptions<T> KeModel< T >::Impl::_options
private

Definition at line 980 of file KeModel_impl.h.

template<class T>
KeVCMap KeModel< T >::Impl::_vcMap
private

Definition at line 979 of file KeModel_impl.h.


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