DALAB情報発信用ブログ:OpenCAE+GPGPU+Peridynamics編

DALABで行っている研究活動の中で、OpenCAEやGPGPUや破壊解析の取り組みについてまとめてゆきます。

DEXCS2012-Salomeの有効活用:CFD/Code_Saturneの導入手順(4)

2013年07月14日 04時00分25秒 | OpenCAE活用
これまで説明したCode_Saturneの導入は以下の2種類ですが、いずれも構築時にSalomeとの連携を設定していないため、SaturneGUIでの流体解析は可能ですが、SalomeをGUIとして用いるCFDSTUDYの機能が利用できません。
1: Installerを用いて簡易コンパイルを行う  2: Synampticを用いてパッケージ導入を行う

そこで本解説では以下の情報を手本にして、Salomeと連携可能なCode_Saturneの導入方法を検討します。なお、導入の前提や注意などは、導入手順(1)に示した通りなので、確認しておいてください。
https://sites.google.com/site/codeastersalomemeca/home/code_saturne/code_saturnenoinsutoru

■ インストールの確認

まず初めに、DEXCS2012-SalomeのSalomeに連携させるため、インストール先を確認しておきます。
・Salome-Mecaは、/opt/salomeにインストールされ、ここに、2つのディレクトリSALOME-MECA-2013.1-LGPL, appli_V6_6_0があります。

■ ダウンロードと展開

以下のサイトからCode_Saturneのソースパッケージをダウンロードします。2013/07時点での最新の公開版は3.1になるので、ページの最初の行にある"here"よりダウンロードします。45MB程度のソースパッケージなので暫く待ちます。DEXCSでChromiumブラウザを用いた場合は、ホームのDownloadsに、code_saturne-3.1.0.tar.gzが保存されます。
http://code-saturne.org/cms/download/3.1

以下の手順で展開して、~/Downloads/code_saturne-3.1.0でインストール作業を進めます。この中にINSTALLファイルがあり、これを参考にして進めます。
なお以下の手順ではコマンド入力を基本にしており、Ubuntuの端末を利用します。DEXCSでは上部のバーかアプリケーション→アクセサリ→端末で利用できます。複数起動して目的に応じて使い分けると便利です。
$ cd ~/Downloads
$ tar xvfz code_saturne-3.1.0.tar.gz
$ cd code_saturne-3.1.0; ls

■ インストール環境の準備

DEXCSの状態でインストールを進めるためには、以下のツールの追加が必要です。アプリケーション→システムツール→システム管理→Synapticパッケージマネージャを起動します。ログインユーザーのパスワードを入力してツールが起動したら、再読込を押して最新の状態にしておきます。以下の項目を、検索して、インストール指定して、適用します。

g++:検索 g++ (4.6.3) → g++ g++4.6 libstdc++6-4.6-dev (3)
gfortran:検索 gfortran (4.6.3) → gfortran gfortran-4.6 (2)
opnempi:検索 openmpi (1.4.3) → libopenmpi-dbg libopenmpi-dev (2) + 関連ツール(1)
cmake:検索 cmake (2.8.7) → cmake cmake-data cmake-dbg (3) + 関連ツール(2)
PyQt4:検索 pyqt4 (4.9.1) → pyqt4-dev-tools (1)

■ コンパイルとインストールの実行

まずDEXCS-SalomeにインストールされているSalome-Mecaのライブラリへの設定情報を利用するために、以下を実行する。
$ cd ~/Downloads/code_saturne-3.1.0
$ source /opt/salome/appli_V6_6_0/env.d/envProducts.sh

インストール設定を行うために、以下のconfigureを実行する。なお各ライブラリのパスはDEXCS2012-Salomeに合わせています。
下記のコマンドは行を分けて記述していますが、1つのコマンドとして実行するもので、各行の最後の'\'は継続を表しています。
以下の設定では、インストール先は/opt/code_saturne-3.1.0です。

