DEXCS2021 for OpenFOAM(R) 不具合・更新情報

表記に関する情報は、このページに集約しておきます。このページに記載されていない不具合情報などあれば、遠慮なくお問い合わせ下さい。



ソフトウェア更新の問題

下に「ソフトウェアの更新」をすると、VitualBoxの問題が解消されると記しましたが、11月3日以降に更新すると、openfoam2106まで更新されてしまいます。何故か、この更新版にはcfMeshが含まれておりませんで、DEXCSでのメッシュ作成ができなくなってしまいます。したがって、更新の際には、これを除外するよう強く推奨します。

万一更新してしまった場合には、別途cfMeshをインストールする方法も考えられますが、旧版も入手できるので、

更新版をアンストール、

$ sudo dpkg -r –force-all openfoam2106

してから、旧版を

https://dl.openfoam.com/repos/deb/dists/focal/main/pool/2106_0/binary-amd64/

より(全部で7つのファイル)をダウンロードして、ダウンロードしたファイルを収納したフォルダにて、以下インストール

$ sudo dpkg -i openfoam*

すれば、元に戻せるはずです。

なお、更新版でcfMeshが使えなくなったのは、単に開発元の手違いだと思うので、当面更新版を使うことはしないで、しばらく様子見することにします。

FreeCADの更新の問題

FreeCADを更新してプロットツールが使えなくなる場合がありますが、これは対応可能で、「ツール」⇒「アドオン・マネージャ」にて、「plot」をインストールすればOKです。

インストール方法の問題

VirtualBoxで、正常にログアウトが出来ないという問題がありましたが、これはsetupDEXCS.shを実行する前に、「ソフトウェアの更新」を実施しておけば解消されるようです。また、「システムのエラーが見つかりました・・・」というエラーメッセージ(実害は無かった)も出る確率がぐっと下がるようです。

ちなみにこの情報は、読者さんから頂きました。感謝ですm(_ _)m

インストール方法の更新版もアップしておきました。

isoイメージの名前について

ダウンロードしたisoイメージのファイル名がDEXCS2021-OFv2006-64.isoとなっていますが、DEXCS2021-OFv2106-64.iso とすべきでした。

python3-vtk エラー

TreeFoamのGridEditorから、「patchViewerを表示」メニューボタンを押すと、以下のエラーメッセージが出ます。

動作確認が不十分であった為の単純ミスです。以下のコマンド入力でインストール出来ます(注記1)。

$ sudo apt install python3-vtk

DEXCSツールボタンの不具合

DEXCSツールバー中の「TreeFoam起動」ボタンと「並列処理」ボタンにおいて、起動画面は正常に立ち上がるが一部の動作が正しく機能しない。これは、FreeCADをAppImage版にて使用した際に(AppImage版との使い分けについてはインストール方法メモのp23,24 を参照)、以下のようなダイヤログで警告が表示されるのだが、AppImage版でない場合にこの警告が出ないのに、当該の不具合が生じてしまうというもの。

これは、Appimage版とそうでない場合に処理を分岐させるべく、FreeCADの環境変数を取得して判別できるところまで判ったので、この時点で警告メッセージを表示させるところまではプログラムが出来ていたのだが、その続きを完成させるのを失念していたというボケであった。

遅ればせながら、修正版をDEXCSランチャーのGitLabサイトにて更新しておいた。.FreeCADのフォルダ毎変更しても良いが、その際には、user.cfgを書き換えるセットアップ作業が必要になり、そのドキュメントが未完なので、runTreeFoam.py と、runParallel.py  だけを変更してもらっても良い。

【注記1】python3-vtkのインストールについて

先に、以下の方法でインストール出来ると記しましたが、この方法だと、vtkのバージョンが合わないのか、表示がおかしかったり、Paraviewの立ち上げで、「メッシュ作成タスク画面」や、「ソルバー実行タスク画面」の「Paraview」ボタンが使えなくなってしまいます。

$ sudo apt install python3-pip
$ pip install vtk

これを実行してしまった場合には、

$ pip uninstall vtk

にてアンインストールして、正しいインストールをやり直して下さい。

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

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



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

詳しくはこちら

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

DEXCS2021では、

  • ベースOSはubuntu-20.04.2 (LTS)
  • OpenFOAMやその他の組み込みツールのヴァージョンアップに対応
    • OpenFOAM-v2106(パッケージインストール版)
    • ParaView-5.9.1(バイナリー版)

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

  • ここまでは通常の毎年更新作業ですが、DEXCS2021からはDEXCSランチャーのうちcfMesh作成用マクロとソルバー実行部分は従来通り使うこともできますが、新たにDEXCSワークベンチで実行できるようになり、これを使えば以下のメリットがあります。
    • cfMesh設定の詳細オプション設定もGUIで出来るようになる
    • cfMeshの設定パラメタがFreeCADのモデルファイル情報として保存される
    • ポスト処理の手順が簡単になる
  • DEXCSツールバーも一部変更しています(下図)
    • plotWatcherの起動 はFreeCADの Plotワークベンチを使用する方法に変更しました、自動更新はされませんが、DEXCSワークベンチからソルバー実行すれば、初期残渣グラフが表示され、自動更新されます。
    • postProcessingフォルダ中のファイルの可視化が、これまでのJGPに替えてPlotワークベンチを使用するマクロに変更した事で格段に使い勝手も見栄えも良くなっています。
    • OpenFOAM専用端末の起動ボタンも追加しました。
  • pyFoam は、OpenFOAM-v2106への対応はアナウンスされておりません。TreeFoamで使っている機能(pyFoamPlotWatcher.pyやFoamCleaCase.pyなど)についてのみ動作確認しており、その他の機能については動作未確認です。

