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关键字进行选择:
laminarRASModelLESModel根据所选类型,模型将从以下文件实例化:
壁面函数现可按计算域区块实时选择,适用于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。新增多项式拟合高阶插值方案:
biLinearFitlinearFitquadraticLinearFitquadraticFitlinearPureUpwindFitquadraticLinearPureUpwindFitquadraticLinearUpwindFitquadraticUpwindFitcubicUpwindFit新增多项式拟合高阶Sn-Grad方案:quadraticFitSnGrad
相比triSurface提供更高效的存储机制,且不受面形状限制(模板化参数)。
MeshedSurface类:支持零个或多个连续surfZonesUnsortedMeshedSurface类:非排序表面区域(与triSurface相同)surfMesh类:用于原生OpenFOAM格式的读写湍流模型的升级意味着可以在运行时选择模拟类型(层流、RAS 或 LES)。这减少了求解器数量,简化了整体代码结构。
turbFoam、oodles → pisoFoamturbDyMFoam → pimpleDyMFoamrhoTurbFoam、coodles → rhoPisoFoamxoodles 并入 XiFoambuoyantFoam、lesBuoyantFoam → buoyantPisoFoaminterFoam、rasInterFoam、lesInterFoam → interFoamlesCavitatingFoam、rasCavitatingFoam → cavitatingFoamchannelOodles → 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相当。