sixDoFRigidBodyMotioでの流体解析

699 views
Skip to first unread message

こうだい

unread,
Jan 21, 2022, 12:50:09 AM1/21/22
to OpenFOAM
こんにちは。私は大学でopenfoamを利用した流体解析を行っています。

その中で解決できない問題が発生したため、みなさんにご協力をお願いしたいです。

わたしは解析中にプロペラを動かせるようにプログラムを組んいるのですが、0.3秒あたりで発散してします。プロペラは回っているのですが、回転軸がずれたりしています。その原因がわからないので知識を分けてもらえないでしょうか。

openfoam5.0を使用しています。メッシュはANSYSで制作しました。

モデルは800×800×2200㎜の立方体に直径250㎜のプロペラが入っています

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

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

internalField   uniform (5 0 0);

boundaryField
{

   inlet
    {
        type            fixedValue;
        value           uniform (0 -5 0);
    }

    outlet
    {
        type            zeroGradient;
    }

    propeller
    {
        type            movingWallVelocity;
        value           uniform (0 0 0);
    }
    wallr
    {
        type            slip;
    }

    walll
    {
         type            slip;
    }
   
     wall
    {
         type            slip;
    }



}


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

FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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

internalField   uniform 0;

boundaryField
{

    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            fixedValue;
        value           uniform 0;
    }

    propeller
    {
        type            zeroGradient;
    }
    wallr
    {
        type            zeroGradient;
    }

    walll
    {
        type            zeroGradient;
    }
   
    wall
    {
        type            zeroGradient;
    }


}

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

FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    location    "0";
    object      omega;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//nut 壁関数

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

internalField   uniform 0.4;

boundaryField
{
     inlet
    {
        type            fixedValue;
        value           $internalField;
    }
   
    outlet
    {
        type            zeroGradient;
    }
   
    propeller
    {
        type            omegaWallFunction;
        value           uniform 985;
    }
   
    wallr
    {
        type            omegaWallFunction;
        value           $internalField;
    }
    walll
    {
        type            omegaWallFunction;
        value           $internalField;
    }
   
    wall
    {
        type            omegaWallFunction;
        value           $internalField;
    }
 
 
}


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

FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    location    "0";
    object      nut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Re=20000:--> I=0.16*Re**(-1/8) **=bekizyou  (pipeflowでの式)
// k=(3/2)*(U_ref*I)**2
// I=0.05 (自由乱流での一般値(openfoamプログラミングp192)
// k=1.5*(5*0.05)^2
// epsilon=Cμ^(3/4)*k^(3/2)/l=1.123025212  (l=0.06[m])
// omega=epsilon/k=0.08347987115


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

internalField   uniform 0.00375;

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           $internalField;
    }
    outlet
    {
        type            zeroGradient;
    }
    propeller
    {
        type            kqRWallFunction;
        value           uniform 49;
    }
    wallr
    {
        type            kqRWallFunction;
        value           $internalField;
    }
    walll
    {
        type            kqRWallFunction;
        value           $internalField;
    }
    wall
    {
        type            kqRWallFunction;
        value           $internalField;
    }

}


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


FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    location    "0";
    object      epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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

internalField   uniform 1.123;

boundaryField
{
     inlet
    {
        type            fixedValue;
        value           $internalField;
    }
    outlet
    {
        type            zeroGradient;
    }
    wallr
    {
        type            epsilonWallFunction;
        value           $internalField;
    }
    walll
    {
        type            epsilonWallFunction;
        value           $internalField;
    }
   
     wall
    {
        type            epsilonWallFunction;
        value           $internalField;
    }
    propeller
    {
        type            epsilonWallFunction;
        value           $internalField;
    }
   
}



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


FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      dynamicMeshDict;
}

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


dynamicFvMesh dynamicMotionSolverFvMesh;

motionSolverLibs    ("libsixDoFRigidBodyMotion.so");

solver sixDoFRigidBodyMotion;

sixDoFRigidBodyMotionCoeffs
{
    patches         (propeller); //動かすメッシュ
    innerDistance   0; //この中にあるものがすべてリジッドボディとして直接移動する
    outerDistance   0.1; //外側では動かない

    mass            0.00696; //重さ
    centreOfMass    (-1.073e-07 -0.001 2.426e-07); //中心位置
    momentOfInertia (3.075e-05 3.160e-05 9.049e-09); //慣性モーメント
    velocity        (0 0 0); //速度
   
   
    orientation
    (
        0.9144 0 0.4048
        0 1 0
        -0.4048 0 0.9144
    );  
   
    angularMomentum (0 0.1 0); //角運動量
    g               (0 -9.81 0);
    rho             rhoInf;
    rhoInf          1;
    accelerationRelaxation 0.9; //加速の減衰
    accelerationDamping 0.95; //加速の緩和
    report          on;

    solver
    {
        type symplectic;
    }

    constraints //拘束条件
    {
        yLine
        {
            sixDoFRigidBodyMotionConstraint line;
           
            direction           (0 1 0);
        }

        zAxis
        {
            sixDoFRigidBodyMotionConstraint axis; //回転軸
            axis                (0 1 0);
        }
    }
/*

    */
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application     pimpleDyMFoam;

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         5;

deltaT          0.005;

writeControl    adjustableRunTime;

writeInterval   0.002;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      fixed;

timePrecision   6;

runTimeModifiable true;

adjustTimeStep  no;

maxCo           1.0;

libs
(
"libsixDoFRigidBodyMotion.so"
);



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


FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

ddtSchemes
{
    default         Euler;
}

gradSchemes
{
    default         faceLimited Gauss midPoint 1;
    grad(p)         Gauss midPoint;
}

divSchemes
{
    default         none;
    div(phi,U)      Gauss upwind;
    div((nuEff*dev2(T(grad(U))))) Gauss linear;
}

laplacianSchemes
{
    default         Gauss linear limited 0;
    laplacian(diffusivity,cellMotionU) Gauss linear limited 0;
}

interpolationSchemes
{
    default         midPoint;
}

snGradSchemes
{
    default         limited 0;
}

fluxRequired
{
    default         no;
    pcorr           ;
    p               ;
}


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


FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

solvers
{
    "pcorr.*"
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance       1e-06;
        relTol          0.01;
    }

    p
    {
        $pcorr;
    }

    pFinal
    {
        $p;
        //relTol          0;
    }

    U
    {
        solver          PBiCG;
        preconditioner  DILU;
        tolerance       1e-05;
        relTol          0.1;
    }

    UFinal
    {
        $U;
        //relTol          0;
    }

    cellDisplacement
    {
        $p;
    }
        k{
        solver PBiCG;
        preconditioner DILU;
        tolerance 1e-04;
        relTol 0.1;
    }
    kFinal{
        $k;
        relTol 0;
    }

    omega
    {
        solver           smoothSolver;
        smoother         GaussSeidel;
        tolerance        1e-04;
        relTol           0.1;
        nSweeps          1;
    }
    omegaFinal
    {
        $omega;
        relTol 0;
    }
   
    epsilonFinal
    {
        $epsilon;
        relTol 0;
    }
}

