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 X...

eon 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