前面说交叉编译ESI的OpenFOAM 2412版本,但编译过程不太顺利,老是出错,折腾了一番放弃了,以后有时间再弄了。好在ESI官方提供了OpenFOAM的交叉编译版本,我们可以直接在官方版本上进行处理就可以。
ESI官方的交叉编译版本基于MSYS2,其中所有的预置求解器都已经被编译成exe文件,可以将其弄出来处理成可以在Windows下独立运行的程序,这样套壳的时候就方便调用了。
其实只需要处理环境变量就可以了。另外官方没有编译MPI,所以如果想要使用并行计算的话,还得手动安装MPI。下面是处理过程。
1 下载安装
下载地址:https://develop.openfoam.com/Development/openfoam/-/wikis/precompiled/windows#native-windows
找到下图所示的链接下载。

安装过程非常简单,双击后一路next即可。需要注意,安装路径不允许有空格,否则后面会提示无法创建环境变量。
安装完毕后可以双击桌面上的快捷方式启动,如下图所示表示安装成功。

2 配置环境
-
拷贝应用程序。本机安装路径为:
C:ESI-OpenCFDOpenFOAMv2412msys64homeofuserOpenFOAMOpenFOAM-v2412platformswin64MingwDPInt32Optbin也可以在安装路径中搜索icoFoam,所有的预编译程序都放在了这个文件夹下面。

这里将bin文件夹拷贝到一个新建的文件夹中,如
C:OpenFOAM中。
-
拷贝文件夹
C:ESI-OpenCFDOpenFOAMv2412msys64homeofuserOpenFOAMOpenFOAM-v2412到C:OpenFOAM中
-
在
C:OpenFOAM下创建一个批处理文件,命名为of2412.bat,用文本编辑器打开,并输入以下内容@echo off
chcp 65001
set path=%path%;%~dp0bin
set WM_PROJECT_DIR=%~dp0OpenFOAM-v2412
cmd -
从tutorials中拷贝一个测试文件(如cavity)用于测试,这里将其放到文件夹
C:OpenFOAMrun中
这一步不是必须的,只是用来测试。
-
运行
of2412.bat,输入以下命令生成网格cd runcavity
blockMesh可以看到能够正常生成网格。

-
继续输入命令
icoFoam可以进行计算,如下图所示。
-
可以输入命令
echo > cavity.foam生成空文件,然后用paraView打开文件进行后处理
压力分布如下图所示。

速度分布如图所示。

3 测试并行计算
-
ESI OpenFOAM中并没有编译MPI,若想要使用并行计算的话,需要手动安装MPI,这里可以使用微软的Microsoft MPI。
下载地址:https://learn.microsoft.com/zh-cn/message-passing-interface/microsoft-mpi#ms-mpi-downloads

下载后直接安装即可。安装完毕后将MPI安装路径下的bin文件夹拷贝到文件夹
C:OpenFOAM中,并修改文件夹名称为MS-MPI。
复制后的文件夹中的内容如下图所示。

-
修改
of2412.bat的内容,将MS-MPI的路径添加到环境变量path中@echo off
chcp 65001
set path=%~dp0MS-MPI;%~dp0bin;%path%;
set WM_PROJECT_DIR=%~dp0OpenFOAM-v2412
cmd -
搜索并拷贝文件
decomposeParDict到system路径下。注意这里没法使用foamGetDict,只能手动复制。修改其内容:numberOfSubdomains 4;
method hierarchical;
coeffs
{
n (221);
} -
测试并行计算。依次输入下面的命令
blockMesh
decomposePar执行完毕后如图所示。

-
执行下面的命令进行并行计算
mpiexec -n 4 icoFoam执行完毕后如下图所示。

-
利用命令
echo > cavity.foam创建一个空的后处理文件,可使用ParaView进行后处理。
4 后期工作
-
当前的文件夹中的内容过于臃肿,有一大堆用不上的文件,可以删除掉。

-
环境变量。
of2412.bat中设置的是临时变量,仅限于当前命令窗口中使用。想要全局使用的话,可以手工设置环境变量。包括:设置完毕后重启计算机以使环境变量生效。
-
path: C:OpenFOAMbin -
path: C:OpenFOAMMS-MPI -
WM_PROJECT_DIR: C:OpenFOAMOpenFOAM-v2412
这里需要注意的是,ESI提供的OpenFOAM交叉编译版本的:
-
没有OpenFOAM源代码。所以没有办法编译自己的求解器。 -
OpenFOAM工具没有被编译。如 foamGetDict之类的工具没有被编译成windows版本。 -
第三方工具全部都没有编译。如果需要的话,得自己去Linux系统下手工编译。
全部文件可以在这里下载:https://t.zsxq.com/yVYhB
”
(完)

本篇文章来源于微信公众号: CFD之道








评论前必须登录!
注册