Meshing a volume into tetrahedrons

5 views (last 30 days)
Ansgar Neuenhofer
Ansgar Neuenhofer on 2 Aug 2023
Answered: Tushar on 22 Aug 2023
I am trying to mesh a simple volume (into tetrahedrons. I obtained the 3D geometry by extruding a 2-D geometry. From what I understand I can only mesh a volume by first writing an stl-file, then importing it into MATLAB and then meshing the volume. But how do I export my 3-D geometry to an stl-file?
I somehow managed successfully to mesh the brick without the hole using the function Delaunay, triangulation and stl-write.
Below is some code.
Thank you so much for any help you could offer
Ansgar
%exterior boundary
x = [-4 4 4 -4];
y = [-4 -4 4 4];
%interior boundary
x1 = [0 -2 0 2];
y1 = [-2 0 2 0];
R1 = [2;4;x';y'];
R2 = [2;4;x1';y1'];
gm =[R1 R2];
sf = 'R1-R2';
ns = char('R1','R2')'
ns = 2×2 char array
'RR' '12'
g = decsg(gm,sf,ns)
g = 7×8
2 2 2 2 2 2 2 2 4 4 0 -2 0 2 -4 -4 4 -4 -2 0 2 0 -4 4 -4 4 -2 0 2 0 -4 -4 4 4 0 2 0 -2 4 -4 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0
model = createpde;
g1=geometryFromEdges(model,g)
g1 =
AnalyticGeometry with properties: NumCells: 0 NumFaces: 1 NumEdges: 8 NumVertices: 8 Vertices: [8×2 double]
%meshing the area works fine
mesh=generateMesh(model,'GeometricOrder','linear','Hmax',1,'Hmin',.3)
mesh =
FEMesh with properties: Nodes: [2×88 double] Elements: [3×132 double] MaxElementSize: 1 MinElementSize: 0.3000 MeshGradation: 1.5000 GeometricOrder: 'linear'
pdeplot(model)
g2=extrude(g1,1)
g2 =
DiscreteGeometry with properties: NumCells: 1 NumFaces: 10 NumEdges: 24 NumVertices: 16 Vertices: [16×3 double]
figure
pdegplot(g2,'FaceLabels','on','facealpha',.2)
%***********************
%where do I go from here
%***********************
%stlwrite, delaunay ??????

Answers (1)

Tushar
Tushar on 22 Aug 2023
Hi Ansgar,
I understand that you are looking for meshing the volume into tetrahedrons. But tetrahedron triangulation is not supported by 'stlwrite'. However, you can follow the steps below to get started:
  • Extract the vertices from the 3D model, using the Vertices property of 'DiscreteGeometry' object:
X_=g2.Vertices(:,1);
Y_=g2.Vertices(:,2);
  • Use the 'delaunayTriangulation' object to create a 2-D or 3-D 'Delaunay triangulation' from the set of vertices as follows:
DT=delaunayTriangulation([X_,Y_]);
  • Explore the 'ConnectivityList' Property of the object DT.
  • (optional step) Using the connectivity list as stated above, create a 'triangulation' object:
tri=triangulation(DT.ConnectivityList,X_,Y_);
  • Finally, using the 'stlwrite' function, output this geometry into an STL file:
stlwrite(tri,"output.stl");

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!