3次元の非圧縮性流体(水性塗料)定常流解析

173 views
Skip to first unread message

のびーのびー

unread,
Apr 20, 2024, 7:24:02 AMApr 20
to OpenFOAM

3次元の非圧縮性流体(水性塗料)解析

お世話になっております。
水性塗料を用いた塗装に、openFOAMの流体解析を行おうとしています。
OpenFOAM、数値計算初学者の伊藤と申します。


【やりたい事】

openFOAMのチュートリアルをベースに、非圧縮性流体(水性塗料)の3次元定常の流体解析を行いたい。

メッシュはgmeshで作成した、メッシュファイルをOpenFOAMにインポートする。

解析後に、被塗装物の表面の流速をそれぞれの凸毎に得ることが目標。
得られた解析結果は、また錬成解析に使用する。

【つまづいているポイント】

「OpenFOAMの歩き方」第4章をベースに進めています。
具体的にはincompressible/motorBikeのケースを変えて進めています。

./Allrun のコマンドを入力すると以下のエラーが出てしまいます。

./Allrun
blockMesh already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.blockMesh' to re-run
surfaceFeatureExtract already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.surfaceFeatureExtract' to re-run
decomposePar already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.decomposePar' to re-run
snappyHexMesh already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.snappyHexMesh' to re-run
./Allrun: 18: restore0Dir: not found
simpleFoam already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.simpleFoam' to re-run
reconstructParMesh already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.reconstructParMesh' to re-run
reconstructPar already run on /mnt/c/Users/nobut/Documents/of2112/my_stl: remove log file 'log.reconstructPar' to re-run

また、logfileには

--> FOAM FATAL IO ERROR:
Cannot open etc file "caseDicts/postProcessing/numerical/solverInfo.cfg" while reading dictionary "/mnt/c/Users/nobut/Documents/of2112/my_stl/system/controlDict/functions/solverInfo/solverInfo"

file: IStringStream.sourceFile at line 4.

    From function static bool Foam::functionEntries::includeEtcEntry::execute(Foam::dictionary&, Foam::Istream&)
    in file db/dictionary/functionEntries/includeEtcEntry/includeEtcEntry.C at line 143.

FOAM exiting

とあります。
ググったところ、近いエラーでOpenFOAMのバージョン違いによるエラーと
あったので、そちらが疑わしいと思っているのですが、、、


初歩的な質問で申し訳ありませんが、
ご教授頂けませんでしょうか。

OpenFOAMのバージョンは、


$ blockMesh -help