potentialFlow
{
    nNonOrthogonalCorrectors 10;
}

PIMPLE
{
    correctPhi          yes;
    nOuterCorrectors    1;
    nCorrectors         2;
    nNonOrthogonalCorrectors 0;
}

relaxationFactors
{
    fields
    {
        p               0.2;
        //0.3
    }
    equations
    {
        U               0.6;
        ".*Final"       0.6;
        //0.7
    }
}

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



ここからが解析結果です

Create time

Create mesh for time = 0.000000

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Selecting motion solver: sixDoFRigidBodyMotion
--> FOAM Warning :
    From function const Foam::HashTable<Foam::List<int>, Foam::word>& Foam::polyBoundaryMesh::groupPatchIDs() const
    in file meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C at line 467
    Removing patchGroup 'wall' which clashes with patch 5 of the same name.
Selecting sixDoFSolver symplectic
Translational constraint tensor (0 0 0 0 1 0 0 0 0)
Rotational constraint tensor (0 0 0 0 1 0 0 0 0)

PIMPLE: Operating solver in PISO mode

Reading field p

Reading field U

Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type laminar
Selecting laminar stress model Stokes
No MRF models present

Reading/calculating face velocity Uf

No finite volume options present

Courant Number mean: 1.056 max: 295.886

Starting time loop

Courant Number mean: 1.056 max: 295.886
Time = 0.005000

forces forces:
    Not including porosity effects
6-DoF rigid body motion
    Centre of rotation: (-1.073e-07 -0.001 2.426e-07)
    Centre of mass: (-1.073e-07 -0.001 2.426e-07)
    Orientation: (-0.862001 0 -0.506897 0 1 0 0.506897 0 -0.862001)
    Linear velocity: (0 -0.0232992 0)
    Angular velocity: (0 3164.56 0)
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00847514, No Iterations 149
time step continuity errors : sum local = 0.000353372, global = 1.22774e-06, cumulative = 1.22774e-06
PIMPLE: iteration 1
DILUPBiCG:  Solving for Ux, Initial residual = 1, Final residual = 0.0899433, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 1, Final residual = 0.0247176, No Iterations 1
DILUPBiCG:  Solving for Uz, Initial residual = 1, Final residual = 0.0584868, No Iterations 1
DICPCG:  Solving for p, Initial residual = 1, Final residual = 1.57492, No Iterations 1001
time step continuity errors : sum local = 0.0761535, global = -0.012076, cumulative = -0.0120747
DICPCG:  Solving for p, Initial residual = 0.587973, Final residual = 5.93407, No Iterations 1001
time step continuity errors : sum local = -0.0559146, global = -0.011764, cumulative = -0.0238387
ExecutionTime = 13.9 s  ClockTime = 14 s

Courant Number mean: 5.36899 max: 2.76148e+08
Time = 0.010000

forces forces:
    Not including porosity effects
6-DoF rigid body motion
    Centre of rotation: (-1.073e-07 -0.00123299 2.426e-07)
    Centre of mass: (-1.073e-07 -0.00123299 2.426e-07)
    Orientation: (0.79825 0 0.602318 0 1 0 -0.602318 0 0.79825)
    Linear velocity: (0 -4.97898 0)
    Angular velocity: (0 3185.06 0)
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00974393, No Iterations 64
time step continuity errors : sum local = 0.0247872, global = 0.000421212, cumulative = -0.0234175
PIMPLE: iteration 1
DILUPBiCG:  Solving for Ux, Initial residual = 0.522386, Final residual = 0.012392, No Iterations 2
DILUPBiCG:  Solving for Uy, Initial residual = 0.54136, Final residual = 0.0186638, No Iterations 2
DILUPBiCG:  Solving for Uz, Initial residual = 0.513878, Final residual = 0.0105837, No Iterations 2
DICPCG:  Solving for p, Initial residual = 0.919922, Final residual = 0.00905351, No Iterations 39
time step continuity errors : sum local = 0.0215611, global = -0.0112622, cumulative = -0.0346797
DICPCG:  Solving for p, Initial residual = 0.00428524, Final residual = 4.21568e-05, No Iterations 39
time step continuity errors : sum local = 0.0143317, global = -0.00906534, cumulative = -0.043745
ExecutionTime = 17.36 s  ClockTime = 18 s

Courant Number mean: 8.23909 max: 4.42936e+06
Time = 0.015000

forces forces:
    Not including porosity effects
6-DoF rigid body motion
    Centre of rotation: (-1.073e-07 -0.0507898 2.426e-07)
    Centre of mass: (-1.073e-07 -0.0507898 2.426e-07)
    Orientation: (-0.568396 0 -0.822749 0 1 0 0.822749 0 -0.568396)
    Linear velocity: (0 13840.5 0)
    Angular velocity: (0 2889.69 0)
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00989487, No Iterations 29
time step continuity errors : sum local = 0.00329415, global = -0.00859183, cumulative = -0.0523369
PIMPLE: iteration 1
DILUPBiCG:  Solving for Ux, Initial residual = 0.520932, Final residual = 0.0471245, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.537212, Final residual = 0.0441452, No Iterations 1
DILUPBiCG:  Solving for Uz, Initial residual = 0.472506, Final residual = 0.00972228, No Iterations 2
DICPCG:  Solving for p, Initial residual = 0.0728224, Final residual = 3.72405, No Iterations 1001
time step continuity errors : sum local = -77.3722, global = -0.00578061, cumulative = -0.0581175
DICPCG:  Solving for p, Initial residual = 0.0196336, Final residual = 1.56323, No Iterations 1001
time step continuity errors : sum local = 5458.2, global = -0.00614294, cumulative = -0.0642604
ExecutionTime = 32.73 s  ClockTime = 34 s

