source: src/solver/solver.hpp@ e271f0

Last change on this file since e271f0 was fcf7f6, checked in by Julian Iseringhausen <isering@…>, 14 years ago

vmg: Added license files and headers (GPLv3).

git-svn-id: https://svn.version.fz-juelich.de/scafacos/trunk@1812 5161e1c8-67bf-11de-9fd5-51895aff932f

  • Property mode set to 100644
File size: 1.9 KB
Line 
1/*
2 * vmg - a versatile multigrid solver
3 * Copyright (C) 2012 Institute for Numerical Simulation, University of Bonn
4 *
5 * vmg is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * vmg is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19/**
20 * @file solver.hpp
21 * @author Julian Iseringhausen <isering@ins.uni-bonn.de>
22 * @date Mon Apr 18 13:11:14 2011
23 *
24 * @brief VMG::Solver
25 *
26 */
27
28#ifndef SOLVER_HPP_
29#define SOLVER_HPP_
30
31#include <vector>
32
33#include "base/discretization.hpp"
34#include "base/object.hpp"
35#include "base/stencil.hpp"
36#include "comm/comm.hpp"
37#include "grid/grid.hpp"
38#include "mg.hpp"
39
40namespace VMG
41{
42
43class Solver : public Object
44{
45public:
46 Solver()
47 {
48 size = 0;
49 }
50
51 Solver(int size) :
52 size(size)
53 {
54 this->Realloc(size);
55 }
56
57 virtual ~Solver()
58 {
59 }
60
61 void Run(Grid& sol, Grid& rhs);
62
63 void Realloc(int n);
64 void Realloc(Grid& x);
65
66 vmg_float& Mat(int i, int j)
67 {
68 return A[j+size*i];
69 }
70
71 vmg_float& Rhs(int i)
72 {
73 return b[i];
74 }
75
76 vmg_float& Sol(int i)
77 {
78 return x[i];
79 }
80
81 const int& Size() const {return size;}
82
83protected:
84 virtual void Compute() = 0; ///< Solves the system of equations
85
86private:
87 virtual void AssembleMatrix(const Grid& rhs) = 0; ///< Assembles all matrices and vectors.
88 virtual void ExportSol(Grid& sol, Grid& rhs) = 0; ///< Exports the solution back to a given mesh.
89
90 std::vector<vmg_float> A, b, x;
91 int size;
92};
93
94}
95
96#endif
Note: See TracBrowser for help on using the repository browser.