I am trying to mesh a 3D volume, almost a box, that contains surfaces. Since the surfaces are arbitrarily oriented and intersect, I have decided to use tetmesh not hexahedral mesh.
open the *.cub file containing the vol and sheet surfaces
imprint all with volume all
merge all
volume all scheme tetmesh
mesh vol all
Here is the output of the last command:
Matching intervals successful.
Meshing Volume 8 (Volume 8)
Generated 37 tris for Surface 45 (Surface 45).
Generated 38 tris for Surface 41 (Surface 41).
Generated 208 tris for Surface 30 (Surface 30).
Generated 898 tris for Surface 13 (Surface 13).
Generated 97 tris for Surface 14 (Surface 14).
Generated 175 tris for Surface 15 (Surface 15).
Generated 942 tris for Surface 2 (Surface 2).
Generated 109 tris for Surface 16 (Surface 16).
Generated 129 tris for Surface 17 (Surface 17).
Beginning C A M A L - T E T M E S H (Ver 6.1-0) session
-------------Using boundary recovery module------------- End C A M A L - T E T M E S H session
–>Loading new coordinates
–>Loading tetrahedrons
Generated 13689 tets for Volume 8 (Volume 8).
ERROR:
Bounding mesh has connectivity problems.
(Bounding mesh has odd Euler characteristic 3.)
ERROR:
Inconsistent edge to triangle count relationship in bounding mesh.
ERROR:
Mesh of Volume 8 is invalid.
WARNING: Keeping invalid mesh, because keep invalid mesh is on.
Volume 8 (Volume 8) meshing completed using scheme: tetmesh
Meshing Volume 17 (Volume 17)
Generated 82 tris for Surface 43 (Surface 43).
WARNING: >>>>Poor Quality Tri Generated!<<<<
(For example, the shape metric for Tri 2637 is 0.000277 .)
The threshold for a Tri is 0.200000
Generated 36 tris for Surface 32 (Surface 32).
WARNING: >>>>Poor Quality Tri Generated!<<<<
(For example, the shape metric for Tri 2726 is 0.116785 .)
The threshold for a Tri is 0.200000
Generated 99 tris for Surface 22 (Surface 22).
Generated 70 tris for Surface 36 (Surface 36).
Generated 101 tris for Surface 37 (Surface 37).
Mesh indicates Surface 38 is a toroidal surface.
ERROR:
Inconsistent edge to triangle count relationship.
ERROR:
Mesh of Surface 38 is invalid.
WARNING: Keeping invalid mesh, because keep invalid mesh is on.
Generated 1634 tris for Surface 38 (Surface 38).
WARNING: >>>>Poor Quality Tri Generated!<<<<
(For example, the shape metric for Tri 3033 is 0.038041 .)
The threshold for a Tri is 0.200000
Mesh indicates Surface 38 is a toroidal surface.
ERROR:
Inconsistent edge to triangle count relationship.
ERROR:
Mesh of Surface 38 is invalid.
WARNING: Keeping invalid mesh, because keep invalid mesh is on.
Generated 57 tris for Surface 39 (Surface 39).
Generated 52 tris for Surface 40 (Surface 40).
Beginning C A M A L - T E T M E S H (Ver 6.1-0) session
-------------Using boundary recovery module------------- End C A M A L - T E T M E S H session
ERROR:
Volume 17 (Volume 17) meshing unsuccessful.
Meshing time: 157.372249
ERROR:
1 volume(s) did not mesh.
Volume(s) 17 did not mesh.
I have been working on it. I realized that the problem is that I have two surfaces scraping each other i.e. barely touching or barely cutting. This leads to very poor condition number tets and mostly mesher failure.
My hypothesis towards solving this issue is to extend one of the two surfaces such that it nicely and cleanly cuts the other one so when I call chop, I get a nice clean curve where the two surfaces intersect. Equivalently, I can shrink the surface so that the two surf don’t come so close.
I have a short and specific question. How can I extend or shrink a surface in Trelis. Moving nodes does not work.
I noticed the duplicate surfaces in the volumes. This might have been because of the “keep” option in your chop command. I tried deleting the free surfaces and using the inner surfaces that are part of the volumes. I also reproduced the volumes without the inner surfaces and then subtracted the inner free surfaces from the volumes. Vol 24 meshes, but I’m still working on vol 18. I’ll look at it again.
Yes, you can scale a surface uniformly or by using a reference point with a command like
Thank you very much for giving your time on it. As I said, I have been working on it full time and I found out out the options 2 days ago and I used it with 3 surfaces. Then I also shortened a few surfaces to avoid their intersection with other major surfaces. I have made progress and here is my cub file
How can improve the invalid mesh? All bounding as well as interior surfaces have mesh with good quality.
I am continuing to add one surface at a time (I have a total of 24 sub-vertical surfaces and 4 horizontal surfaces). My idea is to avoid intersection where I can or get a nice clean cut where I can’t.
I have a different question: One of the horizontal surfaces has holes in it. How can I get a solid sheet from this? The holes are such that at a given (x,y) there are two z values i.e. overlapping parts on the two sides of the hole in the vertical direction. For surfaces without holes, I load a facet file, then mesh it, then create a sheet from the mapped surface.
It looks like the model is coming along. Do you need the sheet bodies/free surfaces since they were make part of the volumes? You might consider removing the duplicate surfaces.
I’m not sure I fully understand what you are trying to do with the holes. Can you use the bounding curves to make a surface?
Does it hurt to have duplicate sheet bodies in the data tree? I will remove them now but I thought they don’t make any difference. I only need to create a volume mesh and I don’t need the sheets.
About surfaces with holes: are you suggesting that I use the bounding curve of a hole to create a new surface? Should I merge it or assimilate it with the original surface? My problem is that the hole is there because another vertical surface cuts through this surface with the hole. So I will have the same problem of two surface coming very close to each other when trying to mesh.
How do I solve the invalid mesh issue for a volume? All the surfaces in the volume have good quality mesh but when I mesh the volume, I get an invalid mesh. How can I see the part that is invalid?
As best as I can tell, the mesh isn’t really invalid, just a case that wasn’t anticipated, but should be. That’s why the ‘set keep invalid mesh on’ was used. We will make the adjustment when validating the mesh.
There is a slight difference between chop and subtract.
For chop: “Given two bodies, the command will find the intersection of the two bodies, and divide the main body into a body that lies outside the intersection, and a body that lies inside the intersection.”
For subtract: “The subtract operation subtracts one body or set of bodies from another body or set of bodies.”