壁面熱伝達の設定について

1,266 views
Skip to first unread message

sane

unread,
Oct 26, 2017, 4:34:17 AM10/26/17
to OpenFOAM

こんにちは。
現在、卒論に取り組んでおります。
まだopenfoamを使用し始めてから日が浅いものです。

壁面熱伝達の設定を下記のものを参考に行いたいと考えております。
下記のものは、buoyantBossinesqSimpleFoamでは利用できないと記載してあるのですが、buoyantSimpleFoamやbuoyantBossinesqPimpleFoamなどでは利用できますか?

知識不足で申し訳ございませんが、どなたがご伝授お願い致します。
    wall
    {
        type          wallHeatTransfer;
        Tinf          uniform 300; // 外部温度
        alphaWall     uniform 1;   // 熱伝達係数
        value         uniform 300;
    }

すもも

unread,
Oct 27, 2017, 12:54:40 AM10/27/17
to OpenFOAM
"Bossinesq" がついたソルバーで使えなかったと思います。
buoyantSimpleFoam は多分使えます。

設定して計算してみたらわかります。
バージョンによって設定が違っている可能性もありますが。

sane

unread,
Oct 29, 2017, 10:37:37 PM10/29/17
to OpenFOAM
すもも様

ご返答していただき有難うございます。
現在、openfoam4,0 を利用しています。

buoyantSimpleFoamを利用してまわしてみたところ、下記のようなエラーが発生してしまいました。
Create time

Create mesh for time = 0


SIMPLE: convergence criteria
    field p_rgh tolerance 0.01
    field U tolerance 0.001
    field h tolerance 0.001
    field G tolerance 0.001
    field "(k|epsilon|omega)" tolerance 0.001

Reading thermophysical properties

Selecting thermodynamics package 
{
    type            heRhoThermo;
    mixture         pureMixture;
    transport       const;
    thermo          hConst;
    equationOfState perfectGas;
    specie          specie;
    energy          sensibleEnthalpy;
}



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

file: /opt/OpenFOAM/sane-4.x/run/tttt/0/p.boundaryField from line 25 to line 19.

    From function void Foam::GeometricField<Type, PatchField, GeoMesh>::Boundary::readField(const Foam::DimensionedField<TypeR, GeoMesh>&, const Foam::dictionary&) [with Type = double; PatchField = Foam::fvPatchField; GeoMesh = Foam::volMesh]
    in file /opt/OpenFOAM/OpenFOAM-4.x/src/OpenFOAM/lnInclude/GeometricBoundaryField.C at line 191.

FOAM exiting


全ての面の境界タイプは、wallを使用しています。
基礎的な間違いかもしれませんが、お願い致します。
blockMeshDict

すもも

unread,
Oct 30, 2017, 1:05:34 AM10/30/17
to OpenFOAM
>Cannot find patchField entry for southWalls
>
>file: /opt/OpenFOAM/sane-4.x/run/tttt/0/p.boundaryField from line 25 to line 19.

p の中に southWalls の項目がない、と言っているのだと思います。

sane

unread,
Oct 30, 2017, 1:27:03 AM10/30/17
to OpenFOAM
 すもも様 

早速にご返事いただき有難うございます。
全てのファイルを確認したところ、私のミスでした。申し訳ございません。
もう一度計算をまわしてみたのですが、またエラーが出てしまいました。


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

Create mesh for time = 0


SIMPLE: convergence criteria
    field p_rgh tolerance 0.01
    field U tolerance 0.001
    field h tolerance 0.001
    field G tolerance 0.001
    field "(k|epsilon|omega)" tolerance 0.001

Reading thermophysical properties

Selecting thermodynamics package 
{
    type            heRhoThermo;
    mixture         pureMixture;
    transport       const;
    thermo          hConst;
    equationOfState perfectGas;
    specie          specie;
    energy          sensibleEnthalpy;
}



