diff --git a/dune/common/parallel/indexset.hh b/dune/common/parallel/indexset.hh index 661bd7318362a708d426a5717d8bd9c78f4aca81..164a6fbea7b33d6e835d176612bbcc74915dbba8 100644 --- a/dune/common/parallel/indexset.hh +++ b/dune/common/parallel/indexset.hh @@ -1109,9 +1109,15 @@ namespace Dune typedef typename ParallelIndexSet<TG,TL,N>::const_iterator Iter; typedef typename ParallelIndexSet<TG1,TL1,N1>::const_iterator Iter1; Iter iter=idxset.begin(); - for(Iter1 iter1=idxset1.begin(); iter1 != idxset1.end(); ++iter, ++iter1) - if(*iter1!=*iter) + for(Iter1 iter1=idxset1.begin(); iter1 != idxset1.end(); ++iter, ++iter1) { + if(iter1->global()!=iter->global()) return false; + typedef typename ParallelIndexSet<TG,TL,N>::LocalIndex PI; + const PI& pi=iter->local(), pi1=iter1->local(); + + if(pi!=pi1) + return false; + } return true; } diff --git a/dune/common/parallel/plocalindex.hh b/dune/common/parallel/plocalindex.hh index 57b5268527a842bd93a0e429977da2265390ef3c..d80e6e7e6a9727968329eac4143654b1f0a7d396 100644 --- a/dune/common/parallel/plocalindex.hh +++ b/dune/common/parallel/plocalindex.hh @@ -168,6 +168,25 @@ namespace Dune }; + template<typename T> + bool operator==(const ParallelLocalIndex<T>& p1, + const ParallelLocalIndex<T>& p2) + { + if(p1.local()!=p2.local()) + return false; + if(p1.attribute()!=p2.attribute()) + return false; + if(p1.isPublic()!=p2.isPublic()) + return false; + return true; + } + template<typename T> + bool operator!=(const ParallelLocalIndex<T>& p1, + const ParallelLocalIndex<T>& p2) + { + return !(p1==p2); + } + template<typename T> struct LocalIndexComparator<ParallelLocalIndex<T> >