Subject: Re: [Libmesh-users] parallel_mesh

On Tue, 10 Jan 2017, Maria Giuseppina Chiara Nestola wrote:

> If our setup of elements already includes elements across process
> boundaries, do we need to still call gather_neighboring_elements()?

No. DistributedMesh requires one layer of ghost elements, which is
what gather_neighboring_elements() gets you. If you build the ghost
elements yourself you can skip the gather_neighboring_elements() and
go straight to prepare_for_use...

However, gather_neighboring_elements() gets the remote_elem neighbor
links correct, and IIRC that part is critical too - when you build the
ghost elements yourself, you don't need to bother with most neighbor
links, but links to remote elements need to be set to remote_elem, or
the find_neighbors() code has no way to tell whether there's a remote
element or a boundary side on that neighbor.

> but it seems to take forever to execute that in dbg mode (Even with
> very few grid points i.e. ~100 [8 procs]).

That shouldn't happen. We use that method all the time, with larger
files, e.g. for Nemesis restarts. If you could boil the problem down
into a small code you could send me I'd appreciate it.

> If I use Tri3 I trip:
> Assertion `oldvar == static_cast<Told>(static_cast<Tnew>(oldvar))' failed.
> oldvar = 18446744073709551615
> static_cast<Told>(static_cast<Tnew>(oldvar)) = 4294967295
> If I use Quad4 I trip:
> Assertion `i < _points.size()' failed.
> i = 0
> _points.size() = 0

These are both very low level messages; to know what's going on you'll
need to look at (and probably post) the full stack trace.

Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.
Libmesh-users mailing list
[email protected]

Programming list archiving by: Enterprise Git Hosting