I have two surfaces that are equal (in terms of geometry) and I need a watertight surface mesh (2D) of the geometry.
right now, I am usign NETGEN 2D-1D as 2D algorithm for the meshing of it.
my issue is that even thought the surfaces are equal (in terms of geometry, lets say group_1 and group_2) the resulting mesh does not have the points in the same location.
what I am seeking help with, would be: a workflow to achieve a mesh where the groups on faces of the mesh will have the same position of points and that the mesh is watertight at the same time(conformal, i.e., that the different group on faces are connected correctly).
for the moment the best results I have had were with mefisto (or netgen 2D)+1D local length with this, the two meshed faces are really similar, nevertheless not equal.
I am uploading an example of what I mean, with a simple geometry.
Study1_.hdf (1018,0 KB)
any insight will be more than welcome.
Try Projection [1D-]2D algorithm
sorry to bother you more but could you give me more details/show it with an example? a dump python script or an hdf file?
In Study1_.hdf (217.5 KB), I create a sub-mesh on geom Group_1 with Projection 1D-2D algo, and specify geom Group_2 as a source of projection.
Thanks a lot!
best regards, franco
dear @smeap ,
thanks again for your help, I am sorry to continue to bother you with this (as we already discussed a back in the old forum) old thread
In difference to the old thread I am 100% creating the geometry in salome. by an script. eventhought the two faces should be “equivalents” there is a different number of edges in the two sides that I want to project. how could I resolve post geometry creation or avoid this issue while creating it? in the old thread you named a way to remediate this after meshing normally the geometry. but would prefer to solve it before the meshing process to be able to succesfully use the workflow previously mentioned here (with projection 1d-2d.
A way I see is to define 1D sub-meshes on edges that must be equally meshed, and either to apply equal Number of Segments to these edges, or to use Projection 1D from one edge to another. Unfortunately it will be impossible to use NETGEN 1D-2D to mesh these edges this way.
so, if I understand you correctly,
i created a cube and added a vertex to simulate this issue. then
1.create the two face groups, group_1 and group_2, create a sub group of edges_1 and edges_2 (all edges from the prevously created groups.
2. create a mesh of the object. 2D netgen and 1D wire discretization and define number of segments.
3. create a submesh of edges_1 with project 1D from edges_2
this gives me an error.
NETGEN 1D-2D is it not necessary right now I was using netgen 2D+ wire discretization with local length
here is the file to reproduce this issue. while computing I am getting the error “Vertices association failed”
Study1_.hdf (175,9 KB)
Hello @smeap could you please detail a little bit more your approach? I still have not successfully achieved what I am trying to do.
From your study I see that you caught correctly the idea. I suspect that 1D projection does not work because a source and a target groups contain different number of edges. As the documentation says “The source and target groups must contain equal number of edges and they must form topologically equal structures.”
What I thought was to grab the vertexs (v1) of one face and the ones of the other (v2) and project them in the opposite face. And then delante any double (in same position) but not sure if this is possible over the geometry module (i am sure that in reality my faces are equal ithink the difference of vertexes comes from the boolean operation resolving differently the intersection of cylinders with a plane from the edge of the cylinders that goes in the axial direction that are placed more or less in a random way…) … Any thoughts? Ideas? Or other work around?
do you know if there is any workaround this? I keep facing the same issue, where two faces that should be equal (they are created in salome CAD modules and not being imported from somewhere else) have a different number of vertex and edges, and therefore, the 1D-2D projection becomes useless for real complex geometries. I have tried differente things:
- Use “add point on edge” tool from the geometry module to add the non existing vertexes
- Create the same geometry with the shaper module and also the geometry module
in the two cases it generates different number of vertex and edges in some faces that should be equal topologically speaking. I think the issue comes from the way OCCT manages the curved faces where it adds the edge for the cross-section of the surfaces, as the case when creating a sphere.
I can post the two cases with the geometry created in shaper and in geometry if you want.
UPDATE: nevertheless not solved, I found that in my cases, I was correct about my presumption and the issue was regarding the ‘extra’ edge that is created when we create a spheric or cylindrical body, which is known as ‘seam’.
here is an example of the geometry I am working right now, it is a packed bed with intersecting spheres created in geometry module.
- if we create the spheres by default (by commenting lines 68 to 110), using simply
geompy.MakeSpherePntR it creates all the seams (see from the XY plane, It is a always positionned as a line as the vector (-1,0))
in this case, the faces in the solid ‘fluid’ corresponding to the different cyclics_* will not necessarily have an equal number of vertexes and edges, as the hexagon will intersect the spheres and the seams in different forms and therefore sometimes the seam will be placed touching the hexagon surface (and therefore intersecting the cyclic_ face) and sometimes not.
- once I found that the issue was comming from that, i placed the seams radially (comment lines 63 to 66 and uncommend 68 to 110) and some turned by 180 degrees, in a way that the sphere and its complementary (the other side of the hexagon) will intersect with it in a mirrored way, this generated as intended the same number of edges and vertex in each cyclic_ face. nevertheless, the algorithm continous to fail with the same error of not equal number of edges/vertex.
here is the python script:
example.py (13,6 KB)
UPDATE 2: I succesfully done a the meshing of the geometry with three 2D-1D projection by adding another step.
first there is two different configurations, or the spheres placed in the vertex of the hexagon, or the spheres placed in the sides of the hexagon. so i followed the following steps:
- place all the seams radially (and I choose to place them in the XY plane but I suspect that this is not necessary)
- I treated the ‘layer’ of spheres differently, if they where placed over the vertex or over the sides of the hexagon, in one or the other, what I did was to turn the spheres 180° for example, all the spheres were placed with the center of the seam that pointed to the center O, and for one pair where one sphere was in the 1,0,0, the one placed in the -1,0,0 the second one was turned 180°. this way the hexagon in each side that will intersect the sphere, will see the complementary of the seam. this solved the issue. neverthless quiet complex work to succesfully mesh with equal sizes.