OpenFOAM中的场数据处理——postProcess

转载自胡老师的公众号“CFD之道”在仿真秀上的文章:OpenFOAM|13 场数据处理_代码&命令_求解技术_科普_OpenFOAM-仿真秀干货文章 (fangzhenxiu.com)

本文简单介绍OpenFOAM中postProcess的使用。

在OpenFOAM中,可以使用程序 postProcess 对计算得到的基础结果数据进行处理以获取新的物理场数据。

 postProcess 可以作为单独的程序运行,如下面的形式:

postProcess -func vorticity

也可以作为求解器参数在求解计算过程中运行,如下面的调用形式:

simpleFoam -postprocess -func vorticity

需要注意的是,不管采用何种调用方式, postProcess 都是以后处理的形式运行。不过以求解器参数的形式运行的话,可以访问求解器参数。

 postProcess 提供了众多的功能,可以在终端中输入:

postProcess -list

输出结果如下图所示:

Available configured functionObjects:
57
(
CourantNo
Lambda2
MachNo
PecletNo
Q
R
XiReactionRate
add
boundaryCloud
cellMax
cellMin
components
div
dsmcFields
enstrophy
faceMax
faceMin
flowRateFaceZone
flowRatePatch
flowType
forceCoeffsCompressible
forceCoeffsIncompressible
forcesCompressible
forcesIncompressible
grad
icoUncoupledKinematicCloud
interfaceHeight
internalCloud
mag
magSqr
minMaxComponents
minMaxMagnitude
patchAverage
patchIntegrate
pressureDifferencePatch
pressureDifferenceSurface
probes
randomise
residuals
scalarTransport
singleGraph
staticPressure
streamFunction
streamlines
subtract
surfaces
totalPressureCompressible
totalPressureIncompressible
turbulenceFields
volFlowRateSurface
vorticity
wallHeatFlux
wallShearStress
writeCellCentres
writeCellVolumes
writeObjects
yPlus
)

 postProcess 源代码位于路径 $FOAM_UTILITIES/postProcessing/postProcess 中,在路径 $FOAM_SRC/functionObjects 中可以找到能够被处理的物理场。

下面以案例形式进行介绍。如下面的案例利用求解器 rhoPimpleFoam 计算斜坡激波,计算结果中只有基本物理量T、p、U、rho等。如下面为速度分布。

此时可以使用命令计算一些衍生物理量,如下所示:

# 计算得到马赫数
rhoPimpleFoam -postProcess -func MachNo

得到的马赫数如下图所示:

 相类似的方式可以得到其他的物理量:

# 得到库朗数
rhoPimpleFoam -postProcess -func CourantNo
# 得到壁面剪切应力
rhoPimpleFoam -postProcess -func wallShearStress
# 得到0s时刻的密度值
rhoPimpleFoam -postProcess -func 'writeObjects(rho)' -time 0
# 得到涡量值
rhoPimpleFoam -postProcess -func vorticity
# 独立程序方式得到涡量值
postProcess -func vorticity
# 利用外部字典进行数据获取
rhoPimpleFoam -postProcess -dict system/externalFunctionObject -latestTime

一些比较常用的调用形式包括:

# 获取速度梯度
postProcess -func 'grad(U)'
# 获取速度分量
postProcess -func 'components(U)'
# 获取速度值
postProcess -func 'mag(U)'
# 计算速度矢量的平方
postProcess -func 'magSqr(U)'
# 计算总压
postProcess -func 'totalPressureCompressible(rho,U,p)' -noZero
# 计算速度矢量的散度
postProcess -func 'div(U)' -time 500:1000
# 计算最终时刻的速度梯度幅值
postProcess -func 'mag(grad(U))' -latestTime

也可以使用工具 postProcess 计算指定边界上的物理量平均值,如下面的调用形式:

# 得到最终时刻边界inlet上的压力平均值
postProcess -func 'patchAverage(name=inlet,p)' –latestTime
# 得到最终时刻边界outlet上的速度平均值
postProcess -func 'patchAverage(name=outlet,U)' –latestTime
# 得到入口边界上压力积分值
postProcess -func 'patchIntegrate(name=inlet,p)' –latestTime
# 得到出口边界上速度积分值
postProcess -func 'patchIntegrate(name=outlet,U)' -latestTime

OpenFOAM中提供了一些将计算结果转换为其他格式的工具,这些工具源代码位于路径 $FOAM_UTILITIES/postProcessing/dataConversion ,比较常用的工具包括:

foamDataToFluent
foamToEnsight
foamToEnsightParts
foamToGMV
foamToTecplot360
foamToTetDualMesh
foamToVTK
smapToFoam

 

posted @ 2023-08-01 16:17  希望先生  阅读(910)  评论(0编辑  收藏  举报