Helyx-OS を使ってみる

2014年1月25日

はじめに

Helyx-OS は Engys 社が開発・販売している OpenFOAM ベースの統合 CFD ツール Helyx のオープンソース版である。簡単にいうと OpenFOAM 用 GUI ツール。ここではこの Helyx-OS を使ってみる。

使用バージョン

Helyx-OS 2.0.0, OpenFOAM 2.2.2, Linux Mint 15

インストール

ここ からパッケージをダウンロードする。

パッケージに実行権限を設定。

$ chmod +x 20131121-Engys-HELYX-OS-2.0.0--linux-x86_64-FULL.bin

パッケージを実行。

$ ./20131121-Engys-HELYX-OS-2.0.0--linux-x86_64-FULL.bin

いくつか質問に答える。

This program will install HELYX-OS on your system. Do you want to continue?
1) Yes
2) No
#? 

1 を入力する。ライセンスが表示されるので、スクロールする。

Do you accept the terms of agreement?
1) Agree
2) Exit
#? 

1 を入力。

Select components to install
1) HELYX-OS-GUI
2) HELYX-OS-GUI and Kernel
#? 

1 でよい。2 は OpenFOAM も入れてくれるみたい。

Select destination folder for HELYX-OS GUI:

インストール先のパスを入力。

~/.bashrc にパスの設定を追加。

export PATH=~/opt/Engys/HELYX-OS/v2.0.0/:$PATH

シェルを起動しなおし、以下で Helyx-OS が起動するのを確認する。

$ HELYX-OS.sh

エラーが出る。

Exception in thread "main" com.google.inject.ConfigurationException: Guice configuration errors:

1) No implementation for eu.engys.util.plaf.ILookAndFeel was bound.
  while locating eu.engys.util.plaf.ILookAndFeel

1 error
	at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
	at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:961)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
	at eu.engys.launcher.Launcher.main(Launcher.java:63)
Exit code: 1
Error.
エラー: メイン・クラスeu.engys.core.CollectInfoが見つからなかったかロードできませんでした

こちらの記事 に従って、インストール先の Engys/HELYX-OS/v2.0.0/HELYX-OS.sh に以下の設定を追加。

LANG="en_US.UTF-8"

もう一度起動。

$ HELYX-OS.sh

起動するはず。

Helyx-OS を使ってみる

STL ファイルの用意

ParaView で簡単な STL ファイルを用意する。

Sources で 3D Text を用意する。ここではテキストを "PENGUIN" とする。Filters で Linear Extrusion と Triangulate を適用。メニュー [File]-[Save Data] で STL ファイルを ASCII 形式で保存。

メッシュの作成

適当な作業ディレクトリに移動し、Helyx-OS を起動する。

$ HELYX-OS.sh &

[New] を選択。"Case Name" に適当な名前を設定、"Parent Folder" には作業ディレクトリを選択。

ケースディレクトリが作成される。メッセージウインドウが出て、勝手に消える。

"Geometry" の "STL" で作成した STL ファイルを指定。

"Base Mesh" で "Base Mesh Type" に "User Defined" を選び、領域をモデルを囲むように設定する。ここでは以下のように設定。

Min: -1.0 -1.0 -0.5
Max:  8.0  2.0  1.5
Number of Elements: 50 50 20

"Material Point" で内部点を設定する。

メッシュを作成する。"Mesh" の "Create" ボタンを押す。

ウインドウが開き、メッセージが流れる。最後に "End" が出てきたら終わり。

一応 ParaView でメッシュをチェック。

$ cd penguin
$ paraview --data=penguin.foam

問題があったらやり直す。問題なければ、次に進む。

ケースの設定

[Case Setup & Run] タブに切り替える。

まず、"Run Options" で "Solver" にソルバーが設定されているかチェックする。"Solution Modelling" の設定をいろいろ変えてソルバーが変わるのを確認する。ここでは "Steady"、"Incompressible" を ON、"Energy" を OFF にする。ソルバーに simpleFoam が選ばれているのを確認する。

"Boundary Conditions" で境界条件を設定。ffminx (入口), ffmaxx (出口) を以下のように設定。

ffminx
  Patch Type: Patch
  Momentum
    Velocity
      Type: Fixed Value
      Velocity: 1 0 0
    Pressure
      Type: Zero Gradient
  Turbulence
    Type: By Turb. Intensity And Mixing Length
    Turbulence Intensity: 0.05
    Mixing Length: 0.168

ffmaxx
  Patch Type: Patch
  Momentum
    Velocity
      Type: Zero Gradient
    Pressure
      Type: Fixed Value
      Pressure: 0
  Turbulence
    Type: Zero Gradient

"Runtime Controls" を以下のように設定。

Time Settings
  End Time: 1000

Data Writing
  Write Control
    Time Step, 100

計算を実行する。"Run Options" で "Start" ボタンを押す。

ウインドウが開いてメッセージが流れる。終わるまで待つ。

ログファイルはケースディレクトリの log ディレクトリ内に "simpleFoam.log" という名前で保存される (これは "Run" の "Log File" に設定された名前)。

十分に収束していなければ、"Runtime Controls" の "Time Settings" で "Start From" に "LatestTime" を設定、"End Time" を増やして計算を継続する。問題なければポスト処理に移る。

ポスト処理は ParaView で行う。