文章目录
- ITHACA‑FV 项目介绍与使用详情
- 一、项目简介
- 第三方内置依赖(git子模块自带,无需额外安装)
- 二、核心功能特性
- 三、编译安装步骤
- 前置条件
- 四、典型工作流(完整使用流程)
- 阶段1:离线阶段(成本高,只做一次)
- 阶段2:在线阶段(极快,大量调用)
- 五、代码调用两种模式
- 模式A:直接使用项目提供的可执行程序
- 模式B:C++二次开发,在自己的OpenFOAM程序链接ITHACA‑FV库
- 六、重要限制与注意事项
- 七、学习资源
- 八、引用
ITHACA‑FV 项目介绍与使用详情
GitHub地址
全称: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)gitclone--depth1[https://github.com/ITHACA](https://github.com/ITHACA)‑FV/ITHACA‑FV.gitcdITHACA‑FVgitsubmodule update--init# 3.加载ITHACA‑FV自身环境sourceetc/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原始论文。