Memosa-FVM  0.2
LinearSystem.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 _LINEARSYSTEM_H_
6 #define _LINEARSYSTEM_H_
7 
8 #include "MultiFieldMatrix.h"
9 
10 
12 {
13 public:
14 
15  friend class LinearSystemMerger;
16 
17  LinearSystem();
18 
19  virtual ~LinearSystem();
20 
21  void initAssembly();
22 
23  void initSolve();
24 
25  void postSolve();
26 
27  void updateSolution();
28 
29  shared_ptr<LinearSystem>
30  createCoarse(const int groupSize, const double weightRatioThreshold);
31 
32  MultiField& getX() {return *_x;}
33  MultiField& getB() {return *_b;}
34  MultiField& getDelta() {return *_delta;}
36 
38 
40 
41  shared_ptr<MultiField> getDeltaPtr() {return _delta;}
42  shared_ptr<MultiField> getBPtr() {return _b;}
43 
44  void replaceDelta(shared_ptr<MultiField> newDelta) {_delta=newDelta;}
45  void replaceB(shared_ptr<MultiField> newB) {_b=newB;}
46  void replaceResidual(shared_ptr<MultiField> newR) {_residual=newR;}
47 
49 
51 
52 private:
54  shared_ptr<MultiField> _x;
55  shared_ptr<MultiField> _b;
56  shared_ptr<MultiField> _delta;
57  shared_ptr<MultiField> _residual;
60  shared_ptr<MultiField> _xAux;
61  shared_ptr<MultiField> _bAux;
62  shared_ptr<MultiField> _deltaAux;
63  shared_ptr<MultiField> _residualAux;
64 };
65 #endif
void replaceResidual(shared_ptr< MultiField > newR)
Definition: LinearSystem.h:46
shared_ptr< MultiField > _delta
Definition: LinearSystem.h:56
void initAssembly()
MultiField & getResidual()
Definition: LinearSystem.h:35
Definition: Field.h:14
shared_ptr< MultiField > _b
Definition: LinearSystem.h:55
shared_ptr< MultiField > _x
Definition: LinearSystem.h:54
MultiField & getCoarseIndex()
Definition: LinearSystem.h:39
void replaceB(shared_ptr< MultiField > newB)
Definition: LinearSystem.h:45
MultiField & getDelta()
Definition: LinearSystem.h:34
friend class LinearSystemMerger
Definition: LinearSystem.h:15
shared_ptr< MultiField > _residual
Definition: LinearSystem.h:57
shared_ptr< MultiField > _bAux
Definition: LinearSystem.h:61
void updateSolution()
void initSolve()
shared_ptr< MultiField > getDeltaPtr()
Definition: LinearSystem.h:41
shared_ptr< MultiField > _residualAux
Definition: LinearSystem.h:63
shared_ptr< LinearSystem > createCoarse(const int groupSize, const double weightRatioThreshold)
MultiField _coarseIndex
Definition: LinearSystem.h:58
shared_ptr< MultiField > _xAux
Definition: LinearSystem.h:60
MultiFieldMatrix _matrix
Definition: LinearSystem.h:53
MultiField & getB()
Definition: LinearSystem.h:33
const Field * _coarseningField
Definition: LinearSystem.h:59
MultiField & getX()
Definition: LinearSystem.h:32
shared_ptr< MultiField > _deltaAux
Definition: LinearSystem.h:62
virtual ~LinearSystem()
bool isSymmetric
Definition: LinearSystem.h:50
void replaceDelta(shared_ptr< MultiField > newDelta)
Definition: LinearSystem.h:44
shared_ptr< MultiField > getBPtr()
Definition: LinearSystem.h:42
MultiFieldMatrix & getMatrix()
Definition: LinearSystem.h:37
void setCoarseningField(const Field &f)
Definition: LinearSystem.h:48