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
からダウンロードしましょう。
$ brew install gcc
少々時間がかかります。ダウンロードされたら,
$ gcc --version
$ gfortran --version
をそれぞれ実行してください。以下のように表示されれば成功です。
$ gcc -v
gcc (Homebrew GCC 9.3.0_1) 9.3.0
Copyright (C) 2019 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.
$ gfortran -v
GNU Fortran (Homebrew GCC 10.2.0_2) 10.2.0
Copyright (C) 2020 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.
次にXQuartzをダウンロードします。全てダウンロードできたら準備完了です。
Xfoilのソースコードのダウンロード
Xfoilのホームページからxfoil6.99.tgz
をダウンロードします。これを解凍するとXfoil
というディレクトリが作られるので,home
に移動させます。
Xfoil/orrs/src/osmap.f
の変更
orrs
に移動。
$ cd ~
$ cd Xfoil
$ cd orrs
次にorrs
の絶対パスを取得。
$ pwd
/Users/user/Xfoil/orrs
Xfoil/orrs/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/plotlib
に変え,
FC = f77
FLG = -O
PLTLIB = -lX11
FTNLIB =
を
FC = gfortran
FLG = -O2 -fdefault-real-8
PLTLIB = -L/usr/local/X11/lib -lX11
FTNLIB =
に変更。Intel Fortran Compiler
のコンパイラフラッグはコメントアウト。
# FC = ifort
# FLG = -O -fpe0 -CB
# PLTLIB = -L/usr/X11R6/lib -lX111
# FTNLIB =
Makefile
を保存し,Terminal
で
$ make osgen
$ make osmap.o
$ cd ..
$ bin/osgen osmaps_ns.lst
を実行。次にXfoilで用いられているプロットライブラリのビルドを行います。
Xfoil/plotlib/config.make
の変更
まずconfig.make
を作る。
$ cp config.make.gfortranDP config.make
config.make
を開いて
...
FFLAGS = -m64 -O2 $(DP)
CFLAGS = -m64 -O2 $(DEFINE) -I/usr/X11/include
AR = ar r
RANLIB = ranlib
LINKLIB = -L/usr/X11R6/lib -lX11
を
...
FFLAGS = -m64 -O2 $(DP)
CFLAGS = -m64 -O2 $(DEFINE) -I/usr/local/X11/include
AR = ar r
RANLIB = ranlib
LINKLIB = -L/usr/local/X11/lib -lX11
にして保存。次に,
$ make
を実行。
その後
$ make test
を実行してエラーが出なければ良い。
Xfoil/bin/Makefile
の変更
Makefile
の9行目付近にある
BINDER = /home/codes/bin/
#BINDER = .
を
#BINDER = /home/codes/bin/
BINDER = .
に変更。43行目付近にある
PLTLIB = -L/usr/X11R6/lib -lX11
を
PLTLIB = -L/usr/local/X11/lib -lX11
に変更。また、119行目付近にある
...
FC = gfortran
CHK =
CHK = -fbounds-check -finit-real=inf -ffpe-trap=invalid,zero
DBL = -fdefault-real-8
FFLAGS = -O $(CHK) $(DBL)
FFLOPT = -O $(CHK) $(DBL)
FTNLIB =
...
を
...
FC = gfortran
CHK =
CHK = -fbounds-check -finit-real=inf -ffpe-trap=invalid,zero
DBL = -fdefault-real-8
FIX = -std=legacy
FFLAGS = -O $(CHK) $(DBL) $(FIX)
FFLOPT = -O $(CHK) $(DBL)
FTNLIB =
...
に変更して保存。
xfoilのビルド
最後にxfoil
をビルドする。
$ make xfoil
$ make pplot
$ make pxplot
これで
$ cd ~/Xfoil/bin
$ ./xfoil
でXfoilを使えるようになりました。
なお,bash_profile
などに
export PATH=/Users/user/Xfoil/bin:$PATH
と記述すれば,
$ xfoil
でXfoilを起動できるようになります。
参考資料
Xfoil
Macのgcc, g++をHomebrewを使って最新版にする
Compiling Xfoil on OS X
How to install Xfoil? (MacOS example)