buoyantBoussinesqHumiditySimpleFoamの圧力境界条件、圧力の残差の下げ方について

299 views
Skip to first unread message

西田

unread,
Nov 14, 2018, 12:05:59 AM11/14/18
to OpenFOAM
大学院でOpenFOAMを使い、市街地の温熱環境を解析している初心者の西田と申します。
今野先生の非圧縮性流体解析演習シリーズ第8回を参考にさせて頂き、buoyantBoussinesqSimpleFoamを水蒸気輸送も解けるようにカスタマイズしたbuoyantBoussinesqHumiditySimpleFoamを使用しています。
この度、圧力境界条件、圧力の残差の下げ方について分からないことがあり、質問させて頂きました。

解析領域2200 m (x1× 600 m (x2× 1000 m (x3)に対して、その中心部600 m (x1×600 m (x2) に建物ブロック30 m (x1×30 m (x2× 35 m (x3)並べています。
保水性のあるパネルを市街地内の地面にcreatePatchで設定し、市街地内の気温、湿度にどう影響するか、というようなことを研究しております。

現在、定常計算で10000サイクル回しても、各物理量の残差が収束判定(10^(-5))を満たさず、困っています。

特に、圧力(p_rgh)が収束しません(5000サイクル以降から徐々に値は小さくなっていますが、判定とは程遠く、また振動しています)。(詳しくは添付ファイルのresidual.pngをご覧ください。)
また、Paraviewで、10000サイクル目の圧力(p_rgh)鉛直分布(x2=275)を見ると、上空の流入口付近で、うねりのような風の流れが発生しておりました。(詳しくは添付ファイルの10000.pngをご覧ください。)

自分なりには、圧力の境界条件に問題があるか、速度・圧力の連成手法に問題があるか、という風に考えております。
圧力の境界条件については、流入も流出もzeroGradientにしております。(出口をディリクレ条件にせず、)このために、何か他に設定しなければならない条件はありますでしょうか(天井に風速を与えて引っ張るなどでしょうか。その風速が詳細にわからないため、試したことはありません)。ただ、現在は特に他を設定せずとも計算ができています。流体計算の本質をつかめておらず、稚拙な質問申し訳ございません。

また、そもそも、熱・風・スカラー輸送を解くソルバーで、圧力を10^(-5)まで避けることは困難なのでしょうか。

風速、圧力の境界条件、fvSolutionの詳細を以下にまとめさせていただきます。
もし、何かお力添えを頂けたら大変嬉しいです。どうぞよろしくお願いいたします。


※風速の流入口は、setDiscreteFieldsで1/7べき乗則に沿った風速分布を与えています。
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.2.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volVectorField;
    location    "0";
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           uniform (4.0 0 0);
    }
    outlet
    {
        type            zeroGradient;
    }
    Zmin
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }
    Zmax
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }
    Ymin
    {
        type            symmetryPlane;
    }
    Ymax
    {
        type            symmetryPlane;
    }
    oldInternalFaces
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }
    hosui
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }

}


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

/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.2.1                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 2 -2 0 0 0 0];

internalField   uniform 101325;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            zeroGradient;
    }

    Zmin
    {
        type            zeroGradient;
    }

    Zmax
    {
        type            zeroGradient;
    }

    Ymin
    {
        type            symmetryPlane;
    }

    Ymax
    {
        type            symmetryPlane;
    }

    oldInternalFaces
    {
        type            zeroGradient;
    }
    hosui
    {
        type            zeroGradient;
    }


}

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



/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.2.1                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

solvers
{
    p_rgh
    {
        solver          GAMG;
        smoother        DIC;
        agglomerator    faceAreaPair;
        nCellsInCoarsestLevel 10;
        mergeLevels     1;
        cacheAgglomeration on;
        tolerance       1e-06;
        relTol          0.01;
    }

    U
    {
type            coupled;
        solver          PBiCICG;
        preconditioner  DILU;
        tolerance       (1e-06 1e-06 1e-06);
        relTol          (0 0 0);
    }

    "(T|X|k|epsilon|R)"
    {
        solver          smoothSolver;
        smoother        DILU;
        tolerance       1e-06;
        relTol          0;
    }
}