$ ./configure --with-mpi=/usr/lib/openmpi \
--with-libxml2=/opt/salome/SALOME-MECA-2013.1-LGPL/prerequisites/Libxml2_278 \
--with-metis=/opt/salome/SALOME-MECA-2013.1-LGPL/prerequisites/Metis_40 \
--with-scotch=/opt/salome/SALOME-MECA-2013.1-LGPL/prerequisites/Scotch_5111 \
--with-hdf5=/opt/salome/SALOME-MECA-2013.1-LGPL/prerequisites/Hdf5_188 \
--with-cgns=/opt/salome/SALOME-MECA-2013.1-LGPL/prerequisites/Cgnslib_3134 \
--with-med=/opt/salome/SALOME-MECA-2013.1-LGPL/tools/Medfichier_306 \
--with-salome=/opt/salome/SALOME-MECA-2013.1-LGPL \
--prefix=/opt/code_saturne-3.1.0

最後に、以下の様に表示されたら、インストール設定が完了です。これよりMakefileが生成されます。
The package has been configured. Type: make make install
To generate and install the Code_Saturne kernel

それでは指示に従って、コンパイルとインストールを進めます。まずはコンパイル。
$ make
暫く待ちます。エラーがなく「make[1]: ディレクトリ `/home/dexcs/Downloads/code_saturne-3.1.0' から出ます」と表示されたら成功です。

次にインストールを行います。
$ make install
暫く待ちます。エラーがなく「make[1]: ディレクトリ `/home/dexcs/Downloads/code_saturne-3.1.0' から出ます」と表示されたら成功です。

それでは、インストールの結果を以下の手順で確認します。code_saturneが完成したプログラムです。
$ cd /opt/code_saturne-3.1.0/bin; ls -l

■ Code_Saturneの起動の準備

まず最初に、この状態ではCode_SaturneをSalome-Mecaのモジュールとして起動した場合、モジュールが少ないのでモジュールを追加しておきます。
以下の手順で/opt/code_saturne-3.1.0/lib/python2.6/site-packages/code_saturne/cs_salome.py を開き、82行目を書き換える。

変更前 : default_modules = "GEOM,SMESH,MED,CFDSTUDY,PARAVIS,VISU"
変更後 : default_modules = "GEOM,SMESH,MED,CFDSTUDY,PARAVIS,VISU,JOBMANAGER,YACS,EFICAS,ASTER,EUROPLEXUS,HEXABLOCK"
$ cd /opt/code_saturne-3.1.0/lib/python2.6/site-packages/code_saturne
$ vi cs_salome.py

次にCode_SaturneをSalome-Mecaと連携して起動する設定にしてあるので、起動時にSalome-Mecaのライブラリのパスを、以下の手順で設定しておきます。
$ cd /opt/code_saturne-3.1.0/bin
$ vi CodeSaturne
内容:
#!/bin/bash
source /opt/salome/appli_V6_6_0/env.d/envProducts.sh
/opt/code_saturne-3.1.0/bin/code_saturne $*
$ chmod a+x CodeSaturne

動作確認を、以下の様にしてみます。
$ ./CodeSaturn ⇒ Code_Saturneの利用方法が表示されます。
$ ./CodeSaturn gui ⇒ SaturneGUIが起動されます。
$ ./CodeSaturn salome ⇒ Salomeが起動して、モジュールにはCFDSTUDYがあります。

ちなみに、上記で起動されるSalomeは、Salome-Mecaと起動方法が異なるため、日本語化はされていません。

インストール先は、/opt/code_saturne-3.1.0です。この中のbinに、CodeSaturne, code_saturne ple-configがあり、「CodeSaturne」が起動用スクリプトになります。

以下の記述を最後に追加して、コマンド実行パスを設定しておきます。
$ cd ~
$ vi .bashrc
$ source .bashrc

===== .bashrc =====
# code_saturne
export PATH=/opt/code_saturne-3.1.0/bin:$PATH
===================

■ 文書と例題の移動

インストールが完了したら、文書:docsと例題:examplesを、Code_Saturneのファイル保存用ディレクトリ~/CodeSaturneFilesに移動しておきます。
$ cd ~
$ mkdir CodeSaturneFiles
$ cd ~/Downloads/code_saturne-3.1.0
$ cp -r docs examples ~/CodeSaturneFiles
$ cd ~/CodeSaturneFiles; ls

他のファイルは実行に必要ないので、ここでは削除します。以下の手順で行います。
$ cd ~/Downloads
$ rm -r code_saturne-3.1.0 code_saturne-3.1.0.tar.gz

はお、上記の例題を実行するとき、Installerで構築した場合には、code_saturne createでケースファイルを生成して作られたSaturneGUIではなく、上記のCodeSaturne guiとしてツールを起動します。


