[Gmsh] Enforced vertexes on plane for parallel domain decomposition

David Colignon David.Colignon at ulg.ac.be
Thu Jun 5 09:09:48 CEST 2008



Shi Jin wrote:
> Hi there,
> 
> I have been developing a parallel code to simulate particles flowing in fluids. We are using the mesh generated by gmsh for unstructured grids (Tetrahedra in 3D) and are quite impressed with it. Thank you.
> 
> Our code runs in MPI and the mesh is first read in by the master process and distributed into  pieces using graph partitioners such as  ParMetis  or Chaco.  However,  although  the partition may be  optimal to reduce parallel communication, it is not very good for tracking particles moving across domain interfaces. Therefore, we want to enforce a simple division between processes, specifically using a straight line in 2D or a plane surface in 3D. This way, it is trivial to figure out which processes the particle belongs to.
> For an example in 2D, please see the attached image, where a domain is divided into two parts by a straight line.
> 
> Then I have a problem generating the correct mesh for this purpose. The correct mesh should be one that has no element belonging to more than one process at the same time. Let's talk about the 2D example shown in the attachment.  I would like to enforce the vertexes to be on the dividing line in the middle of the domain while the default behavior does not guarantee that. So I am wondering if there is any advanced technique I can use to instruct gmsh to generate the correct mesh. 
> 

Hi Shi,

the easiest way is to define TWO surfaces, each one having the dividing line in common

Cheers,

Dave

-- 
David Colignon, Ph.D.
Collaborateur Logistique F.R.S.-FNRS (Equipements de Calcul Intensif)
ACE - Applied & Computational Electromagnetics
Institut Montefiore B28
Université de Liège
4000 Liège - BELGIQUE
Tél: +32 (0)4 366 37 32
Fax: +32 (0)4 366 29 10
WWW:    http://www.montefiore.ulg.ac.be/personnel.php?op=detail&id=898
Agenda: http://www.google.com/calendar/embed?src=david.colignon%40gmail.com



> My naive guess would be to first enforce vertexes on the dividing line and make sure they are the only ones used near the interface. Another possibility is to first generate the incorrect mesh and then subdivide the bridging elements into smaller ones that are on one side or the other. But I have no idea how to do any of those.
> 
> I would really appreciate your help. Thank you very much.
> 
> Regards,
> Shi
> 
>  --
> Shi Jin, PhD
> 
> 
> 
>       
> 
> 
> ------------------------------------------------------------------------
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh