(タイトル)未定(副題)DEXCS for OpenFOAM の使い方(第3章)



DEXCS-OFの主要コンポーネント

 DEXCSは基本OS(Linux)の上にCAEに必要なツール(またはコンポーネント)を全て組み込んで、isoイメージとして配布するものである。ここではDEXCSで採用している基本OSと、OpenFOAM以外のコンポーネント(基本OSの標準的に公開されているisoイメージに含まれないもの)について、OpenFOAMとの関係(DEXCSに搭載した理由)について簡単に説明しておく。

 なお執筆時点での最新ヴァージョン(DEXCS2019)に搭載してあるコンポーネントを中心に具体的なヴァージョンを記しておいたので、異なるDEXCS-OFのヴァージョンではコンポーネントのヴァージョンも相応に違っている場合がある。

 また、現在の最新ヴァージョンでは搭載していないが、必要な時にDEXCS旧版で仮想マシンなりを構築して、いつでも利用できるという価値もあるので、DEXCSのヴァージョンを限定した形で、これらのコンポーネントについても説明しておく。

基本OS

 基本OSのLinuxには様々なディストリビューションが存在するが、DEXCS-OFでは当初からもっともポピュラーであるubunruを採用している。但し、ubuntuの本家版でなく、派生ヴァージョン(Linux Mint)を使用していた時期もある。

 一方で、企業内でPCクラスターなどでよく使われるているのはRedHat系のディストリビューションで、オープンソースであればCentOSを使用することも考えられたが、リマスターツールが存在しない(というのは正確には不明であるが・・・)ので実現に至っていない。 

つまり、ubuntu系を採用している真の理由は、リマスターツールの存在であると言って過言ではない。

ParaView

 ParaView(パラビュー)は、アメリカのKitware Inc.が開発したソフトで、汎用的な数値データの可視化ソフトである。汎用という意味は、OpenFOAMに限らず、様々なCAEソフトの出力データを可視化できるという点である。

 したがってParaViewを単独にインストールするだけでも、OpenFOAMのデータを可視化することは可能になっている(OpenFOAM用の専用リーダーがある)。

 一方、OpenFOAMから見て、ParaViewは標準のポスト処理ツールとしているという位置づけから、OpenFOAM側が開発したParaview用のリーダーも存在し、ParaView側で開発したリーダーのどちらでも使える様になっている。

 DEXCSでは、これまでOpenFOAMの標準的なビルド方法に則り、後者の使い方ができるようになっているが、後述するParaViewのビルド方法のOS依存度が煩雑化して、近年はビルドそのものが困難になってきている。

 具体的には、ParaViewの高度な使い方として、従来から -python -mpi といったオプション(-python はpythonマクロを使えるようにする -mpi は並列動作を可能にするの意味)を付加してビルドしてきたが、DEXCS2019からは、-mpi オプションは使えていない(ビルドに失敗するので)。

一方、ParaViewに付属のOpenFOAM用リーダーだけを使って解析する方法であっても、大凡の用には足りるし、そうなれば、OpenFOAMやParaViewの個々のヴァージョンアップに対する対応も容易になるので、今後はこちらの方向へ転向する可能性が大である。

PyFoam

 PyFoamはOpenFOAMの操作を効率良く行うことができるPythonモジュールであり、詳細はOpenFOAM wikiにて公開されている。

基本的にはOpenFOAMと同じく、コンソール端末からコマンドライン入力にて使用するツールで、多くのツールがあるが、DEXCSではこれらのうち、ほんの一部(例えば、計算中の初期残渣をプロットするpyFoamPlotWatcher.py)を、ランチャーやTreeFoamのメニューボタンから起動できるようにしている。

 但し、DEXCSの古いヴァージョンでは、初期ポテンシャル流れ計算用のコマンド(pyFoamPotentialRunner.py)で使えていたものが、使えなくなってきているなどあり、これはPyFoamのOpenFOAM対応ヴァージョンが、正式にはOpenFOAM-v2.2までで、それ以降のヴァージョンに対しては保証されていないことが原因のようである。

 PyFoamの更新が滞っているのはOpenFOAMの本体側でもユーザーの使い易さを考慮して様々なツールが開発されるようになってきており、上記で引き合いした初期残渣プロットも、現在では標準ツールを使って出来るようになってきていることが理由であろうと推察され、DEXCS-OFにおいても、PyFoamの活用部分は、OpenFOAMの標準機能で置き換えていくことを目標に掲げている。