--> FOAM FATAL ERROR: 

    request for compressibleTurbulenceModel turbulenceProperties from objectRegistry region0 failed
    available objects of type compressibleTurbulenceModel are
0()

    From function const Type& Foam::objectRegistry::lookupObject(const Foam::word&) const [with Type = Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> >]
    in file /opt/OpenFOAM/OpenFOAM-4.x/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 193.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::error::abort() at ??:?
#2  Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > const& Foam::objectRegistry::lookupObject<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > >(Foam::word const&) const at ??:?
#3  Foam::wallHeatTransferFvPatchScalarField::updateCoeffs() at ??:?
#4  Foam::mixedFvPatchField<double>::evaluate(Foam::UPstream::commsTypes) at ??:?
#5  Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField(Foam::fvPatch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) at ??:?
#6  Foam::fvPatchField<double>::adddictionaryConstructorToTable<Foam::wallHeatTransferFvPatchScalarField>::New(Foam::fvPatch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) at ??:?
#7  Foam::fvPatchField<double>::New(Foam::fvPatch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) at ??:?
#8  Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::Boundary::readField(Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) at ??:?
#9  Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::readFields(Foam::dictionary const&) at ??:?
#10  Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::readFields() at ??:?
#11  Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::GeometricField(Foam::IOobject const&, Foam::fvMesh const&) at ??:?
#12  Foam::basicThermo::basicThermo(Foam::fvMesh const&, Foam::word const&) at ??:?
#13  Foam::fluidThermo::fluidThermo(Foam::fvMesh const&, Foam::word const&) at ??:?
#14  Foam::rhoThermo::rhoThermo(Foam::fvMesh const&, Foam::word const&) at ??:?
#15  Foam::heThermo<Foam::rhoThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > > >::heThermo(Foam::fvMesh const&, Foam::word const&) at ??:?
#16  Foam::rhoThermo::addfvMeshConstructorToTable<Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > > > >::New(Foam::fvMesh const&, Foam::word const&) at ??:?
#17  Foam::autoPtr<Foam::rhoThermo> Foam::basicThermo::New<Foam::rhoThermo>(Foam::fvMesh const&, Foam::word const&) at ??:?
#18  Foam::rhoThermo::New(Foam::fvMesh const&, Foam::word const&) at ??:?
#19  ? at ??:?
#20  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#21  ? at ??:?
中止

こちらはどのファイルでエラーが起きているのか、設定が間違っているのか理解できませんでした。初歩的なミスかもしれませんがご伝授お願い致します。

sane

unread,
Oct 31, 2017, 3:05:29 AM10/31/17
to OpenFOAM


度々失礼致します。
熱伝達の設定は0ファイルのTファイルに入力する方法で行なっているのですが、エラーが起きてしまいます。入力するファイルが違うのでしょうか?

また、下記の過去に計算された方の例を拝見させていただいたのですが、turbulentHeatFluxTemperatureの場合変更する点があるそうなのですが、wallHeatTransferの場合も変更する点はありますか?

申し訳ございませんが、どなたがご伝授お願いします。

小南秀彰

unread,
Oct 31, 2017, 3:24:38 AM10/31/17
to OpenFOAM
小南です。

2つ前の書き込みにエラーを眺めた感じだと、物性値とか乱流モデル(壁関数)の設定にミスがあるように思います。

PENGUINISIT さんのHPの熱流体解析の記載を参考にしてみてください。
事例はbuoyantPimpleFoam(非定常解析ソルバー)ですが、buoyantSimpleFoam(定常解析ソルバー)とは controlDictの設定とfvSchemeのddtのところが違うだけです(たしか)。

自分でも、buoyantPimpleFoamと、buotanySimpleFoamの両方いについて、OpenFoam ver4 での動作を確認しています。

それから
Tのファイル内の熱的壁面境界条件につて
  type           compressible::turbulentHeatFluxTemperature;
という設定だけは、なぜか並列計算ができませんでした。
  type    wallHeatTransfer;
  type   fixedValue;
