我目前正在解决一个结构力学问题,需要剪切现有的3D表面网格以便在MATLAB或GMSH中使用对称性。
第一次尝试:通过首先删除负x轴上的所有节点来获得对称性;然后使用delaunayTri()获取3D四面体网格。之后,我使用freeboundry() matlab函数获取表面网格。使用这种方法,一些节点被忽略了,因此我失去了实际的几何形状(即3D的双凹形状)和对称性。
第二次尝试:通过首先删除负x轴上的所有节点来获得对称性;然后使用文件交换中的AlphaHull() matlab函数,该函数使用alpha shape算法。在这里,我必须定义一个标量参数称为alpha半径,其值影响表面网格的质量,但没有明确定义的范围,因此我无法自动化更大的网格;更重要的是,在生成的3D表面网格中存在一些残留的表面或四面体网格。
附上三个文件(在一个zip文件中):
提前致谢。
第一次尝试:通过首先删除负x轴上的所有节点来获得对称性;然后使用delaunayTri()获取3D四面体网格。之后,我使用freeboundry() matlab函数获取表面网格。使用这种方法,一些节点被忽略了,因此我失去了实际的几何形状(即3D的双凹形状)和对称性。
第二次尝试:通过首先删除负x轴上的所有节点来获得对称性;然后使用文件交换中的AlphaHull() matlab函数,该函数使用alpha shape算法。在这里,我必须定义一个标量参数称为alpha半径,其值影响表面网格的质量,但没有明确定义的范围,因此我无法自动化更大的网格;更重要的是,在生成的3D表面网格中存在一些残留的表面或四面体网格。
附上三个文件(在一个zip文件中):
- 原始GMSH文件;
- 从GMSH文件中提取的节点坐标;
- 从GMSH文件中提取的元素连接数组(txt格式)。
https://www.dropbox.com/s/7xwkyvqy13k5o33/get_symmetry.zip?dl=0
注意:我不想在新对称性中添加额外的节点,因为当前节点坐标和连接在我的计算中非常重要,但如果必要,可以引入额外的节点。然而,我会感激任何帮助和/或建议。提前致谢。
![所需对称性](https://istack.dev59.com/ZHDuH.webp)