movingwallVelocityについて

478 views
Skip to first unread message

Yamazaki Takashi

unread,
Jan 22, 2016, 8:49:30 AM1/22/16
to OpenFOAM
お世話になっております。

最近度々投稿させていただいていますが、少し差し迫った状況ゆえご了承ください。

現在、pimpleDyMFoamを使用して袋状の形状のメッシュをactiveに収縮、拡張させてその流れを解析しようと
試みています。
400面の三角形メッシュに近似した袋形状をdynamicMeshのvelocityLaplacianを用いて
収縮、拡張させるところまではできたのですが、
その際に、OpenFOAMのチュートリアルであるpropelarやmovingConeのように
壁の速度の境界条件として
Face
{
type movingwallVelocity;
value uniform (0 0 0);
}
と設定したところ、圧力が振動発散してしまいます。
Face
{
type fixedValue;
value uniform (0 0 0);
}
と設定すると計算はできているのですが、これでは壁に速度が与えられていないのではないかと
指摘を受けました。

movingwallveloctyの計算の発散を解決させる方法、もしくはmovingwallveloctyの使用を回避させる方法をご存知の方、
もしくはこのような問題に経験のある方、
どうかアドバイスをお願いします。

よろしくお願いします。



Yamazaki Takashi

unread,
Jan 22, 2016, 12:25:41 PM1/22/16
to OpenFOAM
計算の発散の問題であるので関係あるかと思い、現在使用しているfvSchemesとfvSolutionの内容を記載します。


