[Gmsh] visualization problem ?
walter steffe
walter.steffe at alice.it
Sat Feb 13 19:11:42 CET 2016
Hello Christophe,
I have new data but still not the solution.
The problem is generated because some edges of the source and target
faces have a different number of mesh vertices.
In fact I have observed that the code enters in the following lines
(meshGFace.cpp: line 294)
if (get->mesh_vertices.size() != ges->mesh_vertices.size()) {
Msg::Info("Error ....);
}
Because of this mismatch a vertex in the target surface is null and
the copyMesh function returns at line 344 and does not create all the
slave triangles.
I have added a few lines in my code to see when master and slave edges
have same number of vertices:
//following is an EmCAD function which calls GEdge:setMeshMaster() for
all relevant edge master slave couples:
setMasterEdges();
gm->mesh(1);
//Following check is PASSED:
for(GModel::eiter eit = gm->firstEdge(); eit != gm->lastEdge() ++eit){
GEdge *ge=*eit;
if (ge->meshMaster() != ge){
GEdge *gem = dynamic_cast<GEdge*> (ge->meshMaster());
assert(ge->mesh_vertices.size()==gem->mesh_vertices.size());
}
}
//following is an EmCAD function which calls GFace:setMeshMaster() for
all relevant face master slave couples:
setMasterFaces();
gm->mesh(2);
//Following check is FAILED:
for(GModel::eiter eit = gm->firstEdge(); eit != gm->lastEdge(); ++eit){
GEdge *ge=*eit;
if (ge->meshMaster() != ge){
GEdge *gem = dynamic_cast<GEdge*> (ge->meshMaster());
assert(ge->mesh_vertices.size()==gem->mesh_vertices.size());
}
}
So it seems that the 2D meshing changes the 1D mesh for some edges and
so the conformances of master slave edges gets broken.
Used 2D algo is: ALGO_2D_MESHADAPT
Walter
On Thu, 2016-02-11 at 16:02 +0100, Christophe Geuzaine wrote:
> > On 11 Feb 2016, at 15:20, walter.steffe at alice.it wrote:
> >
> >
> >
> > I al already using the last stable version (gmsh 2.11.0)
> >
> > I have investigated a little bit more and I have seen that the msh
file contains a few lines as the followings
> > 2 4 259
> > Affine -0.9999999999999994 1.110223024625157e-16 0 0
-1.110223024625157e-16 -0.9999999999999994 0 0 0 0 1 0 0 0 0 1
> > 64
> > 14624 23986
> > -1 23987
> > -1 23990
> >
> > The problem is related with the -1 value associated with the tags of
some slave vertices.
> > I have used GDB with a breackpoint inside of the function
writeMSHPeriodicNodes (GModelIO_MSH.cpp line 574)
> > I have also used a break point condition (v1->getIndex() < 0) in
order to spot the problematic data.
> > So I have discovered that the slave vertex is good (for what
concerns the geometrical position) but has an index= -1.
> >
> > The problem now is that I do not know where the wrong index was
generated.
> > The slave vertex was created inside of the copyMesh(...) function:
> > MVertex *vt =new MFaceVertex ...
> > But this function seems not to be the responsible for the index
value of -1 (the MFaceVertex constructor sets that value to 0).
> >
>
> The indexing is done in GModel::indexMeshVertices(). It looks like if
the vertices keep the -1 index, it's because they do not belong to
elements (triangles) that need to get saved !?
>
> Let us know if you find the issue...
>
>
> > And why most of the slave indices were properly renumbered with the
exeption of those associated with face 4 (having master face=259) and a
few others ?
> >
> >
> > >I don't think so: the actual mesh is indeed incomplete. The problem
is most probably in the generation of the slave mesh. Quite a bit of
work has been going on on periodic meshes in recent releases: I would
try with the latest stable release to see if the problem >persists.
> >
> >
> >
> > _______________________________________________
> > gmsh mailing list
> > gmsh at onelab.info
> > http://onelab.info/mailman/listinfo/gmsh
>
More information about the gmsh
mailing list