Courant Number mean: 273454 max: 3.72284e+12
Time = 0.020000

forces forces:
    Not including porosity effects
6-DoF rigid body motion
    Centre of rotation: (-1.073e-07 138.403 2.426e-07)
    Centre of mass: (-1.073e-07 138.403 2.426e-07)
    Orientation: (-0.297214 0 -0.954806 0 1 0 0.954806 0 -0.297214)
    Linear velocity: (0 -1.14177e+08 0)
    Angular velocity: (0 1.86997e+08 0)
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00980378, No Iterations 27
time step continuity errors : sum local = 59708.1, global = -0.0518579, cumulative = -0.116118
PIMPLE: iteration 1
DILUPBiCG:  Solving for Ux, Initial residual = 0.546051, Final residual = 0.0355868, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.552748, Final residual = 0.0408451, No Iterations 1
DILUPBiCG:  Solving for Uz, Initial residual = 0.534272, Final residual = 0.0429076, No Iterations 1
DICPCG:  Solving for p, Initial residual = 0.980403, Final residual = 1703.25, No Iterations 1001
time step continuity errors : sum local = 3.20141e+09, global = -0.0707469, cumulative = -0.186865
DICPCG:  Solving for p, Initial residual = 0.00118053, Final residual = 27.6763, No Iterations 1001
time step continuity errors : sum local = -8.84858e+16, global = 344.175, cumulative = 343.988
ExecutionTime = 47.02 s  ClockTime = 49 s

Courant Number mean: 1.69573e+18 max: 4.48861e+22
Time = 0.025000

forces forces:
    Not including porosity effects
6-DoF rigid body motion
    Centre of rotation: (-1.073e-07 -1.14177e+06 2.426e-07)
    Centre of mass: (-1.073e-07 -1.14177e+06 2.426e-07)
    Orientation: (-0.448394 0 0.89383 0 1 0 -0.89383 0 -0.448394)
    Linear velocity: (0 5.04179e+22 0)
    Angular velocity: (0 5.89327e+22 0)
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00966098, No Iterations 31
time step continuity errors : sum local = 1.81639e+19, global = 1.30324e+12, cumulative = 1.30324e+12
PIMPLE: iteration 1
DILUPBiCG:  Solving for Ux, Initial residual = 0.504368, Final residual = 0.0472746, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.476728, Final residual = 0.0116667, No Iterations 2
DILUPBiCG:  Solving for Uz, Initial residual = 0.514028, Final residual = 0.0455025, No Iterations 1
DICPCG:  Solving for p, Initial residual = 1, Final residual = 9.24001, No Iterations 1001
time step continuity errors : sum local = 7.39301e+23, global = -3.00999e+09, cumulative = 1.30023e+12
DICPCG:  Solving for p, Initial residual = 0.984043, Final residual = 34.6889, No Iterations 1001
time step continuity errors : sum local = -9.9727e+32, global = 4.77159e+17, cumulative = 4.77161e+17
ExecutionTime = 62.28 s  ClockTime = 64 s

Courant Number mean: 6.35472e+33 max: 8.17889e+37
Time = 0.030000

forces forces:
    Not including porosity effects
6-DoF rigid body motion
    Centre of rotation: (-1.073e-07 5.04179e+20 2.426e-07)
    Centre of mass: (-1.073e-07 5.04179e+20 2.426e-07)
    Orientation: (0.152715 0 -0.988265 0 1 0 0.988265 0 0.152715)
    Linear velocity: (0 -1.11418e+50 0)
    Angular velocity: (0 -1.35852e+50 0)

こうだい

unread,
Jan 21, 2022, 12:51:55 AM1/21/22
to OpenFOAM
0.0秒でcheckmeshをしたときは異常はないのですが、解析が始まってからのメッシュにはゆがみがあるみたいです。その原因も分からないのでわかる人がいらっしゃいましたら教えてもらえないでしょうか

2022年1月21日金曜日 14:50:09 UTC+9 こうだい:

こうだい

unread,
Jan 21, 2022, 1:03:35 AM1/21/22
to OpenFOAM

ファイルにメッシュの大きさとモデルの概要を添付しているので確認お願いします

2022年1月21日金曜日 14:51:55 UTC+9 こうだい:
propeller (2).png
メッシュサイズ.png

kominami

unread,
Jan 21, 2022, 8:27:45 AM1/21/22
to OpenFOAM
kominamiです

普段はfoundation版を使っていないため、回答を外している可能性が無きにしもあらずですが。

boundaryField {    }の中の記述をみると、回転領域に対応していないと思います。

回転領域の参考になるチュートリアルは、pimpleDyMFoamのrotorとかいういう名前が付いているでしょう。
こうだいさんは、おそらく、movingConeみたいな平行移動をするチュートリアルを参考にしてしまったのではないかと思います。

回転領域のチュートリアルを./Allrun実行してメッシュを見れば、これ以上の説明は不要だと思います。

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



2022年1月21日金曜日 15:03:35 UTC+9 こうだい:

こうだい

unread,
Jan 21, 2022, 8:52:32 AM1/21/22
to OpenFOAM
kominamiさん

こんばんは

boundaryFieldは”U”のところでよかったでしょうか

参考にしたのは下記URLのチュートリアルを参考にしました

参考にできそうなチュートリアルを知っていますか?知っているのであれば教えていただきたいのですが。




2022年1月21日金曜日 22:27:45 UTC+9 kominami:

kominami

unread,
Jan 21, 2022, 9:30:21 AM1/21/22
to OpenFOAM
kominamiです

こうだいさん

>boundaryFieldは”U”のところでよかったでしょうか
圧力pなど、とにかく全部 ダメです。

>参考にできそうなチュートリアルを知っていますか?知っているのであれば教えていただきたいのですが
こうだいさんが何をしたいのか、いまいち不明です。
>プロペラは回っているのですが、回転軸がずれたりしています。
こうだいさんのやりたい計算は、プロペラを回したいのか?  流れによってプロペラが回されるのか?

sixDoFRigidBodyMotionは、後者用ですね。

前者ならば
こちらのサイトの
https://www.xsim.info/articles/OpenFOAM/Tutorials.html
プロペラ周りの流れ、というチュートリアルが良いと思います。
( このサイトの内容は、OpenFOAM 4.x です。)

