Intel oneAPI 编译 OpenFOAM 性能提升几何?

英特尔Intel不但卖CPU,还提供一整套的开发工具,比如常用的 Intel C/C++ Compiler 编译器,Intel MPI 并行计算库,这些开发工具被整合到oneAPI这个统一的工具箱中,可通过包管理器和图形界面安装程序方便地安装在不同操作系统平台。使用Intel工具箱编译OpenFOAM源代码,相比直接安装二进制包或使用gcc和openmpi等开源组合编译,可获得不同程度的性能提升,建议发烧级用户尝试。

继续阅读“Intel oneAPI 编译 OpenFOAM 性能提升几何?”

fvSchemes 到底要不要 corrected?一个惨痛教训

OpenFOAM 的 fvSchemes 字典定义了离散方法,其中 laplacianSchemes 和 snGradSchemes 都要填写一个和网格正交性相关的字段,具体介绍用户手册里写得很详细了,OpenFOAM v9 User Guide。这字段有以下几种取值:

    default         corrected;
    default         limited corrected 0.33;
    default         limited corrected 0.5;
    default         orthogonal;
    default         uncorrected;
继续阅读“fvSchemes 到底要不要 corrected?一个惨痛教训”

OpenFOAM 拉格朗日库 solidParticle 简介及应用

拉格朗日法常用来求解颗粒、气泡等离散介质在连续介质中的运动,OpenFOAM 提供了基础的拉格朗日法类库,可满足一些常见需求,可实现流体-颗粒双向耦合加上颗粒之间的相互作用,它提供了独特的MPPIC(Multiphase Particles in Cell)算法,可以在计算精度和代价之间取得平衡。但在处理不规则颗粒方面还缺少高效的方案,无法和专业的DEM(Discrete Element Method)软件媲美。

solidParticle 库是一个简单的示例,结构简单,抽象层次较低,容易理解,适合作为初学拉格朗日方法的切入点。solidParticle 库并未应用于任何原生的 OpenFOAM 求解器,一个原因是 solidParticle 的功能可通过 MPPIC 简化后实现,OpenFOAM 原生的求解器更注重通用性,因而提供了 MPPICFoam 和 MPPICInterFoam(仅ESI)。

solidParticle 的这些特点使得二次开发较 MPPIC 容易,本文的目标是在水气两相流求解器 interFoam 中的适配 solidParticle 库,求解水气两相流的同时求解颗粒运动。

继续阅读“OpenFOAM 拉格朗日库 solidParticle 简介及应用”

OpenFOAM 一键安装,国内镜像站来了

openfoam.org 提供了众多版本 OpenFOAM 的 deb 包,可以通过 apt-get 或 apt 命令安装,可惜从国内访问太慢了,基本无法使用。经过一通分析,小编发现 openfoam.org 的apt 源竟然连内容分发网络(CDN)都没用,就一个 IP 在裸奔。源站所有内容加起来有40G,涵盖了十几个版本的Ubuntu,每个Ubuntu版本都有若干个OpenFOAM版本的64位和32位安装包。我相信 OpenFOAM 基金会不是太穷,而是为了兼容老版本的 apt-get 才没有使用 CDN。为了方便国内用户,小编趁着双11优惠,买了一台云服务器,在中国境内搭建了openfoam apt 源的镜像站,加速国内用户访问。下面我介绍一下使用方法。

第一步,添加openfoam.org的官方公钥

sudo sh -c "wget -O - https://dl.openfoam.org/gpg.key | apt-key add -"Code language: JavaScript (javascript)

公钥用于验证软件包的签名,你可以不信任我,但你应该信任openfoam.org,这就是签名的作用。

第二步,把我的镜像站地址添加到 source.list,命令如下

sudo add-apt-repository http://dl.cfdem.cn/ubuntuCode language: JavaScript (javascript)
继续阅读“OpenFOAM 一键安装,国内镜像站来了”

珍藏多年的空化实验视频,免费分享!

我很少分享自己领域内的研究成果,现在转行了,把以前博士期间珍藏多年的小视频免费分享给各位观众,这些视频几乎都来自于 YouTube,具体出处见水印。

先来一个基础的实验现象暖暖场,就是静水中单个空化泡溃灭,看点是冲击波。

继续阅读“珍藏多年的空化实验视频,免费分享!”

MPPICFoam 算例解析

MPPICFoam 是一个欧拉-拉格朗日耦合的求解器,MPPIC是 Multi-Phase, Particle-In-Cell 的缩写,属于拉格朗日法,用来描述颗粒的运动,可视为简化版的离散单元法(DEM)。采用该方法的求解器还有 MPPICInterFoam, 可解析两个欧拉相的界面,也就是在 interFoam 的基础上,用 MPPIC 法模拟颗粒运动。

MPPICFoam 包含四个算例 column、cyclone、Goldschmidt 和 injectionChannel,本文逐一展示。

继续阅读“MPPICFoam 算例解析”

你的求解器被OpenFOAM基金会删了!来看解决方案

小编长期使用 OpenFOAM 2.4 版本,维护一些祖传求解器,最近心血来潮体验了最新的 OpenFOAM 8.0 版本,发现 OpenFOAM 的求解器越来越少,大量求解器被整合,当然同时也推出一些全新的求解器。已多相流求解器为例,2.4版本一共有18个,8.0版本只有11个,对比如下:

继续阅读“你的求解器被OpenFOAM基金会删了!来看解决方案”

比女朋友更难找的是 libso

编译过程中,一个常见的报错是“找不到 lib*.so”,lib*.so 究竟为何物?该去哪里找呢?

*.so 是共享目标(Shared Object)文件,是经过编译但未链接的二进制文件,lib*.so 是库(Library)的共享目标文件,以动态链接的方式被调用,因而也叫动态链接库文件。在 Linux 系统中,系统公用的动态链接库文件存储在 /lib 目录和 /usr/lib 目录,在其他位置编译好的库文件,一般也会在这两个目录创建软连接。一些专用的动态链接库文件,也可以存储在软件自己的目录,放在 /home 或 /opt 等位置。

继续阅读“比女朋友更难找的是 libso”