diff --git a/src/duneinterface/gitter_dune_pll_impl.cc b/src/duneinterface/gitter_dune_pll_impl.cc index f7dd194578779a0237b3034cfbca188a40487e16..6c0c849eb5e0699dd3a8b2578905719398d3abe0 100644 --- a/src/duneinterface/gitter_dune_pll_impl.cc +++ b/src/duneinterface/gitter_dune_pll_impl.cc @@ -31,7 +31,7 @@ bool GitterDunePll :: duneNotifyNewGrid () } { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; - for (w.first () ; ! w.done () ; w.next ()) w.item ().accessPllX ().ldbUpdateGraphVertex (db) ; + for (w.first () ; ! w.done () ; w.next ()) w.item ().ldbUpdateGraphVertex (db) ; } bool neu = false ; { @@ -119,7 +119,7 @@ bool GitterDunePll :: duneLoadBalance (GatherScatterType & gs, AdaptRestrictProl } { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; - for (w.first () ; ! w.done () ; w.next ()) w.item ().accessPllX ().ldbUpdateGraphVertex (db) ; + for (w.first () ; ! w.done () ; w.next ()) w.item ().ldbUpdateGraphVertex (db) ; } bool neu = false ; { diff --git a/src/duneinterface/gitter_dune_pll_mgb.cc b/src/duneinterface/gitter_dune_pll_mgb.cc index 2c745bd7adda8a177fcf73489f72c43253d897aa..5c4125ba8ee8b64bf07c30224fdef82c68de98ec 100644 --- a/src/duneinterface/gitter_dune_pll_mgb.cc +++ b/src/duneinterface/gitter_dune_pll_mgb.cc @@ -519,7 +519,7 @@ void DuneParallelGridMover :: initialize () const elementMap_t :: iterator _hexaMapend = _hexaMap.end (); for (elementMap_t :: iterator i = _hexaMap.begin () ; i != _hexaMapend ; ++i) { - if (Gitter :: InternalElement ()(*((hexa_GEO *)(*i).second)).accessPllX ().erasable ()) + if (Gitter :: InternalElement ()(*((hexa_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } @@ -529,7 +529,7 @@ void DuneParallelGridMover :: initialize () const elementMap_t :: iterator _tetraMapend = _tetraMap.end (); for (elementMap_t :: iterator i = _tetraMap.begin () ; i != _tetraMapend ; ++i) { - if (Gitter :: InternalElement ()(*((tetra_GEO *)(*i).second)).accessPllX ().erasable ()) + if (Gitter :: InternalElement ()(*((tetra_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } @@ -539,7 +539,7 @@ void DuneParallelGridMover :: initialize () const elementMap_t :: iterator _periodic3Mapend = _periodic3Map.end (); for (elementMap_t :: iterator i = _periodic3Map.begin () ; i != _periodic3Mapend ; ++i) { - if (Gitter :: InternalElement ()(*((periodic3_GEO *)(*i).second)).accessPllX ().erasable ()) + if (Gitter :: InternalElement ()(*((periodic3_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } @@ -549,7 +549,7 @@ void DuneParallelGridMover :: initialize () const elementMap_t :: iterator _periodic4Mapend = _periodic4Map.end (); for (elementMap_t :: iterator i = _periodic4Map.begin () ; i != _periodic4Mapend ; ++i) { - if (Gitter :: InternalElement ()(*((periodic4_GEO *)(*i).second)).accessPllX ().erasable ()) + if (Gitter :: InternalElement ()(*((periodic4_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } @@ -756,9 +756,9 @@ void GitterDunePll :: repartitionMacroGrid (LoadBalancer :: DataBase & db) { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; for (w.first () ; ! w.done () ; w.next ()) { - int to = db.getDestination (w.item ().accessPllX ().ldbVertexIndex ()) ; + int to = db.getDestination (w.item ().ldbVertexIndex ()) ; if (me != to) - w.item ().accessPllX ().attach2 (mpAccess ().link (to)) ; + w.item ().attach2 (mpAccess ().link (to)) ; } } lap1 = clock () ; @@ -781,7 +781,7 @@ void GitterDunePll :: repartitionMacroGrid (LoadBalancer :: DataBase & db) } { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; - for (w.first () ; ! w.done () ; w.next ()) w.item ().accessPllX ().packAll (osv) ; + for (w.first () ; ! w.done () ; w.next ()) w.item ().packAll (osv) ; } { for (vector < ObjectStream > :: iterator i = osv.begin () ; i != osv.end () ; @@ -828,10 +828,10 @@ duneRepartitionMacroGrid (LoadBalancer :: DataBase & db, GatherScatterType & gs) AccessIterator < helement > :: Handle w (containerPll ()) ; for (w.first () ; ! w.done () ; w.next ()) { - int to = db.getDestination (w.item ().accessPllX ().ldbVertexIndex ()) ; + int to = db.getDestination (w.item ().ldbVertexIndex ()) ; if (me != to) { - w.item ().accessPllX ().attach2 (mpAccess ().link (to)) ; + w.item ().attach2 (mpAccess ().link (to)) ; } } } @@ -860,7 +860,7 @@ duneRepartitionMacroGrid (LoadBalancer :: DataBase & db, GatherScatterType & gs) AccessIterator < helement_STI > :: Handle w (containerPll ()) ; for (w.first () ; ! w.done () ; w.next ()) { - w.item ().accessPllX ().dunePackAll (osv,gs) ; + w.item ().dunePackAll (osv,gs) ; } } diff --git a/src/parallel/gitter_pll_impl.h b/src/parallel/gitter_pll_impl.h index e06112e1a1af08c19d2d8e45118562744eba2cf1..aa0fe17f7ae988e31f2bd024010101f71ff15221 100644 --- a/src/parallel/gitter_pll_impl.h +++ b/src/parallel/gitter_pll_impl.h @@ -652,6 +652,8 @@ public : inline TetraEmptyPll (myhface3_t *f0, int s0, myhface3_t *f1, int s1, myhface3_t *f2, int s2, myhface3_t *f3, int s3) : TetraPllXBase< TetraEmpty >(f0, s0, f1, s1, f2, s2, f3, s3 ) {} + virtual ElementPllXIF & accessPllX () throw (Parallel :: AccessPllException) { return *this; } + virtual const ElementPllXIF & accessPllX () const throw (Parallel :: AccessPllException) { return *this; } } ; typedef TetraTop < TetraEmptyPll > tetra_IMPL ; @@ -661,6 +663,8 @@ public : inline TetraEmptyPllMacro (myhface3_t *f0, int s0, myhface3_t *f1, int s1, myhface3_t *f2, int s2, myhface3_t *f3, int s3) : TetraPllXBaseMacro< tetra_IMPL >(0, f0, s0, f1, s1, f2, s2, f3, s3 ) {} // 0 == level 0 + virtual ElementPllXIF & accessPllX () throw (Parallel :: AccessPllException) { return *this; } + virtual const ElementPllXIF & accessPllX () const throw (Parallel :: AccessPllException) { return *this; } } ; ///////////////////////////////// @@ -752,6 +756,8 @@ public : myhface4_t *f2, int s2, myhface4_t *f3, int s3, myhface4_t *f4, int s4, myhface4_t *f5, int s5) : HexaPllBaseX< HexaEmpty >(f0, s0, f1, s1, f2, s2, f3, s3, f4, s4, f5, s5) {} + virtual ElementPllXIF & accessPllX () throw (Parallel :: AccessPllException) { return *this; } + virtual const ElementPllXIF & accessPllX () const throw (Parallel :: AccessPllException) { return *this; } } ; typedef HexaTop < HexaEmptyPll > hexa_IMPL ; @@ -762,6 +768,8 @@ public : myhface4_t *f2, int s2, myhface4_t *f3, int s3, myhface4_t *f4, int s4, myhface4_t *f5, int s5) : HexaPllBaseXMacro< hexa_IMPL >(0, f0, s0, f1, s1, f2, s2, f3, s3, f4, s4, f5, s5) {} + virtual ElementPllXIF & accessPllX () throw (Parallel :: AccessPllException) { return *this; } + virtual const ElementPllXIF & accessPllX () const throw (Parallel :: AccessPllException) { return *this; } } ; // Die Randelemente des verteilten Gitters werden aus Templates @@ -1026,8 +1034,11 @@ template < class A > pair < const ElementPllXIF_t *, int > FacePllBaseX < A > :: template < class A > pair < ElementPllXIF_t *, int > FacePllBaseX < A > :: accessInnerPllX () { - assert(myhface ().nb.front().first ); - assert(myhface ().nb.rear ().first ); + assert( myhface ().nb.front().first ); + assert( myhface ().nb.rear ().first ); + cout << myhface ().nb.front().first->isboundary() << endl; + cout << myhface ().nb.rear ().first->isboundary() << endl; + ElementPllXIF_t * p = & myhface ().nb.rear ().first->accessPllX (); return myhface ().nb.front (). first->accessPllX ().accessInnerPllX ( pair < ElementPllXIF_t *, int > (& myhface ().nb.rear ().first->accessPllX (), diff --git a/src/parallel/gitter_pll_mgb.cc b/src/parallel/gitter_pll_mgb.cc index 677d0faa83cef168314d7b8200efbdbb688e004f..e5794196ebad76b1842a0e8c93c56452eb7a1c37 100644 --- a/src/parallel/gitter_pll_mgb.cc +++ b/src/parallel/gitter_pll_mgb.cc @@ -23,23 +23,23 @@ void ParallelGridMover ::initialize () assert(_initialized); vector < elementKey_t > toDelete ; {for (elementMap_t :: iterator i = _hexaMap.begin () ; i != _hexaMap.end () ; i ++) - if (Gitter :: InternalElement ()(*((hexa_GEO *)(*i).second)).accessPllX ().erasable ()) { + if (Gitter :: InternalElement ()(*((hexa_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } } {for (elementMap_t :: iterator i = _tetraMap.begin () ; i != _tetraMap.end () ; i ++) - if (Gitter :: InternalElement ()(*((tetra_GEO *)(*i).second)).accessPllX ().erasable ()) { + if (Gitter :: InternalElement ()(*((tetra_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } } {for (elementMap_t :: iterator i = _periodic3Map.begin () ; i != _periodic3Map.end () ; i ++) - if (Gitter :: InternalElement ()(*((periodic3_GEO *)(*i).second)).accessPllX ().erasable ()) { + if (Gitter :: InternalElement ()(*((periodic3_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } } {for (elementMap_t :: iterator i = _periodic4Map.begin () ; i != _periodic4Map.end () ; i ++) - if (Gitter :: InternalElement ()(*((periodic4_GEO *)(*i).second)).accessPllX ().erasable ()) { + if (Gitter :: InternalElement ()(*((periodic4_GEO *)(*i).second)).erasable ()) { toDelete.push_back ((*i).first) ; } } @@ -314,9 +314,9 @@ void GitterPll :: repartitionMacroGrid (LoadBalancer :: DataBase & db) { { AccessIterator < helement > :: Handle w (containerPll ()) ; for (w.first () ; ! w.done () ; w.next ()) { - int to = db.getDestination (w.item ().accessPllX ().ldbVertexIndex ()) ; + int to = db.getDestination (w.item ().ldbVertexIndex ()) ; if (me != to) - w.item ().accessPllX ().attach2 (mpAccess ().link (to)) ; + w.item ().attach2 (mpAccess ().link (to)) ; } } lap1 = clock () ; @@ -335,7 +335,7 @@ void GitterPll :: repartitionMacroGrid (LoadBalancer :: DataBase & db) { } { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; - for (w.first () ; ! w.done () ; w.next ()) w.item ().accessPllX ().packAll (osv) ; + for (w.first () ; ! w.done () ; w.next ()) w.item ().packAll (osv) ; } { for (vector < ObjectStream > :: iterator i = osv.begin () ; i != osv.end () ; diff --git a/src/parallel/gitter_pll_sti.cc b/src/parallel/gitter_pll_sti.cc index cfd83169defe6f504a2ec3fbe5bdf5db6938abfc..4402e54aec4c8659be5bf4048f8225990a99f422 100644 --- a/src/parallel/gitter_pll_sti.cc +++ b/src/parallel/gitter_pll_sti.cc @@ -843,7 +843,7 @@ void GitterPll :: loadBalancerGridChangesNotify () { } { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; - for (w.first () ; ! w.done () ; w.next ()) w.item ().accessPllX ().ldbUpdateGraphVertex (db) ; + for (w.first () ; ! w.done () ; w.next ()) w.item ().ldbUpdateGraphVertex (db) ; } bool neu = false ; { @@ -881,7 +881,7 @@ void GitterPll :: loadBalancerMacroGridChangesNotify () { AccessIterator < helement_STI > :: Handle w (containerPll ()) ; vector < int > sizes = mpAccess ().gcollect (w.size ()) ; for (int i = 0 ; i < mpAccess ().myrank () ; cnt += sizes [i++]) ; - for (w.first () ; ! w.done () ; w.next ()) w.item ().accessPllX ().ldbVertexIndex () = cnt ++ ; + for (w.first () ; ! w.done () ; w.next ()) w.item ().ldbVertexIndex () = cnt ++ ; return ; } diff --git a/src/serial/elementif.h b/src/serial/elementif.h index cf0de2a8a6a793fb574d81b148e4d908a6301985..c70ed4dc5f5a9974dd40e38be930dc7b0d6b553f 100644 --- a/src/serial/elementif.h +++ b/src/serial/elementif.h @@ -97,104 +97,7 @@ class ElementPllXIF : public MacroGridMoverDefault virtual bool unlockAndResume (bool) = 0 ; } ; */ - -// type of ElementPllXIF_t is ElementPllXIF, see parallel.h -class ElementPllXIF : public MacroGridMoverDefault -{ - protected : - virtual ~ElementPllXIF () {} - public : - virtual pair < ElementPllXIF *, int > accessOuterPllX (const pair < ElementPllXIF *, int > &, int) - { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } - virtual pair < const ElementPllXIF *, int > accessOuterPllX (const pair < const ElementPllXIF *, int > &, int) const - { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } - virtual pair < ElementPllXIF *, int > accessInnerPllX (const pair < ElementPllXIF *, int > &, int) - { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } - virtual pair < const ElementPllXIF *, int > accessInnerPllX (const pair < const ElementPllXIF *, int > &, int) const - { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } - public : - typedef pair<helement*, int> ghostpair_t ; - virtual ghostpair_t getGhost () - { - cerr << "ERROR: method getGhost of Interface class should not be used! in: " << __FILE__ << " line: " <<__LINE__<<"\n"; - abort(); - return ghostpair_t( (helement*)0 , -1); - } - - virtual int ghostLevel () const - { - cerr << "ERROR: method ghostLevel of Interface class should not be used! in: " << __FILE__ << " line: " <<__LINE__<<"\n"; - abort(); - return 0; - } - - virtual bool ghostLeaf () const - { - cerr << "ERROR: method ghostLeaf of Interface class should not be used! in: " << __FILE__ << " line: " <<__LINE__<<"\n"; - abort(); - return 0; - } - - virtual void getAttachedElement ( pair < helement* , hbndseg * > & p) - { - cerr << "Overload method in the classes file:" << __FILE__ << " line:" << __LINE__ << "\n"; - abort(); - p.first = 0; - p.second = 0; - } - - virtual void writeStaticState (ObjectStream &, int) const - { assert(false);abort(); } - virtual void readStaticState (ObjectStream &, int) - { assert(false);abort(); } - virtual void writeDynamicState (ObjectStream &, int) const - { assert(false);abort(); } - virtual void readDynamicState (ObjectStream &, int) - { assert(false);abort(); } - - virtual void VertexData2os(ObjectStream &, GatherScatterType &, int) - { assert(false);abort(); } - virtual void EdgeData2os (ObjectStream &, GatherScatterType &, int) - { assert(false);abort(); } - virtual void FaceData2os (ObjectStream &, GatherScatterType &, int) - { assert(false);abort(); } - virtual void writeElementData (ObjectStream &, GatherScatterType &) - { assert(false);abort(); } - virtual void writeDynamicState(ObjectStream &, GatherScatterType &) const - { assert(false);abort(); } - virtual void readDynamicState (ObjectStream &, GatherScatterType &) - { assert(false);abort(); } - - // pack as ghost, default does nothing but macro elements are pack as - // ghosts - virtual void packAsGhost(ObjectStream &,int) const {} - - // unpack as ghost data and insert ghost cell, default does nothing - virtual void insertGhostCell(ObjectStream &,int) {} - - public : - virtual int ldbVertexIndex () const - { assert(false);abort(); return -1; } - virtual int & ldbVertexIndex () - { assert(false);abort(); return *(new int ()); } - virtual bool ldbUpdateGraphVertex (LoadBalancer :: DataBase &) - { assert(false);abort(); return false; } - public : - virtual void packAsBnd (int,int,ObjectStream &) const - { assert(false);abort(); } - virtual bool erasable () const - { assert(false);abort(); return false; } - public : - virtual void getRefinementRequest (ObjectStream &) - { assert(false);abort(); } - virtual bool setRefinementRequest (ObjectStream &) - { assert(false);abort(); return false; } - public : - virtual bool lockAndTry () - { assert(false);abort(); return false; } - virtual bool unlockAndResume (bool) - { assert(false);abort(); return false; } -} ; +class ElementPllXIF ; class FacePllXIF : public LinkedObjectDefault //, public MacroGridMoverIF { @@ -316,12 +219,120 @@ class Parallel { inline const FacePllXIF & accessPllX () const { return *this; } inline void detachPllXFromMacro () {} } ; - class ElementIF : public ElementPllXIF { + class ElementIF { public : virtual ~ElementIF () {} - inline ElementPllXIF & accessPllX () { return *this; } - inline const ElementPllXIF & accessPllX () const { return *this; } - inline virtual void detachPllXFromMacro () {} + inline virtual ElementPllXIF & accessPllX () throw (AccessPllException) + { + assert ((abort (), (cerr << " FEHLER in " << __FILE__ << " " << __LINE__ << endl))) ; + throw AccessPllException () ; + } + inline virtual const ElementPllXIF & accessPllX () const throw (AccessPllException) + { + assert ((abort (), (cerr << " FEHLER in " << __FILE__ << " " << __LINE__ << endl))) ; + throw AccessPllException () ; + } + inline virtual void detachPllXFromMacro () {} } ; } ; + +// type of ElementPllXIF_t is ElementPllXIF, see parallel.h +class ElementPllXIF : public MacroGridMoverDefault +{ + protected : + virtual ~ElementPllXIF () {} + public : + virtual void detachPllXFromMacro () {} + virtual pair < ElementPllXIF *, int > accessOuterPllX (const pair < ElementPllXIF *, int > &, int) + { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } + virtual pair < const ElementPllXIF *, int > accessOuterPllX (const pair < const ElementPllXIF *, int > &, int) const + { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } + virtual pair < ElementPllXIF *, int > accessInnerPllX (const pair < ElementPllXIF *, int > &, int) + { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } + virtual pair < const ElementPllXIF *, int > accessInnerPllX (const pair < const ElementPllXIF *, int > &, int) const + { assert( false ); abort(); return pair< ElementPllXIF *, int > ( (ElementPllXIF *) 0, -1); } + public : + typedef pair<helement*, int> ghostpair_t ; + virtual ghostpair_t getGhost () + { + cerr << "ERROR: method getGhost of Interface class should not be used! in: " << __FILE__ << " line: " <<__LINE__<<"\n"; + abort(); + return ghostpair_t( (helement*)0 , -1); + } + + virtual int ghostLevel () const + { + cerr << "ERROR: method ghostLevel of Interface class should not be used! in: " << __FILE__ << " line: " <<__LINE__<<"\n"; + abort(); + return 0; + } + + virtual bool ghostLeaf () const + { + cerr << "ERROR: method ghostLeaf of Interface class should not be used! in: " << __FILE__ << " line: " <<__LINE__<<"\n"; + abort(); + return 0; + } + + virtual void getAttachedElement ( pair < helement* , hbndseg * > & p) + { + cerr << "Overload method in the classes file:" << __FILE__ << " line:" << __LINE__ << "\n"; + abort(); + p.first = 0; + p.second = 0; + } + + virtual void writeStaticState (ObjectStream &, int) const + { assert(false);abort(); } + virtual void readStaticState (ObjectStream &, int) + { assert(false);abort(); } + virtual void writeDynamicState (ObjectStream &, int) const + { assert(false);abort(); } + virtual void readDynamicState (ObjectStream &, int) + { assert(false);abort(); } + + virtual void VertexData2os(ObjectStream &, GatherScatterType &, int) + { assert(false);abort(); } + virtual void EdgeData2os (ObjectStream &, GatherScatterType &, int) + { assert(false);abort(); } + virtual void FaceData2os (ObjectStream &, GatherScatterType &, int) + { assert(false);abort(); } + virtual void writeElementData (ObjectStream &, GatherScatterType &) + { assert(false);abort(); } + virtual void writeDynamicState(ObjectStream &, GatherScatterType &) const + { assert(false);abort(); } + virtual void readDynamicState (ObjectStream &, GatherScatterType &) + { assert(false);abort(); } + + // pack as ghost, default does nothing but macro elements are pack as + // ghosts + virtual void packAsGhost(ObjectStream &,int) const {} + + // unpack as ghost data and insert ghost cell, default does nothing + virtual void insertGhostCell(ObjectStream &,int) {} + + public : + virtual int ldbVertexIndex () const + { assert(false);abort(); return -1; } + virtual int & ldbVertexIndex () + { assert(false);abort(); return *(new int ()); } + virtual bool ldbUpdateGraphVertex (LoadBalancer :: DataBase &) + { assert(false);abort(); return false; } + public : + virtual void packAsBnd (int,int,ObjectStream &) const + { assert(false);abort(); } + virtual bool erasable () const + { assert(false);abort(); return false; } + public : + virtual void getRefinementRequest (ObjectStream &) + { assert(false);abort(); } + virtual bool setRefinementRequest (ObjectStream &) + { assert(false);abort(); return false; } + public : + virtual bool lockAndTry () + { assert(false);abort(); return false; } + virtual bool unlockAndResume (bool) + { assert(false);abort(); return false; } +} ; + #endif diff --git a/src/serial/gitter_sti.h b/src/serial/gitter_sti.h index b3de604ddfb4d5843421da29e871d0b2105406e7..b6a28afcbe60507b36ba2b0cadaa473ff12378d2 100644 --- a/src/serial/gitter_sti.h +++ b/src/serial/gitter_sti.h @@ -562,7 +562,8 @@ public : }; typedef AdaptRestrictProlong AdaptRestrictProlongType; - class helement : public virtual stiExtender_t :: ElementIF + // --helement + class helement : public ElementPllXIF , public Dune_helement { protected : @@ -1242,6 +1243,7 @@ public : typedef class Tetra : public helement_STI, public hasFace3, public MyAlloc { protected : + typedef VertexGeo myvertex_t ; typedef hedge1_GEO myhedge1_t ; typedef hface3_GEO myhface3_t ; @@ -1251,6 +1253,7 @@ public : inline int postRefinement () ; inline int preCoarsening () ; public : + using hasFace3 :: accessPllX ; static const int prototype [4][3] ; static const int edgeMap [6][2] ; @@ -1330,6 +1333,7 @@ public : inline int postRefinement () ; inline int preCoarsening () ; public : + using hasFace3 :: accessPllX ; static const int prototype [2][3] ; inline virtual ~Periodic3 () ; inline hface3_GEO * myhface3 (int) ; @@ -1384,6 +1388,7 @@ public : inline int postRefinement () ; inline int preCoarsening () ; public : + using hasFace4 :: accessPllX ; static const int prototype [2][4] ; inline virtual ~Periodic4 () ; inline hface4_GEO * myhface4 (int) ; @@ -1444,6 +1449,7 @@ public : inline int preCoarsening () ; public : + using hasFace4 :: accessPllX ; static const int prototype [6][4] ; static const int oppositeFace [6] ; static const int edgeMap [12][2]; @@ -1556,10 +1562,6 @@ public : // unmark edges and vertices as leaf virtual void detachleafs() ; - // import both getGhost methods - using hbndseg_STI :: getGhost ; - using hasFace3 :: getGhost ; - protected : // no projection for ghost faces const ProjectVertex* projection() const { return ( this->isGhost() ) ? 0 : _face->myvertex(0)->myGrid()->vertexProjection(); } @@ -1604,10 +1606,6 @@ public : virtual void detachleafs() ; - // import both getGhost methods - using hbndseg_STI :: getGhost ; - using hasFace4 :: getGhost ; - protected : // no projection for ghost faces const ProjectVertex* projection() const { return ( this->isGhost() ) ? 0 : _face->myvertex(0)->myGrid()->vertexProjection(); }