Windows上のソースから GetFEM をインストールする方法

一般的な必要条件と GetFEM の最後の安定版のダウンロードについては ダウンロードとインストール ページを参照してください.

Windowsのようなオープンソースに敵対的な環境で GetFEM を構築するのは,LinuxやMacOS Xよりも,当然痛みを伴います.商用C++コンパイラ(MSCVプロジェクトファイルについては,gitバージョンの GetFEMmscv ディレクトリを参照してください.)で GetFEM を構築するには,いくつかの可能性があります.ただし,次のセクションでは,PythonとMatlabの両方のインターフェイスを使用して,Windows用の最小限のGNU環境を提供する MingwMsys の下で 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.gztar 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 ( QhullQhull 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 ファイルを編集して, f90gfortran に, ccgcc に置き換え,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\Anaconda2C:\install_dir\Anaconda2\Scripts に追加します.ここで, install_dir はAnaconda2のインストールディレクトリです(システムインストールのデフォルトの ProgramData ).

  • Windowsコマンドシェルとmsysを再度開いて閉じます.

  • 再実行

    $ ./configure --with-blas="-lblas -lgfortran" --disable-superlu
    

    Pythonを検出し,Pythonインタフェースを構築する準備をする必要があります.

  • 次のコマンドを実行します.

    $ make
    

    通常,インターフェイスは正しく構築されます.次に, login5.? が適応される値 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 et mexopts.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.bat
    
  • configureスクリプトを再実行し,次のコマンドでコンパイルします.

    $ ./configure --with-blas="-lblas -lgfortran" --disable-superlu --enable-matlab
    $ make
    

    Matlabインターフェースはエラーなしでコンパイルする必要があります.リンカエラーがある場合は, 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のインストールディレクトリに移動することもできます.