[Gmsh] an issue when using api to create second order 2D mesh

Christophe Geuzaine cgeuzaine at ulg.ac.be
Sat Sep 9 23:30:50 CEST 2017


> On 6 Sep 2017, at 17:44, Xin Liu <liu1512 at purdue.edu> wrote:
> 
> Dear all,
> 
> I am using gmsh API to create a simple second order 2D mesh. The simplified codes are 
> 
>  
> #include <stdio.h>
> #include "Gmsh.h"
> #include "GModel.h"
> 
> int main(int argc, char **argv)
> {
>   GmshInitialize(0, 0);
>   GModel *m = new GModel();
> 
>   m->setFactory("Gmsh");
> 
>   GVertex *v1 = m->addVertex(0, 1, 0, 0.1);
>   GVertex *v2 = m->addVertex(0, 2, 0, 0.1);
>   GVertex *v3 = m->addVertex(0, 3, 0, 0.1);
>   GVertex *v4 = m->addVertex(1, 3, 0, 0.1);
>   GVertex *v5 = m->addVertex(1, 2, 0, 0.1);
>   GVertex *v6 = m->addVertex(1, 1, 0, 0.1);
>   
>   std::vector<GEdge*> edges1;
>   edges1.push_back(m->addLine(v1, v2));
>   edges1.push_back(m->addLine(v2, v5));
>   edges1.push_back(m->addLine(v5, v6));
>   edges1.push_back(m->addLine(v6, v1));
>   
>   std::vector<GEdge*> edges2;
>   edges2.push_back(m->addLine(v2, v3));
>   edges2.push_back(m->addLine(v3, v4));
>   edges2.push_back(m->addLine(v4, v5));
>   edges2.push_back(m->addLine(v5, v2));

Here you just duplicated curve v2-v5 (with reverse orientation)... Hence the duplicated vertices.

PS: note that this undocumented API will be replaced by a documented, much simpler C API in future releases of Gmsh. For more info see http://gitlab.onelab.info/gmsh/gmsh/issues/188

> 
>   std::vector<std::vector<GEdge*> > loop1;
>   loop1.push_back(edges1);
>   
>   std::vector<std::vector<GEdge*> > loop2;
>   loop2.push_back(edges2);
>   
>   
>   GFace *f1 = m->addPlanarFace(loop1);
>   f1->addPhysicalEntity(1);
>   GFace *f2 = m->addPlanarFace(loop2);
>   f2->addPhysicalEntity(2);
>   
>   
>   m->mesh(2);
>   m->setOrderN(2, 0, 0);
>   m->writeSC("test.msh");
>   delete m;
>   GmshFinalize();
> }
> 
> After running the codes, I opened the .msh file with Gmsh. Then, I found there are some repeated nodes at the interface of two surfaces (attachment1). However, if I use gmsh gui to create this model and mesh it, then this issue doesn't exist. Any suggestions or comments are great appreciate.
> 
> 
> 
> 
> Thanks
> Lambert 
> 
> 
> 
> <attachment1.jpg><test.msh>_______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh

-- 
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science 
http://www.montefiore.ulg.ac.be/~geuzaine

Free software: http://gmsh.info | http://getdp.info | http://onelab.info




More information about the gmsh mailing list