後者ならば、構造体がプロペラのような形の時は、oversetMeshを使わないと無理でしょう。
oversetMeshとsixDoFRigidBodyMotionが併用できるかどうかは私は分かりません。

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

2022年1月21日金曜日 22:52:32 UTC+9 こうだい:

こうだい

unread,
Jan 21, 2022, 10:29:30 AM1/21/22
to OpenFOAM
こうだいです

kominamiさん

後者なのですね...

私はプロペラが回っているところに流体が流れていくような解析を望んでいます。
openfoam5.0 では solidmotionfvmeshは使えませんでした

他に活用できるsolverをご存じですか?
2022年1月21日金曜日 23:30:21 UTC+9 kominami:

M.TANAKA

unread,
Jan 21, 2022, 8:16:13 PM1/21/22
to OpenFOAM
ファンの回転によって流体が駆動される流れであれば、下記のチュートリアルが参考になるかもしれません。


2022年1月22日土曜日 0:29:30 UTC+9 こうだい:

kominami

unread,
Jan 22, 2022, 1:17:35 AM1/22/22
to OpenFOAM
kominamiです。

こうだいさん

>私はプロペラが回っているところに流体が流れていくような解析を望んでいます。
であるならば、

以前に書き込んだ
***こちらのサイトの
***https://www.xsim.info/articles/OpenFOAM/Tutorials.html
***プロペラ周りの流れ、というチュートリアルが良いと思います。
***( このサイトの内容は、OpenFOAM 4.x です。)
が、そのものズバリです。お使いのOpenFOAMのバージョンで似たものがあると思います。

boundary {  } の中のキーワードとしては、AMI あるいは AMIcyclic です。そのキーワードでググってください。

前の方の投稿でのリンク先に資料も、AMI境界のようですね。

***boundaryField {    }の中の記述をみると、回転領域に対応していないと思います。

***  回転領域の参考になるチュートリアルは、pimpleDyMFoamのrotorとかいういう名前が付いているでしょう。
***  こうだいさんは、おそらく、movingConeみたいな平行移動をするチュートリアルを参考にしてしまったのではないかと思います。
***  回転領域のチュートリアルを./Allrun実行してメッシュを見れば、これ以上の説明は不要だと思います。

計算するとすぐにメッシュが歪んでしまう理由は、回転領域に対応したメッシュになっていないからです。

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


2022年1月22日土曜日 10:16:13 UTC+9 M.TANAKA:

こうだい

unread,
Jan 24, 2022, 1:48:39 AM1/24/22
to OpenFOAM
kominamiさん M.TANAKAさん

AMIはANSYSと相性が悪いようです。AMIを使用する場合、回転体の本体側とボックス側それぞれに名前を付けて使うと思います。しかし、ANSYSだと同じ境界面で別の名前を付けることが出来ず、AMIを設定することが出来ませんでした。

まず、AMIでboundaryFieldで設定する際の認識が違っていたらすみません。AMIを使用する場合は、動かないボディ(今回で言えば箱)と動くボディ(今回で言えばプロペラ)の同じ面をそれぞれ境界面として設定するという認識でよろしかったでしょうか。

また、このような問題の解決策を知っているのであれば教えていただけないでしょうか

2022年1月22日土曜日 15:17:35 UTC+9 kominami:

M.TANAKA

unread,
Jan 25, 2022, 6:05:25 AM1/25/22
to OpenFOAM

小南秀彰

unread,
Jan 25, 2022, 6:18:52 AM1/25/22
to open...@googlegroups.com
こうだいさん

kominamiです。

mergemeshesユーティリティ
あとはweb検索して事例を探してください。

2022年1月25日(火) 20:05 M.TANAKA <tanaka19m...@gmail.com>:
--
このメールは Google グループのグループ「OpenFOAM」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openfoam+u...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/0d2ddd30-c8d9-41b4-bfd9-23179893ede5n%40googlegroups.com にアクセスしてください。

田阪巧乃

unread,
Jan 26, 2022, 12:05:49 AM1/26/22
to open...@googlegroups.com
kominamiさん  M.TANAKAさん

ありがとうございます。それらを参考にしてがんばってみます。

また、問題に直面した場合戻ってくるので、その時はよろしくお願いします。

2022年1月25日(火) 20:18 小南秀彰 <jce0...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/CANvsJ5fedWk8b9ZqzThWrybzEV%3D2QsLZJBrGkFjcPT4_tYF7cw%40mail.gmail.com にアクセスしてください。

こうだい

unread,
Jan 28, 2022, 11:36:54 AM1/28/22
to OpenFOAM
こんばんは

田阪です

あれからの進捗を報告します


現在、回転領域と非回転領域をansysで制作し、fluent形式で出力しております。
そして、それぞれをpolymeshで出力しようとしているのですが、boundaryファイルが二つできる訳ではなく上書きされてしまいます。
↑これを参考にしています。
この質問の「1, pointwiseによる回転、静止領域を別々にpolyMesh出力 その後マージする(作成されたboundryファイルが図2になります)」部分の別々にpolymesh出力するやり方が分かりません

やり方が分かる方がいらっしゃいましたら、教えていただけないでしょうか。

図は解析に使用するファイルの中身です

2022年1月26日水曜日 14:05:49 UTC+9 こうだい:
2022-01-29.png

kominami

unread,
Jan 28, 2022, 6:12:38 PM1/28/22
to OpenFOAM
kominamiです。

こうだいさん

master と slave のFluent形式メッシュを作成するフォルダーを別にして、それぞれでOpenFOAM形式にコンバート。
たぶん、masterとslaveを同じフォルダーの置いてあれば、あとからコンバートしたほうで上書きされます。

以上 よろしくお願いいたします。
2022年1月29日土曜日 1:36:54 UTC+9 こうだい:
Message has been deleted

こうだい

unread,
Jan 29, 2022, 7:50:36 AM1/29/22
to OpenFOAM
kominamiさん

mergeMeshをするためにmasterとslaveのファイルを別々に作り、それぞれでfluentMeshToFoamを行いました。
その後、
cp -r <masterのファイル名> <slaveのファイル名>
mergeMeshes <masterのファイル名> <slaveのファイル名>
で実行してみたのですが、masterのファイルのpolyMeshには上書きがされませんでした。

mergeMeshesの使い方がいまいちわからないので、教えていただけないでしょうか

