Memosa-FVM  0.2
SourceDiscretization.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 _SOURCEDISCRETIZATION_H_
6 #define _SOURCEDISCRETIZATION_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 "CRMatrixRect.h"
16 
17 template<class X>
19 {
20 public:
21 
23 
24  typedef Array<X> XArray;
25 
27 
29  const GeomFields& geomFields,
30  const Field& varField,
31  const Field& sourceField) :
32  Discretization(meshes),
33  _geomFields(geomFields),
34  _varField(varField),
35  _sourceField(sourceField)
36  {}
37 
38 
39  void discretize(const Mesh& mesh, MultiFieldMatrix& mfmatrix,
40  MultiField&, MultiField& rField)
41  {
42  const StorageSite& cells = mesh.getCells();
43 
44  const TArray& cellVolume = dynamic_cast<const TArray&>(_geomFields.volume[cells]);
45 
46  const XArray& source = dynamic_cast<const XArray&>(_sourceField[cells]);
47 
48  const MultiField::ArrayIndex cVarIndex(&_varField, &cells);
49 
50  XArray& rCell = dynamic_cast<XArray&>(rField[cVarIndex]);
51 
52  const int nCells = cells.getSelfCount();
53 
54  for(int c=0; c<nCells; c++)
55  {
56  rCell[c] += cellVolume[c]*source[c];
57  }
58  }
59 
60 
61 private:
63  const Field& _varField;
65 };
66 
67 #endif
int getSelfCount() const
Definition: StorageSite.h:40
Definition: Field.h:14
Array< T_Scalar > TArray
const GeomFields & _geomFields
Definition: Mesh.h:49
SourceDiscretization(const MeshList &meshes, const GeomFields &geomFields, const Field &varField, const Field &sourceField)
pair< const Field *, const StorageSite * > ArrayIndex
Definition: MultiField.h:21
const StorageSite & getCells() const
Definition: Mesh.h:109
Field volume
Definition: GeomFields.h:26
void discretize(const Mesh &mesh, MultiFieldMatrix &mfmatrix, MultiField &, MultiField &rField)
NumTypeTraits< X >::T_Scalar T_Scalar
vector< Mesh * > MeshList
Definition: Mesh.h:439