[Dune] Vector of IntersectionIterators

Dragan Vidovic vitkecar at gmail.com
Wed Mar 17 09:30:13 CET 2010


Hi Oliver

That's true... But I need the same thing for cells. Currently I'm
storing EntityPointers, and that takes less memory mostly because
there are less cells (tetrahedra) then faces. So I'll also need a
"cell-proxy" class. And then I may as well create a "grid-proxy"
class, and delete the Dune grid altogether to avoid storing data
twice. But then, why creating it in the first place.

Destroying an IntersectionIterator definitely does not free it's
space. It looks like a bug.

Dragan


On Wed, Mar 17, 2010 at 9:10 AM, Oliver Sander <sander at mi.fu-berlin.de> wrote:
> Hi Dragan!
> It gets less messy if you introduce an 'Intersection-Proxy' class
> that collects all your information for one Intersection.  You then
> have only one std::vector.
>
> Destroying the iterator object should, well, destroy the iterator.
> If it doesn't then it's a memory leak (i.e., a bug), or some hidden
> magic that only the ALUgrid maintainers can comment on.
>
> Oliver
>
> Dragan Vidovic schrieb:
>>
>> Hi Oliver
>>
>> Thanks for the suggestion. I had that as a temporary solution, but as
>> the project grows it was getting too messy. This is why I started
>> storing the iterators. Do you know how can I at least destroy them
>> after use? I guess that creating an iterator creates something within
>> the ALUgrid space which stays there. Am I right?
>>
>> Dragan
>>
>>
>> On Wed, Mar 17, 2010 at 8:51 AM, Oliver Sander <sander at mi.fu-berlin.de>
>> wrote:
>>
>>>
>>> Hi Dragan!
>>> Have you considered storing just the information that you need
>>> in several vectors?  For example, declare
>>>
>>> std::vector<FieldVector<double,dimworld> > normals;
>>> std::vector<double> areas;
>>> [...]
>>>
>>> Loop over the intersections of your current element once
>>> and fill the array.  Later you can access all information by index.
>>>
>>> Not the most elegant solution, but it should work.
>>>
>>> --
>>> Oliver
>>>
>>> Dragan Vidovic schrieb:
>>>
>>>>
>>>> Hi all
>>>>
>>>> I'm developing some very experimental finite volume methods and I
>>>> really need to store some kind of references to some faces, like
>>>> boundary faces or those where some physical parameters are
>>>> discontinuous, and use references these later to get areas, normals,
>>>> or to access neighbouring cells, without looping trough all cells
>>>> every time. Since mappers can only map from an IntersectionIterator to
>>>> an integer index and not the other way around, the only solution that
>>>> I found after allot of experimenting was to use a std::vector of
>>>> IntersectionIterators. Since an empty constructor for
>>>> IntersectionIterator is not allowed, I initialize it as
>>>>
>>>> std::vector<IntersectionIterator> ismap (nfaces,
>>>> gridView.ibegin(*gridView.template begin<0>()));
>>>>
>>>> and change it's elements later. There are two problems here:
>>>>
>>>> 1) This takes a hell of a space. I divided the increase in memory that
>>>> the process takes by the number of faces, and I found out that each
>>>> IntersectionIterator takes about 1k!
>>>>
>>>> 2) When this vector goes out of scope, this space is not recycled.
>>>>
>>>> I'm using the newest ALUgrid, and Dune not older than two weeks.
>>>>
>>>> Does anyone have some idea how to overcome these problems?
>>>>
>>>> Best regards,
>>>>
>>>> Dragan
>>>>
>>>> _______________________________________________
>>>> Dune mailing list
>>>> Dune at dune-project.org
>>>> http://lists.dune-project.org/mailman/listinfo/dune
>>>>
>>>>
>>>
>>> --
>>> ************************************************************************
>>> * Oliver Sander                ** email: sander at mi.fu-berlin.de        *
>>> * Freie Universität Berlin     ** phone: + 49 (30) 838 75348           *
>>> * Institut für Mathematik      ** URL  : page.mi.fu-berlin.de/~sander  *
>>> * Arnimallee 6                 ** -------------------------------------*
>>> * 14195 Berlin, Germany        ** Member of MATHEON (www.matheon.de)   *
>>> ************************************************************************
>>>
>>>
>>>
>>
>> _______________________________________________
>> Dune mailing list
>> Dune at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune
>>
>
>
> --
> ************************************************************************
> * Oliver Sander                ** email: sander at mi.fu-berlin.de        *
> * Freie Universität Berlin     ** phone: + 49 (30) 838 75348           *
> * Institut für Mathematik      ** URL  : page.mi.fu-berlin.de/~sander  *
> * Arnimallee 6                 ** -------------------------------------*
> * 14195 Berlin, Germany        ** Member of MATHEON (www.matheon.de)   *
> ************************************************************************
>
>




More information about the Dune mailing list