2022年1月29日土曜日 8:12:38 UTC+9 kominami:

sugiyama kazuhisa

unread,
Jan 29, 2022, 9:28:11 PM1/29/22
to open...@googlegroups.com
こうだいさん

 これはメッシュファイルごとにディレクトリーを作成して、各々のディレクトリーで
fluentMeshToFoam で変換した後、計算に用いる方のディレクトリーに戻って、
mergeMeshes すれば、そのディレクトリーの constant/polymesh が統合・更新されます。

mergeMesh の使用例は、
  tutorials/incompressible/overPimpleDyMFoam/cylinder
等の Allrun、 Allrun.pre が参考になります。
 
                                          sgy-kaz



On 2022/01/29 21:49, こうだい wrote:
mergeMeshをするためにmasterとslaveのファイルを別々に作り、それぞれでfluentMeshToFoamを行いました。
その後、
cp -r <masterのファイル名> <slaveのファイル名>
mergeMeshes <masterのファイル名> <slaveのファイル名>
で実行してみたのですが、masterのファイルのpolyMeshには上書きがされませんでした。

mergeMeshesの使い方がいまいちわからないので、教えていただけないでしょうか
2022年1月29日土曜日 8:12:38 UTC+9 kominami:
kominamiです。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/cca1a574-f55e-4dd5-a1c2-a269d425a52cn%40googlegroups.com にアクセスしてください。

田阪巧乃

unread,
Jan 30, 2022, 3:07:38 AM1/30/22
to open...@googlegroups.com
sugiyama kazuhisaさん

cylinderを参考にして、まずpropellerというファイルを作り、masterファイル(プロペラのみのメッシュファイルと0、constant、system)とslaveファイル(プロペラとそれを囲っているボディのメッシュファイル、0、constant、system)を入れました
次に、それぞれのメッシュを変換した後、slaveファイルでmergeMeshes -overwrite master slaveと入力したところ以下のエラーが発生しました。


--> FOAM FATAL ERROR:
cannot find file "./master/system/controlDict"

    From function virtual Foam::autoPtr<Foam::ISstream> Foam::fileOperations::uncollatedFileOperation::readStream(Foam::regIOobject&, const Foam::fileName&, const Foam::word&, bool) const
    in file global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C at line 505.

FOAM exiting


このような場合は、どのようにしたらいいでしょうか。そして、openfoam初心者のためmergeMeshesの使い方を詳しく教えていただけないでしょうか。特に、-overwriteのあとのmasterCase、addcaseにはどのファイルを指定したらいいのかを教えていただきたいです
Allrun等を参考にしましたが、いまいちわからなかったのが現状です。

2022年1月30日(日) 11:28 sugiyama kazuhisa <sugi...@rccm.co.jp>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/fb22ebdd-86f4-1beb-ae7a-3bdaa28b3de7%40rccm.co.jp にアクセスしてください。
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

こうだい

unread,
Jan 30, 2022, 10:44:20 AM1/30/22
to OpenFOAM
現在の進捗状況について報告します。

1.ansysにてslave、masterのメッシュを作成
2.メッシュをそれぞれFoamに変換
3.mergeMeshesを実行($mergeMeshes . ../master -overwrite)
4.changeDictionaryを実行
5.topoSetを実行
6.pimpleDyMFoamを実行

6を実行した際に以下のエラーが発生します。
解決方法を知っている方がいらっしゃいましたら、教えていただきたいです



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

Create mesh for time = 0.000000

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Selecting motion solver: solidBody
Selecting solid-body motion function rotatingMotion
Applying solid body motion to cellZone propellerCellZoneSet


PIMPLE: Operating solver in PISO mode

Reading field p

Reading field U

Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type laminar
Selecting laminar stress model Stokes
No MRF models present

Reading/calculating face velocity Uf

No finite volume options present

Courant Number mean: 0.0103645 max: 4.71635

Starting time loop

Courant Number mean: 0.0103645 max: 4.71635
Time = 0.000050



--> FOAM FATAL ERROR:
Not implemented

    From function Foam::tmp<Foam::Field<Type> > Foam::coupledFvPatchField<Type>::gradientInternalCoeffs() const [with Type = double]
    in file /home/ubuntu/OpenFOAM/OpenFOAM-5.x/src/finiteVolume/lnInclude/coupledFvPatchField.C at line 185.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::error::abort() at ??:?
#2  non-virtual thunk to Foam::coupledFvPatchField<double>::gradientInternalCoeffs() const at ??:?
#3  Foam::fv::gaussLaplacianScheme<double, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
#4  Foam::fv::gaussLaplacianScheme<double, double>::fvmLaplacian(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
#5  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/pimpleDyMFoam"
#6  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/pimpleDyMFoam"
#7  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/pimpleDyMFoam"
#8  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#9  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/pimpleDyMFoam"
Aborted (core dumped)

2022年1月30日日曜日 11:28:11 UTC+9 sgy-k:

kominami

unread,
Feb 2, 2022, 8:39:39 AM2/2/22
to OpenFOAM
こうだいさん

kominamiです。


>1.ansysにてslave、masterのメッシュを作成
>2.メッシュをそれぞれFoamに変換
>3.mergeMeshesを実行($mergeMeshes . ../master -overwrite)
>4.changeDictionaryを実行
>5.topoSetを実行
>6.pimpleDyMFoamを実行

それぞれの操作のあとの状態を順に確認したほうが良いと思います。
paraFoam -builtin というコマンドで、メッシュに多少のエラーがあっても読み込めます。

case\master\polyMesh
case\slave\polyMesh
にOpenFOAM用のメッシュが出来ているという前提、つまり2の終了後まではOKでしょうか?

ここのアーカイブでは消されていますが、届いているメールを読む限り
mergeMeshesコマンド実行には、ダミーのcontrolDictファイルが必要なことは理解できて、3までは終わっているのですか?
mergeMeshesを-overwriteオプション無し実行すると、contolDictのdeltaTの値のフォルダーができて、そのフォルダー内のpolyMeshに新メッシュが有るため、paraFoamで新旧のメッシュの比較がし易いです。

3を実行したあとでも(changeDictionaryの実行前でも)、paraFoam -builtin でメッシュを読み込めたはずだと思うのですが・・・

つまり
1~5までが完璧で6が原因なのか? 途中のエラーを見逃しているのか?
こうだいさんの記載からでは、それが判りません。

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