DEXCS2012-Salomeの有効活用:物理シミュレーションの導入手順(1)

2013年07月07日 09時40分40秒 | OpenCAE活用
ここでは少し趣を変えて、物理シミュレーションを試してみます。これまでSalome-Mecaなどで、定量的な分析を目的とした数値シミュレーションを進めてきました。一方で、定性的な現象を表現することに注目して、3次元CGなどの分野では、物理シミュレーションによるアニメーション作成が可能です。ここでは、DEXCSのAdventureやOpenFOAMの形状モデリングツールとして利用したBlenderを活用して、物理シミュレーションを実現する環境を構築します。

ここでは、あくまでBlenderを物理シミュレーションの演算エンジンとして利用するため、マウス操作などは一切省いて、入力スクリプトから動画ファイルを生成する方法を説明します。実は、この手順は以下の「まるちゃんブログ:Blenderの物理シミュレーションをpythonスクリプトで作成」を参考にしてDEXCS(Ubuntu)用に書き換えました。
http://d.hatena.ne.jp/cflat-inc/20130630/1372568992

ところで、DEXCS-Salomeはオープンソース構造解析Salome-Mecaを中心に構築された、オールインワンのオープンCAEシステムですが、要はUbuntu12.04LTS-64/32の共通のベースシステムとして、様々な活用が可能です。このブログでも色々な活用方法を紹介しています。実は、方針もなく適当に取り組んでいるのではなく、様々な構造物の最終段階の崩壊性状を知りたいという願望に従って進めています。

■ 3D-CGツールBlenderの導入

今回は、3次元CGツールのBlenderを用いて、物理シミュレーション機能を用いた定性的な崩壊の様子を動画として表現することを目標とします。まず、いつものようにSynapticを用いて、Blenderを導入します。そこで、アプリケーション→システムツール→システム管理→Synapticパッケージマネージャを利用します。最初に利用者のパスワードを入力して起動したら、左上の再読込を押してパッケージ情報を最新にします。

以下の条件で検索すると、バージョン2.62-1のblenderが見つかります。しかし物理シミュレーションは、なるべく最新版を使った方が良く、以下の入力スクリプトもバージョン2.66以上を前提としているようです。
検索:blender 結果:blender blender-dbg バージョン2.62-1

そこで、以下のBlender公式ダウンロードサイトから、最新版バージョン2.67bを入手してインストールしてみます。以下のサイトの、Linux-x86-64の項目から、「Blender 2.67b (73 MB)」をダウンロードします。
http://www.blender.org/download/get-blender/

入手したファイルは、~/Downloadsの中の、blender-2.67b-linux-glibc211-x86_64.tar.bz2です。以下の手順で確認して展開します。
$ cd ~/Downloads; ls
$ bzip2 -d blender-2.67b-linux-glibc211-x86_64.tar.bz2
$ tar xvf blender-2.67b-linux-glibc211-x86_64.tar
$ cd blender-2.67b-linux-glibc211-x86_64; ls

色々なファイルがありますが、readme.htmlがあるので、メニューバーの場所→ホームフォルダーから、このファイルを選択してブラウザで内容を確認します。Installationの項目を見ると、Linux,FreeBSDでは展開すれば実行形式が実行可能となります。コンパイルなどは不要なので、/optに移動して、以下の手順でそのまま実行するようにします。
$ cd ..
$ mv blender-2.67b-linux-glibc211-x86_64 /opt/blender

■ 物理シミュレーションの準備

端末を開いてアプリケーション→アクセサリ→端末を開いて、Blenderを物理シミュレーションツールとして利用するための設定を行います。と言っても、要は3D-CGツールの画面を出さずに、入力スクリプトを読み込んで動作するようにします。

$ vi ~/.bashrc で設定ファイルを開いて、最後に以下を追加したら、sourceで設定を有効にする。
  # blender-simulator
  alias blender-simulator='/opt/blender/blender --background --python'
$ source ~/.bashrc

■ 入力スクリプトの準備

実はBlenderでは、内部の処理がpythonで構築されているため、pythonスクリプトを用意することで、マウスなどの操作を一切行わずに画像生成を進めることができます。以下では、上記のブログに示された例題について、その内容を解説します。

入力スクリプトは、~/BlenderWorkに作ることにします。ファイルsim00.pyとして、viでファイルを開いて、以下の内容をマウスでコピーして作ります。
$ cd ~
$ mkdir BlenderWork
$ cd BlenderWork
$ vi sim00.py

