[Dune] [Fwd: [Dune-Commit] dune-grid r5356 - trunk/grid/onedgrid]

Andreas Dedner dedner at mathematik.uni-freiburg.de
Wed Sep 9 18:36:57 CEST 2009


Hi Oliver,
of course talking first is better but means that everybody involved has
to wait until we have finished our communication - which seems rather
time consuming. Everyone with a gcc 4.3 would have not been able to
configure dune with the version which was checked in.

A quick
svn merge https://svn.dune-project.org/svn/dune-grid/trunk/grid/onedgrid 
-r 5356:5355
and a svn commit (with the friend declearations) puts everything back in 
working order.

Again: if a configure does not work this seems to me to be a reason to
first revert and then contact the developer.

Best
Andreas


Oliver Sander wrote:
> I prefer if people talk first and then revert.  You certainly would not 
> want me
> to mess with you code when I don't like it.
> 
> The bug you report is do to some missing friend declaration in the preamble
> of OneDGrid.  They are
> 
>    template <int codim_, class GridImp_>
>    friend class OneDGridEntityPointer;
> 
>    template <int codim_, PartitionIteratorType pitype_, class GridImp_>
>    friend class OneDGridLevelIterator;
> 
>    friend class OneDGridHierarchicIterator<const OneDGrid>;
> 
> Thanks for reapplying the patch,
> Oliver
> 
> Instead you could have just asked me for the missing friend declarations.
> 
> Andreas Dedner schrieb:
>> Hi Oliver,
>>
>> It did not compile for me and for other people here as well and the
>> safest way to get it to work for everybody (and for all other users)
>> was to revert it. I was just writting this mail to you with the
>> error messages.
>> Here they are:
>>
>> ../../dune/grid/common/grid.hh: In member function 'bool 
>> Dune::OneDGridEntityPointer<codim, GridImp>::equals(const 
>> Dune::OneDGridEntityPointer<codim, GridImp>&) const [with int codim = 
>> 0, GridImp = const Dune::OneDGrid]':
>> ../../dune/grid/common/entitypointer.hh:269:   instantiated from 'bool 
>> Dune::EntityPointer<GridImp, EntityPointerImp>::equals(const 
>> Dune::EntityPointer<GridImp, EntityPointerImp>&) const [with GridImp = 
>> const Dune::OneDGrid, IteratorImp = Dune::OneDGridEntityPointer<0, 
>> const Dune::OneDGrid>]'
>> ../../dune/grid/common/entitypointer.hh:227:   instantiated from 'bool 
>> Dune::EntityPointer<GridImp, EntityPointerImp>::operator!=(const 
>> Dune::EntityPointer<GridImp, typename 
>> Dune::EnableIfInterOperable<typename IteratorImp::EntityPointerImp, 
>> IteratorImp, typename IteratorImp::EntityPointerImp>::type>&) const 
>> [with GridImp = const Dune::OneDGrid, IteratorImp = 
>> Dune::OneDGridLeafIterator<0, All_Partition, const Dune::OneDGrid>]'
>> onedgrid.cc:549:   instantiated from here
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::ReturnImplementationType<T>::ImplementationType& 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::getRealImplementation(InterfaceType&) [with InterfaceType = 
>> Dune::MakeableInterfaceObject<Dune::Entity<0, 1, const Dune::OneDGrid, 
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double, 
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:34: error: within this context
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::ReturnImplementationType<T>::ImplementationType& 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::getRealImplementation(InterfaceType&) [with InterfaceType = 
>> Dune::MakeableInterfaceObject<Dune::Entity<0, 1, const Dune::OneDGrid, 
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double, 
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:34: error: within this context
>> ../../dune/grid/common/grid.hh: In constructor 
>> 'Dune::OneDGridEntityPointer<codim, 
>> GridImp>::OneDGridEntityPointer(Dune::OneDEntityImp<(Dune::OneDGridEntityPointer<codim, 
>> GridImp>::dim - codim)>*) [with int codim = 0, GridImp = const 
>> Dune::OneDGrid]':
>> ../onedgrid/onedgridleveliterator.hh:36:   instantiated from 
>> 'Dune::OneDGridLevelIterator<codim, pitype, 
>> GridImp>::OneDGridLevelIterator(Dune::OneDEntityImp<(Dune::OneDGridLevelIterator<codim, 
>> pitype, GridImp>::dim - codim)>*) [with int codim = 0, 
>> Dune::PartitionIteratorType pitype = All_Partition, GridImp = const 
>> Dune::OneDGrid]'
>> onedgrid.cc:140:   instantiated from 'typename Dune::GridTraits<1, 1, 
>> Dune::OneDGrid, Dune::OneDGridGeometry, Dune::OneDGridEntity, 
>> Dune::OneDGridEntityPointer, Dune::OneDGridLevelIterator, 
>> Dune::OneDGridLeafIntersectionIterator, 
>> Dune::OneDGridLevelIntersectionIterator, 
>> Dune::OneDGridLeafIntersectionIterator, 
>> Dune::OneDGridLevelIntersectionIterator, 
>> Dune::OneDGridHierarchicIterator, Dune::OneDGridLeafIterator, 
>> Dune::OneDGridLevelIndexSet<const Dune::OneDGrid>, 
>> Dune::OneDGridLeafIndexSet<const Dune::OneDGrid>, 
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int, 
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int, 
>> Dune::CollectiveCommunication<Dune::OneDGrid>, 
>> Dune::DefaultLevelGridViewTraits, 
>> Dune::DefaultLeafGridViewTraits>::Codim<cd>::LevelIterator 
>> Dune::OneDGrid::lbegin(int) const [with int codim = 0]'
>> onedgrid.cc:650:   instantiated from here
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::ReturnImplementationType<T>::ImplementationType& 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::getRealImplementation(InterfaceType&) [with InterfaceType = 
>> Dune::MakeableInterfaceObject<Dune::Entity<0, 1, const Dune::OneDGrid, 
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double, 
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:61: error: within this context
>> ../../dune/grid/common/grid.hh: In constructor 
>> 'Dune::OneDGridEntityPointer<codim, 
>> GridImp>::OneDGridEntityPointer(Dune::OneDEntityImp<(Dune::OneDGridEntityPointer<codim, 
>> GridImp>::dim - codim)>*) [with int codim = 1, GridImp = const 
>> Dune::OneDGrid]':
>> ../onedgrid/onedgridleveliterator.hh:36:   instantiated from 
>> 'Dune::OneDGridLevelIterator<codim, pitype, 
>> GridImp>::OneDGridLevelIterator(Dune::OneDEntityImp<(Dune::OneDGridLevelIterator<codim, 
>> pitype, GridImp>::dim - codim)>*) [with int codim = 1, 
>> Dune::PartitionIteratorType pitype = All_Partition, GridImp = const 
>> Dune::OneDGrid]'
>> onedgrid.cc:140:   instantiated from 'typename Dune::GridTraits<1, 1, 
>> Dune::OneDGrid, Dune::OneDGridGeometry, Dune::OneDGridEntity, 
>> Dune::OneDGridEntityPointer, Dune::OneDGridLevelIterator, 
>> Dune::OneDGridLeafIntersectionIterator, 
>> Dune::OneDGridLevelIntersectionIterator, 
>> Dune::OneDGridLeafIntersectionIterator, 
>> Dune::OneDGridLevelIntersectionIterator, 
>> Dune::OneDGridHierarchicIterator, Dune::OneDGridLeafIterator, 
>> Dune::OneDGridLevelIndexSet<const Dune::OneDGrid>, 
>> Dune::OneDGridLeafIndexSet<const Dune::OneDGrid>, 
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int, 
>> Dune::OneDGridIdSet<const Dune::OneDGrid>, unsigned int, 
>> Dune::CollectiveCommunication<Dune::OneDGrid>, 
>> Dune::DefaultLevelGridViewTraits, 
>> Dune::DefaultLeafGridViewTraits>::Codim<cd>::LevelIterator 
>> Dune::OneDGrid::lbegin(int) const [with int codim = 1]'
>> onedgrid.cc:651:   instantiated from here
>> ../../dune/grid/common/grid.hh:1163: error: 'static typename 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::ReturnImplementationType<T>::ImplementationType& 
>> Dune::GridDefaultImplementation<<anonymous>, <anonymous>, 
>> <template-parameter-1-3>, <template-parameter-1-4> 
>>  >::getRealImplementation(InterfaceType&) [with InterfaceType = 
>> Dune::MakeableInterfaceObject<Dune::Entity<1, 1, const Dune::OneDGrid, 
>> Dune::OneDGridEntity> >, int dim = 1, int dimworld = 1, ct = double, 
>> GridFamily = Dune::OneDGridFamily<1, 1>]' is protected
>> ../onedgrid/onedgridentitypointer.hh:61: error: within this context
>>
>> Best
>> Andreas
>>
>> Oliver Sander wrote:
>>  
>>> It certainly did compile for me.
>>> Would you please contact me before tacitly reverting my patches?!
>>>
>>> Thank you,
>>> Oliver
>>>
>>> -------- Original-Nachricht --------
>>> Betreff:     [Dune-Commit] dune-grid r5356 - trunk/grid/onedgrid
>>> Datum:     Wed, 09 Sep 2009 18:01:02 +0200
>>> Von:     dedner at dune-project.org
>>> An:     dune-commit at dune-project.org
>>>
>>>
>>>
>>> Author: dedner
>>> Date: 2009-09-09 18:01:02 +0200 (Wed, 09 Sep 2009)
>>> New Revision: 5356
>>>
>>> Modified:
>>>    trunk/grid/onedgrid/onedgridentity.hh
>>>    trunk/grid/onedgrid/onedgridentitypointer.hh
>>>    trunk/grid/onedgrid/onedgridhieriterator.hh
>>>    trunk/grid/onedgrid/onedgridleafiterator.hh
>>>    trunk/grid/onedgrid/onedgridleveliterator.hh
>>> Log:
>>> did not compile anymore
>>>
>>> Modified: trunk/grid/onedgrid/onedgridentity.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridentity.hh    2009-09-09 15:25:07 UTC 
>>> (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridentity.hh    2009-09-09 16:01:02 UTC 
>>> (rev 5356)
>>> @@ -121,7 +121,24 @@
>>>  };
>>>  
>>>  
>>> +template<int cd, int dim, class GridImp>
>>> +class OneDEntityWrapper :
>>> +  public GridImp::template Codim<cd>::Entity
>>> +{
>>> +public:
>>>  
>>> +    OneDEntityWrapper() :
>>> +        GridImp::template Codim<cd>::Entity (OneDGridEntity<cd, dim, 
>>> GridImp>())
>>> +    {}
>>> +
>>> +    void setToTarget(OneDEntityImp<dim-cd>* target) {
>>> +        this->realEntity.setToTarget(target);
>>> +    }
>>> +
>>> +    OneDEntityImp<dim-cd>* target() {return this->realEntity.target_;}
>>> +};
>>> +
>>> +
>>>  //********************************************************************** 
>>>
>>>  //
>>>  // --OneDGridEntity
>>> @@ -383,8 +400,8 @@
>>>  
>>>          }
>>>  
>>> -        
>>> GridImp::getRealImplementation(it.virtualEntity_).setToTarget((it.elemStack.empty()) 
>>> -                                                                      
>>> ? OneDGridNullIteratorFactory<1>::null() : it.elemStack.top());
>>> +        it.virtualEntity_.setToTarget((it.elemStack.empty()) 
>>> +                                      ? 
>>> OneDGridNullIteratorFactory<1>::null() : it.elemStack.top());
>>>                   return it;
>>>      }
>>>
>>> Modified: trunk/grid/onedgrid/onedgridentitypointer.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridentitypointer.hh    2009-09-09 
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridentitypointer.hh    2009-09-09 
>>> 16:01:02 UTC (rev 5356)
>>> @@ -30,8 +30,7 @@
>>>  
>>>    //! equality
>>>    bool equals(const OneDGridEntityPointer<codim,GridImp>& other) 
>>> const {
>>> -      return 
>>> GridImp::getRealImplementation(other.virtualEntity_).target_ 
>>> -          == GridImp::getRealImplementation(virtualEntity_).target_;
>>> +      return other.virtualEntity_.target() == virtualEntity_.target();
>>>    }
>>>  
>>>    //! dereferencing
>>> @@ -40,14 +39,13 @@
>>>    //! ask for level of entity
>>>    int level () const {return virtualEntity_.level();}
>>>  
>>> -    OneDGridEntityPointer() -        : 
>>> virtualEntity_(OneDGridEntity<codim, dim, GridImp>())
>>> -    {}
>>> +    OneDGridEntityPointer() {}
>>>  
>>>    /** \brief Constructor from a given entity  */
>>>    OneDGridEntityPointer(const OneDGridEntity<codim, dim, GridImp> & 
>>> entity) -      : virtualEntity_(entity)
>>> -    {}
>>> +  {
>>> +      virtualEntity_.setToTarget(entity.target_);
>>> +  }
>>>  
>>>    //! empty method since internal entity is not a pointer    void 
>>> compactify () {}
>>> @@ -55,15 +53,13 @@
>>>  protected:
>>>  
>>>      /** \brief Constructor from a given iterator */
>>> -    OneDGridEntityPointer(OneDEntityImp<dim-codim>* it) -        : 
>>> virtualEntity_(OneDGridEntity<codim, dim, GridImp>())
>>> -    {
>>> -        GridImp::getRealImplementation(virtualEntity_).setToTarget(it);
>>> +    OneDGridEntityPointer(OneDEntityImp<dim-codim>* it) {
>>> +        virtualEntity_.setToTarget(it);
>>>      };
>>>  
>>>  protected:
>>>  
>>> -    mutable MakeableInterfaceObject<Entity> virtualEntity_;
>>> +    mutable OneDEntityWrapper<codim,GridImp::dimension,GridImp> 
>>> virtualEntity_;
>>>  
>>>  };
>>>  
>>>
>>> Modified: trunk/grid/onedgrid/onedgridhieriterator.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridhieriterator.hh    2009-09-09 
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridhieriterator.hh    2009-09-09 
>>> 16:01:02 UTC (rev 5356)
>>> @@ -65,8 +65,8 @@
>>>                       }
>>>          -        
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget((elemStack.empty()) 
>>> -                                                                         
>>> ? OneDGridNullIteratorFactory<1>::null() : elemStack.top());
>>> +        this->virtualEntity_.setToTarget((elemStack.empty()) 
>>> +                                         ? 
>>> OneDGridNullIteratorFactory<1>::null() : elemStack.top());
>>>      }
>>>  
>>>  private:
>>>
>>> Modified: trunk/grid/onedgrid/onedgridleafiterator.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridleafiterator.hh    2009-09-09 
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridleafiterator.hh    2009-09-09 
>>> 16:01:02 UTC (rev 5356)
>>> @@ -27,16 +27,16 @@
>>>          /** \todo Can a make the fullRefineLevel work somehow? */
>>>          const int fullRefineLevel = 0;
>>>          -        
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget((OneDEntityImp<1-codim>*)Dune::get<1-codim>(grid_->entityImps_[fullRefineLevel]).begin()); 
>>>
>>> +        
>>> this->virtualEntity_.setToTarget((OneDEntityImp<1-codim>*)Dune::get<1-codim>(grid_->entityImps_[fullRefineLevel]).begin()); 
>>>
>>>  
>>> -        if 
>>> (!GridImp::getRealImplementation(this->virtualEntity_).target_->isLeaf()) 
>>>
>>> +        if (!this->virtualEntity_.target()->isLeaf())
>>>              increment();
>>>      }
>>>  
>>>    //! Constructor
>>>      OneDGridLeafIterator()      {
>>> -        
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(OneDGridNullIteratorFactory<1-codim>::null()); 
>>>
>>> +        
>>> this->virtualEntity_.setToTarget(OneDGridNullIteratorFactory<1-codim>::null()); 
>>>
>>>      }
>>>  
>>>      //! prefix increment
>>> @@ -44,8 +44,7 @@
>>>          // Increment until you find a leaf entity
>>>          do {
>>>              globalIncrement();
>>> -        } while 
>>> (GridImp::getRealImplementation(this->virtualEntity_).target_ 
>>> -                 && 
>>> !GridImp::getRealImplementation(this->virtualEntity_).target_->isLeaf()); 
>>>
>>> +        } while (this->virtualEntity_.target() && 
>>> !this->virtualEntity_.target()->isLeaf());
>>>      }
>>>  
>>>  private:
>>> @@ -58,12 +57,12 @@
>>>          const int oldLevel = this->virtualEntity_.level();
>>>  
>>>          // Increment on this level
>>> -        
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(GridImp::getRealImplementation(this->virtualEntity_).target_->succ_); 
>>>
>>> +        
>>> this->virtualEntity_.setToTarget(this->virtualEntity_.target()->succ_);
>>>  
>>>          // If beyond the end of this level set to first of next level
>>> -        if 
>>> (!GridImp::getRealImplementation(this->virtualEntity_).target_ && 
>>> oldLevel < grid_->maxLevel()) {
>>> +        if (!this->virtualEntity_.target() && oldLevel < 
>>> grid_->maxLevel()) {
>>>  
>>> -            
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(const_cast<OneDEntityImp<dim-codim>*>(Dune::get<1-codim>(grid_->entityImps_[oldLevel+1]).begin())); 
>>>
>>> +            
>>> this->virtualEntity_.setToTarget(const_cast<OneDEntityImp<dim-codim>*>(Dune::get<1-codim>(grid_->entityImps_[oldLevel+1]).begin())); 
>>>
>>>  
>>>          }
>>>  
>>>
>>> Modified: trunk/grid/onedgrid/onedgridleveliterator.hh
>>> ===================================================================
>>> --- trunk/grid/onedgrid/onedgridleveliterator.hh    2009-09-09 
>>> 15:25:07 UTC (rev 5355)
>>> +++ trunk/grid/onedgrid/onedgridleveliterator.hh    2009-09-09 
>>> 16:01:02 UTC (rev 5356)
>>> @@ -41,7 +41,7 @@
>>>  
>>>      //! prefix increment
>>>      void increment() {
>>> -        
>>> GridImp::getRealImplementation(this->virtualEntity_).setToTarget(GridImp::getRealImplementation(this->virtualEntity_).target_->succ_); 
>>>
>>> +        
>>> this->virtualEntity_.setToTarget(this->virtualEntity_.target()->succ_);
>>>      }
>>>  };
>>>  
>>>
>>>
>>> _______________________________________________
>>> Dune-Commit mailing list
>>> Dune-Commit at dune-project.org
>>> http://lists.dune-project.org/mailman/listinfo/dune-commit
>>>
>>>
>>>     
>>
>> _______________________________________________
>> Dune mailing list
>> Dune at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune
>>   
> 
> 




More information about the Dune mailing list