Memosa-FVM  0.2
Matrix.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 _MATRIX_H_
6 #define _MATRIX_H_
7 
8 #include "misc.h"
9 
10 class IContainer;
11 class StorageSite;
12 class CRConnectivity;
13 class LinearSystemMerger;
14 class SpikeStorage;
15 class ArrayBase;
16 class Matrix
17 {
18 public:
19  Matrix();
20  virtual ~Matrix();
21 
22  DEFINE_TYPENAME("Matrix");
23 
24  virtual void initAssembly() = 0;
25 
26  virtual void multiply(IContainer& yB, const IContainer& xB) const;
27  virtual void multiplyAndAdd(IContainer& yB, const IContainer& xB) const;
28  virtual shared_ptr<ArrayBase> quadProduct(const IContainer& xB) const {throw;}
29 
30  virtual void forwardGS(IContainer& xB, IContainer& bB,
31  IContainer& residual) const;
32  virtual void reverseGS(IContainer& xB, IContainer& bB,
33  IContainer& residual) const;
34  virtual void Jacobi(IContainer& xnew, const IContainer& xold,
35  const IContainer& b) const;
36  virtual void iluSolve(IContainer& xB, const IContainer& bB,
37  const IContainer& residual) const;
38  virtual void spikeSolve(IContainer& xB, const IContainer& bB,
39  const IContainer& residual, const SpikeStorage& spike_storage) const;
40  virtual void solveBoundary(IContainer& xB, IContainer& bB,
41  IContainer& residual) const;
42  virtual void computeResidual(const IContainer& xB, const IContainer& bB,
43  IContainer& residual) const;
44 
45  virtual int createCoarsening(IContainer& coarseIndex, const int groupSize,
46  const double weighRatioThreshold);
47 
48  virtual const CRConnectivity& getConnectivity( ) const {throw;}
49 
50  virtual void eliminateBoundaryEquations(IContainer& xB) {throw;}
51  virtual void printRow(const int nr) const {throw;}
52 
53  virtual void *getDiagData() const {throw;}
54  virtual void *getOffDiagData() const {throw;}
55  virtual int getDiagDataSize() const {throw;}
56  virtual int getOffDiagDataSize() const {throw;}
57  virtual shared_ptr<Matrix> createMergeMatrix( const LinearSystemMerger& mergeLS ) { throw;}
58 
59  virtual void setFlatMatrix(Matrix& fmg) const {throw;}
60 
61  virtual void transpose() {throw;}
62 
63  virtual shared_ptr<CRConnectivity>
64  createCoarseConnectivity(const IContainer& coarseIndex,
65  const CRConnectivity& coarseToFine,
66  const StorageSite& coarseRowSite,
67  const StorageSite& coarseColSite);
68  virtual shared_ptr<Matrix>
69  createCoarseMatrix(const IContainer& coarseIndex,
70  const CRConnectivity& coarseToFine,
71  const CRConnectivity& coarseConnectivity);
72 
73  virtual bool isInvertible() {return false;}
74 
75  //virtual void setDirichlet(const int nr);
76 };
77 
78 
79 #endif
virtual void transpose()
Definition: Matrix.h:61
virtual void setFlatMatrix(Matrix &fmg) const
Definition: Matrix.h:59
virtual void * getOffDiagData() const
Definition: Matrix.h:54
Matrix()
Definition: Matrix.cpp:8
virtual shared_ptr< CRConnectivity > createCoarseConnectivity(const IContainer &coarseIndex, const CRConnectivity &coarseToFine, const StorageSite &coarseRowSite, const StorageSite &coarseColSite)
Definition: Matrix.cpp:23
virtual const CRConnectivity & getConnectivity() const
Definition: Matrix.h:48
virtual int getOffDiagDataSize() const
Definition: Matrix.h:56
virtual void multiplyAndAdd(IContainer &yB, const IContainer &xB) const
Definition: Matrix.cpp:46
DEFINE_TYPENAME("Matrix")
virtual void printRow(const int nr) const
Definition: Matrix.h:51
virtual void iluSolve(IContainer &xB, const IContainer &bB, const IContainer &residual) const
Definition: Matrix.cpp:69
virtual void spikeSolve(IContainer &xB, const IContainer &bB, const IContainer &residual, const SpikeStorage &spike_storage) const
Definition: Matrix.cpp:74
virtual void Jacobi(IContainer &xnew, const IContainer &xold, const IContainer &b) const
Definition: Matrix.cpp:63
virtual shared_ptr< Matrix > createCoarseMatrix(const IContainer &coarseIndex, const CRConnectivity &coarseToFine, const CRConnectivity &coarseConnectivity)
Definition: Matrix.cpp:32
virtual bool isInvertible()
Definition: Matrix.h:73
Definition: Matrix.h:16
virtual void multiply(IContainer &yB, const IContainer &xB) const
Definition: Matrix.cpp:40
virtual void forwardGS(IContainer &xB, IContainer &bB, IContainer &residual) const
Definition: Matrix.cpp:51
virtual void eliminateBoundaryEquations(IContainer &xB)
Definition: Matrix.h:50
virtual void reverseGS(IContainer &xB, IContainer &bB, IContainer &residual) const
Definition: Matrix.cpp:57
virtual int getDiagDataSize() const
Definition: Matrix.h:55
virtual void solveBoundary(IContainer &xB, IContainer &bB, IContainer &residual) const
Definition: Matrix.cpp:81
virtual shared_ptr< Matrix > createMergeMatrix(const LinearSystemMerger &mergeLS)
Definition: Matrix.h:57
virtual void * getDiagData() const
Definition: Matrix.h:53
virtual int createCoarsening(IContainer &coarseIndex, const int groupSize, const double weighRatioThreshold)
Definition: Matrix.cpp:16
virtual void computeResidual(const IContainer &xB, const IContainer &bB, IContainer &residual) const
Definition: Matrix.cpp:87
virtual shared_ptr< ArrayBase > quadProduct(const IContainer &xB) const
Definition: Matrix.h:28
virtual void initAssembly()=0
virtual ~Matrix()
Definition: Matrix.cpp:11