/*————————————————*- C++ -*----------------------------------*\
|       o          |                                                          |
|    o     o       | HELYX-OS                                                  |
|   o   O   o      | Version: v2.1.1                                           |
|    o     o       | Web:     http://www.engys.com                            |
|       o          |                                                          |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version 2.0;
    format ascii;
    class dictionary;
    location system;
    object fvSchemes;
}

    ddtSchemes
    {
        default Euler;
    }

    gradSchemes
    {
        default Gauss linear;
        grad(nuTilda) cellLimited Gauss linear 1;
        grad(k) cellLimited Gauss linear 1;
        grad(kl) cellLimited Gauss linear 1;
        grad(omega) cellLimited Gauss linear 1;
        grad(epsilon) cellLimited Gauss linear 1;
        grad(q) cellLimited Gauss linear 1;
        grad(zeta) cellLimited Gauss linear 1;
        grad(v2) cellLimited Gauss linear 1;
        grad(f) cellLimited Gauss linear 1;
        grad(sqrt(kt)) cellLimited Gauss linear 1;
        grad(kt) cellLimited Gauss linear 1;
        grad(sqrt(kl)) cellLimited Gauss linear 1;
    }

    divSchemes
    {
        default Gauss linear;
        div(phi,U) bounded Gauss linearUpwindV grad(U);
        div(phi,k) bounded Gauss linearUpwind grad(k);
        div(phi,epsilon) bounded Gauss linearUpwind grad(epsilon);
        div(phi,zeta) bounded Gauss linearUpwind grad(zeta);
        div(phi,q) bounded Gauss linearUpwind grad(q);
        div(phi,omega) bounded Gauss linearUpwind grad(omega);
        div(phi,nuTilda) bounded Gauss linearUpwind grad(nuTilda);
        div(phi,T) bounded Gauss limitedLinear 1;
        div(phi,kl) Gauss limitedLinear 1;
        div(phi,kt) Gauss limitedLinear 1;
        div(phi,R) Gauss upwind;
        div(R) Gauss linear;
        div((nuEff*dev(grad(U).T()))) Gauss linear;
        div(phi,v2) bounded Gauss linearUpwind grad(v2);
        div(phi,f) bounded Gauss linearUpwind grad(f);
    }

    interpolationSchemes
    {
        default linear;
        interpolate(HbyA) linear;
    }

    laplacianSchemes
    {
        default Gauss linear limited 0.333;
    laplacian(diffusivity,cellMotionU) Gauss linear uncorrected;

    }

    snGradSchemes
    {
        default limited 0.333;
    }

    fluxRequired
    {
        default no;
        p ;
        pcorr;
    }
/*--------------------------------*- C++ -*----------------------------------*\
|       o          |                                                          |
|    o     o       | HELYX-OS                                                  |
|   o   O   o      | Version: v2.1.1                                           |
|    o     o       | Web:     http://www.engys.com                            |
|       o          |                                                          |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version 2.0;
    format ascii;
    class dictionary;
    location system;
    object fvSolution;
}

    PIMPLE
    {
        momentumPredictor yes;
        nOuterCorrectors 1;
        nCorrectors 2;
        nNonOrthogonalCorrectors 0;
        pRefCell 0;
        pRefValue 0;
        rhoMin rhoMin [1 -3 0 0 0 0 0 ] 0.5;
        rhoMax rhoMax [1 -3 0 0 0 0 0 ] 2.0;
        residualControl
        {
            U
            {
                relTol 0;
                tolerance 1.0E-4;
            }

            k
            {
                relTol 0;
                tolerance 1.0E-4;
            }

            epsilon
            {
                relTol 0;
                tolerance 1.0E-4;
            }

            omega
            {
                relTol 0;
                tolerance 0.0001;
            }

            nuTilda
            {
                relTol 0;
                tolerance 0.0001;
            }

            T
            {
                relTol 0;
                tolerance 0.0001;
            }

            p_rgh
            {
                relTol 0;
                tolerance 0.0001;
            }

            p
            {
                relTol 0;
                tolerance 1.0E-4;
            }

            "alpha.*"
            {
                relTol 0;
                tolerance 0.0001;
            }

        }

    }

    solvers
    {

pcorr
    {
        solver          GAMG;
        tolerance       0.02;
        relTol          0;
        smoother        GaussSeidel;
        nPreSweeps      0;
        nPostSweeps     2;
        cacheAgglomeration no;
        nCellsInCoarsestLevel 10;
        agglomerator    faceAreaPair;
        mergeLevels     1;
    }


        p
        {
            solver GAMG;
            agglomerator faceAreaPair;
            mergeLevels 1;
            cacheAgglomeration true;
            nCellsInCoarsestLevel 200;
            tolerance 1e-10;
            relTol 0.01;
            smoother GaussSeidel;
            nPreSweeps 0;
            nPostSweeps 2;
            nFinestSweeps 2;
            minIter 1;
        }

        p_rgh
        {
            solver GAMG;
            agglomerator faceAreaPair;
            mergeLevels 1;
            cacheAgglomeration true;
            nCellsInCoarsestLevel 200;
            tolerance 1e-10;
            relTol 0.01;
            smoother GaussSeidel;
            nPreSweeps 0;
            nPostSweeps 2;
            nFinestSweeps 2;
            minIter 1;
        }

        f
        {
            solver GAMG;
            agglomerator faceAreaPair;
            mergeLevels 1;
            cacheAgglomeration true;
            nCellsInCoarsestLevel 200;
            tolerance 1e-10;
            relTol 0.01;
            smoother GaussSeidel;
            nPreSweeps 0;
            nPostSweeps 2;
            nFinestSweeps 2;
            minIter 1;
        }

        pFinal
        {
            solver GAMG;
            smoother GaussSeidel;
            agglomerator faceAreaPair;
            mergeLevels 1;
            cacheAgglomeration true;
            nCellsInCoarsestLevel 200;
            tolerance 1e-6;
            relTol 0.0001;
            nPreSweeps 0;
            nPostSweeps 2;
            nFinestSweeps 2;
            minIter 1;
        }

        p_rghFinal
        {
            solver GAMG;
            smoother GaussSeidel;
            agglomerator faceAreaPair;
            mergeLevels 1;
            cacheAgglomeration true;
            nCellsInCoarsestLevel 200;
            tolerance 1e-6;
            relTol 0.0001;
            nPreSweeps 0;
            nPostSweeps 2;
            nFinestSweeps 2;
            minIter 1;
        }

        fFinal
        {
            solver GAMG;
            smoother GaussSeidel;
            agglomerator faceAreaPair;
            mergeLevels 1;
            cacheAgglomeration true;
            nCellsInCoarsestLevel 200;
            tolerance 1e-6;
            relTol 0.0001;
            nPreSweeps 0;
            nPostSweeps 2;
            nFinestSweeps 2;
            minIter 1;
        }

        U
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        k
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        kl
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        kt
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        q
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        zeta
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        epsilon
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        R
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        nuTilda
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        omega
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        h
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        T
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        v2
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0.1;
            minIter 1;
        }

        UFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        kFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        klFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        ktFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        qFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        zetaFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        epsilonFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        RFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        nuTildaFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        omegaFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        hFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        TFinal
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        v2Final
        {
            solver smoothSolver;
            smoother GaussSeidel;
            tolerance 1e-6;
            relTol 0;
            minIter 1;
        }

        rho
        {
            solver PCG;
            preconditioner DIC;
            tolerance 0;
            relTol 0;
            minIter 1;
        }

        rhoFinal
        {
            solver PCG;
            preconditioner DIC;
            tolerance 0;
            relTol 0;
            minIter 1;
        }

        e
        {
            solver PBiCG;
            preconditioner DILU;
            tolerance 1e-06;
            relTol 0.1;
            minIter 1;
        }

  cellMotionU
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance       1e-08;
        relTol          0;
    }

    }

    relaxationFactors
    {
        fields
        {
            p 1.0;
            p_rgh 1;
            rho 1;
        }

        equations
        {
            epsilon 1.0;
            f 1;
            h 1;
            k 1.0;
            kl 1;
            kt 1;
            nuTilda 1;
            omega 1;
            q 1;
            R 1;
            T 1;
            U 1.0;
            v2 1;
            zeta 1;
            "alpha.*" 1;
            epsilonFinal 1.0;
            fFinal 1;
            hFinal 1;
            kFinal 1.0;
            klFinal 1;
            ktFinal 1;
            nuTildaFinal 1;
            omegaFinal 1;
            qFinal 1;
            RFinal 1;
            TFinal 1;
            UFinal 1.0;
            v2Final 1;
            zetaFinal 1;
            "alpha.*Final" 1;
        }

    }



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

2016年1月22日金曜日 22時49分30秒 UTC+9 Yamazaki Takashi:

Yamazaki Takashi

unread,
Jan 23, 2016, 5:22:10 AM1/23/16
to OpenFOAM
連投失礼します。

乱流モデルをRANSモデルから、LESモデルのk-equation eddy-velocityに変更し、
袋の表面の境界条件をmovingWallvelocityに設定して計算を行ったところ
振動発散は無くなりましたが、圧力の値が未だに振動しています。
内部の流れは概ね再現できている(収縮する際は流出が発生、拡張する際は流入が発生)
のですが、圧力が安定していない状況で流れだけ再現できるものかと疑問に感じています。

LESモデルの見直しや離散化スキームの見直しで圧力の振動は完全されるのでしょうか?
現在は前投稿の時間微分スキームをbackwardに変更して計算しました。

何か気づくことがありましたら、アドバイスお願いいたします。

2016年1月23日土曜日 2時25分41秒 UTC+9 Yamazaki Takashi:
Reply all
Reply to author
Forward
0 new messages