1 Star 0 Fork 63

scramjetFoam / openFoamUserManual

forked from poplee / openFoamUserManual 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
28.Surface_mesh_manipulation_tools.md 6.23 KB
一键复制 编辑 原始数据 按行查看 历史
闻久 提交于 2021-02-13 10:15 . !53 28.Surface_mesh_manipulation_tools.md

28 曲面网格处理工具

OpenFOAM自带一些可以对STL文件做前处理的工具,从而用snappyHexMesh或者cfMesh来划分网格。

28.1 面的添加工具 surfaceAdd

surfaceAdd可以合并两个STL文件,具体是通过命令 -mergeRegions 将相同名称的区域合并为一个区域。否则,无论名称是否相同,两个区域是各自独立的。

surfaceAdd -mergeRegions input1.stl input2.stl out.stl

列表155:sufaceAdd合并两个STL文件的用法。

28.2 面的子集提取工具 surfaceSbuset

surfaceSbuset工具可以提取STL的子集。使用surfaceSubsetDict来指定条件,从而定义子集。而用户提供要操作的STL文件(input.stl)以及要存储的子集(outSubset.stl)的文件名。之后,子集的面从原始STL中被移除。

surfaceSubset surfaceSubsetDict input . stl outSubset . stl

列表156:sufaceSubuset从STL文件中提取某个子集的用法。

28.3 面的特征提取工具 surfaceFeatureExtract

surfaceFeatureExtract是一个生成必要数据的工具,可以从STL中提取特征,例如使用snappyHexMesh时候需要特别注意被明确提供的几何特征。该工具由surfaceFeatureExtractDict控制。面特征的提取是由用户提供的特征角度控制,用于确定两个面元素之间的边缘是否构成特征边缘。

这一工具将特征边缘写入位于constant/triSurface文件夹中的*.eMesh文件。在词典文件surfaceFeatureExtractDict中,打开writeObj开关可以将数据写入constant/extendedFeatureEdgeMesh文件夹中的*.obj文件。这些文件可以在ParaView中查看,以评估所有面特征是否已完全正确地被提取。

28.4 面的特征转换工具

surfaceFeatureConvert工具可以将*.eMesh文件转为*.vtk文件,以便于在ParaView中查看。这在尝试查找正确的设置时非常重要,例如文件surfaceFeatureExtractDict的特征角度。

28.5 面的点变换工具 surfaceTransformPoints

surfaceTransformPoints工具类似于transformPoints工具(见27.1),它可以用来缩放、平移和旋转面网格。除了转换的选项之外,该工具运作还需要输入文件名和输出文件名。

28.6 面的第三方操作工具

28.6.1 面的特征边缘工具 surfaceFeatureEdges

surfaceFeatureEdges工具是由cfMesh(见18节)提供的,特征边缘可以从面网格文件(例如STL文件)中被提取出来。

surfaceFeatureEdges - angle 30 input . stl out . fts

列表157:surfaceFeatureEdges从STL文件中提取特征边缘的用法。

28.6.2 FMS到VTK的转换工具 ToVTK

ToVTK工具也是由cfMesh提供的(见18节),可以将由surfaceFeatureEdge创建的*.fms文件转化为VTK格式。这里,用户可以回顾特征边缘是如何被surfaceFeatureEdges定义的。当用户试图找到特征角的设置时,这一工具非常重要,它是用角度参数传递的。

28.7 Linux命令行

当用户需要使用ASCII STL进行一些预处理时,linux命令行提供了一些便捷的内容。 列表158中列出了ASCII格式的STL文件的基本语法。 STL可以存储在硬盘上,也可以存储在ASCII中,换句话说就是储存为纯文本或二进制格式。 当STL由是由边界面有定义的实体组成。

solid SOLIDNAME
    facet normal X Y Z
        outer loop
             vertex X Y Z
             vertex X Y Z
             vertex X Y Z
        endloop
    endfacet
    ...
endsolid

列表158:ASCII格式STL的基本语法,有关内容请参阅https://en.wikipedia.org/wiki/STL_(file_format)。

28.7.1实体重命名

某些CAD工具不提供命名部件的功能,例如OpenSCAD将导出的STL实体命名为OpenSCAD_Model。如果OpenSCAD导出的STL的前处理让每一个patch都产生一个STL文件,就像使用surfaceSubset工具的结果,那么我们最终将得到许多STL文件,包含每一个实体,他们都被命名为OpenSCAD_Model。

如果基于OpenSCAD生成的STL每个补丁产生一个STL文件,这可能是使用表面子集时的结果,我们最终得到了一些STL,其中包含每个名为OpenSCAD_Model的实体。 现在,我们需要为实体指定适当的名称,即。 文件入口的STL实体应命名为入口。现在,我们需要为实体指定适当的名称,输入文件的STL实体命名为inlet。

当STL是ASCII格式时,我们可以使用sed69执行简单的文本替换。 由于STL不太可能包含字符串OpenSCAD_Model,我们只需要告诉sed用inlet替换OpenSCAD_Model。

sed -i s/ OpenSCAD_Model / inlet /g inlet . stl

列表159:使用sed重命名STL文件的实体

28.7.2STL文件的连接

如果预处理留下了大量的STL文件,例如使用surfaceSubset工具时,每个patch都留有一个STL文件,我们可能需要连接这些STL文件,比如因为网格划分工具希望所有信息仅包含于一个STL文件中。 文本文件的连接是一个很容易通过命令和工具cat 70完成的任务,不过可以使用surfaceAdd工具也完成。 除了surfaceAdd工具之外,用这种方法连接STL仅限于包含不同实体的STL。

列表160展示了如何连接三个STL文件,每个STL都包含一个实体,即一个patch的信息。 第一行只是复制操作。 另外,我们也可以使用cp或mv来代替第一行。 注意,生成的STL文件被写入到不同的文件夹中,其中之一是constant/triSurface,其中一些网格划分工具是使用STL文件的。 第二行和第三行显示如何将cat的输出附加到指定的文件中。

第一行和之后区别在于重定向操作符( > 和 >>),参见https://en.wikipedia.org/wiki/Redirection_(computing算)。”>“操作符只是将输出的内容重定向到指定的文件,如果在第二行命令使用了,那么在myDomainMesh.stl中,由第一行命令产生的内容将被覆盖。 使用 ”>>“ 操作符可以重定向,并将输出附加到指定的文件里。 在第一行中使用 ”>“ 运算符可以确保覆盖最终存在的文件。。

cat walls . stl > constant / triSurface / myDomainMesh . stl
cat inlet . stl >> constant / triSurface / myDomainMesh . stl
cat outlet . stl >> constant / triSurface / myDomainMesh . stl

列表160:使用cat连接STL文件

1
https://gitee.com/wang-shang-free/openFoamUserManual.git
git@gitee.com:wang-shang-free/openFoamUserManual.git
wang-shang-free
openFoamUserManual
openFoamUserManual
master

搜索帮助