=====入力スクリプト:sim00.py=====
# -*- coding: utf-8 -*-

import os
import bpy
import math

#デフォルトで存在しているCubeを削除
bpy.ops.object.delete()

#Cube作成
N = 10
for x in range(0, N):
for y in range(0, N):
for z in range(0, N):
bpy.ops.mesh.primitive_cube_add(location=(x*2, y*2, z*2))
bpy.ops.rigidbody.object_add()

#平面作成
bpy.ops.mesh.primitive_plane_add(location=(N-1, N-1, -10))
bpy.ops.rigidbody.object_add(type='PASSIVE')
bpy.data.objects["Plane"].scale = (N+10, N+10, 1)

#カメラ
bpy.data.objects["Camera"].location = (N+20, N+20, N+20)
bpy.data.objects["Camera"].rotation_euler = (math.pi/6, 0, math.pi*3/4)
bpy.data.cameras["Camera"].lens = 10

#照明
bpy.data.objects["Lamp"].location = (0, 0, N+10)
bpy.data.lamps["Lamp"].type = 'SUN'

# 物理シミュレーション
bpy.ops.ptcache.bake_all()

# 動画作成
bpy.context.scene.render.resolution_x = 400
bpy.context.scene.render.resolution_y = 300
bpy.context.scene.render.resolution_percentage = 100
bpy.context.scene.render.image_settings.file_format = 'AVI_JPEG'
bpy.data.scenes["Scene"].render.filepath = "test.avi"
bpy.context.scene.frame_start = 0
bpy.context.scene.frame_end = 200
bpy.ops.render.render(animation=True)

# 保存
savePath = os.path.abspath(os.path.dirname(__file__))
bpy.path.relpath(savePath)
bpy.ops.wm.save_as_mainfile(filepath="test.blend", relative_remap=True)
======================

■ 物理シミュレーションの実行

先に設定したツールを用いて、以下のように実行します。色々なメッセージが表示されながら処理が進みます。
$ blender-simulator sim00.py

暫く待つと、「Append frame 200 Time: 00:00.27 (Saving: 00:00.05) Blender quit」が表示されたら完了です。結果を確認します。
$ ls
sim00.py:用意した入力スクリプト
test.avi:生成された動画ファイル
test.blend:Blender用の入力ファイル

さてお待ちかねの動画ファイルを確認してみます。AVIの動画ファイルは以下のコマンドで表示できます。小さなブロックで作られた大きな立方体が下の板に向かって重力落下して、バラバラに崩れ散る様子が分かると思います。
$ totem test.avi

■ 入力スクリプトの解説

この入力スクリプトは、Python言語のスクリプトなので、記述方法などもPythonに従っています。スクリプトを理解するために必要な情報を、各記述に対応してまとめておきます。

======================
⇒ # -*- coding: utf-8 -*-
スクリプトのファイルの漢字コードを指定します。ここでは、UTF-8を用いています。これがお決まりの呪文です。

⇒ import os
⇒ import bpy
⇒ import math
スクリプトで用いるライブラリを組み込みます。osはオペレーティングシステムの機能であるファイルの生成などのため、bpyはこのスクリプトで中心となるBlender用Pythonライブラリ利用のため、mathは数学関数の利用のためです。

⇒ #デフォルトで存在しているCubeを削除
⇒ bpy.ops.object.delete()
Blenderは標準の初期状態で、中央に立方体が生成されているので、まずはモデルの中のオブジェクト(物体)を全て削除しておきます。


======================

#Cube作成
N = 10
for x in range(0, N):
for y in range(0, N):
for z in range(0, N):
bpy.ops.mesh.primitive_cube_add(location=(x*2, y*2, z*2))
bpy.ops.rigidbody.object_add()

#平面作成
bpy.ops.mesh.primitive_plane_add(location=(N-1, N-1, -10))
bpy.ops.rigidbody.object_add(type='PASSIVE')
bpy.data.objects["Plane"].scale = (N+10, N+10, 1)

#カメラ
bpy.data.objects["Camera"].location = (N+20, N+20, N+20)
bpy.data.objects["Camera"].rotation_euler = (math.pi/6, 0, math.pi*3/4)
bpy.data.cameras["Camera"].lens = 10

