OpenFOAM中的等值面类
OpenFOAMV9中的isoSurface类可以用来提取等值面。
该类的实例化方式为:
sampledSurfaces::isoSurface isosurf = sampledSurfaces::isoSurface(
"isoSurface",
mesh,
isoSurfaceDict);
"isoSurface"是一个自定义的名字(一般取对象名),mesh是所研究问题的网格,isoSurfaceDict是一个数据字典,该数据字典的内容如下
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 9
\\/ M anipulation |
-------------------------------------------------------------------------------
Description
Writes out iso-surface files with interpolated field data in VTK format.
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object isoSurfaceDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type isoSurface;
isoField p; //需要提取等值线的场,这里是压力场
isoValue 10; //等值线的数值,这里三10Pa
filter full;
interpolate yes;
// ************************************************************************* //
有了isosurf这个对象之后,可以用以下一行代码完成等值面提取的工作
isosurf.sample(p);
提取完成等值面后,可以获得等值面的面单元向量和等值面的顶点坐标
//等值面的面单元向量
faceList faces = isosurf.faces();
//等值面的顶点坐标
pointField points = isosurf.points();
points描述了该等值面是由哪些点构成的,提供了这些点的坐标信息。faces描述了这些点的连接关系。如果要访问第faceI个单元面的面积,可以使用以下代码:
mag(faces[faceI].area(points))
为了方便可视化,还可以将得到的等值面输出为VTK文件
vtkSurfaceWriter vtkWriter = vtkSurfaceWriter(IOstream::streamFormat<

本文详细介绍了OpenFOAM V9中的isoSurface类,教你如何创建并提取压力等值面,包括实例化过程、关键代码段和实际案例,如pitzDaily求解中的7Pa等值面计算与可视化。
最低0.47元/天 解锁文章
4400

被折叠的 条评论
为什么被折叠?



