Windows上のソースから GetFEM をインストールする方法¶
一般的な必要条件と GetFEM の最後の安定版のダウンロードについては ダウンロードとインストール ページを参照してください.
Windowsのようなオープンソースに敵対的な環境で GetFEM を構築するのは,LinuxやMacOS Xよりも,当然痛みを伴います.商用C++コンパイラ(MSCVプロジェクトファイルについては,gitバージョンの GetFEM の mscv
ディレクトリを参照してください.)で GetFEM を構築するには,いくつかの可能性があります.ただし,次のセクションでは,PythonとMatlabの両方のインターフェイスを使用して,Windows用の最小限のGNU環境を提供する Mingw と Msys の下で GetFEM の直列バージョンを構築する方法について説明します. Cygwin でも同様のインストールが可能です.
最初の手順は,Mingwを64ビットバージョン(x86_64,posix,sjljオプション Mingw-64 web page を参照)でインストールすることです.そのためにはインストーラを使うか,単にMingwをダウンロードして
C:\mingw64
ディレクトリにコピーします.Msys64ビットバージョンも同様にインストールします(インストーラを使うか,Msysを直接
C:\msys
ディレクトリにコピーしてください).インストーラが実行しない場合は,ディレクトリ
C:\mingw64\bin;C:\msys;C:\msys\bin
をWindowsパス変数に追加します.この目的のためには,Windowsのスタートメニューから"system"
を検索して"edit the system environement variables"
を選択し,パス変数を編集します.Windowsのコマンドコンソールを開き,
msys
と入力します.これでMsysシェルコンソールが開きます.sh/bashに慣れている人にとっては,普通はもっと文明化された環境にいるように感じます.あまり幸せなことはありませんが,この環境の(目的)はどこかミニマリスト的です.通常,Msysはホームディレクトリを作成します(コマンドpwd
を実行してMsysのパスを確認し,C:\msys\home\login
windows pathに対応していることを確認します.login
はホームディレクトリ名です.).まず,そのパスに.profile
という名前のファイルを作成し,次の2行をリストに含める必要があります.export CPATH="/usr/local/include" export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/lib"
/usr/local/include
と/usr/local/lib
はデフォルトのディレクトリなので,理論的にはこれは必要ないはずですが,私の設定ではこれがなくては動作しません.このファイルは任意のテキストエディタ,例えばMsysのvim
(Windows用のemacsの良いバージョンもありますし,Windowsの基本的なblocnoteを使うこともできます.)を使って作成できます.BLASとLAPACKのバージョン(それを避けることは可能であるが,それは難しいステップではない)をコンパイルしてインストールする必要があります.blasとlapackの tar.gz ソースパッケージをホームMsysディレクトリにダウンロードします.二つのアーカイブを解凍し(例えばバージョン番号が
tar xvzf blas-?.?.?.tar.gz
,tar xvzf lapack-?.?.?.tar.gz
,?.?.?
の場合),BLASのソースディレクトリに入れ,次のコマンドでBLASをコンパイルしてインストールします.$ cd blas-?.?.? $ make $ cp blas_LINUX.a /usr/local/lib/libblas.a $ cd ..以下のコマンドを使用して,LAPACKに対して同じ操作を行います.
$ cd lapack-?.?.? $ cp make.inc.example make.inc $ cp ../BLAS-?.?.?/blas_LINUX.a librefblas.a $ make $ cp liblapack.a /usr/local/lib $ cd ..GetFEM ( Qhull と Qhull install instructions を参照してください)のメッシュツールとXfemツールにアクセスするには,QHULLライブラリをインストールする必要があります.Msysのホーム(あなたがBLASとLAPACKのためにしたことと同様に)からQhullのソースをダウンロードし,解凍して,MsysのQhullソースディレクトリに入れます.Qhullをコンパイルしてインストールするには,次のようにします.
$ make SO=dll $ make install同様に,スパース線形ソルバー MUMPS の逐次バージョンをコンパイルしてインストールします.ここでも, Superlu のバージョンが GetFEM ソースに含まれているので,厳密には必要ありません.しかし,特に3Dでは,MUMPSは非常に大きなシステムを解くことができます.そこで,MsysのホームディレクトリにMUMPSソースパッケージをダウンロードして解凍し,次の手順を実行します.
$ cd MUMPS_?.?.? $ cp Make.inc/Makefile.inc.generic.SEQ Makefile.inc
Makefile.inc
ファイルを編集して,f90
をgfortran
に,cc
をgcc
に置き換え,MUMPSをコンパイルして次のようにインストールします.$ make all $ cp lib/*.a /usr/local/lib $ cp libseq/*.a /usr/local/lib $ cp include/*.h /usr/local/includeこの段階で,インターフェイスなしで|gf|の最初のコンパイルができるはずです. download and install (gitの現在のバージョンをダウンロードすることもできますが,m4,autoconf,automake,libtoolの追加インストールが必要になります.)の GetFEM の最新リリース版をダウンロードしてください.次に,パッケージを解凍し,Msysで GetFEM のソースディレクトリに入り,以下のようにコンパイルします.
$ ./configure --with-blas="-lblas -lgfortran" $ cd superlu $ make $ cp .libs/libsuperlu.a /usr/local/lib $ cd .. $ ./configure --with-blas="-lblas -lgfortran" --disable-superlu $ make $ make check
make check
は必要ありませんが,コンパイルが正しく行われていることを確認するためです.superlu
ライブラリを別々にコンパイルするのは,Msysコマンドのar
に問題があるためです.
Pythonインタフェースで構築する¶
Pythonインタフェースを構築するには,まず64ビットバージョンのPython2または3をNumpyおよびScipyパッケージとともにシステムにインストールする必要があります.簡単な方法は,Anaconda2または3をインストールすることです(すでに必要なNumpyとScipyパッケージが含まれています.).例えば,Anaconda2で
Anaconda2をインストールし,Windowsパス
C:\install_dir\Anaconda2
とC:\install_dir\Anaconda2\Scripts
に追加します.ここで,install_dir
はAnaconda2のインストールディレクトリです(システムインストールのデフォルトのProgramData
).Windowsコマンドシェルとmsysを再度開いて閉じます.
再実行
$ ./configure --with-blas="-lblas -lgfortran" --disable-superluPythonを検出し,Pythonインタフェースを構築する準備をする必要があります.
次のコマンドを実行します.
$ make通常,インターフェイスは正しく構築されます.次に,
login
と5.?
が適応される値c:\msys\home\login\getfem-5.?\interface\src\python
を持つWindowsシステム変数PYTHONPATH
を追加します.インターフェースがビルドされたinterface\src\python
ディレクトリーをPython2ディレクトリーにコピーすることもできます.その後,pythonを使用してinterface/tests/python
でテストプログラムを実行できます.
Matlabインターフェースで構築する¶
次に,Matlabインターフェースを作成するための追加手順を示します.もちろん最初に,Matlabの(最近の)バージョンをシステムにインストールしておく必要があります.
また,一部のPythonスクリプトを使用してインタフェースを構築するため,Pythonのインストールも必要です.Pythonインタフェースのインストールについては,前のセクションで説明した手順に従ってください.ただし,Matlabインターフェースでは,NumpyとScipyは必要ありません.
gnumex をアップロードしてMatlabで実行してください(gnumexのウェブサイトで表示を見ます).アクセス可能なディレクトリに
mexopts.bat
etmexopts.stp
ファイルを生成するようにします.GetFEM のソースのトップディレクトリに,ファイル
gnumex.opts
に(適応させるために)次の行を追加します.#!/bin/sh MATLAB_ROOT="c:\Program Files\MATLAB\R20???" MATLAB_RELEASE=14 MATLAB_INC_DIR="$MATLAB_ROOT\extern\include" MEXOPTS=c:\path_to_mexopts\mexopts.batconfigureスクリプトを再実行し,次のコマンドでコンパイルします.
$ ./configure --with-blas="-lblas -lgfortran" --disable-superlu --enable-matlab $ makeMatlabインターフェースはエラーなしでコンパイルする必要があります.リンカエラーがある場合は,
interface\src\matlab
ディレクトリに移動して,copy/pastコマンドでインターフェイスを構築し,matlab/mexコールでライブラリリストを調整してみてください.インターフェイスが適切にコンパイルされたら,Matlabを起動し,次のコマンドでコンパイルされたインターフェイスの(matlabコマンド行の)パスを追加します.
add_path('c:\msys\home\login\getfem-5.?\interface/tests/matlab')
interface\tests\matlab
のインターフェイスのデモ版のmatlabプログラムを試してみてください.Matlabを開くたびにaddpath
コマンドを呼び出さなくてもよいように,c:\msys\home\login\getfem-5.?\interface/tests/matlab
に設定されたWindowsシステム変数MATLABPATH
を追加することができます.また,interface\tests\matlab
ディレクトリをMatlabのインストールディレクトリに移動することもできます.