[Dune] [Dune-Commit] dune-grid r5015 - trunk/grid/test
Martin Nolte
nolte at mathematik.uni-freiburg.de
Wed Apr 8 07:57:23 CEST 2009
You're right, the old methods can now be marked deprecated, since the new ones
are implemented. Note that index sets / id sets use the Barton-Nackman trick (or
whatever this thing is really called) declare the interface. Therefore, the user
usually deals with the implementation rather than the interface and might not
get a deprecated warning unless the implementation also declares this method
deprecated.
Moreover, I would like to clear up the rumour that gcc cannot deprecated
template methods. This is _not_ true. There is a bug in gcc that prevents the
parser from correctly handling deprecation _if_ you put it at the end of the
declaration. _But_ you can put it in from of the method name and it will
perfectly work.
Martin
Carsten Graeser wrote:
> Hi.
> For a painless transition there are now two different interfaces using
> different local indices. Mixing both is very dangerous and might lead
> to the problem that the code runs, but simply produces wrong results
> (which was intendet to be avoided by the renaming).
>
> Thus I suggest additionally to immediate deprecation of the old methods
> to surround ALL of them by
>
> #ifndef DUNE_DISABLE_OLD_LOCAL_INDICES
> [...]
> #endif
>
> This allows to check if old indices are still used and is especially
> necessary since member template deprecation does not work with gcc.
>
> Carsten
>
>
> Oliver Sander schrieb:
>> Hi Martin!
>>> as far as I remember the decision in Heidelberg (and I understand that
>>> Christian remembers the same), the old template method is to be
>>> deprecated and removed post 1.3.
>> Well, great, let's do it!
>>> What confuses me is that you were one of the guys who wanted a hard
>>> break in the numbering while you have to change a lot of code. Anyway,
>>> I never wanted to offend you; my interest lies solely in a consistent
>>> interface. I'm in no way against discussions. But in this case a
>>> discussion started over things that we decided upon and the discussion
>>> seemed to weaken the interfaces consistency in quite a critical point,
>>> namely the subentity numbering.
>> Apparently a misunderstanding triggered by my weak memory. Apologies.
>> Let's just
>> continue the transition.
>>> Personally, I would have deprecated the old subIndex / subId methods
>>> already. The problem is that many grids don't support the replacement,
>>> yet, so people cannot change their code to the new implementation.
>> In dune-grid it's really only SGrid and YaspGrid. The ALU-Hack could
>> applied there as well
>> with little effort.
>>
>> --
>> Oliver
>>
>>> Maybe we should add FlySpray tasks for all the grids that don't
>>> support these methods, yet...
>>>
>>> Yours,
>>>
>>> Martin
>>>
>>> Oliver Sander wrote:
>>>> Hi Martin, hi all!
>>>>
>>>>
>>>>> ok, I thought yesterday's discussion was quite final. I read Oliver's
>>>>> statement as "I don't want to do this messy renumbering stuff, can't
>>>>> someone
>>>>> else do it".
>>>> Not quite. I do not want to dodge the numbering stuff (in fact I can't,
>>>> I maintain quite a lot of code that depends on local edge and face
>>>> numbers). My problem was that I don't quite remember what we
>>>> decided, and I didn't find it written down. Therefore I took the
>>>> conservative
>>>> point of view and assumed that the old methods would stay.
>>>> If they stay, though, it's very confusing to have the old methods use
>>>> a different numbering than the new ones. That was my point.
>>>>
>>>> Now if we have actually decided that the old subIndex methods should
>>>> disappear (post 1.3) (which I think is a good decision), then I agree
>>>> that
>>>> they can keep the old numbering, but they should be marked as deprecated
>>>> immediately, in order to avoid consistency issues.
>>>>
>>>> --
>>>> Oliver
>>>>
>>>>> With this in mind I simply changed things to the state they
>>>>> should be according to the Heidelberg discussion.
>>>>>
>>>>> The only thing left was Peter's argument and (as far as I remember) we
>>>>> discussed this in Heidelberg and decided that there should be no
>>>>> performance
>>>>> loss due to inlining and compiler optimization.
>>>>>
>>>>> If someone wants to reopen the Heidelberg discussion, feel free to
>>>>> do so. But
>>>>> until there is a different decision I think we should stick to what
>>>>> we already
>>>>> decided.
>>>>>
>>>>> Yours,
>>>>>
>>>>> Martin
>>>>>
>>>>>
>>>>>
>>>>> Carsten Graeser wrote:
>>>>>
>>>>>> Dear Dune Developers,
>>>>>> from the messages below the current state on the subIndex method
>>>>>> seems to be:
>>>>>>
>>>>>> *Oliver wants the template-arg method to have the same numbering
>>>>>> *Peter wants the template-arg method to remain
>>>>>> *Sven thinks that having different numbering conflicts with keeping
>>>>>> the template-arg method
>>>>>> but remembers that is was decided differently
>>>>>> *Martin thinks that the numbering should be different and changed
>>>>>> the test accordingly
>>>>>>
>>>>>> So currently there seems to be no definite agreement about this issue.
>>>>>> Perhaps it would be a good idea to decide this before further
>>>>>> changes are
>>>>>> applied. (Especially for maintainers of a grid implementation like
>>>>>> me. ;-) )
>>>>>>
>>>>>> Best regard
>>>>>> Carsten
>>>>>>
>>>>>>
>>>>>> Oliver Sander schrieb:
>>>>>>
>>>>>>> Shouldn't the old method use the new numbering as well?
>>>>>>> Then the test would be okay as it is.
>>>>>>>
>>>>>> Peter Bastian schrieb:
>>>>>>
>>>>>>>> - Do we keep the old member template methods?
>>>>>>>>
>>>>>>> I would keep it, as it might be more efficient.
>>>>>>>
>>>>>> Sven Marnach schrieb:
>>>>>>
>>>>>>> As I remember the discussion, the idea was to keep the old methods
>>>>>>> with the old numbering for a smooth transition, providing backward
>>>>>>> compatibility for one release. After the transition period, the old
>>>>>>> methods are to be deleted.
>>>>>>>
>>>>>>> That idea somehow conflicts with the idea to keep the old subIndex
>>>>>>> method with a template codim parameter.
>>>>>>>
>>>>>> mnolte at dune-project.org schrieb:
>>>>>>
>>>>>>> Author: mnolte
>>>>>>> Date: 2009-04-03 09:43:03 +0200 (Fri, 03 Apr 2009)
>>>>>>> New Revision: 5015
>>>>>>> Modified: trunk/grid/test/checkindexset.cc
>>>>>>> ===================================================================
>>>>>>> --- trunk/grid/test/checkindexset.cc 2009-04-03 07:40:07 UTC
>>>>>>> (rev 5014)
>>>>>>> +++ trunk/grid/test/checkindexset.cc 2009-04-03 07:43:03 UTC
>>>>>>> (rev 5015)
>>>>>>> @@ -448,9 +448,17 @@
>>>>>>> // the subIndex and the index for subEntity must
>>>>>>> be the same assert( vxidx == lset.index( *vxp ));
>>>>>>> + + typedef GenericGeometry::MapNumberingProvider<
>>>>>>> dim > Numbering;
>>>>>>> + const unsigned int tid = GenericGeometry::topologyId(
>>>>>>> it->type() );
>>>>>>> + const int gi = Numbering::template dune2generic< dim >(
>>>>>>> tid, i );
>>>>>>>
>>>>>>> // static and dynamic method must yield the same result
>>>>>>> - assert( vxidx == lset.subIndex(*it,i,dim));
>>>>>>> + if( vxidx != lset.subIndex( *it, gi, dim ) )
>>>>>>> + {
>>>>>>> + std::cerr << "Error: subIndex< dim >( entity, i ) !=
>>>>>>> subIndex( entity, dune2generic( i ), dim )" << std::endl;
>>>>>>> + assert( vxidx == lset.subIndex( *it, gi, dim ) );
>>>>>>> + }
>>>>>>> // check whether the coordinates are the same
>>>>>>>
>>>>>>> assert(vertexCoordsMap.find(vxidx)!=vertexCoordsMap.end());
>>>>>>>
>>>>>>
>>>>>
>>
>
>
--
Martin Nolte <nolte at mathematik.uni-freiburg.de>
Universität Freiburg phone: +49-761-203-5642
Abteilung für angewandte Mathematik fax: +49-761-203-5632
Hermann-Herder-Straße 10
79104 Freiburg, Germany
More information about the Dune
mailing list