TreeFoam以前、DEXCS十徳ナイフで目指していたが、、、

cfMesh

Creative Fields で開発されたsnappyHexMeshと類似の自動メッシュツールで商用版CF-MESH+と無償版cfMeshがあり、無償版cfMeshはsourceforgeでソースが公開(GPL)されており、商用版に比べるとGUIツールが無いのと、最新機能は使えないようだが、それでも十分に使えるものとして、DEXCS-OFでは、DEXCS2014より、OpenFOAMでもESI 版の v1712 からはmodulesとして標準で組み込まれるようになってきている。

機能は OpenFOAMの標準ツールであるsnappyHexMesh と類似で、cartesiamMeshというコマンドでほぼ六面体セルによるメッシュを半自動的に作成することができるだけでなく、cartesian2DMeshと呼ばれる2次元メッシュ、tetMeshと呼ばれるオールテトラメッシュ、pMeshと呼ばれるポリヘドラメッシュ作成ツールもある。

図2-。cfMesh作成原理と主要パラメタ・meshDictファイルの概要

メッシュ作成には、解析領域を定義するファイル形式として、独自のfms形式で定義する必要があるが、形状ファイルは一般的にはSTL形式で作成される場合が多いので、STL形式からfms形式に変換するツールも用意されている。但し、基本はコマンドライン入力で使用するツールである。

その他メッシュの細分化レベルやレイヤーの入れ方を規定する為には、所定の書式に則ったmeshDictという設定ファイルも必要になる。

DEXCS-OFには、この形状ファイルとmeshDictを自動生成できる仕組み(マクロ)が同梱されている。

HELYX-OS

 前章(DEXCS for OpenFOAM とは)で詳しく説明してあるので、そちらを参照。ここでは補足事項を記しておく。

されたオープンソースのGUIフロントエンドです。OpenFOAM®解析用ケース作成(メッシュ作成、条件設定)をGUIで行うことができます。2012年7月21日にバーション1.0.0が初めてリリースされました。ライセンスはGPLv2(GNU General Public Licenseバージョン2)、開発元はイギリスのEngys社です。http://engys.github.io/HELYX-OS/

リリースノートhttps://www.cae-sc.com/leaflets/Helyx-OS_v240_NewsRelease_20161128.pdf

最新版は、v2.4.0(2016/11/28リリース)で、OF-4.1対応とあるが、設定変更で、新しいOpenFOAMであっても対応可能のようである(確認はメッシュ作成部分のみ)

対応OSはLinuxのみ

商用版HELYXもあって、HELYX-OSは機能限定版ということ

FreeCAD

 FreeCADはオープンソース(LGPLライセンス)の汎用3D CAD モデラーである。主に機械工学やプロダクトデザイン向けであるが、それにとどまらず建築やその他の専門分野など工学全般での利用を想定し、それぞれの分野に特化したワークベンチが用意されている。

無料で使えるソフトとしては数少ないフィーチャーベースのパラメトリックなモデラー(ソリッドモデリングのモデラー)であるが、まだ開発途中でアルファ版やベータ版の段階にあり、商用のCADソフトに比べると、GUIや操作性の貧弱さは否めないが、基本的な機能としてはほぼ網羅されている。

日本語の解説書「基礎からのFreeCADオープンソースの3次元CAD」(ISBN:9784777520671)が出版されており、またその著者による、より詳細な使い方マニュアルも公開されているので、凡その一般的なCADモデリングに困ることはないだろう。

DEXCS-OFでは、DEXCS2014より標準CADツールとして位置づけており、前述のcfMesh作成用マクロも組み込んだ形で同梱している。また、DEXCS-OFがCFD用途である為あまり宣伝はしていないが、FEMワークベンチで構造解析や周波数応答解析、熱伝導解析も出来るようになっている(必要ツールが同梱してある)。

