Thank you John,
I do have some MPI code before LibMeshInit in my real application.
Also, If I do not call MPI_Finalize at the very end I'm getting warning
messages from MPI.
Thank you for you explanation with .pvtu, I have changed my code to
libMesh::VTKIO out(mesh); out.write("mesh1.pvtu"); and this worked.
Do you have any suggestions for the Problem #2 that I reported?
It seems to me that the problem is that the communicator of the Mesh
object is smaller than the communicator of the VTK. This causes a
problem for me.
Thank you,
Michael.
On 06/13/2018 12:01 PM, John Peterson wrote:
On Tue, Jun 12, 2018 at 7:48 PM, Povolotskyi, Mykhailo
<mpovo...@purdue.edu <mailto:mpovo...@purdue.edu>> wrote:
Dear Libmesh develepers,
I want to create different instances of mesh on several MPI
processes. Then I want to output the mesh from one MPI process.
I am facing problems with the following code:
#include "libmesh/libmesh.h"
#include "libmesh/mesh_generation.h"
#include "libmesh/mesh.h"
int main(int argc, char ** argv)
{
MPI_Init(&argc, &argv);
MPI is already initialized in LibMeshInit, so no need to do this
manually unless your real code does MPI communication before
LibMeshInit...
{
libMesh::LibMeshInit init (argc, argv,MPI_COMM_WORLD);
libMesh::Mesh
mesh(libMesh::Parallel::Communicator(MPI_COMM_SELF));
libMesh::MeshTools::Generation::build_cube (mesh,
10, 10, 5, 0.0,
2.0, 0.0, 3.0, 0.0, 4.0,libMesh::HEX8);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
Again, I'd just use init.comm().rank() to find out the rank.
if (rank == 0)
{
mesh.write("mesh1.vtu");
}
}
MPI_Finalize();
MPI_Finalize is called in the LibMeshInit destructor, no need to call
it manually.
return 0;
}
The problems are as follows:
Problem #1) If I run the code in serial, I'm getting warning:
Warning: This MeshOutput subclass only supports meshes which have
been serialized!
Warning: This MeshOutput subclass only supports meshes which have
been serialized!
The .pvtu extension should be used when writing VTK files in libMesh.
My question:
a) how to avoid the first waning about the mesh not being serialized?
Unless you have configured libmesh with --enable-parmesh (and
therefore Mesh == DistributedMesh) this warning can be safely ignored.
b) I tried to change the filename to mesh1.pvtu
In this case I'm getting an error message:
ERROR: Unrecognized file extension: mesh1.pvtu
I understand the following:
This is just a (possibly unnecessary) limitation of the NamebasedIO
class, it should work (as in misc_ex11 and misc_ex4 if you explicitly
construct a VTKIO object and then call the write() method.
--
John
------------------------------------------------------------------------------
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