インストールと利用法

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

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

  • 継続利用では起動後にインストール機能により、HDD等に直接インストールできる上、使用するユーザー名等を選択することができます。
  • VMWare Playerや、VirtualBox等の仮想環境で起動して、仮想環境を作成することも簡単です。
  • VirtualBoxにインストールする方法は、書籍「OpenFOAMによる熱移動と流れの数値解析(第2版)」の付録A、または「オープンCAEのためのDEXCS for OpenFOAM ハンドブック」の付録AにDEXCS2020について詳しく記されており、基本は同じですが、setupDEXCS.sh を実行後の再ログイン画面が表示されない場合があります。その場合の対処法についてインストール方法のp.5,7,18,20-22あたりを参考にして下さい。結論的には、「ログアウト」メニューは使えないので、「再起動」メニューを使って下さい、ということです。
  • 共有ファイルの設定方法(インストール方法の39〜42ページ)もDEXCS2020以前と比べてかなり変更されています。
  • 国際化対応のレベルはDEXCS2015に同じ(英語版のみに対応)ですが、日本語⇆英語のベース環境切り替え方法が、DEXCS2015に比べやや煩雑になっています。(インストール方法の8〜13ページ)
  • 一部動作に不具合が確認されています(インストール方法の19ページ)。解決方法が見出だせませんでした。お判りの方、またこれ以外の不具合に気づかれた方はご連絡下さい。
  • FreeCADはDaily最新版(2021/10/9入手)が同梱されていますが、Windows版やMac版と互換性のあるAppImage版も同梱されています。切り替える方法についてはインストール方法メの23ページに、Daily版とAppImage版の機能比較については、24ページに記してあります。
  • FreeCADはDaily最新版は、頻繁に更新されており、ソフトウェア更新は可能ですが、稀に一部の機能不全が生じる可能性もある事を納得した上で実施して下さい。

同梱プログラム

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

  • DEXCSランチャーのヘルプメニュー(上図)を参照下さい。
  • SLURMというリソースマネージャは今回もインストールしてありませんが、下記記事の方法によって追加インストールは可能(のはず)です。
  • JAVA gnuplot GUI の使用方法
    • http://dexcs.net/ocse2/?p=747
    • 上記記事で作成したプロジェクトファイルをケースファイルの在所を変えたり、別ケースで転用利用する際に、プロジェクトファイル中に記されているデータ在所(絶対パス名)を適合するツールを同梱しました。
  • 上記適合ツールは、DEXCSランチャーの左図ボタンにて起動します。⇒ 解説ページ
  • または、TreeFoam /十徳ナイフ /「汎用gnuplot-GUI(jgp)起動」メニューでも起動できます。
  • 但し、十徳ナイフ版では、実行時のダイヤログメッセージが日本語ではありません。
  • 更新された上記ツールの使用方法は、はじめてDEXCS2021、P.30-33を参照下さい。近日中に別途作成予定。
  • TreeFoamの基本的な使い方はTreeFoamのヘルプメニューから、「使い方」を参照して下さい。
    TreeFoamに関する情報は、DEXCS公式HPの AboutTreeFoamの記事にまとめてあります。
    DEXCS2021に搭載のTreeFOAMは、+dexcsSwakとして、上記公式ページに掲載ヴァージョンに対して独自のカスタマイズが加えてあります。

DEXCSランチャーv2.5 製作メモ / 追記事項



DEXCS2021のリリースに向けて、各種チュートリアルの動作確認、マニュアルを制作中だが、この段階で発覚した機能不足(仕様の見落とし)点についてここに取り纏めておく。

patchタイプの指定

旧版のDEXCSマクロにおいては、パーツ毎に境界のタイプを指定する事が出来ていた。新版のDEXCSワークベンチでは、これに相当する設定箇所が無いので、特に何も指定しないままで放置してあった。その事を放念したまま各種チュートリアルの動作確認をしたのだが、これが原因で動作しないという事は無かった。

しかし、マニュアル作成の段階で、よくよく調べると、下図に示すように、

マニュアル中のグリッドエディタ説明図

境界のタイプがすべて wall になってしまっていた。これまで赤矢印部は、当たり前のように、patch としていた箇所であった。patch でなくとも、wallでも問題なく計算できるという点には今更ながら「知らなんだー」なんであるが、かといって、このままでは、OpenFOAMの常識的に違和感有りと言わざる得ない。

