Linux上のソースからインストールする方法

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

ソースをダウンロードする

GetFEM を入手するには安定版( ダウンロードとインストール ページからダウンロード可能なファイル getfem-5.4.1.tar.gz として)または 匿名のgitアクセス(現在開発中の不安定版)2つの方法があります.

次のようすると直接最新の安定版を手に入れることができます

現在のgitのバージョンは:

  • GITプロトコル経由でチェックアウト

    $ git clone https://git.savannah.nongnu.org/git/getfem.git
    
  • GetFEM のルートディレクトリに移動します.

    $ cd getfem
    
  • そして autogen.sh スクリプトを実行します(m4,automake,libtoolが必要です)

    $ bash autogen.sh
    

コンパイル

次のように設定します.

$ ./configure

次のようにしてコンパイルを開始します.

$ make

最後に,次のようにインストールします.

$ make install

UbuntuでMatlabインターフェースを構築する方法についての追加ヘルプは, Mirko Windhoff を参照してください.

構成オプション

  • ./configure スクリプトを実行し,自動的に選択されたコンパイラとは異なるコンパイラを使用する場合.コマンドラインで名前を指定します.

    $ ./configure CXX=mycompiler
    
  • いずれかのインタフェースを構築する場合は,次のコマンドを使用します.

    $ ./configure ``--enable-python``
    $ ./configure ``--enable-scilab``
    $ ./configure ``--enable-matlab``
    

    作成するインタフェースによって異なります.Pythonインタフェースはデフォルトでビルドされます.

  • 特定の BLAS ライブラリを使用する場合は,必要なリンクフラグとライブラリを次のようにconfigureスクリプトに指定する必要があります.

    $ ./configure BLAS_LIBS="-L/path/to/lib -lfoo -lbar ....etc"
    

    $ ./configure BLAS_LIBS="-L/usr/lib/sse2/atlas -lblas"
    
  • あるいは,ライブラリをインストールするプレフィックスディレクトリを設定したい場合は, --prefix オプション(デフォルトのプレフィックスディレクトリは /usr/local です)を使うことができます.

    $ ./configure --prefix=my_dest_dir
    
  • デフォルトでは,pythonインタフェースはpython3バージョン用に構築されています.Pythonインタフェースの構築を無効にするには,次のコマンドを使用します.

    $ ./configure --disable-python
    

configureスクリプトには他のオプションもあることに注意してください. ./configure --help と入力すると表示されます.

警告

  • Linux/x86_64プラットフォームで, GetFEM (リンクされている静的ライブラリ)を構築する際の必須オプションは,./configure スクリプトの --with-pic オプションです .

Scilab インターフェース

SciLab GetFEM toolboxのインストールは,C++コンパイラ,ライブラリ,および SciLab を相互に組み合わせているため,多少面倒です.GNU以外のコンパイラで問題が発生した場合は, gcc/g++ (>= 8.0) を使うことが安全な解決策になります.

注意

  • 最初の SciLab リリースは5.2.2です.

  • GetFEM staticライブラリ(つまり, GetFEM の構築時に ./configure --disable-static を使用しない.)を作成しておく必要があります.linux/x86_64プラットフォームで GetFEMgetfem-interface toolbox(リンクされている静的ライブラリ)をビルドする際の必須オプションは,それぞれの ./configure スクリプトの --with-pic オプションです.

  • --enable-scilab オプションを使って GetFEM ソース(すなわち ./configure --enable-scilab ...)を設定する必要があります.

--with-scilab-toolbox-dir=toolbox_dir を使ってデフォルトのツールボックスインストールディレクトリ (gfdest_dir/getfem_toolbox) を変更することもできます. ./configure --help で他のオプションを参照してください.

Scilabインターフェイスは GetFEM ソース(ディレクトリ interface/src 内)に含まれているので,次のようにして GetFEM ライブラリとScilabインターフェイスの両方をコンパイルできます.

make

オプションで,次の方法でインストールできます.

make install

./configure スクリプトによって自動的に選ばれたコンパイラとは異なるコンパイラを使いたいなら,コマンドラインでその名前を指定してください. ./configure CXX=mycompiler

getfemがコンパイルされると,次のようになります.

  • Scilab GetFEMインタフェースインストールディレクトリ(インストールが完了していない場合は,interface/src/scilab)に移動します.

  • Scilabを公開

  • exec loader.sce; を使ってGetFEMツールボックスをロードします.

  • 次のようにしてデモを起動してみてください. cd demos; exec demo_static_contact.sce;

Octaveインタフェース

まず,開発パッケージとともに Octave をインストールする必要があります.

注意

  • まず,開発パッケージとともに Octave ,minimal release 4.1 .1をインストールし,(例えばDebian上のliboctave-devパッケージ)コマンドを使用できるようにします.

  • GetFEM staticライブラリ(つまり, GetFEM の構築時に ./configure --disable-static を使用しない.)を作成しておく必要があります.linux/x86_64プラットフォームで GetFEMgetfem-interface toolbox(リンクされている静的ライブラリ)をビルドする際の必須オプションは,それぞれの ./configure スクリプトの --with-pic オプションです.

  • --enable-octave オプションを使って GetFEM ソース(すなわち ./configure --enable-octave ...)を設定する必要があります.

最後に,ツールボックスへのパスをoctaveパスに追加します.

  • you can put addpath('toolbox_dir', '-begin') to your $HOME/.octaverc file

  • octaveコマンドラインで addpath コマンドを使うだけです.