SIMPLE
{
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue       0;

    residualControl
    {
        p_rgh           1e-5;
        U               1e-5;
        T               1e-5;

        // possibly check turbulence fields
        "(X|k|epsilon|omega)" 1e-5;
    }
}

relaxationFactors
{
    fields
    {
        p_rgh           0.1;
    }
    equations
    {
        U               0.3;
        T               0.3;
        "(X|k|epsilon|R)" 0.3;
    }
}


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

Masashi Imano

unread,
Nov 14, 2018, 12:20:29 AM11/14/18
to OpenFOAM
今野です.

こんにちは.
添付ファイルが貼られていないようです.

西田

unread,
Nov 14, 2018, 12:31:36 AM11/14/18
to OpenFOAM
今野様

西田です。
大変失礼いたしました。こちらに添付いたします。ご丁寧にありがとうございます。

2018年11月14日水曜日 14時20分29秒 UTC+9 Masashi Imano:
今野です.

こんにちは.
添付ファイルが貼られていないようです.

residual.png
10000.PNG

Masashi Imano

unread,
Nov 14, 2018, 12:47:47 AM11/14/18
to OpenFOAM
今野です.

とりあえず,以下で絶対圧と相対圧が混在していると思います.

p_rgh
```
internalField   uniform 101325;
```

fvSolution
```
    pRefValue       0;
```

最初は,同様な流れ場を解析している既往の研究での解析条件や境界条件を再現して,
解けるか検討してみたら如何でしょうか?

また,passive scalarとして解いている絶対湿度Xは他の物理量の影響しないので,
まずは,標準ソルバのbuoyantBoussinesqSimpleFoamを用いて,
きちんと解けるか検討したほうが効率が良いと思います.

2018年11月14日水曜日 14時31分36秒 UTC+9 西田:

西田

unread,
Nov 14, 2018, 2:16:29 AM11/14/18
to OpenFOAM
今野様

西田です。ご助言有難うございます。
初歩的なミスを発見できておらず、恥ずかしいばかりです。ご指摘いただいた点と、その他基本的な部分を見直して、再度計算いたします。

また、今までは主に、標準ソルバのbuoyantBoussinesqSimpleFoamを用いて、既往研究を参考にしながら境界条件を比較してまいりました。
その中でも、入り口、出口の圧力境界条件がzeroGradientのときが最も収束性が良かったのですが、それでも10^(-5)には至らず、行き詰ってしまったため、
先にbuoyantBoussinesqHumiditySimpleFoamカスタマイズに挑戦してみよう、ということでありました。
しかし先生のおっしゃる通り、圧力の問題は一度標準ソルバに立ち返り、再度チャレンジしてみます。
御多忙の中、温かいご対応ありがとうございます。

2018年11月14日水曜日 14時47分47秒 UTC+9 Masashi Imano:

Masashi Imano

unread,
Nov 15, 2018, 7:58:48 PM11/15/18
to OpenFOAM
今野です.

流れ場が複雑になると,定常計算では通常残差があまり減少せず,
下げ止まりになる事も多いので,
残差がある程度収束した事を確認した後は,
解析している場の空間統計量やプローブ点での時系列の収束により,
定常判定することも現実的には多いかと思います.

西田

unread,
Nov 18, 2018, 10:25:28 AM11/18/18
to OpenFOAM
今野様

西田です。ご助言ありがとうございます。
空間統計量等によって判断する場合もあるのですね。
自分なりに境界条件や圧力の連成計算についても比較を進めながら、その方法での定常判定も試みてみます。
まだまだ自分の勉強不足な点も多くありますので、先生のご助言を参考させていただきながら、
研究を進めてまいります。ありがとうございます。


2018年11月16日金曜日 9時58分48秒 UTC+9 Masashi Imano:
Reply all
Reply to author
Forward
0 new messages