TreeFoam

前章(DEXCS for OpenFOAM とは)で詳しく説明してあるので、そちらを参照。ここでは補足事項を記しておく。

TreeFoamは、http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?AboutTreeFoam にて公開されており、基本的にはDEXCSの環境でなくとも、ubuntu系のOS上であれば、パッケージインストールして利用可能になっている。DEXCS-OFに搭載してあるTreeFoamはここに公開されている、dexcs用Devパッケージである。

使用方法については、300ページにもなる長大なマニュアルもあって同梱されている。TreeFoamを起動して「ヘルプ」⇒「使い方」で参照できる。

pinguiBuilder

DEXCSは基本OSの上に様々なCAEツールをインストールしたシステムをオールインワンパッケージとしてisoイメージで配付するものであるが、pinguiBuilder はこのisoを作成するツールであり、https://sourceforge.net/projects/pinguy-os/files/ISO_Builder/ にて公開されている。

DEXCSの開発当初においては、

このツールがDEXCS-OFに同梱されているという意味は、DEXCS-OFで構築したシステムで、ユーザーが独自にカスタマイズしたものを、カスタマイズ版DEXCSとして新たに作成できるという事である。

但し公開ページにも記されているが、作成できるisoイメージの大きさに4GBという制限があるので注意されたい。ただその制限は、現在の規格上の問題であり、いずれ制限が無くなる可能性もあるようなので、期待しながらウォッチしたい。

wxGlade

wxPythonというPythonのGUIツールキットを使うGUI画面を構築する為のデザインツールであり、http://wxglade.sourceforge.net/index.php にて公開されており、ubuntu では、標準でパッケージインストールが可能になっている。

GUIツールを作成する方法として、DEXCSの開発当初(2005年頃)Tcl/Tkを始めとして様々な選択肢は存在したが、スクリプト言語をpythonとしてpythonプログラムをGUIで動かそうとすると、当時はwxGladeを使うしか方法が無かった。

また、1990年代にVisual Basicを使ってGUIプログラムを作っていた著者にとって、wxGladeの操作方法は馴染みのある使い方でもあったので、これを採用してきた。

Emacs

ウィキペディアによれば、

Emacsはvi (Vim) と並びUNIX文化における伝統的なエディタ戦争の主要な当事者の2つである。Emacsは未だ開発中であるオープンソースプロジェクトの中で最古のものである。

ということであるが、ubuntuの標準パッケージには含まれていないので、DEXCSでは追加でパッケージインストールして、Docランチャーから起動できるようにしてある。

なおDEXCSでは、主たるユーザーにはlinux初心者を想定しており、ウィキペディアに記載されているような様々なコマンドラインベースの使い方を推奨するものではない(もちろん使いこなせる人はどんどん使ってもらって良いが・・・)。

それでもこのツールをDEXCSに同梱したのは、著者の好みによる面が大であるが、著者の活用法を紹介しておく。

著者はこのツールをいわゆる「ファイラー」として使っている。ファイラーであれば、「ファイルマネージャー」が使えるではないかと思われる方も居られよう。筆者も「ファイルマネージャー」も使っている。

これらの使い分けは、探したいファイルが何処に存在するのかが判っている場合は「ファイルマネージャー」を使い、どこにあるのかが不明(というかあやふや)の場合に、このツールを使っている。

gnuplot

数値計算の分野では、2次元や3次元のグラフを描画(プロット)する事が多く、これを作成する為のツールである。Linuxの分野では、古くからオープンソースとして公開されているもっともポピュラーなツールであり、上述のpyFoamからも、これ(gnuplot)を使うコマンドがいくつか存在するという理由もあって、DEXCS-OFでこれが使えるようになっている。

但し、gnuplotそのものは、コマンドライン入力で使用するものであり、DEXCS-OFでは、これを直接的に使用するシーンを推奨するものではなく、次項で説明するツール(JAVA gnuplot)を介して利用する方法を推奨している。

なお、プロットツールとしては、データがCSV形式になっておれば、エクセル等の表計算ソフトを使って、簡単に見栄えの良いプロット図を描く事ができる。見栄えだけを問えば表計算ソフトを使った方が良いのは間違いない。