2022年1月31日月曜日 0:44:20 UTC+9 こうだい:

Hideaki Kominami

unread,
Feb 2, 2022, 8:58:18 AM2/2/22
to open...@googlegroups.com
こうだいさん

kominamiです。

>1.ansysにてslave、masterのメッシュを作成
>2.メッシュをそれぞれFoamに変換
>3.mergeMeshesを実行($mergeMeshes . ../master -overwrite)
>4.changeDictionaryを実行
>5.topoSetを実行
>6.pimpleDyMFoamを実行
そして、5までが完璧で、6の時にエラーが出ているのならば、
並列計算でなくてシングルCoreで実行すると、もう少し詳しいエラーログが表示されるかもしれません。

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



2022年2月2日(水) 22:39 kominami <jce0...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/5c0070ea-d12d-4a57-9606-34159ddcccc5n%40googlegroups.com にアクセスしてください。

田阪巧乃

unread,
Feb 4, 2022, 3:10:36 AM2/4/22
to open...@googlegroups.com
kominamiさん

こんにちは.返信遅くなってしまいすみません.
1~5の過程ごとにparaFoam -builtinで確認しようとしたのですが,開くことが出来ませんでした.
↓以下のコードが出てきます
Created temporary 'slave.foam'
paraview: cannot connect to X server

なので,その都度ParaViewで確認しました.エラーはなかったと思うのですが,6の前にdecomposeParを行うと以下のエラーが出ます.


--> FOAM FATAL ERROR:
Cell 13contains face labels out of range: 4(34 35 36 -1) Max face index = 1052

    From function Foam::polyMesh::polyMesh(const Foam::IOobject&, const Foam::Xfer<Foam::Field<Foam::Vector<double> > >&, const Foam::Xfer<Foam::List<Foam::face> >&, const Foam::Xfer<Foam::List<Foam::cell> >&, bool)
    in file meshes/polyMesh/polyMesh.C at line 652.


FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::error::abort() at ??:?
#2  Foam::polyMesh::polyMesh(Foam::IOobject const&, Foam::Xfer<Foam::Field<Foam::Vector<double> > > const&, Foam::Xfer<Foam::List<Foam::face> > const&, Foam::Xfer<Foam::List<Foam::cell> > const&, bool) at ??:?
#3  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/decomposePar"
#4  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/decomposePar"
#5  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#6  ? in "/opt/openfoam5/platforms/linux64GccDPInt32Opt/bin/decomposePar"
Aborted (core dumped)







シングル計算でpimpleDyMFoamを行うとエラーが表示されずに終わってしまいます


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

Create mesh for time = 0.000000

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Selecting motion solver: solidBody
Selecting solid-body motion function rotatingMotion
Applying solid body motion to cellZone propellerCellZoneSet
Applying solid body motion to entire mesh


PIMPLE: Operating solver in PISO mode

Reading field p

Reading field U

Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type RAS
Selecting RAS turbulence model kOmegaSST
Selecting patchDistMethod meshWave
bounding omega, min: 0 max: 0.4 average: 0.4
RAS
{
    RASModel        kOmegaSST;
    turbulence      on;
    printCoeffs     on;
    alphaK1         0.85;
    alphaK2         1;
    alphaOmega1     0.5;
    alphaOmega2     0.856;
    gamma1          0.555556;
    gamma2          0.44;
    beta1           0.075;
    beta2           0.0828;
    betaStar        0.09;
    a1              0.31;
    b1              1;
    c1              10;
    F3              false;

}

No MRF models present

Reading/calculating face velocity Uf

No finite volume options present

Courant Number mean: 0.010193 max: 0.0505814
↑ここで終了

メッシュにエラーがあるのでしょうか.
また,maseterファイルにはami領域とpropellerのモデルしかありません.salveと同じようにinlet,wall,outletなども用意する必要はあるのでしょうか

解決策が分かる方がいらっしゃいましたら,教えていただけないでしょうか



2022年2月2日(水) 22:58 Hideaki Kominami <jce0...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/CANvsJ5dsqPVYCnPotZ_E6Gx68QtfteHkVM7Yx7tTB05J53Q2Bw%40mail.gmail.com にアクセスしてください。

kominami

unread,
Feb 5, 2022, 8:39:06 PM2/5/22
to OpenFOAM
kominamiです。

こうだいさん

>6の前にdecomposeParを行うと以下のエラーが出ます.

>>--> FOAM FATAL ERROR:
>Cell 13contains face labels out of range: 4(34 35 36 -1) Max face index = 1052
メッシュにエラーがあります。
6の状態に至るまでの1~5の各段階でコマンド入力をしていると思うので、そのログを確認してエラーが無かったのでしょうか?

kominami>1~5までが完璧で6が原因なのか? 途中のエラーを見逃しているのか?
kominami>こうだいさんの記載からでは、それが判りません
という私のコメントの趣旨は、途中経過を確認してくださいということです。

>また,maseterファイルにはami領域とpropellerのモデルしかありません.salveと同じようにinlet,wall,outletなども用意する必要はあるのでしょうか
普通は(暗黙のお約束では)、masterとslaveの関係が逆だと思います。 チュートリアルではslaver領域がmaster領域の中に完全に内包されています。
AMI境界を介して計算途中でField量の値を受け渡すからmasterとslaveが逆でも問題ないようにも思いますが、もしかしたら、これが原因かもしれません。

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


2022年2月4日金曜日 17:10:36 UTC+9 こうだい:

田阪巧乃

unread,
Feb 6, 2022, 11:07:44 PM2/6/22
to open...@googlegroups.com
kominamiさん

お世話になっております.田阪です.

もう一度メッシュを確認してみました.
mergeMeshはうまくいっているようなのですが,changeDicitonaryがうまくいっておりませんでした.これは私の見落としでした.

changeDictionaryが終わった後にcheckMeshを行ったところ以下のエラーが発生していました.

Checking topology...
 ****Problem with boundary patch 1 named ami1 of type cyclicAMI. The patch should start on face no 169920 and the patch specifies 175344.
Possibly consecutive patches have this same problem. Suppressing future warnings.
 ***Boundary definition is in error.
    Cell to face addressing OK.
    Point usage OK.
    Upper triangular ordering OK.
    Face vertices OK.
   *Number of regions: 2
    The mesh has multiple regions which are not connected by any face.
  <<Writing region information to "constant/cellToRegion"
  <<Writing region 0 with 62865 cells to cellSet region0
  <<Writing region 1 with 22850 cells to cellSet region1

