OpenCFD 正式发布开源CFD工具箱OpenFOAM 1.6版本的重大更新。
发布日期:2009年7月28日
”
应用模块
新增、更新并展示了多个浮力流、传热及反应流的应用案例;重新实现了多个求解器,以移除pd
并适配湍流模型的最新变更;所有功能均配备了经过精心整理的示例。
后处理模块
开发通用后处理、可视化及粒子追踪工具;新增并改进了实时后处理功能对象;增强了表面采样功能;兼容ParaView 3.6.1版本。
湍流模型
开发湍流模型库使求解器同时支持RAS和LES方法,重构壁面函数使其支持逐边界条件应用;新增壁面函数模型及分离涡模拟Spalart-Allmaras模型。
热物理模型
扩展热物理模型以支持非气体介质;新增通用多项式状态方程、热力学与输运模型,以及更灵活的反应化学热力学;为辐射模型添加有限体积离散坐标法。
拉格朗日模型
对底层框架进行全面改造,采用新的变量组成结构,新增多个子模型用于喷射、后处理与边界交互、蒸发及煤燃烧过程。
直接模拟蒙特卡洛方法
将OpenFOAM中的离散方法扩展为直接模拟蒙特卡洛(DSMC)方法的实现。
数值方法
新增广泛的多项式拟合高阶插值格式(线性、三次、二次);引入新的多项式拟合高阶表面法向梯度格式。
通用功能
优化了OpenFOAM案例的配置、运行和后处理流程,包括增强命令行执行与参数功能,改进字典指令和宏替换机制。
OpenFOAM-1.6 相较于 1.5 版本进行了重大升级,具体改进如下文所述。该版本已通过所有标准测试,并完成教程案例的全面验证。
OpenFOAM发行版的32位与64位二进制包在运行openSUSE GNU/Linux 11.1系统的机器上完成编译,并在Ubuntu 9系统中通过测试。建议用户在上述系统或其他类似版本的现代GNU/Linux系统上运行OpenFOAM。该版本亦可在旧版GNU/Linux系统上完成编译和测试,但需安装Qt 4.3.?(其源代码随OpenFOAM-1.6提供,参见README文件)以运行ParaView-3。
OpenFOAM-1.6/etc/bashrc
(或cshrc
)文件中设置的$WM_COMPILER
与$WM_COMPILER_ARCH
环境变量控制编译器选择OpenFOAM-1.6/etc/settings.sh
(或settings.csh
)文件中的$compilerInstall
环境变量控制#includeIfPresent
指令,功能类似于#include
指令,但文件不存在时不会报错#inputMode
现为merge
模式,对应最通用的场景。#inputMode warn
模式对应旧版默认行为#inputMode protect
模式,可条件化地将默认值合并至现有字典digest()
方法正则表达式的加入显著提升了可用性。
regExp
类支持在OpenFOAM中访问POSIX扩展正则表达式。wordRe
类可包含 word
或 regExp
。stringListOps
用于基于正则表达式、wordRe
或 wordReList
搜索字符串列表。Istream
和 Ostream
现在在读写字符串时会保留反斜杠。IOobject
新增通过单一路径规范创建对象的构造函数(例如 blockMesh -dict
选项)。argList
新增直接访问选项的便捷方法:option()
、optionFound()
、optionLookup()
、optionRead()
、optionReadIfPresent()
。readList(Istream&)
可读取方括号分隔的列表,或将单个值作为大小为1的列表处理。这在处理命令行选项时非常实用。$FOAM_CASENAME
,包含 $FOAM_CASE
环境变量的名称部分。对湍流模型库进行大规模开发,以在求解器层面实现更高的灵活性。对于同时支持RAS/LES计算的求解器,可通过在constant/turbulenceProperties
中设置simulationType
关键字进行选择:
laminar
RASModel
LESModel
根据所选类型,模型将从以下文件实例化:
壁面函数现可按计算域区块实时选择,适用于RAS(雷诺平均模拟)。
nut
或mut
,k
、Q
、R
,epsilon
、omega
。alphat
(仅可压缩流)。要恢复旧版OpenFOAM(v1.5及更早版本)的功能,需指定:
速度场:
nut
: nutWallFunction
,mut
: muWallFunction
,epsilon
: epsilonWallFunction
,omega
: omegaWallFunction
,k
、q
、R
: kqRWallFunction
。温度场:
alphat
: alphatWallFunction
。新增可压缩大涡模拟专用的alphaSgsJayatillekeWallFunction
热壁面函数。
applyWallFunctionBoundaryConditions
。nut/mut
场的存在性创建新的场。<field>.old
文件。旧版基于压缩性的热力学包basicThermo
更名为basicPsiThermo
;
新增basicRhoThermo
热力学包:
icoPolynomial
,polynomialTransport
,hPolynomialThermo
;废除化学反应建模中气体热物理性质的早期硬编码:
reactingMixture
现基于热力学包模板化;chemistryModel
现基于热力学包模板化;chemistrySolver
现基于热力学包模板化;新增fvDOM
辐射模型:
新增(重新启用)eThermo
热力学包:
PatchInjection
– 基于网格面单元局部的注入,FieldActivatedInjection
– 基于满足外部判据的注入,LookupTableInjection
– 明确定义注入位置与所有颗粒属性。dsmcFoam
。mdFoam
与mdEquilibrationFoam
。新增多项式拟合高阶插值方案:
biLinearFit
linearFit
quadraticLinearFit
quadraticFit
linearPureUpwindFit
quadraticLinearPureUpwindFit
quadraticLinearUpwindFit
quadraticUpwindFit
cubicUpwindFit
新增多项式拟合高阶Sn-Grad方案:quadraticFitSnGrad
相比triSurface
提供更高效的存储机制,且不受面形状限制(模板化参数)。
MeshedSurface
类:支持零个或多个连续surfZones
UnsortedMeshedSurface
类:非排序表面区域(与triSurface
相同)surfMesh
类:用于原生OpenFOAM格式的读写湍流模型的升级意味着可以在运行时选择模拟类型(层流、RAS 或 LES)。这减少了求解器数量,简化了整体代码结构。
turbFoam
、oodles
→ pisoFoam
turbDyMFoam
→ pimpleDyMFoam
rhoTurbFoam
、coodles
→ rhoPisoFoam
xoodles
并入 XiFoam
buoyantFoam
、lesBuoyantFoam
→ buoyantPisoFoam
interFoam
、rasInterFoam
、lesInterFoam
→ interFoam
lesCavitatingFoam
、rasCavitatingFoam
→ cavitatingFoam
channelOodles
→ channelFoam
(LES)pd
替换为静压力 p
。所有浮力效应可能显著的解算器均已从使用 pd
转换为使用 p
,并改进了数值方法以保持同等精度和稳定性。此项变更是为了消除关于 pd
含义和用途的混淆。g
(重力加速度)现为新型 uniformDimensionedVectorField
类型,具有场的特性,注册至 objectRegistry
,但仅存储单一数值。因此可创建并查找 g
及其他 UniformDimensionedFields
,例如在 fvPatchFields
中。现采用统一的字典条目管理求解器控制参数。
foamUpgradeFvSolution
工具将system/fvSolution转换为新格式。buoyantBoussinesqSimpleFoam
:基于Boussinesq浮力近似的稳态传热求解器,支持层流、RAS或LES湍流模型。buoyantBoussinesqPisoFoam
:基于Boussinesq浮力近似的瞬态传热求解器,支持层流、RAS或LES湍流模型。coalChemistryFoam
:瞬态拉格朗日反应求解器,采用煤粉云与热力云模型,包含化学反应机制,支持层流、RAS或LES湍流模型。porousExplicitSourceReactingParcelFoam
:瞬态拉格朗日反应求解器,基于单相反应云模型,具备多孔介质、显式质量源项功能,支持层流、RAS或LES湍流模型。rhoReactingFoam
:reactingFoam求解器的密度基热力学变体,现适用于液态系统。dsmcFoam
:稀薄气体动力学直接模拟蒙特卡洛(DSMC)求解器,可模拟任意数量气体组分的混合物。包含采用Larsen-Borgnakke内能再分配机制的变径硬球碰撞模型(参见G.A. Bird 1994年著作《Molecular Gas Dynamics and the Direct Simulation of Gas Flows》),可便捷添加其他运行时可选碰撞模型。mdFoam
分子动力学求解器,可模拟任意数量单原子和小型刚性多原子分子(如H2O、N2)的混合物在复杂几何结构中的六自由度运动。通过指定质量点和电荷点,可构建任意种类的分子。所有分子通过短程分散力和成对静电相互作用进行运动,具体方法参见:Fennell 和 Gezelter,《化学物理杂志》124卷, 234104 (2006)。
mdEquilibrationFoam
与mdFoam类似,但采用速度缩放技术将模拟温度调整至目标值。适用于模拟前的系统平衡化处理。
chtMultiRegionFoam
新型边界条件允许耦合区域进行独立分解,且不受分解方式限制。
改进了直接映射边界条件组。
buoyantPressureFvPatchScalarField
浮力压力边界条件现已兼容p
和pd
变量,以确保向后兼容性。
uniformDensityHydrostaticPressure
是专为从pd
过渡到p
设计的辅助压力边界条件,其特性类似于在出口处设置均匀pd
值。
activeBaffleVelocity
动态整合循环边界与壁面边界,使通过该边界的流量可通过压差等参数进行调控。
rotatingWallVelocity
根据转速、旋转原点和轴向,指定旋转速度场。
blockMesh
新增-dict
选项,可指定替代性区块网格描述字典。convertToMeters
条目现为可选参数,可使用更简短的scale
条目替代。foamToEnsight
新增-noPatches
选项,用于抑制面片生成。foamToEnsightParts
新增-noMesh
和-index
选项,适用于增量后处理结果时。snappyHexMesh
降低内存占用,新增分布式三角化表面类型,支持对超大规模三角面片集的表面进行网格划分。现可对任意复杂区域实施多区域网格划分。particleTracks
——为拉格朗日计算生成粒子轨迹。dsmcInitialise
——预处理工具,用于在几何体内创建DSMC粒子的初始配置。surfaceRedistributePar
——预处理工具,用于创建分布式三角化表面。interpolate
执行fvc::interpolate(<field>)
操作。randomise
通过给定扰动使<field>
随机化。addSubtract
提供简单的场加减功能。timeSelector
目前可同时兼容 -time
时间范围与 -latestTime
选项。例如对比 -time '0.01:0.09' -latestTime
和 -time '0.01:'
的场景。针对缺少 constant/ 或 0/ 目录的情况增强了可靠性。启用 -noZero
选项时,除非同时指定 -zeroTime
选项,否则 -latestTime
不会选择 0/
目录。该机制可避免某些工具(如 reconstructPar
)意外使用 0/ 目录导致的问题。-region
区域选择选项。PV3FoamReader
新增网格区域处理功能。区域名称从文件名中解析,例如 case{region}.OpenFOAM。paraFoam
新增 -region
选项用于指定替代区域。新增 -touch
选项仅生成 .OpenFOAM 文件。仅当目标文件不存在时才创建(并移除)*.OpenFOAM* 文件,该特性配合 -touch
选项使用效果显著。distanceSurface
)定义的表面进行采样。surfMesh
库兼容的所有表面几何格式。优化函数对象处理流程与时间循环机制
functionObjectList
保留了 functionObject
的顺序,从而支持操作链式执行。当system/controlDict使用 functions ..
而非 functions (..)
时,内部处理效率更高,但两种形式均被支持。
functionObject
新增了 end()
方法,当 Time::loop()
或 Time::run()
判定时间循环退出时,将调用该方法。因此,求解器代码应采用以下两种范式之一:
while (runTime.loop() ...
while (runTime.run()) runTime++; ...
新版 functionObjectList
可追踪子目录的 SHA1 消息摘要。当system/controlDict中无关内容发生变更时,可避免重新加载 functionObject
。
systemCall
– 执行系统指令列表fieldMinMax
– 计算<field>
的最小值/最大值staticPressure
– 将动压转换为静压dsmcFields
– 根据平均广延场(即动量和能量)计算强度场(速度和温度)timeStep
或outputTime
反映求解器应用程序架构
gcc
升级至4.3.3版本OpenMPI
升级至1.3.3版本ParaView
升级至3.6.1版本Scotch
新增分解方法: Scotch (http://gforge.inria.fr/projects/scotch/) 是源自ScAlApplix项目(Inria)的通用多级分解方法。该框架支持通用递归分区方法,其功能与Metis相当但采用许可更宽松的许可证。对应的分解方法(在decomposeParDict
中)为scotch
。可选择提供strategy
字符串来修改分解方法;初步测试显示默认策略产生的分解质量与Metis相当。