問題は取り扱えるデータ量で、表計算ソフトで古くは32000行しか取り扱えなかった時代もあり、年代を経るにつれ大きくなってきてはいるもの、大量データを処理する際の処理時間が指数的に増大してしまう。gnuplotを使用した際の処理時間との差は圧倒的に違うので、これを使えるようになっておきたい。

JAVA gnuplot

http://jgp.sourceforge.net/ にて公開されているソフトで、前項で述べたgnuplotがコマンドライン入力で使用するツールなので、このコマンド作成・実行をGUIで補完するツールとして同梱してある。

但し、使用方法に関する情報も少ないので、DEXCS-OFでは、標準チュートリアルケースで数種類のサンプルプロジェクトファイルを同梱した。これを参考に改変使用されたい。

また、使い勝手の上で注文もあったが、最終更新が2013/4/16 と古く、開発元に要望を出しても反映されそうになかったので、DEXCS2019以降では、以下のDEXCSオリジナルツール/DEXCS十徳ナイフから起動する事で冗長な操作を簡略化する仕組みを用意した。

DEXCSオリジナルツール

DEXCSは様々なオープンCAEツールをランチャーから最小限の簡単なマウス操作を駆使してCAE解析を効率的に実現する事を狙っている。DEXCS-OFの主たる解析目的はCFDでソルバーがOpenFOAMである事には変わりはないが、周辺ツールは時代と共に変化してきており、ヴァージョンアップの都度ランチャーも少しずつ変化してきた。

また、周辺ツール間のつなぎという面で、どうしてもコマンドライン処理が必要な場面が生じてしまう事がある。そういった処理も極力GUI操作できるようにすべく、様々なユーティリティとでもいうべきツールも開発してきている。

DEXCSランチャー(wxGlade版)

DEXCS2018までは、DEXCS2009でwxGladeで作成したGUI画面となっていた。

DEXCSランチャー(FreeCADマクロ版)

DEXCS2019からはランチャーを一新して、FreeCADのツールバーに解析シーン毎のマクロ実行ボタン(アイコン)として組み込んだ。

また、組み込んだマクロのうち、メッシュ作成用のGUIメニュー以外は、ほとんど全てがtreeFoamのサブモジュールを起動する内容になっている。

FreeCADマクロ

cfMeshが登場して、これもsnappyHexMeshと同じく、開発元からメッシュ設定の為のDictファイルを作成するGUIソフトは提供されていない(商用版には存在する)。snappyHexMeshDictを作成する為のオープン系GUIツールは色々公開されているが、これらに比べて、こちらのmeshDictは、設定パラメタの数も少く、直接編集もさほど面倒でないという理由がある為なのか、いつまで待ってもオープン系のGUIツールが出て来ない。

ならば、そういうソフトが使えるようになるまでの「つなぎ」として作成したのが、FreeCADで使えるようにしたマクロである。DEXCS2014でリリースして以来、現在に至るまで、代替できそうなGUIツールも現れないので、毎年少しづつではあるが更新してきている。

図–.FreeCADマクロ更新の概要

DEXCS十徳ナイフ

DEXCSランチャー(wxGlade版)の開発当初においては、定常非圧縮流れ解析ソルバー(simpleFoam)を使った仮想風洞試験でしか使えなかった。これを、それ以外の用途にも使えるようにすべく、少しずつ機能拡張するサブツールを考え「DEXCS十徳ナイフ」として位置づけて開発してきていた。

しかし、treeFoamが使えるようになってからは、DEXCSランチャーはあくまで初心者向けの勉強ツールとし、仮想風洞試験以外の用途(OpenFOAMの実践的活用)にはtreeFoamを使った方が良いであろうと判断し、「DEXCS十徳ナイフ」の一部(treeFoamの機能とかぶらない、もしくはもう少し簡単できる機能)をtreeFoamのサブメニューとして起動出来るようにして現在に至っている。

KDiff3

KDiff3はGUIで使えるテキストファイルの差分解析ツールで、これもubuntu標準パッケージには含まれないが、追加パッケージとしてインストール、Docランチャーから起動できるようになっている。

