ビルドを待つことしばらく、エラーで止まってしまいました。

wmake  mpi (mpi=SYSTEMOPENMPI:sys-openmpi)

wmake mpi

    ln: ./lnInclude

make: mpicc: Command not found

    dep: PstreamGlobals.C

make: mpicc: Command not found

    dep: UPstream.C

make: mpicc: Command not found

    dep: UIPread.C

make: mpicc: Command not found

    dep: UOPwrite.C

make: mpicc: Command not found

    Ctoo: UOPwrite.C

In file included from UOPwrite.C:33:

PstreamGlobals.H:42:10: fatal error: mpi.h: No such file or directory

 #include <mpi.h>

          ^~~~~~~

compilation terminated.

make: *** [/home/user/OpenFOAM/OpenFOAM-v2012/wmake/rules/General/transform:35: /home/user/OpenFOAM/OpenFOAM-v2012/build/linux64GccDPInt32OptSYSTEMOPENMPI/src/Pstream/mpi/UOPwrite.o] Error 1

Done logging to 'log.linux64GccDPInt32Opt'

 

原因は、mpi.hというヘッダファイルが見つからないというもの。

ログを見るとThirdpaty AllwmakeのあたりでBuild MPI libraries if requiredと記載があり、何も指定しないとMPI環境はビルドされない様子。

そこで、ThirdParty-v2012のディレクトリに移動しオープンソースのMPI実装であるOpenMPIをビルドする。

なお、Thirdpartyには別のMPI実装であるMPICHも含まれており、どちらを使っても良いと思われるが、ここではとりあえずOpenMPIを選択した。

user@instance-1:~/OpenFOAM/OpenFOAM-v2012$ cd ~/OpenFOAM/ThirdParty-v2012

user@instance-1:~/OpenFOAM/ThirdParty-v2012$ ./makeOPENMPI

 

OpenMPIのビルドを待ちます。結構時間がかかりました。

ビルドが終わるとインストール先は下記になりますので、このままでは正しくmpiccを見つけてくれません。

/home/user/OpenFOAM/ThirdParty-v2012/platforms/linux64Gcc/openmpi-4.0.3

 

そこで、bashrcを編集し、先ほどビルドしたOpenMPIを使うようにします。

97行目あたりにあるWM_MPLIBをデフォルトのSYSTEMOPENMPIからOPENMPIに変更します。

user@instance-1:~/OpenFOAM/OpenFOAM-v2012$ cp etc/bashrc etc/bashrc.original

user@instance-1:~/OpenFOAM/OpenFOAM-v2012$ vi etc/bashrc 

user@instance-1:~/OpenFOAM/OpenFOAM-v2012$ diff etc/bashrc etc/bashrc.original 

97,98c97

< #export WM_MPLIB=SYSTEMOPENMPI

< export WM_MPLIB=OPENMPI

---

> export WM_MPLIB=SYSTEMOPENMPI

 
bashrcを編集したら、sourceし直して再度Allwmakeしてビルドを再開します。
bashrcをsourceした際に、mpiccが見つからないという警告が消えています。

user@instance-1:~/OpenFOAM/OpenFOAM-v2012$ source etc/bashrc

No completions for /home/user/OpenFOAM/OpenFOAM-v2012/platforms/linux64GccDPInt32Opt/bin

[ignore if OpenFOAM is not yet compiled]

user@instance-1:~/OpenFOAM/OpenFOAM-v2012$ ./Allwmake -s -l

 
ひたすらビルドを待ちます。