ただ、今回作成したGUI画面上で、旧版マクロのように境界タイプを指定する事はアーキテクチャー的に無理なので、ここではデフォルトがpatchになるようにしておくのが無難。ただ境界層レイヤー指定のあるパーツはwallとしておくのは問題無いだろうという、ややいい加減な方針で取り組む事とした。

まず、以下のようにして、境界層レイヤーの数が1以上のパッチの数(patchNumber)と名前リスト(__patch__)を取得しておく。

__patch__ = []
for obj in doc.Objects:
    if obj.ViewObject.Visibility:
        if hasattr(obj, "Proxy") and isinstance(obj.Proxy, _CfdMeshRefinement):
            if obj.NumberLayers > 1 :                    
                for objList in(obj.LinkedObjects):
                    __patch__.append(objList.Label) 
                    patchNumber = patchNumber + 1

このリストを使って、表示パーツ(obj)毎に、リストに含まれるかどうかを判定し、含まれる(changeLabel=1)ならば、wall、そうでなければ type に変更するようにしたのが以下のコードになる。

for obj in doc.Objects:
     if obj.ViewObject.Visibility:
            changeLabel = 0
            if patchNumber > 0 :
                for i in range(patchNumber):
                    if obj.Label == __patch__[i] :
                        changeLabel = 1
            if changeLabel == 1:
                strings9 = [
                '\t\t' + str(obj.Label) + '\n',
                '\t\t{\n',
                '\t\t\tnewName '+ str(obj.Label) + ';\n',
                '\t\t\ttype wall;\n',
                '\t\t}\n',
                ]
            else:
                strings9 = [
                '\t\t' + str(obj.Label) + '\n',
                '\t\t{\n',
                '\t\t\tnewName '+ str(obj.Label) + ';\n',
                '\t\t\ttype patch;\n',
                '\t\t}\n',
                ]
            meshDict.writelines(strings9)

一応、これにて、マニュアル中のグリッドエディタ画面の説明図は従来通りのものになってくれる。但し、出来上がったmeshDict の renameBoudary ブロックは以下のようなものになってしまう。

renameBoundary
{
	newPatchNames
	{
		Dexcs
		{
			newName Dexcs;
			type wall;
		}
		inlet
		{
			newName inlet;
			type patch;
		}
		outlet
		{
			newName outlet;
			type patch;
		}
		wall
		{
			newName wall;
			type patch;
		}
		regionBox
		{
			newName regionBox;
			type patch;
		}
		dexcsCfdAnalysis
		{
			newName dexcsCfdAnalysis;
			type patch;
		}
		CFDMesh
		{
			newName CFDMesh;
			type patch;
		}
		CfdSolver
		{
			newName CfdSolver;
			type patch;
		}
		MeshRefinement
		{
			newName MeshRefinement;
			type patch;
		}
		MeshRefinement001
		{
			newName MeshRefinement001;
			type patch;
		}
	}
}

つまり、朱字部regionBox以下の境界でないパーツ名までリストアップされてしまう。実際問題としてこれらがリストアップされたからといって、メッシュ作成に問題が生じるでもなく、最終的な出来上がりのpolyMesh/boundary ファイル中に、これらがリストアップされる事もない。

したがって、実用上はこれで問題無いと言えるのだが、やはり気持ち悪いので、これらがリストアップされないようにすることを考えた。基本的には、region指定用パーツと、Dexcsワークベンチ関連のコンテナである。

まず、region指定用パーツであるが、その数(regionNumber)とパーツリスト(__region__)はすでに取得されているので、以下のようにして、除外判定できる。

regionLabel = 0
if regionNumber >0:
    for iregion in range(regionNumber):
       if obj.Label == __region__[iregion]:
            regionLabel = 1

問題は、Dexcsワークベンチ関連のコンテナであった。当初、CfdOFのコード中、随所に

if hasattr(obj, "Proxy") and isinstance(obj.Proxy, _CfdMeshRefinement):

という判定文があり、これを真似すれば良いだろうと考えた。つまり、上記はメッシュ細分化コンテナを特定する為の判定文であった。このうちの、hasattr(obj, “Proxy”) だけを指定すれば、Dexcsワークベンチ関連のコンテナを指定できると考えてやってみたのだが、これだと確かに関連コンテナを除外できたものの、それ以外のもの(上の例ではwallも)除外されてしまった。何故こういうことになるのかよくわからないのだが、これ以上時間も掛けられないので已む無く、コンテナの名前で除外する事にした。つまり、

lenObjLabel = len(obj.Label)
skipLabel = 0
if lenObjLabel>6:
    if obj.Label[0:7] == 'CFDMesh':
        skipLabel = 1
    if obj.Label[0:7] == 'CfdSolv':
        skipLabel = 1
    if obj.Label[0:7] == 'MeshRef':
        skipLabel = 1
    if obj.Label[0:7] == 'dexcsCf':
        skipLabel = 1

という判定ブロックにて、skipLabel = 1 のものは除外した。

何かもう少しスマートな書き方がいくらでもありそうだが、まぁここが素人プログラマの限界ってことで。とりあえず先に進む事にした。それよりも、モデル中に上述の名前で始まるパーツ名があると厄介な事になるかもしれないので、ここはメモしておきたい。

前へ 目次