|
From: Xiang LI <ma...@us...> - 2019-03-02 14:26:13
|
Dear all,
I would like to create a mesh in parallel. I configured libMesh with --enable-parmesh and did some experiments. For example, I run an example introduction_ex4.C which solves the Poisson's equation in parallel with 48 processors. I create a 80*80*80 grid and what I got is as follows:
Mesh Information:
elem_dimensions()={3}
spatial_dimension()=3
n_nodes()=4173281
n_local_nodes()=91821
n_elem()=512000
n_local_elem()=10631
n_active_elem()=512000
n_subdomains()=1
n_partitions()=48
n_processors()=48
n_threads()=1
processor_id()=0
I observed that the code is successfully parallelized, but in each processor the mesh use more than 1G memory. Seems that each processor stored a copy of the whole mesh (the memory usage of mesh is unchanged if I use 96 processors instead). My questions are as follows:
1. Why the mesh is not stored in parallel? Is it because that my configuration is not successful, or I should modify the code? If I should modify the code, I was wondering how to do it. Do I need to initialize ParallelMesh or DistributedMesh instead of simply use Mesh mesh(init.comm()) at first?
2. Is there a primer or an example on how to use ParallelMesh or DistributedMesh? Is it OK to use a ParallelMesh in the same way as a normal Mesh?
3.For some reason I am still using libMesh 0.9.5. Is it crucial to update libMesh if I have to use ParallelMesh?
Thanks
Xiang
|