首页/文章/ 详情

02 OpenFOAM 各版本发布文档(1.6)

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
4小时前浏览1

OpenCFD 正式发布开源CFD工具箱OpenFOAM 1.6版本的重大更新。

 

发布日期:2009年7月28日

1 主要更新内容

  1. 应用模块

    新增、更新并展示了多个浮力流、传热及反应流的应用案例;重新实现了多个求解器,以移除pd并适配湍流模型的最新变更;所有功能均配备了经过精心整理的示例。

  2. 后处理模块

    开发通用后处理、可视化及粒子追踪工具;新增并改进了实时后处理功能对象;增强了表面采样功能;兼容ParaView 3.6.1版本。

  3. 湍流模型

    开发湍流模型库使求解器同时支持RAS和LES方法,重构壁面函数使其支持逐边界条件应用;新增壁面函数模型及分离涡模拟Spalart-Allmaras模型。

  4. 热物理模型

    扩展热物理模型以支持非气体介质;新增通用多项式状态方程、热力学与输运模型,以及更灵活的反应化学热力学;为辐射模型添加有限体积离散坐标法。

  5. 拉格朗日模型

    对底层框架进行全面改造,采用新的变量组成结构,新增多个子模型用于喷射、后处理与边界交互、蒸发及煤燃烧过程。

  6. 直接模拟蒙特卡洛方法

    将OpenFOAM中的离散方法扩展为直接模拟蒙特卡洛(DSMC)方法的实现。

  7. 数值方法

    新增广泛的多项式拟合高阶插值格式(线性、三次、二次);引入新的多项式拟合高阶表面法向梯度格式。

  8. 通用功能

    优化了OpenFOAM案例的配置、运行和后处理流程,包括增强命令行执行与参数功能,改进字典指令和宏替换机制。

2 详细更新功能

OpenFOAM-1.6 相较于 1.5 版本进行了重大升级,具体改进如下文所述。该版本已通过所有标准测试,并完成教程案例的全面验证。

2.1 GNU/Linux版本

OpenFOAM发行版的32位与64位二进制包在运行openSUSE GNU/Linux 11.1系统的机器上完成编译,并在Ubuntu 9系统中通过测试。建议用户在上述系统或其他类似版本的现代GNU/Linux系统上运行OpenFOAM。该版本亦可在旧版GNU/Linux系统上完成编译和测试,但需安装Qt 4.3.?(其源代码随OpenFOAM-1.6提供,参见README文件)以运行ParaView-3。

2.2 C++编译器版本

  • 发行版采用GCC 4.3.3编译
  • 内置支持Intel C++ 10.?编译器(未测试)
  • 通过OpenFOAM-1.6/etc/bashrc(或cshrc)文件中设置的$WM_COMPILER$WM_COMPILER_ARCH环境变量控制编译器选择
  • 编译器安装路径由OpenFOAM-1.6/etc/settings.sh(或settings.csh)文件中的$compilerInstall环境变量控制

2.3 库开发更新

2.3.1 字典功能改进/变更

  • 字典关键字支持未加引号的单词或加引号的正则表达式。搜索时精确匹配优先于正则匹配,多重正则表达式按逆序匹配
  • 新增#includeIfPresent指令,功能类似于#include指令,但文件不存在时不会报错
  • 默认#inputMode现为merge模式,对应最通用的场景。#inputMode warn模式对应旧版默认行为
  • 新增#inputMode protect模式,可条件化地将默认值合并至现有字典
  • 新增计算并返回SHA1消息摘要的digest()方法

2.3.2 正则表达式

正则表达式的加入显著提升了可用性。

  • 新增 regExp 类支持在OpenFOAM中访问POSIX扩展正则表达式。
  • 新增 wordRe 类可包含 word 或 regExp 。
  • 新增 stringListOps 用于基于正则表达式、wordRe 或 wordReList 搜索字符串列表。
  • Istream 和 Ostream 现在在读写字符串时会保留反斜杠。

2.3.3 便捷性改进

  • IOobject 新增通过单一路径规范创建对象的构造函数(例如 blockMesh -dict 选项)。
  • argList 新增直接访问选项的便捷方法:option()optionFound()optionLookup()optionRead()optionReadIfPresent()
  • 新增 readList(Istream&) 可读取方括号分隔的列表,或将单个值作为大小为1的列表处理。这在处理命令行选项时非常实用。
  • 导出新增环境变量 $FOAM_CASENAME,包含 $FOAM_CASE 环境变量的名称部分。

2.3.4 湍流建模

对湍流模型库进行大规模开发,以在求解器层面实现更高的灵活性。对于同时支持RAS/LES计算的求解器,可通过在constant/turbulenceProperties中设置simulationType关键字进行选择:

  • laminar
  • RASModel
  • LESModel

根据所选类型,模型将从以下文件实例化:

  • RASProperties
  • LESProperties

2.3.5 RAS壁面函数

壁面函数现可按计算域区块实时选择,适用于RAS(雷诺平均模拟)。

  • 速度场:
    • 应用于湍流粘度nutmut
    • 应用于kQR
    • 应用于epsilonomega
  • 温度场:
    • 应用于湍流热扩散率alphat(仅可压缩流)。

要恢复旧版OpenFOAM(v1.5及更早版本)的功能,需指定:

  • 速度场:

    • nut: nutWallFunction
    • mut: muWallFunction
    • epsilon: epsilonWallFunction
    • omega: omegaWallFunction
    • kqR: kqRWallFunction
  • 温度场:

    • alphat: alphatWallFunction
  • 新增可压缩大涡模拟专用的alphaSgsJayatillekeWallFunction热壁面函数。

2.3.6 新增大涡模拟湍流模型

  • Spalart-Allmaras DDES
  • Spalart-Allmaras IDDES

2.3.7 升级

  • 新增实用工具 applyWallFunctionBoundaryConditions
  • 求解器将自动升级现有算例:
    • 基于 nut/mut 场的存在性创建新的场。
    • 边界条件包含作用域限定,例如可压缩求解器采用 compressibility:: 前缀。
    • 修改后的场将备份为 <field>.old 文件。
  • 注意事项:
    • 仅更新与当前选择的湍流模型相关联的场。若存在用于其他模型的场,则不会更新。
    • 新规范不向后兼容。

2.3.8 热物理模型

  • 旧版基于压缩性的热力学包basicThermo更名为basicPsiThermo

  • 新增basicRhoThermo热力学包:

    • 状态方程:icoPolynomial
    • 输运模型:polynomialTransport
    • 热力学模型:hPolynomialThermo
    • 存储额外密度场;
    • 通用形式,适用于其他介质类型(如液体);
    • 新增基于多项式的热力学模型:
  • 废除化学反应建模中气体热物理性质的早期硬编码:

    • reactingMixture现基于热力学包模板化;
    • chemistryModel现基于热力学包模板化;
    • chemistrySolver现基于热力学包模板化;
  • 新增fvDOM辐射模型:

    • 采用有限体积离散坐标法;
  • 新增(重新启用)eThermo热力学包:

    • 基于内能的热力学模型。

2.3.9 拉格朗日Intermediate

  • 全面升级底层框架
  • 将反应模块拆分为单一反应与多相反应
  • 采用新的变量组成结构
  • 新增多个子模型,包括:
    • 液体蒸发模型。
    • 统一颗粒与网格面交互行为。
    • 网格面后处理 – 收集撞击用户定义网格面的颗粒数据。
    • PatchInjection – 基于网格面单元局部的注入,
    • FieldActivatedInjection – 基于满足外部判据的注入,
    • LookupTableInjection – 明确定义注入位置与所有颗粒属性。
    • 注入模型
    • 后处理模块
    • 网格面交互模块
    • 相变模块

2.3.10 煤燃烧模型

  • 新增库 – 拓展多相反应功能
    • 包含表面反应/燃烧模型。

2.3.11 离散方法

  • 新增库提供直接模拟蒙特卡洛(DSMC)功能 – 参见下文dsmcFoam
  • 显著扩展分子动力学仿真功能库 – 参见下文mdFoammdEquilibrationFoam

2.3.12 数值方法

  • 新增多项式拟合高阶插值方案:

    • biLinearFit
    • linearFit
    • quadraticLinearFit
    • quadraticFit
    • linearPureUpwindFit
    • quadraticLinearPureUpwindFit
    • quadraticLinearUpwindFit
    • quadraticUpwindFit
    • cubicUpwindFit
  • 新增多项式拟合高阶Sn-Grad方案:quadraticFitSnGrad

2.3.13 新增表面网格库

相比triSurface提供更高效的存储机制,且不受面形状限制(模板化参数)。

  • MeshedSurface类:支持零个或多个连续surfZones
  • UnsortedMeshedSurface类:非排序表面区域(与triSurface相同)
  • surfMesh类:用于原生OpenFOAM格式的读写

2.4 求解器

2.4.1 求解器重构

湍流模型的升级意味着可以在运行时选择模拟类型(层流、RAS 或 LES)。这减少了求解器数量,简化了整体代码结构。

  • 同时支持层流、RAS 和 LES 的解算器:
    • turbFoamoodles → pisoFoam
    • turbDyMFoam → pimpleDyMFoam
    • rhoTurbFoamcoodles → rhoPisoFoam
    • xoodles 并入 XiFoam
    • buoyantFoamlesBuoyantFoam → buoyantPisoFoam
    • interFoamrasInterFoamlesInterFoam → interFoam
    • lesCavitatingFoamrasCavitatingFoam → cavitatingFoam
  • 仅支持 LES 的解算器:
    • channelOodles → channelFoam(LES)
  • pd 替换为静压力 p。所有浮力效应可能显著的解算器均已从使用 pd 转换为使用 p,并改进了数值方法以保持同等精度和稳定性。此项变更是为了消除关于 pd 含义和用途的混淆。
  • g(重力加速度)现为新型 uniformDimensionedVectorField 类型,具有场的特性,注册至 objectRegistry,但仅存储单一数值。因此可创建并查找 g 及其他 UniformDimensionedFields,例如在 fvPatchFields 中。

2.4.2 求解器控制改进

现采用统一的字典条目管理求解器控制参数。

  • 支持在system/fvSolution文件中进行字典替换和正则表达式操作。
  • 仍兼容旧版求解器控制语法(但会发出警告),可使用新版foamUpgradeFvSolution工具将system/fvSolution转换为新格式

2.4.3 新增求解器

  • 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》),可便捷添加其他运行时可选碰撞模型。

2.4.4 求解器更新

  • mdFoam 分子动力学求解器,可模拟任意数量单原子和小型刚性多原子分子(如H2O、N2)的混合物在复杂几何结构中的六自由度运动。通过指定质量点和电荷点,可构建任意种类的分子。所有分子通过短程分散力和成对静电相互作用进行运动,具体方法参见:Fennell 和 Gezelter,《化学物理杂志》124卷, 234104 (2006)。

  • mdEquilibrationFoam 与mdFoam类似,但采用速度缩放技术将模拟温度调整至目标值。适用于模拟前的系统平衡化处理。

  • chtMultiRegionFoam 新型边界条件允许耦合区域进行独立分解,且不受分解方式限制。

2.5 边界条件

  • 改进了直接映射边界条件组。

  • buoyantPressureFvPatchScalarField 浮力压力边界条件现已兼容ppd变量,以确保向后兼容性。

  • uniformDensityHydrostaticPressure 是专为从pd过渡到p设计的辅助压力边界条件,其特性类似于在出口处设置均匀pd值。

  • activeBaffleVelocity 动态整合循环边界与壁面边界,使通过该边界的流量可通过压差等参数进行调控。

  • rotatingWallVelocity 根据转速、旋转原点和轴向,指定旋转速度场。

2.6 实用工具

2.6.1 改进项

  • blockMesh新增-dict选项,可指定替代性区块网格描述字典。convertToMeters条目现为可选参数,可使用更简短的scale条目替代。
  • foamToEnsight新增-noPatches选项,用于抑制面片生成。
  • foamToEnsightParts新增-noMesh-index选项,适用于增量后处理结果时。
  • snappyHexMesh降低内存占用,新增分布式三角化表面类型,支持对超大规模三角面片集的表面进行网格划分。现可对任意复杂区域实施多区域网格划分。

2.6.2 新增工具

  • particleTracks——为拉格朗日计算生成粒子轨迹。
  • dsmcInitialise——预处理工具,用于在几何体内创建DSMC粒子的初始配置。
  • surfaceRedistributePar——预处理工具,用于创建分布式三角化表面。

2.6.3 新增foamCalc函数

  • interpolate执行fvc::interpolate(<field>)操作。
  • randomise通过给定扰动使<field>随机化。
  • addSubtract提供简单的场加减功能。

2.6.4 使用说明

  • timeSelector 目前可同时兼容 -time 时间范围与 -latestTime 选项。例如对比 -time '0.01:0.09' -latestTime 和 -time '0.01:' 的场景。针对缺少 constant/ 或 0/ 目录的情况增强了可靠性。启用 -noZero 选项时,除非同时指定 -zeroTime 选项,否则 -latestTime 不会选择 0/ 目录。该机制可避免某些工具(如 reconstructPar)意外使用 0/ 目录导致的问题。
  • 为更多工具增加 -region 区域选择选项。

2.6.5 Paraview 阅读器模块改进

  • PV3FoamReader 新增网格区域处理功能。区域名称从文件名中解析,例如 case{region}.OpenFOAM
  • paraFoam 新增 -region 选项用于指定替代区域。新增 -touch 选项仅生成 .OpenFOAM 文件。仅当目标文件不存在时才创建(并移除)*.OpenFOAM* 文件,该特性配合 -touch 选项使用效果显著。

2.7 后处理功能

  • 支持在插值或非插值等值面上进行采样。
  • 支持按距曲面距离(distanceSurface)定义的表面进行采样。
  • 支持任意网格的切割平面。
  • 支持输出至 surfMesh 库兼容的所有表面几何格式。

2.7.1 函数对象与时间循环优化

  • 优化函数对象处理流程与时间循环机制

  • functionObjectList 保留了 functionObject 的顺序,从而支持操作链式执行。当system/controlDict使用 functions .. 而非 functions (..) 时,内部处理效率更高,但两种形式均被支持。

  • functionObject 新增了 end() 方法,当 Time::loop() 或 Time::run() 判定时间循环退出时,将调用该方法。因此,求解器代码应采用以下两种范式之一:

    • while (runTime.loop() ...
    • while (runTime.run()) runTime++; ...
  • 新版 functionObjectList 可追踪子目录的 SHA1 消息摘要。当system/controlDict中无关内容发生变更时,可避免重新加载 functionObject

2.7.2 新增函数对象

  • systemCall – 执行系统指令列表
  • fieldMinMax – 计算<field>的最小值/最大值
  • staticPressure – 将动压转换为静压
  • dsmcFields – 根据平均广延场(即动量和能量)计算强度场(速度和温度)

2.7.3 使用说明

  • 改进输出控制:可选择timeStepoutputTime

2.7.4 教程结构调整

反映求解器应用程序架构

2.8 第三方软件

  • 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相当。

来源:CFD之道
ACTEnSightSystemOpenFOAM碰撞燃烧化学多孔介质湍流通用ParaView
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-07-09
最近编辑:4小时前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2626粉丝 11963文章 828课程 27
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