Matlabインタフェース

getfem-interface toolboxのインストールは,C++コンパイラ,ライブラリ,および MatLab の相互作用を組み合わせているため,多少面倒です.GNU以外のコンパイラで問題が発生した場合は, gcc/g++ (>= 8.0) を使うことが安全な解決策になります.

注意

  • GetFEM staticライブラリ(つまり, GetFEM の構築時に ./configure --disable-static を使用しない.)を作成しておく必要があります.linux/x86_64プラットフォームで GetFEMgetfem-interface toolbox(リンクされている静的ライブラリ)をビルドする際の必須オプションは,それぞれの ./configure スクリプトの --with-pic オプションです.

  • --enable-matlab オプションを使って GetFEM ソース(すなわち ./configure --enable-matlab ...)を設定する必要があります.

--with-matlab-toolbox-dir=toolbox_dir を使ってデフォルトのツールボックスインストールディレクトリ (gfdest_dir/getfem_toolbox) を変更することもできます. ./configure --help で他のオプションを参照してください.

Matlabインターフェイスは GetFEM ソース(ディレクトリ interface/src 内)に含まれているので,次のようにして GetFEM ライブラリとMatlabインターフェイスの両方をコンパイルできます.

make

オプションのステップは make check で,matlabインターフェース(いくつかの環境変数を設定し, check_all.m を実行します.これはディストリビューションの tests/matlab ディレクトリです.)をチェックしてインストールします(ライブラリは gfdest_dir/lib にコピーされ,MEX-FileとM-Filesは toolbox_dir にコピーされます.).

make install

./configure スクリプトによって自動的に選ばれたコンパイラとは異なるコンパイラを使いたいなら,コマンドラインでその名前を指定してください. ./configure CXX=mycompiler

ライブラリがインストールされている場合, libgetfem.solibgetfemint.so を含むディレクトリ,つまり gfdest_dir/libLD_LIBRARY_PATH 環境変数に設定する必要があるかもしれません.

export LD_LIBRARY_PATH=gfdest_dir/lib # if you use bash

最後に,ツールボックスへのパスをmatlabパスに追加します.

  • 環境変数 MATLABPATHtoolbox_dir (例えば export MATLABPATH=toolbox_dir )に設定することができます.

  • you can put addpath('toolbox_dir') to your $HOME/matlab/startup.m

このステップにおける非常に古典的な問題は,Matlabが使用するCとC++のライブラリーの非互換性です.Matlabは,独自のlibcおよびlibstdc++ライブラリとともに配布されています.インターフェイスのコマンドを使用しようとすると,次のタイプのエラーメッセージが表示されます.

/usr/local/matlab14-SP3/bin/glnxa64/../../sys/os/??/libgcc_s.so.1:
version `GCC_?.?' not found (required by .../gf_matlab.mex??).

この問題を解決するには,MatlabにシステムのC/C++ライブラリをロードさせる必要があります.これには2つの方法があります.(管理者権限がある場合...!)最も根本的な方法は,Matlabと一緒に配布されているCとC++のライブラリを削除することです.

mv /usr/local/matlab14-SP3/sys/os/??/libgcc_s.so.1 libgcc_s.so.1_old
mv /usr/local/matlab14-SP3/sys/os/??/libstdc++_s.so.6 libstdc++_s.so.6_old
mv /usr/local/matlab14-SP3/sys/os/??/libgfortran.so.3 libgfortran.so.3_old

第2の方法は,例えば(システムによって異なる)でMatlabを起動する前に変数LDPRELOADを設定することです.

LD_PRELOAD=/usr/lib/libgcc_s.so:/usr/lib/libstdc++.so.6 matlab

より具体的な説明は,ディストリビューションの README* ファイルにあります.

Matlabインターフェースのプリコンパイル版は, GetFEMdownload and install から入手できます.

最近のMatlab(2016a)の配布で生じた第2の問題は,多くのシステムblas/lapackライブラリとは対照的に,MATLABによってロードされたMKLのILP64バージョンと一部のライブラリとの互換性がないことです.MKLは32ビットの整数ではなく,64ビットの整数を使用します.|gf|の新しいリリースは,64ビットおよび32ビット整数のblas/lapackライブラリの両方と互換性があります.ただし,MumpsはMKL ILP64と互換性を持つように64ビット整数バージョンで再コンパイルする必要があります.システム上のMumpsバージョンは32ビット整数バージョンです.この種の問題が発生した場合,Matlabに32ビットのblasとlapackライブラリをロードさせることができます.

LD_PRELOAD=/usr/lib/libblas.so:/usr/lib/liblapack.so matlab

Pythonインタフェースのdockerイメージを使用する方法

GetFEM用のDockerイメージは Docker Hub に公開されています:

ヒント

開発中のバージョンでPythonスクリプトを実行する場合:

$ docker run --rm -v `pwd`:/work getfemdoc/getfem:latest /venv/bin/python3 script.py

開発中のバージョンでPythonインタープリターを実行する場合:

$ docker run --rm -v `pwd`:/work -t -i getfemdoc/getfem:latest /venv/bin/python3

v5.4のバージョンでPythonスクリプトを実行する場合:

$ docker run --rm -v `pwd`:/work getfemdoc/getfem:v5.4 /venv/bin/python3 script.py

v5.4のバージョンでPythonインタープリターを実行する場合:

$ docker run --rm -v `pwd`:/work -t -i getfemdoc/getfem:v5.4 /venv/bin/python3