To merge nodes, use the following command:

Geometry.Tolerance = 1e-3; // adjust value here for correct merge result
Coherence Mesh;

By default, the nodes in the surface with lower surface/volume number will 
survive. If you want the opposite, you can either assign different numbers to 
them or apply this change which reverses the order. I had to do this once.

Index: Geo/GModel.cpp
===================================================================
--- Geo/GModel.cpp  (revision 18255)
+++ Geo/GModel.cpp  (working copy)
@@ -1556,14 +1556,21 @@
   double eps = lc * tolerance;
   std::vector<GEntity*> entities;
-  getEntities(entities);
+  getEntities(entities); // list of msh groups (tags)
   std::vector<MVertex*> vertices;
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++){
-      MVertex *v = entities[i]->mesh_vertices[j];
+  unsigned int esize (entities.size());
+  for(unsigned int i = 0; i < esize; i++) { // using inverse ordering to avoid 
moving vertices.
+    for(unsigned int j = 0; j < entities[esize-1-i]->mesh_vertices.size(); 
j++){
+      MVertex *v = entities[esize-1-i]->mesh_vertices[j];
       vertices.push_back(new MVertex(v->x(), v->y(), v->z()));
     }
+  }
   MVertexPositionSet pos(vertices);
   for(unsigned int i = 0; i < vertices.size(); i++)
     pos.find(vertices[i]->x(), vertices[i]->y(), vertices[i]->z(), eps);



From: gmsh [mailto:gmsh-boun...@ace20.montefiore.ulg.ac.be] On Behalf Of Prof. 
Antonello Uva
Sent: 19 September, 2014 12:37
To: gmsh@geuz.org
Subject: [Gmsh] Removing duplicates


Dear All,
I need to mesh 2 volumes (to be filled with two materials) sharing a surface 
boundary: "pieno" and "vuoto"
I modeled the geometry in an external CAD and imported them in Gmsh as two 
.step volumes.
I meshed everything correctly, but I have duplicated nodes (because of 
duplicate geometry) on the interface (boundary surface).
Is there a way to remove duplicates (which are numerically concident) from 
script? Either remove duplicates on the geometry or in the mesh will work.
Here I attach my script and step files:

Merge "pieno.step";
Merge "vuoto.step";

Mesh.CharacteristicLengthExtendFromBoundary = 0;
Mesh.CharacteristicLengthFactor = 0.5;
Mesh.CharacteristicLengthMin = 0.4;
Mesh.CharacteristicLengthMax = 20;
Mesh.CharacteristicLengthFromCurvature = 0;
Mesh.CharacteristicLengthFromPoints = 1;

Coherence;

Physical Volume("pieno") = {1};
Physical Volume("vuoto") = {2};


Thank you again for support and for the possibility to use this program.
Regards,

_______________________________________________
gmsh mailing list
gmsh@geuz.org
http://www.geuz.org/mailman/listinfo/gmsh

Reply via email to