On Wed, 16 Aug 2017, Renato Poli wrote:

 if ( mesh.processor_id() == 0) {
   MeshSerializer serialize(mesh, true, true);

You actually need a serializer to run on every processor, not just
proc 0, even in the case where you're only serializing onto proc 0.
Even if proc 0 is the only thing receiving mesh information, the other
processors need to know to send it.

This probably isn't a problem for you right now, though - the
default libMesh Mesh is a ReplicatedMesh, serializers are do-nothing
code on already-serialized meshes, and you should stick with
always-serialized ReplicatedMesh until your code is working in that
simpler case.

   FEMainWindow *win = new FEMainWindow(mesh, sys);

Pardon the rude question, but just to make sure we're not in the
middle of an XY problem:

You're sure you need your own from-scratch GUI here?  You definitely
can't make do with Paraview, VisIt, or some such?

...
 libMesh::MeshBase::const_element_iterator       el     =
_mesh.active_elements_begin();
 const libMesh::MeshBase::const_element_iterator end_el =
_mesh.active_elements_end();
 for ( ; el != end_el ; ++el)
 { ... sys.point_value(0,pt,elem) ...}

Here I don't see anything obviously wrong.  What's the failure?

I also inspected the "wirte_nodal_data" in MeshOutput, and got into
EquationSystems::build_parallell_solution_vector. I couldn't understand
completely what is going on there.

Yeah, there's a lot of complication (multiple systems, multiple
variables per system, vector-valued variables, subdomain-restricted
variables...) in that method which won't be relevant for you right
away.

It seems that each process is adding its local nodes to the
parallell_soln_ptr, using a "_communicator". Is that so?

Adding nodes on its local elements, then averaging by the number of
elements around each node, but yes.

What do you recommend for my case? Should I use the
build_parallell_solution_vector directly?

If you're happy with the compromises it makes (e.g. ignoring
non-vertex/higher-order solution bases, averaging away jumps
in discontinuous solutions) then it's a good way to start.

Even if you're not happy with those compromises, it might be good for
getting proof-of-concept code working.

WIll the sys.point_value work after that?

If you use that, then you won't need sys.point_value at all; you can
just index the solution vector it gives you by the node number you're
interested in.
---
Roy

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to