#照明
bpy.data.objects["Lamp"].location = (0, 0, N+10)
bpy.data.lamps["Lamp"].type = 'SUN'

# 物理シミュレーション
bpy.ops.ptcache.bake_all()

# 動画作成
bpy.context.scene.render.resolution_x = 400
bpy.context.scene.render.resolution_y = 300
bpy.context.scene.render.resolution_percentage = 100
bpy.context.scene.render.image_settings.file_format = 'AVI_JPEG'
bpy.data.scenes["Scene"].render.filepath = "test.avi"
bpy.context.scene.frame_start = 0
bpy.context.scene.frame_end = 200
bpy.ops.render.render(animation=True)

# 保存
savePath = os.path.abspath(os.path.dirname(__file__))
bpy.path.relpath(savePath)
bpy.ops.wm.save_as_mainfile(filepath="test.blend", relative_remap=True)

DEXCS2012-Salomeの有効活用:骨組解析OpenSeesの導入手順(1)

2013年07月05日 11時50分23秒 | OpenCAE活用
DEXCS-Salomeを利用する人は、多くが機械系CAEの利用者だと思うのですが、今後は建設系CAEも展開することを期待して、建築物などの骨組構造の地震応答解析を実現するOpenSeesの導入方法をまとめます。
実は以前にWindows版バイナリを用いてRC梁の弾塑性解析の検証を行ったことがあり、その時の情報を以下にまとめています。今回は研究開発での大規模高精度解析への展開を狙って、Ubuntu上でのソースコンパイルに挑戦してみます。
http://opencae.gifu-nct.ac.jp/pukiwiki/index.php

まず今回導入する骨組解析OpenSeesの公式サイトを以下に示します。並列処理による大規模解析や高度な構造工学問題への対応などが展開しており、継続的な研究開発が行われています。ちなみにバイナリのダウンロードではユーザー登録が必要ですが、ソースの入手は不要のようです。
http://opensees.berkeley.edu/
実はこの手順については、以下の資料を参考にしています。ここではUbuntuだけでなく、CentOSでの情報もまとめられています。後で調べると、OpennSeesは、相当に多様な環境で構築や動作が出来るようです。お手軽にWindowsでバイナリですぐに動作させることも出来るわけです。
http://y.dyndns.org/OpenCAE/index.php?OpenSees

ベースはDEXCS2012-Salome-D1-B1-64を用います。通常の手順で、DEXCS-Salomeを準備したら、ネットワークを有効にして、システムのアップデートを済ませておきます。もし以前に他のシステムの追加の構築などを行っている場合、以下の手順の中で不要な部分があると思います。

■ ソースプログラムの入手

ここでは、OpenSeesのソースプログラムを、subversionと言うソース管理システムを用いて入手します。そこで、アプリケーション→システムツール→システム管理→Synapticパッケージマネージャを利用します。最初に利用者のパスワードを入力して起動したら、左上の再読込を押してパッケージ情報を最新にします。以下の条件でインストールします。
検索:subversion インストール指定:subversion 適用:15個の新規パッケージを導入

アプリケーション→アクセサリから端末を起動して、ソースプログラムの入手作業を以下の手順で進めます。ここでは、ホームディレクトリにOpenSeesディレクトリを作って、そこにソースプログラムを保存します。
$ cd ~
$ svn co svn://opensees.berkeley.edu/usr/local/svn/OpenSees/trunk OpenSees

暫く待って、「…チェックアウトしました」と表示されたら終了です。中身を確認してみます。
$ cd ~/OpenSees; ls

先ずはREADMEを読んでみますが、要約すると以下の通りです。
・Makefileが、UNIX系システムにおいてmakeの設定になる
・この詳細な設定は、Makefile.defに指定することが必要
・なおインストールには、事前にTcl/Tkが必要であること
(多分多くのLinuxでは入っている。このUbuntuもそう)
・実際にmakeするまえに、~/bin, ~/libを作っておくこと
(ここでは$(HOME)として~(/home/dexcs)を設定してる)
・MAKEの中にMakefile.defの色々な例があるので選択する

それで、MAKEの中身を確認してみます。
$ cd MAKES; ls
色々あるのですが、今回のUbuntuに関連ありそうで、詳しい説明のあるMakefile.def.EC2-UBUNTUを用いることにするので、以下の様に、インストール用ディレクトリ~/OpenSeesにコピーします。
$ cp Makefile.def.EC2-UBUNTU ../Makefile.def

