XfoilをmacOS Catalinaで使う

macOS Catalinaで32bitアプリケーションが使えなくなったことにより,さまざまな弊害が生じています。その一つがXfoilと呼ばれる翼型の解析ソフトです。鳥人間コンテストで機体設計を行っている人は使ったことがあるかと思います。これまではXFOIL4MACからmacOS用のXfoilをダウンロードするのが一般的でしたが,これでダウンロードできるソフトウェアは32bitアプリケーションのため,今はもう使えません。そこで,ソースコードからコンパイルする方法を紹介します。

事前準備

Xfoilのコンパイルには,gccとgfortran,XQuartzが必要です。初めにこれらをダウンロードするためにHomebrewを用意します。以下のコマンドを実行してください。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

次に,gccとgfortranをダウンロードします。gfortranはgccをダウンロードすると一緒にダウンロードされます。macにもgccはダウンロードされていますが,これを使うとコンパイル時にエラーが生じるため,Homebrewからダウンロードしましょう。また,gccの最新版を利用してもエラーが生じるため,古いバージョンのgccをダウンロードします。ダウンロードコマンドは以下の通り。

$ brew install gcc@9

少々時間がかかります。ダウンロードされたら,

$ gcc -v
$ gfortran -v

をそれぞれ実行してください。以下のように表示されれば成功です。

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@9/9.3.0/libexec/gcc/x86_64-apple-darwin19/9.3.0/lto-wrapper
...
gcc version 9.3.0 (Homebrew GCC 9.3.0)  

$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@9/9.3.0/libexec/gcc/x86_64-apple-darwin19/9.3.0/lto-wrapper
...
gcc version 9.3.0 (Homebrew GCC 9.3.0) 

次にXQuartzをここからダウンロードします。

画像2

全てできたら準備完了です。

Xfoilのダウンロード

まずはXfoilのページからxfoil6.99.tgzをダウンロードします(下の写真の赤枠のファイル)。

画像1

これを解凍するとXfoilというディレクトリが作られるので,これをhomeへ移動させます。

Xfoil/orrs/src/osmap.fの変更

Xfoil内のorrsに移動します。

$ cd ~
$ cd Xfoil
$ cd orrs

次にorrsのフォルダーの絶対パスを取得し,Xfoil/orrs/src/に移動します。

$ pwd
/Users/user/Xfoil/orrs
$ cd src

osmap.fを開き,101行目付近にある

DATA OSFILE / '/home/codes/orrs/osmapDP.dat' /

DATA OSFILE / '/Users/user/Xfoil/orrs/osmapDP.dat' /

Xfoil/orrs/bin/Makefileの変更

Xfoil/orrs/binに移動。
Makefileを開き,/home/codes/Xplotを/Users/user/Xfoilに変え,

FC = f77
FLG = -O
PLTLIB = -lX11
FTNLIB =

FC = gfortran
FLG = -O2 -fdefault-real-8
PLTLIB = -lX11
FTNLIB =

に変更します。Intel Fortran Compilerのコンパイラフラッグはコメントアウトします。

# FC = ifort
# FLG = -O -fpe0 -CB
# PLTLIB = -L/usr/X11R6/lib -lX111
# FTNLIB =

Makefileを保存し,Terminalで

$ make sogen
$ make osmap.o
$ cd ..
$ bin/osgen osmaps_ns.lst

を実行。次にXfoilで用いられているプロットライブラリのビルドを行います。

Xfoil/plotlib/のMakefileとconfig.makeの変更

Makefileの 

​INSTALLDIR = .

INSTALLDIR = /Users/user/Xfoil/

に変え,Makefileを保存。config.makeを開いて

...
PLTLIB = libPlt_gSP.a
... #DP  = -fdefault-real-8
...

...
PLTLIB = libPlt.a
...
DP = -fdefault-real-8
...

にして保存。次に,

$ make libPlt.a

を実行します。

Xfoil/bin/Makefileの変更

...
BINDER = /home/codes/bin/
...
FC = f77
FFLAGS  = -O
FFLOPT  = -O
INSTALLCMD = install -s
CC = cc
CFLAGS = -O -DUNDERSCORE
...
PLTOBJ = ../plotlib/libPlt_gDP.a
...

...
BINDER = /Users/user/Xfoil/bin/
...
# FC = f77
# FFLAGS  = -O
# FFLOPT  = -O
# INSTALLCMD = install -s
CC = gcc
CFLAGS = -O -DUNDERSCORE
...
PLTOBJ = ../plotlib/libPlt.a
...

に変更。また,

FC = gfortran
CHK =
CHK = -fbounds-check -finit-real=inf -ffpe-trap=invalid,zero
DBL = -fdefault-real-8
FFLAGS = -O2 $(CHK) $(DBL)
FFLOPT = -O2 $(CHK) $(DBL)
FTNLIB =

の下にINSTALLCMD = install -sを加えて保存します。

xfoilのビルド

最後にxfoilをビルドします。

$ make xfoil
$ make plot
$ make exploit

これで

$ cd ~/Xfoil/bin
$ ./xfoil

でXfoilを使えるようになりました。
なお,bash_profileなどに

export PATH=/Users/user/Xfoil/bin:$PATH

と記述すれば,

$ xfoil

でXfoilを起動できるようになります。

さいごに

いかがでしたか?備忘録的な形ですが,僕のメインマシン上でXfoilを使えるようにするために行ったことを記録として残しておきます。
みなさんの参考になれば幸いです。


共同代表
エンジン・インジェクター担当
田渕宏太朗


このプロジェクトの実施には多くの支援が必要となります。私たちの夢に、あなたの力をお貸しください。いただいたサポートは、宇宙へ飛ばすロケットの製作費に使わせていただきます。