[Gmsh] Doubts about Merge files

Bruno Correia da Silva bcs2 at cin.ufpe.br
Fri Apr 5 22:31:04 CEST 2013


Greetings Prof. Geuzaine,

 Thanks for the answer.
 In my case, i wanted fuse the two mesh. My grid needs to be continue.
About your tips, i did make this change in code and run with same mesh
send before:

 else if (argc >2){
    GmshSetOption("General", "Terminal", 1.);
    GModel *m = new GModel();
    m->readMSH(argv[1]);//mesh1.msh
    GmshMergeFile(argv[2]);//mesh2.msh
    m->removeDuplicateMeshVertices(0.001);
    m->writeMSH("test.msh", 1.0);
    delete m;
  }

 And show me this errors:
"
Info    : 76 vertices
Info    : Vertex numbering is dense
Info    : 153 elements
Info    : Reading 'M2.msh'...
Info    : 76 vertices
Info    : Vertex numbering is dense
Info    : 153 elements
Info    : Done reading 'M2.msh'
Info    : Removing duplicate mesh vertices...
Error   : Could not find vertex (0,10,0) (tol 0.0141421)
Error   : Could not recreate element 12
Error   : Could not find vertex (0,10,0) (tol 0.0141421)
Error   : Could not recreate element 13
Error   : Could not find vertex (0,10,0) (tol 0.0141421)
Error   : Could not recreate element 63
Error   : Could not find vertex (0,10,0) (tol 0.0141421)
Error   : Could not recreate element 64
Info    : Removed 13 duplicate mesh vertices
Info    : Done removing duplicate mesh vertices

 I can't understand why this element cannot be found and recreated.
 I don't use tags. This two mesh was generated by GMSH.

 One more question: Doesn't GMSH make this fuse in mesh?

 Thanks for help,

Att.


2013/4/5 Christophe Geuzaine <cgeuzaine at ulg.ac.be>:
>
> On 26 Mar 2013, at 21:25, Bruno Correia da Silva <bcs2 at cin.ufpe.br> wrote:
>
>> Hi everyone,
>>
>> I am using of GMSH  to make merge in meshes.
>> I did this cpp:
>>
>
> Merge simply adds everything in the same model: in your case this results in an invalid resulting mesh (you can reproduce the same behavior in the GUI). To fuse two grids, you would need to make sure they don't contain entities with clashing tags, then remove the duplicate vertices (m->removeDuplicateMeshVertices()).
>
>>
>> #include <stdio.h>
>> #include "Gmsh.h"
>> #include "GModel.h"
>> #include "MElement.h"
>>
>> #include <iostream>
>> using namespace std;
>> #include <stdio.h>
>> #include <string.h>
>>
>> int main(int argc, char **argv)
>> {
>>  GmshInitialize(argc, argv);
>>  if(argc ==1){
>>               GmshSetOption("General", "Terminal", 1.);
>>        char str[80];
>>        strcpy (str,argv[1]);
>>        strcat (str,".msh");
>>               GModel *m = new GModel();
>>        m->readGEO(argv[1]);
>>        m->mesh(3);
>>        m->writeMSH(str, 1.0);
>>        delete m;
>>  }
>>  else if (argc >2){
>>    GmshSetOption("General", "Terminal", 1.);
>>    GModel *m = new GModel();
>>    m->readMSH(argv[1]);//mesh1.msh
>>    GmshMergeFile(argv[2]);//mesh2.msh
>>    m->writeMSH("test.msh", 1.0);
>>    delete m;
>>  }
>>  GmshFinalize();
>> }
>>
>> The GMSH show me this error when i try open the test.msh:
>> Error  Wrong vertex index 0
>> Error Error loading 'test.msh'
>>
>> The two input files are attached.
>>
>> Some clues to correct this?
>>
>> att.
>> Bruno Correia
>> <M1.msh><M2.msh>_______________________________________________
>> gmsh mailing list
>> gmsh at geuz.org
>> http://www.geuz.org/mailman/listinfo/gmsh
>
> --
> Prof. Christophe Geuzaine
> University of Liege, Electrical Engineering and Computer Science
> http://www.montefiore.ulg.ac.be/~geuzaine
>
>
>