■ インストールの準備

まず忘れないうちに、先のREADMEにある準備をしておきます。このインストールの前提は以下の通りです。
インストールは、ユーザーのホームディレクトリ:/home/dexcs (~) → これをHOMEに設定する
ホームディレクトリのインストール先:~/bin  ホームディレクトリのライブラリ用:~/lib
$ cd ~
$ mkdir bin lib

構築環境の準備で、先に用意したMakefile.defを確認します。
$ cd ~/OpenSees
$ vi Makefile.def (任意のエディタで確認する)

まず、OpenSees, bin, libのあるディレクトリ(ホーム)を指定します。
HOME  = /home/dexcs (自分のホームディレクトリは、$ cd;pwdで確認)

次に、構築の前提となるツールを確認すると、初めの方で、apt-getで導入するツールが列挙されています。この中で追加が必要となるのはなくて、DEXCS2012-Salomeでは既に導入してあります。
※gcc,g++,gfortranなどの確認追記※

■ コンパイルの実行

準備が出来たので、実際にmakeでコンパイルを実行します。
$ cd ~/OpenSees
$ make
始めにライブラリを構築して、~/libに保存してから、コンパイルが進みます。結構な時間がかかるので待ちます。警告が沢山出ますが、取り敢えず気にしません。

エラーが表示されずに、「LIBRARIES BUILT ... NOW LINKING OpenSees PROGRAM」のメッセージが出たら、コンパイルは成功しています。作成された実行形式を確認します。「OpenSees」が完成しています。
$ cd ~/bin; ls

■ OpenSeesの動作の確認

骨組解析システムのOpenSeesは、建築物の地震応答の数値解析を目的に開発されており、非常に多彩で高度な機能を持っていますが、ここではインストール用のソースファイルの中にある簡単な例題を用いて、動作検証を行います。例題を確認します。
$ cd ~/OpenSees/EXAMPLES; ls

色々あるのですが、難しいものばかりなので、取り敢えずの動作確認を、verrificationにあるPlanarTruss.tclを用いて行います。OpenSeesの作業用ディレクトリOpenSeesWorkを作って準備します。
$ cd ~
$ mkdir OpenSeesWork
$ cd OpenSeesWork
$ cp ~/OpenSees/EXAMPLES/verification/PlanarTruss.tcl .

現時点では検証としてPATHは設定せずに、直接に実行してみます。
$ ~/bin/OpenSees PlanarTruss.tcl

直接に解析結果が表示されて、「PASSED Verification Test PlanarTruss.tcl 」として実行が終了します。具体的な例題の意味な活用については、また続きで…

DEXCS2012-Salomeの有効活用:衝突解析Impactの導入手順(1)

2013年07月04日 05時22分37秒 | OpenCAE活用
構造解析では基本となる弾性解析から発展し、実践的な目標として衝突解析を目指される方が多いです。本開発に活用しているSalome-Mecaも接触解析は可能ですが、衝突解析となると未確認です。
やはり衝突解析の専用システムが必要になりますが、商用システムは高度な機能を有するだけあって、それなりに高価です。そこでオープンCAEで何とかならないか検討しました。

今回は、以下の公式サイトで公開されているオープンCAEの衝突解析システムImpactを検証してみようと思います。まだバージョンが0.7ですから、未完成かと思いきや解説文書や検証例題なども充実しています。また並列処理も可能なようです。
さらにシステムがJavaで作られているので、様々なシステムで動作することも特徴です。なのですが、予備解析を簡単にWindowsで進めようとしたらJavaがすぐに落ちてしまい、先に進めませんでした。何か工夫が必要なのかもです。
http://www.impact-fem.org/

ベースはDEXCS2012-Salome-D1-B1-64を用います。先の述べたようにWindowsでは不安定だったので、Ubuntu12.04-64でやってみたら、正常に動作確認が出来ました。基本的には、Java SDK, Java3D が動作する環境ならどこでも動くようです。
DEXCS-Salomeを準備したら、ネットワークを有効にして、システムのアップデートを済ませておきます。なおImpaceはJava環境で動作するので、他のシステムとの影響は無いので、既存の環境へのImpactの追加は問題ないです。

