[Dune] parallel DUNE grid for implementing a spherical shell (UGGrid)

Eike Mueller E.Mueller at bath.ac.uk
Tue Nov 6 19:00:35 CET 2012


Hi Oliver,

just to say that I got the refinement to work now with HEX_QUADSECT_0, and it does exactly what I want it to do.

Thanks again for your help,

Eike

Oliver Sander wrote:
>   Hi Eike,
> the refinement rule that you want is HEX_QUADSECT_0.
> There was a bit of implementation missing in UG itself.  Please
> try the attached patch -- it works for me.
> best,
> Oliver
> 
> Am 05.11.2012 20:24, schrieb Eike Mueller:
>> Hi Oliver,
>>
>> no, it either crashed or did nothing. I attach the updated code.
>>
>> Thanks, Eike
>>
>>
>>
>>
>> On 5 Nov 2012, at 19:22, Oliver Sander wrote:
>>
>>> Hi Eike,
>>> as mentioned, this is a hardly tested feature.  Can you send me an 
>>> updated test
>>> program?  Did you find any rule (besides RED) that does anything?
>>> best,
>>> Oliver
>>>
>>> Am 05.11.2012 20:14, schrieb Eike Mueller:
>>>> Hi Oliver,
>>>>
>>>> thanks a lot, I think that's what I was looking for. I've now tried 
>>>> the following RefinementRules, but with little success:
>>>>
>>>> RED: I get the previous refinement in all three directions
>>>> BLUE, COARSE: Nothing happens, i.e. elements do not get refined
>>>>
>>>> For
>>>>
>>>> HEX_BISECT_0_1,
>>>> HEX_BISECT_0_2,
>>>> HEX_BISECT_0_3,
>>>> HEX_TRISECT_0,
>>>> HEX_TRISECT_5,
>>>> HEX_QUADSECT_0,
>>>> HEX_QUADSECT_1,
>>>> HEX_QUADSECT_2
>>>>
>>>> I always get the following runtime error:
>>>>
>>>> ERROR in Patterns2Rules: no mapping for HEXAHEDRON and this pattern!
>>>> uggrid: rm.c:2838: UG::INT UG::D3::Patterns2Rules(UG::D3::ELEMENT*, 
>>>> UG::INT): Assertion `0' failed.
>>>>
>>>> so I must still be missing something. I loop over the grid like this:
>>>>
>>>> for (ElementLeafIterator it = ibegin;it!=iend;++it) {
>>>>       grid.mark(*it,UG::D3::PRISM_QUADSECT,0);
>>>> }
>>>>
>>>> Eike
>>>>
>>>> On 5 Nov 2012, at 17:01, Oliver Sander wrote:
>>>>
>>>>>
>>>>>
>>>>> Hi Eike,
>>>>>
>>>>> Am 05.11.2012 17:45, schrieb Eike Mueller:
>>>>>> Dear dune-list,
>>>>>>
>>>>>> (1) How can I ensure that the grid is not refined in the radial direction, i.e. I always only end up with one layer of cells in the radial direction? I guess I have to run over the grid and mark cells for refinement, but is this documented anywhere in more detail?
>>>>> UGGrid has a special non-interface method for anisotropic 
>>>>> refinement.  Have a look
>>>>> at the doxygen documentation of the UGGrid class.  There is a method
>>>>>
>>>>> bool mark 
>>>>> <imap://sander@indy5.igpm.rwth-aachen.de:143/fetch%3EUID%3E.INBOX.Sent%3E209?part=1.2.2&filename=a00865.html> 
>>>>> (const typename Traits::template Codim 
>>>>> <imap://sander@indy5.igpm.rwth-aachen.de:143/fetch%3EUID%3E.INBOX.Sent%3E209?part=1.2.3&filename=a00218.html>< 
>>>>> 0 >::Entity 
>>>>> <imap://sander@indy5.igpm.rwth-aachen.de:143/fetch%3EUID%3E.INBOX.Sent%3E209?part=1.2.4&filename=a00362.html> 
>>>>> &e, typename UG_NS< dim >::RefinementRule rule, int side=0)
>>>>>
>>>>> which marks the entity 'e' for refinement, but with a special 
>>>>> refinement rule.
>>>>> The list of rules is UG-specific and has not been properly 
>>>>> documented (Freiwillige vor!).
>>>>> You find all possible enum values in the UG header ug/gm.h at line 
>>>>> 317ff
>>>>> They are reasonably self-explanatory, but you need to do some 
>>>>> experimenting.
>>>>>
>>>>>> (2) The parallel load balancing does not seem to work. If I run on 24 processes and I call globalRefine(), followed by loadBalance(), some processes end up with no part of the grid. I have checked that I use the parallel version of UG grid.
>>>>>>
>>>>>> I attach the code I used to generate the grid, as well as the .vtu files mentioned above.
>>>>> No clue, I'd have to try this out myself.
>>>>> cheers,
>>>>> Oliver
>>>>>
>>>>>> Thanks a lot for any help,
>>>>>>
>>>>>> Eike
>>>>>>
>>>>>> PS: Alternatively, I would also be equaully happy if I can create a PARALLEL 2d surface grid for the surface of the sphere (again, either cubed sphere or a icosahedral grid). However, as far as I can see it, there is no parallel implementation for this, we've tried 2d ALUGRID, parallelised with the metagrid approach, but this does not scale beyond a few hundred processors as the entire grid is stored on each processor and my code runs out of memory.
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dune mailing list
>>>>>> Dune at dune-project.org
>>>>>> http://lists.dune-project.org/mailman/listinfo/dune
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Dune mailing list
>>>>> Dune at dune-project.org <mailto:Dune at dune-project.org>
>>>>> http://lists.dune-project.org/mailman/listinfo/dune
>>>>
>>>
>>
> 


-- 
Dr Eike Mueller
Research Officer

Department of Mathematical Sciences
University of Bath
Bath BA2 7AY, United Kingdom

+44 1225 38 5633
e.mueller at bath.ac.uk
http://people.bath.ac.uk/em459/




More information about the Dune mailing list