Code_Aster survey


Code_Aster

概要

  • 開発機関: EDF (フランス電力公社)、フランス
  • 解析手法: FEM
  • ライセンス: GPL
  • 参考: 理論マニュアルのセクションR4 (R4 : Méthodes d’analyse) 中、R4.02が音響解析関連。利用可能な有限要素の一覧。サンプルケースはAHLV100AHLV101

Ubuntu 8.04 64bitおよびopenSUSE 11.1 32bitにおけるインストール、インストール時の設定、音響解析の付属サンプル事例実行までを解説する。

1. インストール編
以下は、Ubuntu 8.04 64bitにインストールする場合。

  • 基本的には、README FOR CODE_ASTER INSTALLATIONを注意深く追っていけば難しくない。READMEにはgfortranよりg77を使った方が方が実行時の性能が良いようなことが書いてあるが、とりあえずは簡単確実な方法からということで、gfortranを使用。BLAS/Lapackも色々高速版があるが、ディストリビューションに付属のスタンダードなものを使う。
  • 必要なdependency: bison, flex, nedit, lapack, gfortran, python-dev, python-qt-dev, python-qt3, tkinter, grace, xmgrace、sshおよび、これらのインストール時に同時に自動的にインストールされるdependency。
  • ソースパッケージをダウンロード、展開。aster-full-src-9.4.0ディレクトリ以下に展開される。
  • aster-full-src-9.4.0/setup.cfgを編集。といっても今回の場合、上記の事情でF77=gfortranとするだけ。
  • Code_Asterのビルドは、ビルドスクリプトがインストールまで実行するようになっているので、ビルドとインストールが同一ユーザー権限で行われることになるようだ(ユーザ権限でビルド & sudo make installが出来なさそう)。なので、sudoに続けて(root権限で)次のビルドコマンドを入力するか、それが気持ち悪いのでユーザ権限でビルドしたい場合は、あらかじめデフォルトのインストール先ディレクトリである/opt/asterをユーザ権限で作っておく。今回は後者を選択。
  • python setup.py installを実行。
  • ビルドが終了したら、終了直前のインストールチェックの画面出力で、すべて[OK]または[Skip]であることを確認。また、同ディレクトリのsetup.logに”Exception raised”のメッセージが残っていないことを確認。なぜかエラーメッセージは記録してくれないので、Exception raisedがあった場合は、当該サブパッケージのビルドディレクトリである/tmp/install_**** (****はサブパッケージ名)でmakeを叩き、エラーメッセージを確認して対処。
  • ビルドに成功していれば、source /opt/aster/aster_profile.sh; source /opt/aster/STA9.4/profile.shを実行。これらはCode_Asterの実行に必要な環境変数の設定なので、シェルを起動するたびに毎回実行する必要がある(OpenFOAMのsource ~/OpenFOAM/OpenFOAM-1.5.x/etc/bashrcに相当)。
  • cd /opt/aster/STA9.4; as_run forma01a.exportを実行。これでインストールしたバイナリが正しく動作するかをチェックする。すべての出力が[OK]、最後にDIAGNOSTIC JOB : OK、EXIT_CODE=0ならOK。

またopenSUSE 11.1 32bitの場合、以下の手順が異なる。

  • dependencyとして、gcc41 (gcc-4.1) が必要となる。標準のgcc-4.3では、HDF5のビルド時にコンパイラがメモリを使い果たしてクラッシュしてしまうため。それに合わせて、念のためg++もgcc-g++-4.1にしておく。
  • setup.cfgのCC=gcc-4.1、CXX=g++-4.1とする。F77は設定しなくてOKだったが、gcc33-fortranを入れていたためかもしれない(未確認)。

2. 設定編
以上でインストールはひととおり終了だが、引続きGUIのASTK(アステックと読むそうだ)を実行するための設定が必要。

  • 設定すべき事項は、Code_Asterフォーラムのこのスレッドによくまとめられている。以下はそのまとめ。
  • ASTKの起動前に、適当な端末からnedit -display localhost:0.0を実行してみる。これで問題なくウインドウが開けば、次のステップに移る。開かなければ、ウインドウマネージャメインメニュー「システム」→「システム管理」→「ログイン画面」→「セキュリティ」→「Xサーバへの転送を禁止する」のチェックを外す。念のため、システムを再起動。
  • コマンドラインにastkと入力、ASTKが起動される。
  • Configuration→Preferences→GeneralでRefresh frequencyを1分に設定。あまり重要な設定ではないが、あとでジョブをモニタするときに早く終わったジョブで待たされずに済む。
  • Configuration→Preferences→Networkでホスト名およびドメイン名の設定を確認。なお上記スレッドにも書かれているが、この辺の設定はネットワーク環境や仮想環境か否かでケースバイケース。上手い設定が見つからない場合は、Forced DISPLAY variableでlocalhost:0.0を設定してみるのも手だ。さらに、(気休めに)リモートプロトコルをssh/scpにしておく。その他、下記の実行編で開くべきウインドウが開かないときは、上記スレッドをよく読んで対処する。