ところで、JavaはVMと言う仮想マシンで動作するので、計算速度が心配です。厳密な比較はしてないですが、感覚的にはそれなりです。ただしマルチコアCPUを活用して並列処理するので、ベースの仮想マシンでは複数CPUコアを利用可能にします。

■ 解析実行環境の準備

まずは、Impactの衝突解析の実行環境を準備します。以下のページを参照して進めます。ここでは、Ubuntuのパッケージ管理ツールSynapticを用いて準備します。以下のウエブの最初の段落に「Installation Prerequisites」にUbuntuに対する補足説明もありますので、その通りに進めます。
http://www.impact-fem.org/intro_install_en

アプリケーション→システムツール→システム管理→Synapticパッケージマネージャを起動します。最初に利用者のパスワードが確認されることがあります。起動したら、左上の再読込を押してパッケージの最新情報に更新します。

・Java engine:これはJavaの実行仮想マシンなどのツールです。
「openjdk」で検索 バージョン6が推奨になっているのですが、最新版7を導入します。以下の9個をインストール指定します。最小限ならばopenjdk-jreだけで良いかもしれませんが、まあ念のため。
openjdk-7の後に、-demo -dgb -doc -jdk -jre -jre-headless -jre-lib -jre-zero -source
適用を押すと、23個の新規パッケージがインストールされます

・Java3D:これはGUIでJavaが3次元表示するためのツールです。
「java3ds」で検索 該当は1つです。以下の1個をインストール指定します。
java3ds-fileloader
適用を押すと、4個の新規パッケージがインストールされます

Synapticを閉じて準備は完了です。Javaなので簡単に出来ますね。

■ ソフトウエアパッケージの入手

先のウエブの2番目の段落に「Impact Installation」の通りに進めます。1のDownloadを押して移動します。以下のダウンロードサイト「Impact Finite Element Program」に行きます。
http://sourceforge.net/projects/impact/

上の方の緑色のダウンロードボタンを押して、暫く待ちます。最新版Impact-0.7.06.039.zipが~/Downloadsに保存されています。

このファイルをホームディレクトリに展開します。以下の様に実行します。(これはDEXCS-Salomeの状態です)ファイルの操作などは端末で行うので、アプリケーション→アクセサリー→端末で起動します。
$ cd ~
$ unzip ~/Downloads/Impact-0.7.06.039.zip
$ mv ~/Download/Impact ~

これでホームディレクトリにImpactディレクトリが出来ました。これで準備は完了です。Javaですからコンパイルも不要で手軽です。

ではImpactディレクトリの中身を確認します。この中でImpactGUI_OGL~.shがUnixシステムでのGUIツール起動スクリプトです。(ImpactGUI_JOGL_OGL~とは別です)
$ cd ~/Impact; ls

色々あって迷いますが、linux用で64bitなのでamd64にします。ちなみにi586は32bit用です。以下の様に起動します。
$ bash ./ImpactGUI_OGL_linux_amd64.sh

少し待つと、Impact Version 0.7.06.039のGUIツールが起動します。スプラッシュまで表示されて高い完成度です。期待できます。確認できたので、左上の×ボタンで終了しておきます。

■ 衝突解析の例題の検証

このInpactには様々な例題が用意してあり、以下のウエブにも紹介され、入力ファイルがダウンロードできます。
http://www.impact-fem.org/sup_example_en
また、ダウンロードしたファイル~/Impactのexamplesにも、その中の一部がありますので、それを使ってみます。

作業用ディレクトリ~/ImpactWorkを作り、そこに例題入力ファイルtracker.inをコピーします。ちなみに、Impactの入力ファイルは、拡張子inの1つだけです。非常に単純で分かりやすいです。
$ cd ~
$ mkdir ~/ImpactWork
$ cd ~/ImpactWork
$ cp ~/Impact/examples/tracker.in .

この入力ファイルを眺めてみると、授業の演習でやるような単純な形式で、節点情報、要素情報、材料情報、解析情報、などが並んで居て、マニュアルも完備されているので、その内容はすぐに理解できます。
http://www.impact-fem.org/doc_fembic_en

た~だ、どこまで実践的な課題に対応できるのか?大規模形状とか複雑な接触条件とか、でもJavaでソース見られるようですし、更新は継続していますし基礎理論のベースもあるようですから、まあ研究開発教育用ツールとしてみれば、十分以上なツールだと思いました。
http://www.impact-fem.org/intro_theory_en

