DEXCSランチャー v2.5 製作メモ / 2. CdfOFとは



CfdOF は OpenFOAM のフロントエンドとして機能させるべく、 FreeCAD のワークベンチモジュールと
して開発中のもので、 https://github.com/jaheyns/CfdOF に公開されているものである(図 3 )。

図 3 CfdOF (イメージは開発元の HP より転用)

また最近になって、使用方法を解説した日本語記事も見られるようになったので、以下に記しておく。

2.1 CfdOF の使用方法概要

図 4 において、CfdOF ワークベンチを選択すると、 CfdOF ツールバーが現れるので、これを使って、
に示すような様々なコンテナを作成していくものである。図 5 には、図 4 におけるそれぞれのコンテナと
ツールボタンの対応を取り纏めておくが、解析に必要な機能が凡そ網羅されていることが確認できよう。それ
ぞれのツールボタンを押すとコンテナが作成され、そのコンテナ上で様々な選択メニューを使って FreeCAD
のコンポーネントに対応付けて解析パラメタを設定できるようになっている。当然であるが、作成されたコン
テナをダブルクリックして設定変更も可能である。

図 4 CfdOF の使用方法イメージ
図 5 CfdOF の主要コンテナ

2.2 CfdOF の特徴と使用感

(注)評価は2021年5月時点のもので、本記事の公開時点(2021年7月)では更新されたものになっており、その内容については未評価である。

ざっと使ってみただけの使用感であるが、ソルバー選択(図 6 )や流体の選択メニュー(図 7 )に見られる
ように、商用ソフト的な使い方を目指したソフトと思われた。残念ながら現時点ではソルバー対応が不十分、
メッシュの詳細適合が困難などあって、限定的な用途でしか使えないと考えられた。特に後者で cfMesh の領
域細分化機能を使えないのが致命的であった。

図 6 ソルバー選択タスク画面
図 7 流体特性選択タスク画面

一方、フレーム全体としては、 FEM ワークベンチと類似であり、次節に示すようにコード内容も比較的容
易に理解できるものであったので、 DEXCS ランチャーの新プラットフォームとして、本ワークベンチを使え
そうな感触は得られた。

2.3 DEXCS ワークベンチ / ランチャー化へ向けての着眼点・方針

DEXCS-OF の GUI 化コンセプトは、商用ソフトのそれとは異なり、 OpenFOAM 本来の設定ファイルを
ブラックボックス化するものではなく、あくまで設定ファイルの変更や編集の手助けをするツールとして位置
づけるものである。
したがって、 CfdOF のコンテナの中で、

  • ソルバー選択
  • 流体特性
  • 初期条件
  • 境界条件

等のコンテナについてまで流用しようとするものでなく、これらは現行 DEXCS ランチャーの機能で十分と
考えている。
一方、現行 DEXCS のメッシュ作成マクロについては、改良したい課題もあるので、 CfdOF のコンテナの

  • メッシュ作成ケース
  • メッシュ細分化設定

を使って、現行 Wiget で実施出来ている機能(+改良予定項目)が実現出来るべく、現行 CfdOF/ メッシュ
細分化設定コンテナのプロパティを拡張できないか?という考え方である。
また、

  • ソルバー実行ケース

コンテナについては、現行 DEXCS ランチャーの機能でも十分ではあるが、残差プロット表示は見た目にも
DEXCS のそれよりも美しい。これは Plot ワークベンチを使っているという説明であったが、あわよくばこ
れを使って現行 DEXCS の jgp を代用できる可能性もありそうな感触を得た。
そこで現行 CfdOF のコードについて、メッシュ作成とソルバー実行⇒残差グラフ表示の仕組みあたりを中
心に、まずはどういう仕組みでプログラムが成り立ち、動いているのか調べてみた。

前へ 目次 次へ

DEXCSランチャー v2.5 製作メモ/ 1. はじめに