openSUSE 11.1 32bitの場合、以下の手順が異なる。

  • -displayを指定した場合のXサーバとの通信許可には、メインメニュー「システム」→「YaST」→「システム」→「/etc/sysconfigエディタ」→「Desktop」→「Display manager」→「DISPLAYMANAGER_REMOTE_ACCESS」をyes、「DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN」をyesとする。

3. 実行編
Code_Asterケースの主な入力ファイルは、コマンドファイル(拡張子.comm)と呼ばれる、解法・境界条件・後処理内容などを記述した、一種のPythonスクリプトと、各種形式のメッシュファイルの2つだ。ただし、この2つがあればすぐソルバを起動できるわけではなく、ASTKから以下の手順で実行するか、またはASTKでケースを実行すると作成される.exportファイルを、インストール編の動作確認でも使用したas_runコマンドに与えてジョブを実行する。

ここでは付属サンプルの一端が振動境界、もう一端が吸音境界の音響管ケースであるAHLV100 Modelisation A (英: AHLV100 Modeling A)の実行手順を記述する。

  • サンプルケースは全て/opt/aster/STA9.4/astest以下にインストールされている。その中からahlv100a.*を~/aster/ahlv100aにコピーする。
  • astk画面の”Base path”欄右のフォルダアイコンをクリック、~/aster/ahlv100aディレクトリを指定する。
  • その2つ下のもうひとつのフォルダアイコンをクリック、ahlv100a.comm (コマンドファイル)を指定。
  • 同様の手順で、ahlv100a.mail (メッシュファイル)を指定。
  • 同様の手順で、ahlv100a.paraを指定。「D」「R」「C」と並んだチェックマークの「R」にチェックされるが、それを外して代わりに「D」をチェックする。(このファイルはメモリ使用量の上限値などが記述されているが、不要かも。未確認)
  • フォルダアイコンの上の新規ファイルアイコンをクリック、あらわれたファイル指定行のTypeから.erreを指定。ファイル名に./ahlv100a.erreと入力。
  • 同様にして.messを指定、./ahlv100a.messと入力。
  • 同様にして.resuを指定、./ahlv100a.resuと入力。
  • 同様にして.rmedを指定、./ahlv100a.rmedと入力。以上で計7ファイルが指定されているのを確認。
  • 画面右のinteractive follow-upをチェック。これでジョブの実行中に画面出力をモニタするxtermが開くようになる。
  • Progress of jobsをクリック。ジョブモニタのASJOBが開く。
  • Actualiser (英: Update)の右横のチェックを入れる。これでジョブがRefresh frequencyで設定した間隔でモニタリングされるようになる。
  • ASTKメイン画面のFile→Saveで現在の設定を保存。
  • ASTKメイン画面右下、Progress of jobsの上左のRunをクリック。これでジョブが開始される。
  • xtermが開き、ジョブの実行状況がモニタされる。ASJOB画面では”PEND”と表示されるが、これは仕様。xtermが開かないときは、設定編のネットワーク設定を見直す。
  • ジョブが終わって1分ほどして、ASJOBの表示が”ENDED OK”となればOK。
  • ASJOBのジョブリストから今しがた終了したジョブを選択し、Editer→Fichier output (英: Output file)をクリックすると、出力メッセージを表示するためneditが起動する。起動しなければ、設定編のネットワーク設定を見直す。同様にFichier error (英: Error file)をクリックすると、エラーメッセージが表示される。
  • ジョブをジョブリストから削除したいときは、Supprimer (英: Remove)をクリック。
  • 計算結果の可視化には、ASTKメイン画面のファイル名./ahlv100a.rmedの部分をクリック、テキストカーソルがファイル名のフィールドにあることを確認する。ついでTools→Gmshをクリックすると、Gmshがポストプロセッシングモードで起動し、解析結果が表示される。