分らない点が3つあるのでお伺いしたいのですが,
1.changeDictionaryDictのstartFaceにはpolyMesh内のfacesにある数字を打ち込んだのですが,それであっているのかということ
2.changeDictionaryDictにはami領域のtypeを変える記述しかないが,それで十分なのか
3.regionとはなにか

以上,3点をお伺いしたいです.


2022年2月6日(日) 10:39 kominami <jce0...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/e272f8d9-ab2b-4ce7-bdc3-50c44b44b07cn%40googlegroups.com にアクセスしてください。
changeDictionaryDict
faces

kominami

unread,
Feb 7, 2022, 6:06:21 AM2/7/22
to OpenFOAM
こうだいさん

kominamiです

>1.changeDictionaryDictのstartFaceにはpolyMesh内のfacesにある数字を打ち込んだのですが,それであっているのかということ

nFacesとstartFaceはchaneDictionaryDict内に記述してはいけません。

nFaces:パッチに含まれる面の数
startFace:そのパッチに含まれる面のリストの一番最初の面のID番号
polyMesh\facesが領域全体の面のリストです。
http://penguinitis.g1.xrea.com/study/OpenFOAM/mesh_format/mesh_format.html

chaneDictionaryDict内で記述されないものは、上書き/追記されません。
nFacesとstartFaceは、chaneDictionaryコマンドで書き換える必要はありません。
それで、
もしもnFaces=0だとしたら、その前の段階でのメッシュ生成に失敗していると思います。

>2.changeDictionaryDictにはami領域のtypeを変える記述しかないが,それで十分なのか
typeを変える記述の他に、transformとかtorelanceとやらのAMI特有の設定を追加するための記述も必要です。こうだいさんのファイルには記述されてるので判ってるのだと思います。

>3.regionとはなにか
たぶん、今回の場合は、dynamicMeshDictあたりで指定しているregionのことだと思います。
登場人物はregion0とregion1の2つでしょう? 静止領域と回転領域のことだと思います。
checkMeshコマンドのエラーメッセージの大意は、「静止領域と回転領域とAMI境界が間違っている」です。

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

2022年2月7日月曜日 13:07:44 UTC+9 こうだい:
Message has been deleted

こうだい

unread,
Feb 7, 2022, 8:48:13 AM2/7/22
to OpenFOAM
  kominamiさん

こんばんは.こうだいです.

changeDictionaryの記述を変更した結果,pimpleDyMFoamが正常に実行されました.

しかし,回転していませんでした.
原因として考えられるのが,
1.topoSetDictの間違い
2.dynamicMeshDictの間違い
だと考えております.

1についてお伺いしたいのですが,topoSetDictのinsidePointがどういう意味なのかがわかりません.
これは回転領域内の座標をすべて記述するべきなのでしょうか.現在は参考にしていた方のを真似してtoposetを実行してみたところ
--> FOAM FATAL ERROR:
Did not find (-3.4 0.0001 0.129) in mesh. Mesh bounds are (-0.4 -1.5 -0.4) (0.4 0.7 0.4)

と言われたので, (-0.4 -1.5 -0.4) (0.4 0.7 0.4)を使っているのですが,理解できていない状況です.

ご教授いただけますでしょうか


2022年2月7日月曜日 20:06:21 UTC+9 kominami:
dynamicMeshDict
topoSetDict

Hideaki Kominami

unread,
Feb 8, 2022, 8:18:09 AM2/8/22
to open...@googlegroups.com
kominamiです。

こうだいさん

>Did not find (-3.4 0.0001 0.129) in mesh. Mesh bounds are (-0.4 -1.5 -0.4) (0.4 0.7 0.4)
この英語の通り。
(-3.4 0.0001 0.129)という点がメッシュの中に見つからないと言われているのだから、メッシュの中に納まるような座標にすればい良いです。
(-0.4 -1.5 -0.4) (0.4 0.7 0.4)は、バウンディングボックスの対角線上の頂点の座標です。

2022年2月7日(月) 22:48 こうだい <xyz.th...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/openfoam/38b303c2-4a72-470d-b2c5-53d706ccfd00n%40googlegroups.com にアクセスしてください。

こうだい

unread,
Feb 10, 2022, 11:03:25 PM2/10/22
to OpenFOAM
kominamiさん

お世話になっております.こうだいです.

ありがとうございます.理解することが出来ました.


しかし,現在もプロペラは回っていません

解析結果としては,AMI領域が壁になり,流れが通過していないようです(図1,2に参照)

そして,なにが原因かわからない状態です.プログラムに間違いがない場合はモデルの作り方が間違っていると思うので,プログラムを見てもらえないでしょうか.
おかしな点があれば,ご教授お願いましす


2022年2月8日火曜日 22:18:09 UTC+9 kominami:
nut
dynamicMeshDict
changeDictionaryDict
omega
topoSetDict
epsilon

こうだい

unread,
Feb 10, 2022, 11:07:17 PM2/10/22
to OpenFOAM
図1,2を貼り忘れていました.(左が図1,右が図2)

これは流速がパラメータです.流線が出したのですが,AMI領域から後ろに行ってません
そして,図2のプロペラが青いことから,速度が出ていないことが分かります.
原因がわからないため,ご教授の程,よろしくお願いします


スクリーンショット (96).pngスクリーンショット (97).png

2022年2月11日金曜日 13:03:25 UTC+9 こうだい:

kominami

unread,
Feb 13, 2022, 12:46:04 AM2/13/22
to OpenFOAM
kominamiです。

こうだい
2022/01/21 14:50:09
>こんにちは。私は大学でopenfoamを利用した流体解析を行っています。

こうだい
2022/02/11 13:03:25
>そして,なにが原因かわからない状態です.プログラムに間違いがない場合
>はモデルの作り方が間違っていると思うので,プログラムを見てもらえないでしょうか.
>おかしな点があれば,ご教授お願いましす

さずがに「先生に訊いてください」と思いました。
しかし、もしかしたら、こうだいさんは、OpenFOAMの指導ができる教員が在職されていない大学に通われているのですかね? 先ずは、こうだいさんが在籍されている大学名を教えていただけませんか。もしかしたら、〇〇先生がOpenFOAMを使っていますとかいう情報が、この掲示板に参加されている方たちから入手できるかもしれません。

