Linux上のソースからインストールする方法¶
一般的な必要条件と GetFEM の最後の安定版のダウンロードについては ダウンロードとインストール ページを参照してください.
ソースをダウンロードする¶
GetFEM を入手するには安定版( ダウンロードとインストール ページからダウンロード可能なファイル getfem-5.4.2.tar.gz として)または 匿名のgitアクセス(現在開発中の不安定版)2つの方法があります.
次のようすると直接最新の安定版を手に入れることができます
ダウンロードパッケージ:
$ wget http://download-mirror.savannah.gnu.org/releases/getfem/stable/getfem-5.4.2.tar.gz
解凍:
$ tar xzf getfem-5.4.2.tar.gz
GetFEM のルートディレクトリに行きます.
$ cd getfem-5.4.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プラットフォームで GetFEM と getfem-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プラットフォームで GetFEM と getfem-interface toolbox(リンクされている静的ライブラリ)をビルドする際の必須オプションは,それぞれの./configure
スクリプトの--with-pic
オプションです.--enable-octave
オプションを使って GetFEM ソース(すなわち./configure --enable-octave
...)を設定する必要があります.
最後に,ツールボックスへのパスをoctaveパスに追加します.
you can put
addpath('toolbox_dir', '-begin')
to your$HOME/.octaverc
fileoctaveコマンドラインで
addpath
コマンドを使うだけです.
Matlabインタフェース¶
getfem-interface toolboxのインストールは,C++コンパイラ,ライブラリ,および MatLab の相互作用を組み合わせているため,多少面倒です.GNU以外のコンパイラで問題が発生した場合は, gcc/g++ (>= 8.0) を使うことが安全な解決策になります.
注意
GetFEM staticライブラリ(つまり, GetFEM の構築時に
./configure --disable-static
を使用しない.)を作成しておく必要があります.linux/x86_64プラットフォームで GetFEM と getfem-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.so
と libgetfemint.so
を含むディレクトリ,つまり gfdest_dir/lib
を LD_LIBRARY_PATH
環境変数に設定する必要があるかもしれません.
export LD_LIBRARY_PATH=gfdest_dir/lib # if you use bash
最後に,ツールボックスへのパスをmatlabパスに追加します.
環境変数
MATLABPATH
をtoolbox_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インターフェースのプリコンパイル版は, GetFEM の download 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