差分解析ツールとしては、これ以外にも様々なツールが存在するが、本ツールを選択した最大の理由はフォルダー単位での比較が出来る点にあった。これは、OpenFOAMのケースフォルダ単位での比較を想定しているという事である。

つまり、実際の解析の現場で、ケースファイルをコピーしてパラメタを変更する作業は日常茶飯事であり、あれこれ変更しているうちに、うまく動かなくなってしまう場合が多々ある。そういう場合に変更箇所をまとめて一覧できるので重宝するツールである。

但し、OpenFOAMのヴァージョンの違いによるチュートリアルケースファイルの内容を比較したい場合など、ケースファイル中にコメント行で記してあるヴァージョン表記名が違うだけで、その他は全く同じである場合と、そうでない場合の表層的な区別がつかない。欲をいえば、コメント行は比較の対象から外すという機能があればと思う。

Shutter

Shutterはスクリーンショットツールで、これもubuntu標準パッケージには含まれないが、追加パッケージとしてインストール、Docランチャーから起動できるようになっている。

解析作業で、様々なシーンにおけるスクリーンショットを作成するのは必須といって良い作業で、これを効率良く実施するのに重宝している。本書のスクリーンショットイメージのほとんどがこのツールで取得したものである。

Blender

Blenderは、DEXCSの開発当初の標準CADツールとして搭載されていたものである。

CADツールは一般に、ポリゴン系ツールとソリッド系ツールに大別され、オープンソフトでは、ポリゴン系の代表格がBlenderで、ソリッド系の代表格がFreeCADであるというのが当時も現在も定説であったろう。

CAEの用途には、ソリッド系ツールである事が望ましいいが、当時のFreeCADは完成度が低く使い物にならなかったので、Blenderは止むを得ない選択であった。

このBlenderは当時からすでにポリゴン系のCADツールとして代表格のツールとして位置づけられ数多くの書籍も出回っていた。とはいうもの、ほとんどのユーザーは、アニメーションなどエンターテインメント系のグラフィックデザイン志向で、CAEユーザーはほとんど居なかった。

特に、マウスの使い方が独特で、会社などで普通にソリッド系のCADソフトを使った経験のある人間からすると、ユーザーインタフェースのハードルがあまりにも高かった。

また、CAEの用途には一般的には、複雑な形状をモデリングした際にwaterproof問題といって、表面ポリゴンが厳密に閉じた面にならない事が多々あって、これが後のメッシュ作成工程で重大な問題になるのでCAE用途にはメジャーなCADツールになれなかったという点が挙げられる。

ただ、後者の欠点は、DEXCSの初期リリース(構造解析)版から、Blenderに対する独自開発のアドオンツールで、欠陥を探して修復作業できるようにしてあったのと、OpenFOAMで取り扱う際には、waterproof問題をあまり気にしなくても良いという事情もあったので、Blenderを否定する理由にはならなかった。

加えるに、次項で記すアドオンツールが使えたので、これを使わない手はない、というのが当時の状況であった。

Swift-tools

Blenderにアドオンスクリプトとして組み込まれるツールで、Blenderで作成した形状モデルデータから、OpenFOAMの標準メッシャーソフトである、snappyHexMesh, blockMesh プログラム用のDictファイルを、自動作成するツールである。

DEXCSランチャーでは、デフォルトでSwiftSnappを使った手順をチュートリアルとして動画アニメーションも使って使い方を紹介している。

OpenFOAMではsnappyHexMeshが使えるようになってから、ユーザーが大きく増えたと記したが、リリースしたばかりの時点では、snappyHexMeshDictを作成するツールは存在せず、標準チュートリアルに同梱されていたsnappyHexMeshDictをコピーして、自分が作成したいケースに適合すべく手直し作業するしかなかった。

そんな当時に、いち早くリリースされたのがこのSwiftツールであった。他にもあったと思うが、DEXCSではすでにBlenderが手の内にあった事もあり、cfMeshが使えるようになるまでのの間、Helyx-OSも登場したが、本ツールがDEXCS-OFにおけるメッシュ作成の為の基本ソフトであったと位置づけられる。

この章の最初へ 全体目次