[Dune] [#569] globalRefine() segfaults for Alberta3D for certain meshes

Dune dune at dune-project.org
Tue Jun 23 20:30:34 CEST 2009


THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.

The following task has a new comment added:

FS#569 - globalRefine() segfaults for Alberta3D for certain meshes
User who did this - Martin Nolte (nolte)

----------
This is a known issue with ALBERTA. The segfault you experience is a actually a stack overflow during the recursive bisection algorithm. When trying to refine an element, ALBERTA tries to use a prescribed refinement edge. It tries to refine all elements that share this edge (called a refinement patch) at the same time. But this edge need not be a refinement edge for the other elements in the patch. Therefore, ALBERTA tries to recursively refine such an element before refining the current patch. This way, one can run into cycles. While ALBERTA can ensure that the recursive bisection terminates in 2d, no such algorithm is known in 3d.

We will have to rely on heuristics to solve this problem. A simple idea is to select the longest edge for refinement on the macro grid. If this edge is unique, it makes the algorithm terminate in 2d. In 3d, this works unless an element is refined more that once. Maybe one can try to somehow select the 2nd-longest edge as the refinement edge for the children, but this has to be investigated.

By default, the GridFactory for AlbertaGrid does not modify the grid in any way. There a two reasons for this:
a) I don't know any reliable algorithm (not even heuristically) to make the bisection terminate in 3d.
b) In 2d ALBERTA handles this problem by itself (and 1d is trivial)
c) Changing the refinement edge can result in a less local refinement (longest-edge bisection is known to produce very non-local refinements.

I can give you two hints, though:
a) As long as you want to triangulate cube grids (as you did in your example), the DGF parser will split it into tetrahedra that ALBERTA can handle.
b) The refinement edge in ALBERTA is always between vertices 0 and 1.

I hope this explains it,

Martin
----------

More information can be found at the following URL:
http://www.dune-project.org/flyspray/index.php?do=details&task_id=569#comment985

You are receiving this message because you have requested it from the Flyspray bugtracking system.  If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.




More information about the Dune mailing list