diff --git a/fem/common/dofmapperinterface.hh b/fem/common/dofmapperinterface.hh index 7ef88eccc568d9a13b7c3a71403bae529f951eed..5e0dc878bea4b407a2f61de0785d877958394cf3 100644 --- a/fem/common/dofmapperinterface.hh +++ b/fem/common/dofmapperinterface.hh @@ -34,6 +34,18 @@ namespace Dune { //! return max number of local dofs per entity virtual int numberOfDofs () const =0; + //! returns true if index is new ( for dof compress ) + virtual bool indexNew (int num) const = 0; + + //! return old index in dof array of given index ( for dof compress ) + virtual int oldIndex (int num) const = 0; + + //! return new index in dof array + virtual int newIndex (int num) const = 0; + + /*! return estimate for size that is addtional needed + for restriction of data */ + virtual int additionalSizeEstimate() const = 0; }; //*********************************************************************** @@ -62,9 +74,7 @@ namespace Dune { //! default implementation if not overlaoded virtual int newSize() const { - // overload this method in derived class - assert(false); - return -1; + return asImp().size(); } //! default implementation if not overlaoded @@ -82,6 +92,34 @@ namespace Dune { return -1; } + //! returns true if index is new ( for dof compress ) + virtual bool indexNew (int num) const + { + assert(false); + return false; + } + + //! return old index in dof array of given index ( for dof compress ) + virtual int oldIndex (int num) const + { + assert(false); + return -1; + } + + // return new index in dof array + virtual int newIndex (int num) const + { + assert(false); + return -1; + } + + // return estimate for size additional need for restriction of data + virtual int additionalSizeEstimate() const + { + assert(false); + return -1; + } + private: //! Barton-Nackman trick DofMapperImp &asImp() { return static_cast<DofMapperImp &>(*this); };