diff --git a/dune/solvers/solvers/iterativesolver.hh b/dune/solvers/solvers/iterativesolver.hh index 5b0452f0f0c8f3db298dd0ce03a91e29b13c3897..90d7089a434362781c7c45ccb639fc0d54df1ea7 100644 --- a/dune/solvers/solvers/iterativesolver.hh +++ b/dune/solvers/solvers/iterativesolver.hh @@ -1,6 +1,8 @@ #ifndef DUNE_SOLVERS_ITERATIVE_SOLVER_HH #define DUNE_SOLVERS_ITERATIVE_SOLVER_HH +#include <dune/common/ftraits.hh> + #include <dune/solvers/solvers/solver.hh> #include <dune/solvers/iterationsteps/iterationstep.hh> #include <dune/solvers/norms/norm.hh> @@ -9,6 +11,11 @@ template <class VectorType, class BitVectorType = Dune::BitSetVector<VectorType::block_type::dimension> > class IterativeSolver : public Solver { + typedef typename VectorType::field_type field_type; + + // For complex-valued data + typedef typename Dune::FieldTraits<field_type>::real_type real_type; + public: /** \brief Constructor taking all relevant data */ @@ -60,7 +67,7 @@ directory name. All intermediate iterates are then written there. */ std::string historyBuffer_; - double maxTotalConvRate_; + real_type maxTotalConvRate_; bool useRelativeError_;