How are you writing out the solution?  This certainly doesn't happen when
using Exodus (Hilbert keys aren't involved there at all).

Derek

On Wed, Aug 12, 2015 at 1:45 PM David Knezevic <david.kneze...@akselos.com>
wrote:

> On Wed, Aug 12, 2015 at 1:32 PM, John Peterson <jwpeter...@gmail.com>
> wrote:
>
> > Sorry it has taken a while for me to respond, was on vacation...
> >
>
>
> No worries at all!
>
>
>
> > On Fri, Aug 7, 2015 at 9:13 AM, David Knezevic <
> david.kneze...@akselos.com
> > > wrote:
> >
> >> This is an issue that has been raised on the list before: libMesh writes
> >> out solutions to disk using an indexing scheme based on a Hilbert curve,
> >> in
> >> order to provide a partition independent numbering. As far as I
> >> understand,
> >> this uses the locations of nodes to generate the numbering and as a
> result
> >> it produces incorrect results on a "slit" mesh.
> >>
> >
> > It produces something, though, right, it's just that the element
> numbering
> > is indeterminate?  Or does it crash?
> >
>
> It produces a "mixed up" solution, i.e. values on either side of the slit
> are mixed up in a random way. This is a bit nasty because you aren't
> necessarily aware that there is a problem unless you look closely, hence my
> question below about an error checker for this.
>
>
>
> > I believe the only fix for this is to introduce a small gap in the mesh
> so
> >> that we don't have any coincident nodes, is that right? I was wondering
> if
> >> anyone can provide guidance about how big that gap has to be? Is a
> machine
> >> precision gap sufficient, or does it have to be significantly larger?
> >> (I've
> >> generally used a gap of 1.e-5 which works fine, but I was wondering what
> >> the tolerance for the Hilbert indexing is, and if it can be changed.)
> >>
> >
> > I've played around a bit with the Hilbert Keys stuff, particularly with
> > converting from floating point values to Hilbert keys and back to
> floating
> > point values.  From what I vaguely recall, not only was the round-trip
> not
> > bitwise-accurate, it actually wasn't even close in some cases.  I can
> > probably dig up some actual numbers if you are interested.  I don't know
> > exactly what this means for your gap width stuff, other than that it
> might
> > work only erratically.
> >
>
> hmm, well it sounds like that implies that an epsilon separation is
> sufficient to avoid a Hilbert Key clash.
>
>
>
> > Another question: It would be helpful if we could trigger an error if a
> >> slit mesh is detected when writing out or reading in, since otherwise we
> >> can get "silent failures". Would this error detection be feasible? I'd
> be
> >> happy to work on it, if there is a clear path on how it could be
> >> implemented.
> >>
> >
> > Only thing that comes to mind is writing a separate function that loops
> > over the elements, computes their Hilbert Keys, and reports any
> > collisions.  It might only be feasible to do that after the Mesh has been
> > read in though...
> >
>
> This sounds good to me, actually. I'd like to be able to call a function
> that checks for Hilbert Key collisions.
>
> I'd be happy to work on this and put it into a PR. Any chance you can point
> to any Hilbert Key code that I can refer to in order to help get started?
>
> Thanks,
> Dave
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Libmesh-users mailing list
> Libmesh-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/libmesh-users
>
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to