source: src/solver/solver.cpp@ 06e153

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

Merge recent changes of the vmg library into ScaFaCos.

Includes a fix for the communication problems on Jugene.

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

  • Property mode set to 100644
File size: 931 bytes
Line 
1/**
2 * @file solver.cpp
3 * @author Julian Iseringhausen <isering@ins.uni-bonn.de>
4 * @date Mon Apr 18 13:10:55 2011
5 *
6 * @brief VMG::Solver
7 *
8 */
9
10#ifdef HAVE_CONFIG_H
11#include <config.h>
12#endif
13
14#include "solver/solver.hpp"
15
16using namespace VMG;
17
18void Solver::Run(Grid& sol, Grid& rhs)
19{
20#ifdef DEBUG_MATRIX_CHECKS
21 sol.IsConsistent();
22 rhs.IsConsistent();
23#endif
24
25#ifdef DEBUG
26 sol.IsCompatible(rhs);
27#endif
28
29 if (rhs.Global().LocalSize().Product() > 0) {
30 this->Realloc(rhs);
31 this->AssembleMatrix(rhs);
32 this->Compute();
33 this->ExportSol(sol, rhs);
34 }
35}
36
37void Solver::Realloc(int n)
38{
39 //Reallocate memory if necessary
40 this->size = n;
41
42 if (static_cast<int>(A.size()) < n*n)
43 A.resize(n*n);
44
45 if (static_cast<int>(b.size()) < n)
46 b.resize(n);
47
48 if (static_cast<int>(x.size()) < n)
49 x.resize(n);
50}
51
52void Solver::Realloc(Grid& sol)
53{
54 this->Realloc(sol.Global().GlobalSize().Product());
55}
Note: See TracBrowser for help on using the repository browser.