17 #ifndef __deal2__solver_bicgstab_h 18 #define __deal2__solver_bicgstab_h 21 #include <deal.II/base/config.h> 22 #include <deal.II/base/logstream.h> 23 #include <deal.II/lac/solver.h> 24 #include <deal.II/lac/solver_control.h> 26 #include <deal.II/base/subscriptor.h> 66 template <
class VECTOR = Vector<
double> >
125 template<
class MATRIX,
class PRECONDITIONER>
130 const PRECONDITIONER &precondition);
136 template <
class MATRIX>
147 const VECTOR &d)
const;
226 template <
class MATRIX>
232 template<
class MATRIX,
class PRECONDITIONER>
234 iterate(
const MATRIX &A,
const PRECONDITIONER &precondition);
243 template<
class VECTOR>
254 template<
class VECTOR>
264 template<
class VECTOR>
270 template <
class VECTOR>
271 template <
class MATRIX>
284 template <
class VECTOR >
285 template <
class MATRIX>
290 Vr->sadd(-1.,1.,*
Vb);
298 template<
class VECTOR>
303 const VECTOR &)
const 308 template<
class VECTOR>
309 template<
class MATRIX,
class PRECONDITIONER>
312 const PRECONDITIONER &precondition)
319 VECTOR &rbar = *
Vrbar;
344 precondition.vmult(y,p);
352 if (std::fabs(
alpha) > 1.e10)
366 precondition.vmult(z,r);
386 template<
class VECTOR>
387 template<
class MATRIX,
class PRECONDITIONER>
392 const PRECONDITIONER &precondition)
394 deallog.
push(
"Bicgstab");
398 Vrbar->reinit(x,
true);
420 deallog <<
"Restart step " <<
step << std::endl;
423 state =
iterate(A, precondition);
440 this->
control().last_value()));
446 DEAL_II_NAMESPACE_CLOSE
VectorMemory< VECTOR > & memory
AdditionalData(const bool exact_residual=true, const double breakdown=1.e-10)
virtual State check(const unsigned int step, const double check_value)
void solve(const MATRIX &A, VECTOR &x, const VECTOR &b, const PRECONDITIONER &precondition)
void vmult(VECTOR &u, const VECTOR &v) const
SolverBicgstab(SolverControl &cn, VectorMemory< VECTOR > &mem, const AdditionalData &data=AdditionalData())
#define AssertThrow(cond, exc)
double criterion(const MATRIX &A, const VECTOR &x, const VECTOR &b)
SolverControl & control() const
Stop iteration, goal reached.
virtual void print_vectors(const unsigned int step, const VECTOR &x, const VECTOR &r, const VECTOR &d) const
bool iterate(const MATRIX &A, const PRECONDITIONER &precondition)
void push(const std::string &text)
AdditionalData additional_data
SolverControl::State start(const MATRIX &A)
virtual ~SolverBicgstab()