Skip to content
Snippets Groups Projects
Commit 2a070b6b authored by Bernd Flemisch's avatar Bernd Flemisch
Browse files

[multidomain] reflect the move to PDELab 2.0 in dune.module, README

files and installation script



git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@13288 2fb0f335-1f38-0410-981e-8018bf24f1b0
parent 39e7a22a
No related branches found
No related tags found
No related merge requests found
......@@ -6,4 +6,4 @@ Module: dumux
Version: 2.6-svn
Maintainer: dumux@listserv.uni-stuttgart.de
Depends: dune-grid (>= 2.3) dune-localfunctions (>= 2.3) dune-istl (>= 2.3)
Suggests: dune-pdelab (>=1.1) dune-multidomain
Suggests: dune-pdelab (>=2.0) dune-multidomain
- In order to use the AMGBackend, you have to apply the patch
pdelab-1.1.0.patch in your directory containing
DUNE-PDELab 1.1.0, e.g.:
patch -p1 <../dumux/patches/pdelab-1.1.0.patch
- If the AMGBackend should be used without SuperLU as coarse grid solver, it can
be benefitial to decrease the corresponding tolerance. To do so, apply the
patch istl-2.3.0.patch in your directory containing
......
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 {
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 {
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 {
return container.size()*BLOCKSIZE;
}
+ size_t size() const
+ {
+ return container.size();
+ }
+
+ void resize(size_t n)
+ {
+ 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 {
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 {
\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 {
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 {
\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 {
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 {
\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;
== Running the test cases in test/multidomain ==
Due to the lack of stable versions of the upstream Dune modules
Dune-MultidomainGrid and Dune-Multidomain, we have compatibility
issues with the release version of the Dune Core Modules. You
have to use specific revisions of these, as listed below.
You need the following releases of the DUNE core modules and
dune-multidomain(grid):
Dune core modules: release 2.3
Dune-PDELab release 1.1
Dune-PDELab: release 2.0
dune-multidomaingrid: release branch 2.3
dune-multidomain Git commit deac3cecfc6697c1f5316d55c0fadd74f51d92bc
Then you have to patch PDELab with the patch from patches/pdelab-1.1.0.patch .
dune-multidomain: release branch 2.0
Install the external grid manager UG. Additional you need to install a
direct linear solver like SuperLU or PARDISO.
......
......@@ -31,7 +31,7 @@ cd ..
# download dune-PDELab
git clone http://git.dune-project.org/repositories/dune-pdelab
cd dune-pdelab
git checkout releases/1.1
git checkout releases/2.0
cd ..
# download dune-multidomaingrid
......@@ -43,13 +43,8 @@ cd ..
# download dune-multidomain
git clone git://github.com/smuething/dune-multidomain.git
cd dune-multidomain
git checkout deac3cecfc6697c1f5316d55c0fadd74f51d92bc
git checkout releases/2.0
cd ..
# download DuMuX
svn co svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk dumux
# apply patches to PDELab
cd dune-pdelab
patch -p1 < ../dumux/patches/pdelab-1.1.0.patch
cd ..
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment