云计算百科
云计算领域专业知识百科平台

ITHACA‑FV, Reduced order modelling(ROM) techniques for OpenFOAM

文章目录

  • ITHACA‑FV 项目介绍与使用详情
    • 一、项目简介
      • 第三方内置依赖(git子模块自带,无需额外安装)
    • 二、核心功能特性
    • 三、编译安装步骤
      • 前置条件
    • 四、典型工作流(完整使用流程)
      • 阶段1:离线阶段(成本高,只做一次)
      • 阶段2:在线阶段(极快,大量调用)
    • 五、代码调用两种模式
      • 模式A:直接使用项目提供的可执行程序
      • 模式B:C++二次开发,在自己的OpenFOAM程序链接ITHACA‑FV库
    • 六、重要限制与注意事项
    • 七、学习资源
    • 八、引用

ITHACA‑FV 项目介绍与使用详情

GitHub地址:https://github.com/ITHACA‑FV/ITHACA‑FV 全称:In real Time Highly Advanced Computational Applications for Finite Volumes,面向OpenFOAM的开源降阶模型(ROM,Model Order Reduction)C++库,由mathLab课题组开发维护。

一、项目简介

ITHACA‑FV是构建于OpenFOAM有限体积求解器之上的降阶建模工具库,核心目标:把高保真CFD全阶模型(FOM),通过降阶方法构建代理模型,大幅降低参数化CFD、瞬态流体仿真的计算开销,用于参数扫描、实时预测、数字孪生等场景。

传统OpenFOAM直接做多参数算例,每个参数都要跑完整CFD;ITHACA‑FV分为离线阶段(运行若干全阶CFD,采集流场快照,构建降阶基)和在线阶段(使用小维度降阶模型快速预测新参数下场,不再跑完整CFD)。

适配:官方主要面向 openfoam.com 商业发行版(v2106/v2212/v2306/v2412),也可手动适配OpenFOAM Foundation社区版;支持Ubuntu、CentOS、Arch等Linux系统。

第三方内置依赖(git子模块自带,无需额外安装)

  • Eigen:稠密线性代数矩阵运算
  • Spectra:特征值分解(POD本征计算)
  • OptimLib:数值优化求解
  • 二、核心功能特性

  • 侵入式降阶 POD‑Galerkin:正交分解+Galerkin投影,直接操作OpenFOAM离散矩阵算子(discretize‑then‑project策略),支持稳态、瞬态流体;
  • 非侵入式降阶 POD‑I:POD基 + 径向基函数RBF插值,不需要访问底层离散矩阵;
  • DEIM(离散经验插值法):处理非线性项、非仿射源项,缓解Galerkin降阶后非线性项依旧昂贵的问题;
  • 支持用户自定义参数空间,参数可以是边界条件、物性、几何相关;
  • 输出降阶基、快照、降阶系统矩阵;可导出结果用于外部后处理,也可对接网页端rom.js做浏览器端实时仿真;
  • 自带大量tutorial算例:方腔驱动流、圆柱绕流、热对流等标准CFD测试案例。
  • 适用场景:参数化流体仿真、快速响应评估、数字孪生代理模型;主要针对层流,湍流降阶需要额外数据驱动闭合模型。

    三、编译安装步骤

    前置条件

  • 已经编译好对应版本OpenFOAM,终端先source OpenFOAM环境;
  • git,wmake编译环境。
  • # 1.加载OpenFOAM环境(示例v2412,换成你的版本)
    source $HOME/OpenFOAM/OpenFOAM‑v2412/etc/bashrc

    # 2.克隆仓库并拉取子模块(Eigen/Spectra/OptimLib)
    git clone –depth 1 [https://github.com/ITHACA](https://github.com/ITHACA)‑FV/ITHACA‑FV.git
    cd ITHACA‑FV
    git submodule update –init

    # 3.加载ITHACA‑FV自身环境
    source etc/bashrc

    # 4.编译
    ## 默认仅编译核心库(不编译算例、单元测试)
    ./Allwmake

    ## 如果需要编译tutorials、unitTest,加参数
    # ./Allwmake -h 查看帮助
    # ./Allwmake -a 编译全部:库+应用+单元测试+tutorials

    编译完成后,每次新开终端,需要同时source OpenFOAM和ITHACA‑FV/etc/bashrc才能调用库与工具程序。

    四、典型工作流(完整使用流程)

    ITHACA‑FV标准流程分为离线(Offline) 和在线(Online) 两大阶段,所有算例参考tutorials文件夹。

    阶段1:离线阶段(成本高,只做一次)

  • 在OpenFOAM设置一组采样参数,运行若干全阶CFD仿真(FOM),输出各个时刻/各个参数下的流场快照(snapshot:速度、压力、温度场);
  • 使用ITHACA‑FV读取快照集合,执行POD分解,计算降阶基向量;
  • 若使用侵入式POD‑Galerkin:投影OpenFOAM离散算子到POD子空间,生成降阶系统;若存在非线性项,启用DEIM;
  • 将POD基、DEIM索引、降阶矩阵保存到磁盘文件。
  • 离线本质:花钱跑若干高精度CFD,学习参数‑流场之间的映射。

    阶段2:在线阶段(极快,大量调用)

  • 输入从未采样过的新参数;
  • 加载离线生成的POD基与降阶系统,求解小规模降阶方程组,直接得到降阶系数;
  • 用系数 × POD基重构全场物理量;输出场文件,可以用paraFoam后处理查看流场。
  • ⚠️ 在线阶段不再调用完整OpenFOAM压力速度耦合求解器,求解规模从百万网格自由度降到几十/几百维。

    五、代码调用两种模式

    模式A:直接使用项目提供的可执行程序

    编译完成后,tutorial中提供现成应用,修改算例字典文件ITHACAproperties配置POD参数、快照路径、DEIM开关,直接运行,适合快速上手测试。

    模式B:C++二次开发,在自己的OpenFOAM程序链接ITHACA‑FV库

    在Make/options添加ITHACA‑FV头文件与库链接,调用ITHACAutilities、pod、galerkin、deim等类,嵌入自己求解器实现自定义降阶流程。

    六、重要限制与注意事项

  • 版本匹配风险:OpenFOAM大版本改动会导致编译报错;官方优先维护openfoam.com,Foundation版经常需要修改少量源码适配;
  • 快照质量决定ROM精度:参数采样策略、快照数量直接影响在线预测精度,参数外推能力弱,适合参数插值区间内预测;
  • 湍流RANS模拟:原生库缺少湍流模型降阶闭合,通常需要额外数据驱动模型修正,不能直接拿来工业湍流算例就期望高精度;
  • 侵入式POD‑Galerkin需要访问OpenFOAM内部矩阵,部分边界条件处理较为繁琐;非侵入POD‑I通用性更强,但精度依赖插值算法。
  • 七、学习资源

  • GitHub仓库 tutorials目录:从最简单lid‑driven cavity入手,跑通离线‑在线完整流程;
  • Wiki:https://github.com/ITHACA‑FV/ITHACA‑FV/wiki;
  • 配套论文:仓库README给出引用文献;
  • rom.js:ITHACA‑FV生成的ROM模型可移植到JavaScript浏览器端做实时可视化数字孪生演示。
  • 八、引用

    使用该库发表论文,按仓库README给出bibtex引用mathLab团队对应的ITHACA‑FV原始论文。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » ITHACA‑FV, Reduced order modelling(ROM) techniques for OpenFOAM
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!