DEXCS ランチャーは、図 1 に示すような開発経緯を経て、 v2 ( DEXCS2019 )以降の現在は FreeCAD を
プラットフォームとして起動することで、解析対象を見ながら設定が可能となり、それなりの使い勝手が向上
したと考えている。

図 1 DEXCS ランチャー開発経緯

一方、解析に際して肝となるのがメッシュ作成であり、 v1.5 ( DEXCS2014 )ではこれを従来の snappy-
HexMesh から cfMesh に変更することで、設定も作成も容易になった。とは云うもの、 cfMesh のフルオプ
ションを手軽に設定できるまでには至っていないので、これを少しずつ改良して現在に至っているが、依然と
していくつかの問題が残されている。たとえば、

  • スケール変換機能の組み込み
  • meshDict インポート不具合対応
  • オプションパラメタの GUI 化
  • テンプレートケースの変更設定
  • maxCellSize のロジック変更
  • OF 端末起動

といったあたりである。
それぞれの具体的な課題は認識されており、個々の対応もさほど難しいものではないが、これを現在の
Widget 上で実現するのは困難になってきた(図 2 )。


図 2 メッシュ作成マクロ( Widget )の変遷

そこで、これまでの設定方法をこの Widget の手直しでなく、 DEXCS ワークベンチともいえるような新た
なフレーム上で再構築できないと考えた。とはいえこれをスクラッチで作成出来る能力はないので、既存のフ
レームを改変して実現できないかと考えた。既存のフレーム(ワークベンチ)を調査したところ、 CfdOF と
いうワークベンチが候補として浮上した。

目次 次へ 

DEXCSランチャー v2.5 製作メモ

(2021/5/15)のオープンCAE勉強会@関西にて、表題構想の与太話をさせていただきましたが、これがようやく形になりつつあり、やりたい事の50%程度は出来上がって、順調にいけば、次のDEXCS2021でリリースできそうな目処がついてきました。今回は製作メモを作成しながらの開発中で、この際これも公開する事としました。一応、以下の目次にて執筆予定(2021/7/6現在、3-5までは執筆済み 2021/7/23現在、3-7までは執筆済み 2021/8/11現在、4-2までは執筆済み)で、HTML版が完成した部分には、ハイパーリンクで内容を閲覧できるようにしていく予定です。



  1. はじめに
  2. CfdOF とは
    1. CfdOF の使用方法概要
    2. CfdOF の特徴と使用感
    3. DEXCS ワークベンチ / ランチャー化へ向けての着眼点・方針
    4. CfdOF のソースコードと主要プログラムの動作メカニズム
  3. DEXCS ワークベンチ / CfdOFのGUIを使ってDEXCSマクロを動かす
    1. 残差プロット 1
    2. 残差プロット 2
    3. その他の変更
    4. CfdOF ⇒ dexcsCfdOF 改変の基本方針
    5. メッシュ作成方法(細分化指定無し)の変更(DEXCS化) 1
    6. メッシュ作成方法(細分化指定有り)の変更(DEXCS化)2
    7. 中間まとめ
  4. DEXCSワークベンチ / CfdOFのGUIを改変
    1. メッシュ作成タスク画面の改変
    2. メッシュ細分化タスク画面の改変その1
    3. メッシュ細分化タスク画面の改変その2
    4. FreeCAD基本形状を使った細分化領域指定
    5. まとめ
  5. Plot ワークベンチを使った post Processing処理
    1. 単グラフの自動作成
    2. ポスト処理イメージと実装方針

以下、公開にあたって、執筆理由、動機、狙い、下心、、、など記しておきます。

今回の製作は、コードハッキングして作っているようなもので、ハッキング対象がかなり大きなプログラムなので、自分の年老いた小さな前頭葉には全貌が収まりそうになく、少し間を空けてしまうと、何をやったのか、何をやろうとしていたのかをほとんど忘れてしまいます。

そこで今回は、表題の製作メモを作成しながら開発することとなった訳です。