の両方は並列計算できました。


2017年10月31日火曜日 16時05分29秒 UTC+9 sane:

小南秀彰

unread,
Oct 31, 2017, 3:30:21 AM10/31/17
to OpenFOAM
小南です。

最近ソースコードを読んで調べたばかりでした。(OpneFoma v4)

  High
  {
    type    wallHeatTransfer;
    Tinf    uniform  473.0;   // 外部温度
    alphaWall    10.0;  // 熱伝達係数
    value    300.0;   // 初期温度


  High
  {
    type           compressible::turbulentHeatFluxTemperature;
    heatSource    power;    // flux[W/m^2]  or  power'[W]
    q              uniform 2000;
    kappaMethod  fluidThermo;   // おまじないとして設定
    kappa         none;     //  省略不可
    Qr            none;     // 省略不可
 }


2017年10月31日火曜日 16時05分29秒 UTC+9 sane:

sane

unread,
Nov 3, 2017, 12:44:26 AM11/3/17
to OpenFOAM
小南様

早速にご返答してくださり、有難うございます。

tutorialのheatTransfer内のファイルのTとcontrolDict,blockMeshの3つのみ設定し他のものはそのまま利用しています。
buoyantSimpleFoamはhotRadiationRoom、buoyantPimpleFoamはhotRoomのものを用いています。
先日添付していただいたPENGUINISITさんのものと比較してみたところ、他にもあると思いますが以下の2点の違いがありました。
①流入・流出条件が設定されているが自分のものは設定していない。
②境界条件のp_rghファイルのinternalFieldが大気圧(101325)となっているが、私の利用しているものは1e5と設定が異なっている
この2点が異なっていて、乱流モデルや物性値などは同じでした。

ここで、また新たに疑問点があがってきたのですがkファイル内の流入温度を与えないと計算することは出来ないのか教えて頂けませんか。
初歩的なミスばかりで申し訳ございませんが、wallHeatTransferの設定をする場合にtutorial 内のどのファイルを利用していいのかご伝授お願い致します。

sane

unread,
Nov 7, 2017, 3:27:10 AM11/7/17
to OpenFOAM
小南様

度々失礼致します。
先日教えて頂いたwallHeatTransferについてなのですが、計算されたときに作成されたファイルを見せていただくことは可能でしょうか?

厚かましいお願いではございますが何卒お願い申し上げます。


小南秀彰

unread,
Nov 8, 2017, 12:15:06 AM11/8/17
to OpenFOAM
sanoさん

小南です。

>①流入・流出条件が設定されているが自分のものは設定していない。

移動壁のあるキャビティフローですか?
それとも、密閉空間内の熱伝達と対流を計算したいとか?
いずれにしても、それが計算できない理由では無いと思います。

>②境界条件のp_rghファイルのinternalFieldが大気圧(101325)となっているが、私の利用しているものは1e5と設定が異なっている

圧縮性流体解析の場合は、状態方程式から密度などを計算するので基準圧力値が必要です。大気圧(基準の圧力)の値について101325と1e5という違いは、計算できないことと無関係です。

>kファイル内の流入温度
kは乱流エネルギーなので、温度を与える必要はないと思うのですが?

>先日教えて頂いたwallHeatTransferについてなのですが、計算されたときに作成されたファイルを見せていただくことは可能でしょうか?

penguinisuts氏のHPに記載されている通りで、非定常の熱流体解析を行って
時間(ddt)スキームを定常計算に変えればできます。
その方法は、penguinisuts氏のHPに記載されているで、定常流体解析と見比べると判ると思います。、 

>先日教えて頂いたwallHeatTransferについてなのですが、計算されたときに作成されたファイルを見せていただくことは可能でしょうか?

むしろ、そちらの、エラーログ、system/constantフォルダーの中のファイルなどをアップしていただきたい。

★それから、pの次元は確かめました?
        非圧縮性        圧縮性
dimensions [ 0 2 -2 0 0 0 0 ];  ⇒ [ 1 -1 -2 0 0 0 0 ];

以上 よろしく お願いします。

2017年11月7日火曜日 17時27分10秒 UTC+9 sane:
Message has been deleted
Message has been deleted

sane

unread,
Nov 9, 2017, 3:44:38 AM11/9/17
to OpenFOAM
小南様

先日は厚かましい質問をしてしまい、申し訳ございませんでした。
教えていただいた方法と間違っているのかもしれませんが、buoyantSimpleFoamのhotRoomをddtスキームを定常のものに変えてみました。

pの次元も確認させていただきました。教えてくださり有難うございます。
現在行おうとしております計算は、キャビティフローのような密閉空間内の気流・温度について外部温度や熱貫流率を設定し壁面による自然換気を計算しようとしております。
私の現在扱っているファイルを全て添付させていただきます。お忙しいところ申し訳ございませんが、目を通していただけるとありがたいです。
計算を回してみたところ下記のようなエラーが起きてしまいました。

Create time

Create mesh for time = 0


SIMPLE: convergence criteria
    field p_rgh tolerance 0.0001
    field U tolerance 0.0001
    field h tolerance 0.0001
初歩的なものばかり聞いてしまい、申し訳ございませんが宜しくお願い致します。

alphat
thermophysicalProperties
turbulenceProperties
blockMeshDict
controlDict
fvSchemes
fvSolution
setFieldsDict
epsilon
nut
p_rgh
T.orig

小南秀彰

unread,
Nov 11, 2017, 10:12:54 PM11/11/17
to OpenFOAM
sanoさん

小南です。

致命的なエラーのところは、
--> FOAM FATAL ERROR: 
    request for compressibleTurbulenceModel turbulenceProperties from objectRegistry region0 failed
    available objects of type compressibleTurbulenceModel are
0()
初期値「0フォルダー」で乱流物性値の読込に失敗しているという意味です。
しかし
データーを拝見したところ、おかしな変なところは無いように思います。
k-epsilonモデルの例題は、tutorialの熱移動のフォルダーの中の「circuitBoardCooling」です。
inlet と outlet のpatchを無くしたら動きますかね? 自分は試していませんが動くはずです。
自分も時間があれば、検証をしてみます。

あとは、patch名を認識する所のバグくらいしか思い当たりません。
patch名の誤認識のバグについて、以下のような経験をしています。
https://groups.google.com/d/msg/openfoam/-gKHuqXjhJM/MTSxYWb7BQAJ

2017年11月9日木曜日 17時44分38秒 UTC+9 sane:

小南秀彰

unread,
Nov 13, 2017, 11:45:43 PM11/13/17
to OpenFOAM
sanoさん

小南です。
【検証結果です】 もともとが内部教育用の例題のモデルなのでファイルをアップロードできません。
 inlet と outlet あり:計算OK
 まず、inlet→wall:計算OK
 さらに、outlet→wall:計算NG(エラーの内容は下記)

====================
Reading g

Reading hRef
Calculating field g.h

Reading field p_rgh

[0]
[0]
[0] --> FOAM FATAL IO ERROR:
[0] Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint
[0] [1]
[1]
[1] --> FOAM FATAL IO ERROR:
[1] Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint
=======================
p(圧力)の初期値を読み込む際に、圧力を参照するセルまたは点を指定されていないというエラーメッセージです。
この設定方法は自分も未だ調べていないので、いづれかの機会といたしたい。

さて
2017/11/9時点(https://groups.google.com/d/msg/openfoam/veUY1D58ZHg/IOHZkX0GBwAJ)で発生しているエラーの原因は、境界条件(inlet/outletの有無)とは関係ないでしょう。
もう一度、0フォルダー(初期条件)とsysytemとconstantを見直したほうが良いと思います。

以上

2017年11月12日日曜日 12時12分54秒 UTC+9 小南秀彰:
Reply all
Reply to author
Forward
0 new messages