また、以下には開発者用のDevelopment/Programmers Manualもあるので、その気になれば高度な衝突問題も対応できるかも?Javaの計算速度について不安はありますが、先ほど見た起動スクリプトの並びに、ImpactCluserのツールがあって、クラスタの並列処理も可能みたいです。期待は出来ますね。
http://www.impact-fem.org/dev_programmer_en

ウエブの情報だけでなく、インストールしたディレクトリ~/Impactの中にdocディレクトリがあって、そこに大量のウエブドキュメントがあります。DEXCSの上部のツールバーの場所→ホームフォルダーを開き、Impact / doc / index_us.htmlをダブルクリックしてブラウザで開くと、整備された解説文書の全てが確認できます。
良く調べたら、ImpactGUIツールの右端のHelpタブからも閲覧できました。

さて目的に戻って、例題を検証してみます。環境設定などをしない場合は、ImpactGUIはインストールしたディレクトリから起動します。
$ cd ~/Impact
$ bash ./ImpactGUI_OGL_linux_amd64.sh

起動したGUIツールを眺めてみます。詳しい利用法は解説文書を参考にしてください。活用が分かったらまたご報告します。
※なお、DEXCSはVNCなどでリモートデスクトップとして使っていると、GUIの3次元表示が出来ないことがあります。この時は、DEXCS起動時のパネルのGNOMEの足跡マークで、GNOME Classic (No effects)を選択してログインしてください。それでも、Java3Dが正しく表示できないことがあります。

最上段のタブに「Pre Processor」「Processor」「Post Processor」の3つが並んでいます。本来はPre Processorでモデルや条件を設定するのですが、今回は出来上がった例題の入力ファイルを読み込んでみます。Pre Processorタブを選択して進めます。

2段目の左から2つのファイルオープンを選択して、先に用意した~/ImpactWork/tracker.inを開きます。なぜかエラーで読み込めません?まあ気にせずOKで終わらせます。
実はファイルを開くボックスで、ファイルをタイプを選択すると、以下の6つがあります。
 すべてのファイル
 Add STL surface (.stl) 
 Add impact model (.in) to current model
 Add nastran model (.nas, .nastran, .bdf) to current model
 Add Gmsh model (.mesh) to current model
 Add UNV model (.unv) to current model
これらを見るとお馴染みの形状データやメッシュデータなどが読み込めそうです。実践的利用にも適用できそうです。

それでは解析を実行するので、Processorタブを選択します。画面が3つに分かれ、上部はメッセージが表示されて、現在の利用できるCPUコア数が表示されます。

下左のボタンから入力ファイルを読み込みます。作業用ディレクトリ~/ImpactWorkに移動します。ここでファイルのタイプでは、以下の選択肢があります。先に用意したtracker.inを読み込みます。今度は正しく読めたようです。
 すべてのファイル
 Open solver model (.in)

検証と言うことで、取り敢えず、緑色の三角ボタンで実行します。上のメッセージには、予想残時間Remaining timeが表示されています。しばらく待ちます。なおシステムモニターで見ると、確かに利用できる全てのCPUコアを用いて並列処理しています。
最後にSolving took 332167 msなどと表示されたら、解析終了です。この場合、約5分かかりました。

端末から先の作業ディレクトリを見ると、以下の2つのファイルを作られています。いずれもテキストファイルなので、頑張れば変換して他のツールでも使えそうです。
tracker.in.flavia.msh 27KB:形状のメッシュファイル
tracker.in.flavia.res 8.6MB:解析結果のファイル

結果を可視化するので、Post Processorタブを選択して進めます。左端のファイル選択ボタンから作業用ディレクトリ~/ImpactWorkに移動します。ここでファイルのタイプでは、以下の選択肢があります。resultファイルを読み込む選択をして、tracker.in.flavia.resを開きます。読み込むのに少し待ちます。
 すべてのファイル
 Open solver result (.res)

画面に青いメッシュが表示されたら成功です。マウスの操作は以下の通りです。
 左:回転 中:遠近 右:移動

左の欄にTime stepがあり、最初は0.0ですが、形状を良く見ると座屈を誘導する初期不整が確認できます。この時間刻みを選択して、キーボードカーソルで移動させると、アニメーションの様に見えます。

以上で例題の検証は終わりです。相当に可能性を持ったツールだと思いました。