メモもどういう形式で残したものか、これまでTex⇒PDFにて作成、読み返しながら文書を組み替えたりやってきて、3-5まで書き終わった段階でページ数も30ページを超える分量となってしまっています。そうなると、アレは何処に書いたっけ?と読み返すのが結構面倒な作業になります。紙に印刷してあれば、パラ読みで探すのはさほど難しい事ではないけれど、書き掛け中の文書を一々印刷したりはしないのが普通です。ここはやはり文書のあちらこちら、参考資料を含めてハイパーリンクで辿れるようになっていないと、コード開発にも文書作成にも生産性が上がりません。

そこで残りは慣れ親しんだHTMLで(というか拙宅ブログ記事として)書こう!となったんですが、せっかくHTMLで書くのなら、これも公開しない理由は無いという事です。公開するメリットとして、

  • 本職プログラマやユーザーから建設的なコメントをもらえるかもしれない
  • DEXCS本第2弾につながるかもしれない

など、あわよくばでしかありませんが、公開しなければ、これら可能性を完全に閉ざしてしまう事になってしまうというか、、、まぁ自己満足でしかないかも。

CHTマルチリージョン計算用のDEXCS方式テンプレートケースファイル



詳細説明とケースファイル一式は、こちらで公開中。

公開事由

DEXCSのチュートリアルケース(cfMeshLesson/heatSink)では、chtMultiRegion(Simple)Foamで使う事を想定したメッシュ作成用のFreeCADモデルを収録し、メッシュ作成法については「DEXCSにおける推奨メッシュ生成法」(/opt/DEXCS/launcherOpen/doc/howtoCADandMeshing.pdf)の中で説明しているが、これで作成したメッシュをどうやって、chtMultiRegion(Simple)Foamで使うのかについての説明は無い。

わかる人にはわかるはずだが、そうでない人向けに、DEXCS的なやり方(ほとんどGUIだけで操作出来る方法)を公開する事とした。

補足説明

chtMultiRegion(Simple)Foamでの計算において、本来はマルチリージョンメッシュを使うので、マルチリージョンメッシュを作成できないcfMeshでどうやって??というのが普通の感覚であろう。

しかし、「本来は…」と記したが、OpenFOAMの標準チュートリアルではマルチリージョンメッシュを使ってケース作成しているというだけで、実際に動くケースは領域毎に区分されたメッシュを使っている。つまり、マルチリージョンメッシュが最初に有りきでなく、最初から領域毎に区分されたメッシュを使う方法も有りという事である。

なお、冒頭に掲げた図は、最終的に実施したい本番計算イメージを説明したものだが、セットアップの説明資料では、説明を簡単にする為、以下のイメージで説明している点、念の為お断りしておく。

DEXCS2020 for OpenFOAM(R) リリースノート

解析シーン毎にTreeFoamのサブセット機能(グリッドエディダ等)を、FreeCADのツールボタンで起動できるようマクロ化してあります。

ダウンロードはこちら(2020/10/〜)



DEXCS for OpenFOAM(R) は、OpenFOAMと、これをより簡単・高度に活用できるようにする為の様々なツールをすべてインストール済のオール・イン・ワンパッケージで、誰でも(と言ってもCAEに無縁の人は対象外ですが・・・)簡単・即使えるようにしたマシンイメージ(isoファイル)です。

詳しくはこちら

DEXCSランチャーのヘルプメニューからも参照できます

DEXCS2020では、

  • ベースOSはubuntu-20.04.01 (LTS)
    • DEXCS2019まではubuntu-18.04系でしたが、メジャーヴァージョンアップです。
  • OpenFOAMやその他の組み込みツールのヴァージョンアップに対応
    • OpenFOAM-v2006
    • cfMesh v1.1.2 。

