dune-pdelab 2.7-git
Loading...
Searching...
No Matches
solver.hh
Go to the documentation of this file.
1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=8 sw=2 sts=2:
3#ifndef DUNE_PDELAB_BACKEND_SOLVER_HH
4#define DUNE_PDELAB_BACKEND_SOLVER_HH
5
6#include <dune/common/fvector.hh>
8
9namespace Dune {
10 namespace PDELab {
11
15
17 {
21 template<class V>
22 typename Dune::template FieldTraits<typename V::ElementType >::real_type norm(const V& v) const
23 {
24 return v.two_norm();
25 }
26 };
27
28 // Status information of a linear solver
29 template<class RFType>
31 {
32 bool converged; // Solver converged
33 unsigned int iterations; // number of iterations
34 double elapsed; // total user time in seconds
35 RFType reduction; // defect reduction
36 RFType conv_rate; // convergence rate (average reduction per step)
37
39 {
40 clear();
41 }
42
43 void clear()
44 {
45 converged = false;
46 iterations = 0;
47 elapsed = 0.0;
48 reduction = 0.0;
49 conv_rate = 0.0;
50 }
51 };
52
54 {
55 public:
58 {
59 return res;
60 }
61
62 protected:
64 };
65
67
68
69 template <typename LS, typename = void>
70 struct LinearSolverHasIsMatrixFree : std::false_type {};
71
73 template <typename LS>
74 struct LinearSolverHasIsMatrixFree<LS, std::void_t<decltype(std::declval<LS>().isMatrixFree)>> : std::true_type {};
75
80 template <typename LS>
81 constexpr bool linearSolverIsMatrixFree(){
83 if constexpr (LS::isMatrixFree){
84 return true;
85 }
86 }
87 else{
88 return false;
89 }
90 }
91
92 } // end namespace PDELab
93} // end namespace Dune
94
95
96#endif // DUNE_PDELAB_BACKEND_SOLVER_HH
STL namespace.
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
constexpr bool linearSolverIsMatrixFree()
Function that checks if a linear solver is matrix-free.
Definition: solver.hh:81
Definition: solver.hh:17
Dune::template FieldTraits< typenameV::ElementType >::real_type norm(const V &v) const
compute global norm of a vector
Definition: solver.hh:22
Definition: solver.hh:31
void clear()
Definition: solver.hh:43
RFType conv_rate
Definition: solver.hh:36
bool converged
Definition: solver.hh:32
RFType reduction
Definition: solver.hh:35
LinearSolverResult()
Definition: solver.hh:38
unsigned int iterations
Definition: solver.hh:33
double elapsed
Definition: solver.hh:34
Definition: solver.hh:54
Dune::PDELab::LinearSolverResult< double > res
Definition: solver.hh:63
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: solver.hh:57