Using: OpenFOAM-10 (see https://openfoam.org)

となっています。

my_stl_zip.zip

k k

unread,
Apr 21, 2024, 1:00:49 AMApr 21
to OpenFOAM
こんにちは。

ファイルがopenfoam2112がとopenfaam10とが混在しているので、openfoam10の書き方に変える必要があります。
Xsimで設定されると間違いはないかと思います。

Xsimで設定すればエラーはなくなると思いますが、念のためエラー内容も書いておきます。

残差出力設定のこちらでエラーが出ているので、コメントアウトするとエラーはなくなります。
sysem/controlDict

/*
functions
{
    #includeFunc "solverInfo"

}
*/

#includeFuncは
systemディレクトリにsolverInfoがあればそれを読みに行く、なければ$FOAM_ETC(//opt/openfoam10/etc)を読みに行きます。

今回、「system/solverInfo」の中身が

#includeEtc "caseDicts/postProcessing/numerical/solverInfo.cfg"

なので、/opt/openfoam10/etc/caseDicts/postProcessing/numerical/solverInfo.cfgを読みに行ってることになります。(適宜、ご自身の環境に読み替えてください)

この/opt/openfoam10/etc/etc/caseDicts/postProcessing/numerical/solverInfo.cfgを確認すると、
// ************************************************************************* //
type            solverInfo; //residuals;
libs            (utilityFunctionObjects);

writeControl    timeStep;
writeInterval   1;

// ************************************************************************* //

と書いているので、以下のように設定しておくと残差は出力されます。

sysem/controlDict
functions
{
    type            solverInfo; //residuals;
    libs            (utilityFunctionObjects);
    fields (p U k omega);
    writeControl    timeStep;
    writeInterval   1;
}

こちらを解決してもそれ以外でエラーが出ると思います。
例えば、0ディレクトリがmoterBikeの境界条件のままなので、0.origをコピー必要があります。
ただ、確認すると0.origのファイルがopenfoam2112になっているので、openfaam10の書き方に変える必要があります。

いずれにしてもXsimで正しく設定したものを出力する方が確実です。

よろしくお願いいたします。

2024年4月20日土曜日 20:24:02 UTC+9 のびーのびー:

k k

unread,
Apr 23, 2024, 10:40:19 AMApr 23
to open...@googlegroups.com
こんにちは。

ファイルがopenfoam2112がとopenfaam10とが混在しているので、openfoam10の書き方に変える必要があります。
Xsimで設定されると間違いはないかと思います。

Xsimで設定すればエラーはなくなると思いますが、念のためエラー内容も書いておきます。

残差出力設定のこちらでエラーが出ているので、コメントアウトするとエラーはなくなります。
sysem/controlDict

/*
functions
{
    #includeFunc "solverInfo"

}
*/

#includeFuncは
systemディレクトリにsolverInfoがあればそれを読みに行く、なければ$FOAM_ETC(//opt/openfoam10/etc)を読みに行きます。

今回、「system/solverInfo」の中身が

#includeEtc "caseDicts/postProcessing/numerical/solverInfo.cfg"

なので、/opt/openfoam10/etc/caseDicts/postProcessing/numerical/solverInfo.cfgを読みに行ってることになります。(適宜、ご自身の環境に読み替えてください)

これを
/opt/openfoam10/etc/etc/caseDicts/postProcessing/numerical/solverInfo.cfg

などで確認すると、
// ************************************************************************* //
type            solverInfo; //residuals;
libs            (utilityFunctionObjects);

writeControl    timeStep;
writeInterval   1;

// ************************************************************************* //

と書いているので、以下のように設定しておくと残差は出力されます。

sysem/controlDict
functions
{
    type            solverInfo; //residuals;
    libs            (utilityFunctionObjects);
    fields (p U k omega);
    writeControl    timeStep;
    writeInterval   1;
}

あと、0ディレクトリがmoterBikeの境界条件のままなので、0.origをコピー必要があります。
ただ、確認すると0.origのファイルがopenfoam2112になっているので、openfaam10の書き方に変える必要があります。


2024年4月20日(土) 20:24 のびーのびー <decept...@gmail.com>:
--
このメールは Google グループのグループ「OpenFOAM」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openfoam+u...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/859f6c11-bed4-422c-bcdf-af530806a160n%40googlegroups.com にアクセスしてください。

のびーのびー

unread,
Apr 24, 2024, 8:21:10 AMApr 24
to OpenFOAM
kk様

返信ありがとうございます!
xsimについても初めて触るので理解するのに時間がかかっております。

本業があるので、こちらのプロジェクトを進めるペースは遅いと思いますが、
ご教授頂いた内容理解しつつ進めたいと思います。

よろしくお願いいたします。


2024年4月23日火曜日 23:40:19 UTC+9 k k:

のびーのびー

unread,
May 4, 2024, 4:00:34 AMMay 4
to OpenFOAM
こんにちは。

xsimで作成したチュートリアルのディレクトリmyfirstProjectに
Gmshで作成したメッシュを読み込みたいと思っています。
以下のqiitaの記事を参考にgmshtofoamコマンドで読み込むことはできたのですが、
その後の設定をどうしたらいいかわかりません。
自分なりにboundryを設定してみましたが・・・
(ちなみにgmshのファイル形式はversion2のasciiでなければ読み込めないようでした)

openFOAMののユーザードキュメントを見ても、あまり詳しいことは
書いておらず(私の理解不足が原因ですが)
アドバイス頂けませんでしょうか?

添付はgmshtofoamコマンド実行後のディレクトリになります。

checkMeshコマンドでのメッシュのチェックは問題なさそうでした。

2024年4月24日水曜日 21:21:10 UTC+9 のびーのびー:
Myfirstproject.zip

H‐Tsubota@xsim.info

unread,
May 5, 2024, 7:29:31 AMMay 5
to OpenFOAM
constant/polyMesh/boundary ファイルを見ると境界領域名が「Inlet1」「Inlet2」…という様に元のままで、0/pファイルなどで使われている「inlet」「work1_f」「work2_f」といった境界領域名と矛盾しているようです。そのためlog.simpleFoamに以下のエラーが出てソルバーがエラー停止しています。

--> FOAM FATAL IO ERROR:
Cannot find patchField entry for Inlet1

元にしているチュートリアルというのは http://xsim.work/doc/ja/FirstProject.html のことだと思いますが、constant/polyMesh 以下にあるメッシュデータを確認したところ、元のチュートリアルのものから変化していないようです。従ってgmshToFoamコマンドが失敗してメッシュの変換ができていない可能性が高い様に思いました。

gmshToFoamは普段使っていないので詳しくはわかりませんが、エラーメッセージ等が出ていないか、正しく動作しているかをまずは確認すると良いのではないかと思います。

2024年5月4日土曜日 17:00:34 UTC+9 のびーのびー:

のびーのびー

unread,
May 6, 2024, 2:01:20 AMMay 6
to OpenFOAM
ご返信ありがとうございます。

失礼いたしました。
AllClean とAllRunコマンドを繰り返しているうちに、メッシュデータがxsimチュートリアルのものになっていたようです。

正しいメッシュデータをpolyMeshディレクトリに配置し、
Allrunコマンドを試したところ、
log.blockMeshファイルは以下の様になりました。

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Deleting polyMesh directory
    "/mnt/c/Users/nobut/Documents/of2112/MyFirstProject2/constant/polyMesh"
Reading "blockMeshDict"

これでは、polymesh/のメッシュデータが消されてしまったようなので、
以下の記事から


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Not deleting polyMesh directory "/home/rfbomb/OpenFOAM/rfbomb-8/run/postExtruder/constant/polyMesh" because it contains blockMeshDict



polymesh/のディレクトリにblockMeshDictを配置し。system/の"blockMeshDictを削除すればよいのかと思い、
試したところ、

Not deleting polyMesh directory
    "/mnt/c/Users/nobut/Documents/of2112/MyFirstProject2/constant/polyMesh"
    because it contains blockMeshDict
Reading "blockMeshDict"

--> FOAM FATAL ERROR:
Cannot find file "system/blockMeshDict"

のエラーが出てしまいます。
system/の"blockMeshDict を残してもpolymeshの方が消されてしまいます。

外部のメッシュデータを読み込みための手順がわかりません。
添付はAllrun実行後のディレクトリになります。


2024年5月5日日曜日 20:29:31 UTC+9 H‐Tsubota@xsim.info:
Myfirstproject.zip

H‐Tsubota@xsim.info

unread,
May 6, 2024, 4:04:17 AMMay 6
to OpenFOAM
blockMesh, surfaceFeatures, snappyHexMesh はメッシュを作るためのコマンドです。すでにgmshToFoamで作ったメッシュがあるのであればメッシュを作成する必要は無いので、Allrunファイルの該当行を削除して、ソルバーの実行だけを行うよう書き換える必要があると思います。

手元で上記書き換えをしてみた所、メッシュの問題は解決できるようです。ただし境界条件の設定に問題がありエラーとなるので 0/k, 0/epsilon, 0/nut, constant/polyMesh/boundary ファイルを書き換える必要があるようでした。どのような問題かは出力されるlog.simpleFoamファイルの「FOAM FATAL IO ERROR」以下を見てください。

2024年5月6日月曜日 15:01:20 UTC+9 のびーのびー:

のびーのびー

unread,
May 17, 2024, 1:44:22 AMMay 17
to OpenFOAM
返信遅くなりすみません。

おかげさまでAllrunファイルを編集して、gmshで作成したmshファイルを読み込みソルバー実行する事ができました。
(実行結果がおかしい気がしますが・・・
直方体の領域に側面にinlet、反対の側面にoutletを設定し、一様な流れのシミュレーション結果を得ようとしました
境界条件がおかしいのかもしれません、私は流体力学に詳しくないので・・・)

質問させて頂きたいのは、openfoamというかparaviewに関する事なのですが、
モデル全体ではなく、一部の境界(例えばinlet)のみ表示して、スプレッドシートから流速などのデータを
抽出する事は可能なのでしょうか?

filters→Etract Blockを試してみましたが、うまくいきませんでした。


2024年5月6日月曜日 17:04:17 UTC+9 H‐Tsubota@xsim.info:
Myfirstproject.zip

のびーのびー

unread,
May 18, 2024, 7:48:17 AMMay 18
to OpenFOAM
速度Uの設定が間違っていました。
(10,0,0) → (0,0,-10)

2024年5月17日金曜日 14:44:22 UTC+9 のびーのびー:
Reply all
Reply to author
Forward
0 new messages