(cfMeshはOpenFOAM-v1712以降、modules としてOpenFOAM本体に組み込まれています)

  • ここまでは通常の毎年更新作業ですが、DEXCS2019からはDEXCSランチャーを仮想風洞試験という題材はそのままで、GUI操作方法を全く作り変えました
  • DEXCS2020では、これに少し機能追加したのと、ポータビリティを改良。つまり、これらはFreeCADのマクロなんですが、これまでDEXCS上でしか動作しなかったのを、DEXCSでない環境でも動かせる事を考慮したコードに書き換えています。まだ十分な動作確認まで至ってはおりませんが・・・
  • もう1点。TreeFoamがVer-3になって、python3で動くようになり、これにも対応した。
  • pyFoam は、OpenFOAM-v2006への対応はアナウンスされておりません。DEXCSランチャーやTreeFoamで使っている機能(pyFoamPlotWatcher.pyやFoamCleaCase.pyなど)についてのみ動作確認しており、その他の機能については動作未確認です。

インストールと利用法

詳しくはこちら(日本語と英語の切り替え方法も含む)

マシンイメージなので、DVDにイメージ書き込みすれば、DVDから起動してそのまま利用することができます。 (DEXCS初体験の人はこのライブDVDとして「まずは使ってみる」方法をお薦めします。)

  • 継続利用では起動後にインストール機能により、HDD等に直接インストールできる上、使用するユーザー名等を選択することができます。
  • VMWare Playerや、VirtualBox等の仮想環境で起動して、仮想環境を作成することも簡単です。
  • VirtualBoxにインストールする方法は、書籍「OpenFOAMによる熱移動と流れの数値解析」の付録AにDEXCS2015について詳しく記されていますが、基本は同じです。また、DEXCS2011までは、”Guest Additions”が入っておりませんでしたが、DEXCS2016では導入済みなので、共有ファイルの設定など(インストール方法メモの34〜36ページ)も同様に実施可能です。
  • 国際化対応のレベルはDEXCS2015に同じ(英語版のみに対応)ですが、日本語⇆英語のベース環境切り替え方法が、DEXCS2015に比べやや煩雑になっています。(インストール方法メモの8〜13ページ)
  • 一部動作に不具合が確認されています(インストール方法メの19ページ)。解決方法が見出だせませんでした。お判りの方、またこれ以外の不具合に気づかれた方はご連絡下さい。

同梱プログラム

その他のドキュメントについて

  • DEXCSランチャーのヘルプメニュー(上図)を参照下さい。
  • SLURMというリソースマネージャは今回もインストールしてありませんが、下記記事の方法によって追加インストールは可能(のはず)です。
  • JAVA gnuplot GUI の使用方法
    • http://dexcs.net/ocse2/?p=747
    • 上記記事で作成したプロジェクトファイルをケースファイルの在所を変えたり、別ケースで転用利用する際に、プロジェクトファイル中に記されているデータ在所(絶対パス名)を適合するツールを同梱しました。
  • 上記適合ツールは、DEXCSランチャーの左図ボタンにて起動します。⇒ 解説ページ
  • または、TreeFoam /十徳ナイフ /「汎用gnuplot-GUI(jgp)起動」メニューでも起動できます。
  • 但し、十徳ナイフ版では、実行時のダイヤログメッセージが日本語ではありません。

  • TreeFoamの基本的な使い方はTreeFoamのヘルプメニューから、「使い方」を参照して下さい。
    TreeFoamに関する情報は、DEXCS公式HPの AboutTreeFoamの記事にまとめてあります。
    DEXCS2020に搭載のTreeFOAMは、+dexcsSwakとして、上記公式ページに掲載ヴァージョンに対して独自のカスタマイズが加えてあります。

苦労譚

  • ParaViewビルド
  • FreeCAD AppImage版
  • FreeCADビルド版
  • リマスター容量の問題
  • /bin/sh の問題
  • VirtualBox Guest Additions

などなどありますが、近日中に書籍として上梓予定。DEXCS2019をベースとして書きかけ中のhtml版は特設ページにて公開中。書籍版は本DEXCS2020をベースに内容を更新作業中です。