dune-composites (2.5.1)

solver_info.hh
1#ifndef SOLVER_INFO_HH
2#define SOLVER_INFO_HH
3
4namespace Dune{
5 namespace Composites{
6
7 class SolverInfo{
8
9 public:
10 int verb;
11 int MaxIt;
12 double KrylovTol;
13 double eigenvalue_threshold;
14 bool widlund_part_unity;
15 int nev;
16 int nev_arpack;
17 double eigen_shift;
18 std::vector<double> times;
19 Dune::InverseOperatorResult results;
20 std::string solver, preconditioner, subdomainSolver, coarseSolver;
21 int overlap;
22 bool coarseSpaceActive;
23
24 SolverInfo(int verb_ = 0): verb(verb_){
25
26 solver = "CG";
27 preconditioner = "GenEO";
28 subdomainSolver = "UMFPack";
29 coarseSolver = "UMFPack";
30
31 // Default Solver Options for Domain Decomposition Solver
32 overlap = 2;
33
34 // Default Krylov Solver Options
35 MaxIt = 1000;
36 KrylovTol = 1e-5;
37
38 // Default GenEO Preconditioner Options
39 verb = 10;
40 eigenvalue_threshold = 0.2;
41 widlund_part_unity = true;
42 nev = 10; // Number of eigenvalues used
43 nev_arpack = 10; // Use ArPack's inbuilt error estimator
44 eigen_shift = 0.001;
45
46 }
47
48 void inline setTimes(std::vector<double>& t){
49 times.resize(t.size());
50 t = times;
51 }
52
53 void inline recordResult(Dune::InverseOperatorResult& res){
54 results.clear();
55 results.iterations = res.iterations;
56 results.reduction = res.reduction;
57 results.converged = res.converged;
58 results.conv_rate = res.conv_rate;
59 results.elapsed = res.elapsed;
60 }
61
62 bool inline converged(){return results.converged;}
63 };
64 }
65}
66
67#endif
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Sep 5, 22:35, 2025)