Newer
Older
diff --git a/dune/pdelab/backend/istlvectorbackend.hh b/dune/pdelab/backend/istlvectorbackend.hh
index ad2419e..ef219f3 100644
--- a/dune/pdelab/backend/istlvectorbackend.hh
+++ b/dune/pdelab/backend/istlvectorbackend.hh
@@ -30,6 +30,8 @@ namespace Dune {

Bernd Flemisch
committed
typedef typename ContainerType::size_type size_type;
typedef ISTLVectorBackend<BLOCKSIZE> Backend;
+ ISTLBlockVectorContainer ()
+ {}
ISTLBlockVectorContainer (const T& t_) : container(t_.globalSize()/BLOCKSIZE)
{}
ISTLBlockVectorContainer (const T& t_, const E& e) : container(t_.globalSize()/BLOCKSIZE)
@@ -89,6 +91,11 @@ namespace Dune {

Bernd Flemisch
committed
return container.two_norm();
}
+ typename Dune::template FieldTraits<E>::real_type two_norm2() const
+ {
+ return container.two_norm2();
+ }
+
typename Dune::template FieldTraits<E>::real_type one_norm() const
{
return container.one_norm();
@@ -163,6 +170,16 @@ namespace Dune {

Bernd Flemisch
committed
return container.size()*BLOCKSIZE;
}
+ size_t size() const
+ {
+ return container.size();
+ }
+

Bernd Flemisch
committed
+ {
+ container.resize(n);
+ }
+
template<typename X>
void std_copy_to (std::vector<X>& x) const
{
diff --git a/dune/pdelab/backend/novlpistlsolverbackend.hh b/dune/pdelab/backend/novlpistlsolverbackend.hh
index 49a0080..9bf1eae 100644
--- a/dune/pdelab/backend/novlpistlsolverbackend.hh
+++ b/dune/pdelab/backend/novlpistlsolverbackend.hh
@@ -1251,7 +1251,7 @@ namespace Dune {

Bernd Flemisch
committed
int verbose_=1, bool reuse_=false,
bool usesuperlu_=true)
: gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_),
- params(15,2000,1.2,1.6,Dune::Amg::atOnceAccu),
+ params(15,2000,1.2,1.6,Dune::Amg::noAccu/*Dune::Amg::atOnceAccu*/),
verbose(verbose_), reuse(reuse_), firstapply(true),
usesuperlu(usesuperlu_)
{
@@ -1314,10 +1314,10 @@ namespace Dune {

Bernd Flemisch
committed
\param[in] r right hand side
\param[in] reduction to be achieved
*/
- void apply(M& A, V& z, V& r, typename V::ElementType reduction)
+ void apply(MatrixType& A, V& z, V& r, typename V::ElementType reduction)
{
Timer watch;
- MatrixType& mat=A.base();
+ MatrixType& mat=A;
typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
Dune::Amg::FirstDiagonal> > Criterion;
#if HAVE_MPI
diff --git a/dune/pdelab/backend/ovlpistlsolverbackend.hh b/dune/pdelab/backend/ovlpistlsolverbackend.hh
index 107a831..40c252f 100644
--- a/dune/pdelab/backend/ovlpistlsolverbackend.hh
+++ b/dune/pdelab/backend/ovlpistlsolverbackend.hh
@@ -803,7 +803,7 @@ namespace Dune {

Bernd Flemisch
committed
ISTLBackend_AMG(const GFS& gfs_, unsigned maxiter_=5000,
int verbose_=1, bool reuse_=false,
bool usesuperlu_=true)
- : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), params(15,2000),
+ : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), params(15,2000,1.2,1.6,Dune::Amg::atOnceAccu),
verbose(verbose_), reuse(reuse_), firstapply(true),
usesuperlu(usesuperlu_)
{
@@ -864,11 +864,12 @@ namespace Dune {

Bernd Flemisch
committed
\param[in] r right hand side
\param[in] reduction to be achieved
*/
- void apply(M& A, V& z, V& r, typename V::ElementType reduction)
+ template <class Vector>
+ void apply(MatrixType& A, Vector& z, Vector& r, typename V::ElementType reduction)
{
Timer watch;
Comm oocc(gfs.gridView().comm());
- MatrixType& mat=A.base();
+ MatrixType& mat=A;
typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
Dune::Amg::FirstDiagonal> > Criterion;
#if HAVE_MPI
@@ -900,8 +901,7 @@ namespace Dune {

Bernd Flemisch
committed
Solver<VectorType> solver(oop,sp,*amg,reduction,maxiter,verb);
Dune::InverseOperatorResult stat;
- solver.apply(BlockProcessor<GFS,skipBlocksizeCheck>::getVector(z),
- BlockProcessor<GFS,skipBlocksizeCheck>::getVector(r),stat);
+ solver.apply(z,r,stat);
stats.tsolve= watch.elapsed();
res.converged = stat.converged;
res.iterations = stat.iterations;
diff --git a/dune/pdelab/backend/seqistlsolverbackend.hh b/dune/pdelab/backend/seqistlsolverbackend.hh
index 4d69622..a54c27c 100644
--- a/dune/pdelab/backend/seqistlsolverbackend.hh
+++ b/dune/pdelab/backend/seqistlsolverbackend.hh
@@ -543,10 +543,10 @@ namespace Dune {

Bernd Flemisch
committed
\param[in] r right hand side
\param[in] reduction to be achieved
*/
- void apply(M& A, V& z, V& r, typename V::ElementType reduction)
+ void apply(MatrixType& A, V& z, V& r, typename V::ElementType reduction)
{
Timer watch;
- MatrixType& mat=A.base();
+ MatrixType& mat=A;
typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
Dune::Amg::FirstDiagonal> > Criterion;
SmootherArgs smootherArgs;