くれなゐの雑記

例を上げて 自分で手を動かして学習できる入門記事を多めに書いています

OpenFOAM-2.4.0をmacのgccでmakeする

Motivation

Macはclangをつかってコンパイルをしている。 どうやらコンパイラによって微妙に挙動が違うらしくMacgccが使いたいと先生に言われて色々やった。

OpenFOAM-2.4.0向け

概要

流れ的には

  1. gccを入れる
  2. openmpiを入れる
  3. flexを入れる
  4. OpenFOAMを入れる

といった順番になる。

一つづつやっていこう

gccを入れる

自分の環境と合わせたかったので最新のものではなくgcc-5.4.0をぶっこんだ

ソースコードからbuildする

まずはソースコードを入手し、解凍

$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.4.0/gcc-5.4.0.tar.gz
$ tar zxvf gcc-5.4.0.tar.gz

解凍したディレクトリに移動して依存ファイル取得

$ cd gcc-5.4.0
$ contrib/download_prerequisites

buildディレクトリを作成し、configure, build

$ mkdir build
$ cd build
$ ../configure --enable-languages=c,c++,fortran --prefix=/usr/local/gcc-5.4.0 --disable-bootstrap --disableultilib

並列コンパイル, インストール

$ make -j4
$ make install

/usr/local/binにgccln -s

$ ln -s /usr/local/gcc-5.4.0/bin/gcc /usr/local/bin/gcc
$ ln -s /usr/local/gcc-5.4.0/bin/g++ /usr/local/bin/g++

以下をbashrcに追記

export PATH=/usr/local/bin:$PATH

確認

$ gcc --version
gcc (GCC) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE

参考: http://qiita.com/liveralmask/items/6ed4a98ebb3bf6b7f707

openmpiを入れる

新しすぎるopenmpiはなんかエラー吐いてめんどくさいのでちょっと古いの使う

$ wget https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.2.tar.gz
$ tar zxvf openmpi-1.10.2.tar.gz

参考: https://www.open-mpi.org/software/ompi/v1.10/

buildディレクトリ作ってconfigureしてmake

$ mkdir build
$ ../configure --prefix=/usr/local/openmpi
$ make
$ make install

以下を.bashrcに追加

export MANPATH=/usr/local/openmpi/share/man:$MANPATH
export LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/openmpi/bin:$PATH

チェック

$ mpicc --version

参考: http://qiita.com/himo/items/c30d83d0f7642fb3af57

flexを入れる

これはmake – installでもbrewでもなんか無理だった macportを使う

sudo port install flex

OpenFOAMを入れる

なんかいろいろする

$ hdiutil create -size 8.3g -type SPARSEBUNDLE -fs HFSX -volname OpenFOAM -fsargs -s OpenFOAM.sparsebundle
$ mkdir -p OpenFOAM
$ hdiutil attach -mountpoint $HOME/OpenFOAM OpenFOAM.sparsebundle
$ cd OpenFOAM

OpenFOAM2.4.0をダウンロード、解凍する

$ wget http://downloads.sourceforge.net/foam/OpenFOAM-2.4.0.tgz?use_mirror=mesh
$ tar zxvf OpenFOAM-2.4.0.tar.gz

参考: https://openfoam.org/download/2-4-0-source/ パッチを当てる

$ cd OpenFOAM-2.4.0
これをダウンロード -> https://sourceforge.net/p/openfoam-extend/svn/HEAD/tree/trunk/Breeder_2.4/distroPatches/MacPatch/OpenFOAM-2.4.x-Mac.patch 
$ patch -p1<OpenFOAM-2.4.x_Mac.patch

make

./Allwmake

エラーが出るのでsrc/OpenFOAM/lnIncludeにFlexLexer.hを無理やりリンクさせて通す

$ ln -s /opt/local/include/FlexLexer.h $FOAM_SRC/OpenFOAM/lnInclude

もう一度make

./Allwmake

チェック

which icoFoam