本当に、OpenFOAMを使われている教員が在職されていない大学ならば、拝見するのは構いませんが、私が使用しているOpenFOAMは版が違うので、その点は御了解ください。

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


2022年2月11日金曜日 13:07:17 UTC+9 こうだい:

OpenFOAM掲示板管理者

unread,
Feb 13, 2022, 11:33:14 AM2/13/22
to OpenFOAM
グループ・掲示板管理者です。

所属先等の個人情報の開示については十分に注意し,
不用意に投稿されることのないよう,お願いいたします。

これからも,安全・安心にグループを活用した情報共有
が継続できるよう,ご協力をお願いいたします。

2022年2月13日日曜日 14:46:04 UTC+9 kominami:

こうだい

unread,
Feb 15, 2022, 7:04:34 AM2/15/22
to OpenFOAM
kominamiさん

お世話になっております.こうだいです.

大学名については,言いたくないので控えさせていただきます.
私の研究室の先生はOpneFoamにはあまり詳しくありません.なので,ここでみなさまに聞いていました.

不快な思いをさせてしまい,申し訳ございません.

こうだい
2022年2月14日月曜日 1:33:14 UTC+9 OpenFOAM掲示板管理者:

Masashi Imano

unread,
Feb 15, 2022, 7:49:13 PM2/15/22
to OpenFOAM
今野です.

問題を切り分けるために,以下のような基本的なチェックをしてみたら如何でしょうか?

1. パッチの境界タイプが正しいかチェックする.

constant/polyMesh/boundary を見て,パッチが想定通り存在するか,
また,それらの境界タイプが正しいか確認する.(特に,cyclicAMI 型のパッチ対)

Ref. 

cyclicAMI型のパッチが無い場合には,変換元のメッシュを確認する.

パッチがあるのに,cyclicAMI型になっていないのであれば,
changeDictionary の実行に失敗して可能性が高いので,そのログを確認して,
system/changeDictionaryDict の設定を見直す.

2. ParaViewでパッチを可視化して,形状が正しいかチェックする.

特にcyclicAMIパッチ対を1個ずつ可視化してみて,
同じ形状であり,どちらも円柱状(円状の側面と底面が2つあるはず)になっているかチェックする.

3. 格子を回転せずに解析してみる

移動格子の設定がおかしいのか,それ以前の問題なのか,問題を切り分けるために,
pimpleFoamを用い,格子を回転せずに解析してみる.
(Plus系ならば,移動格子でもpimpleFoamを使うので,constant/dynamicMeshDict のdynamicFvMeshに staticFvMeshを指定)

ところで,流入風が U= (0 -5 0) ですので,
内部場の初期値も,internalField   uniform (0 -5 0); のほうが,
収束が早いかもしれません(解析領域が良くわかっていないので,的外れならばすみません).

0/U
```
internalField   uniform (5 0 0);

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           uniform (0 -5 0);
    }
```

4.  流れ場を解かずに,格子の移動だけを行い,AMI weightsを確認する.

propeller チュートリアル( tutorials/incompressible/pimpleDyMFoam/propeller )の ./Allrun を実行した際に,
最初のほうで実行される ./Allrun.pre では以下の通りコメントアウトされていますが,
moveDynamicMesh で格子移動時のAMI weights(AMIパッチ対の界面間の重なり具合)がチェックできます.

```
# - test by running moveDynamicMes
#runApplication moveDynamicMesh -checkAMI
```

```
Description
Mesh motion and topological mesh changes utility.
```

コマンドラインで実行する場合には,bash関数である runApplication は使わずに,以下のような形でで実行します.

```bash
moveDynamicMesh -checkAMI > log.moveDynamicMesh
```

これにより,流れ場を解かずに格子のみ移動して,AMI weights をログ( log.moveDynamicMesh )に記録するはずです.

2つの隣接するAMIパッチの界面が完全に重なっている場合,AMI weightsの和は1になりますが,
一般には完全に重ならないので,1から乖離します.

ただし,AMI weightsの和が1よりだいぶ小さくなると不安定になったり,
以下のCFD onlineのスレッドのように解析不能になってしまいます.

lowWeightCorrection で安定性を増す事は可能ですが,
1からの乖離が激しい場合には,本来はcyclicAMIパッチ対の格子自体を見直す必要があります.

lowWeightCorrection

ただし,ここでは恐らくcyclicAMパッチ対の形状は円柱でしょうから,
AMI weightsは1からそれほど乖離しないはずです.

Ref.

5.  移動格子のcellZoneが正しいかチェックする.

移動格子のcellZoneをParaViewで可視化して,想定通りかチェックする.
想定通りでなければ,topoSet の実行に失敗している可能性が高いので,
system/topoSetDict を確認する.

以上,参考になれば幸いです.
がんばってください.

こうだい

unread,
Feb 17, 2022, 2:39:18 AM2/17/22
to OpenFOAM
今野さん

お世話になっております.
こうだいです.

細かいアドバイスありがとうございます.

1つ1つ試していこうと思います.
ありがとうございました.


2022年2月16日水曜日 9:49:13 UTC+9 Masashi Imano:

kominami

unread,
Feb 19, 2022, 11:22:39 PM2/19/22
to OpenFOAM
こうだいさん

kominamiです。

こうだいさんが、Fluentで作ったメッシュを変換するところから出発するとのことでした。CADデータ(STLなど)があるならば、下記のサイトのGUIサービスを使って回転領域に対応したメッシュが簡単に作れると思います。

今野さんが書いている観点で、Xsimで作ったメッシュとエラーが出ている自分のメッシュとを比較すすれば原因が判るのではないでしょうか。

オープンソースの流体解析ソフトウェア OpenFOAM 用の解析設定データを作成できるウェブベース GUI XSim のユーザーマニュアル
https://www.xsim.info/articles/XSim/ja-JP/User-manual.html


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

2022年2月17日木曜日 16:39:18 UTC+9 こうだい:

こうだい

unread,
Feb 24, 2022, 1:49:58 AM2/24/22
to OpenFOAM
kominamiさん

こうだいです
返信遅くなってしまい申し訳ございません.
アドバイスありがとうございます

試してみようと思います


2022年2月20日日曜日 13:22:39 UTC+9 kominami:
Reply all
Reply to author
Forward
0 new messages