数值风云

OF模拟波浪与刚性植物的作用时波面振荡问题

大家新春快乐!
在模拟波浪与刚性植物相互作用时遇到了波面振荡的问题,想请教一下各位大佬是什么原因导致。
模拟草图如下,将植物概化为直径0.01m的圆柱,水深0.15m,波高0.05m,G1~7是波高测点,在水池的中心线上,波浪自左向右传播。左侧边界为速度造波,右侧边界为主动式消波,湍流模型参考文献选择了k-ω SST,侧面用了cyclic边界。


之前植物区域长度为0.545m时的模拟结果较好,但是植物区域变长为1.635之后就只在G4、G5处发生了波面振荡,如下图

我把完整算例以及部分设置文件贴在下面,希望各位大佬帮忙指点一下 :grin:
boundary

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

7
(
    inlet
    {
        type            patch;
        nFaces          150;
        startFace       9636710;
    }
    outlet
    {
        type            patch;
        nFaces          150;
        startFace       9636860;
    }
    ground
    {
        type            wall;
        inGroups        1(wall);
        nFaces          25852;
        startFace       9637010;
    }
    top
    {
        type            patch;
        nFaces          25852;
        startFace       9662862;
    }
    front
    {
        type            cyclic;
        inGroups        1(cyclic);
        nFaces          117640;
        startFace       9688714;
        matchTolerance  0.0001;
        transform       unknown;
        neighbourPatch  back;
    }
    back
    {
        type            cyclic;
        inGroups        1(cyclic);
        nFaces          117640;
        startFace       9806354;
        matchTolerance  0.0001;
        transform       unknown;
        neighbourPatch  front;
    }
    CTHREE  //vegetation
    {
        type            wall;
        inGroups        1(wall);
        nFaces          256800;
        startFace       9923994;
    }
)

k

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

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

internalField   uniform 0.0001;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            zeroGradient;
    }

    ground
    {
        type            kqRWallFunction;
        value           $internalField;
    }

    front
    {
        type            cyclic;
    }

    back
    {
        type            cyclic;
    }

    top
    {
        type            inletOutlet;
        inletValue      $internalField;
        value           $internalField;
    }

    ".*"
    {
        type            kqRWallFunction;
        value           $internalField;
    }
}

omega

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

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

internalField   uniform 0.0001;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            zeroGradient;
    }

    ground
    {
        type            omegaWallFunction;
        value           $internalField;
    }

    front
    {
        type            cyclic;
    }

    back
    {
        type            cyclic;
    }

    top
    {
        type            inletOutlet;
        inletValue      $internalField;
        value           $internalField;
    }

    ".*"
    {
        type            omegaWallFunction;
        value           $internalField;
    }
}

nut

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

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

internalField   uniform 0;

boundaryField
{
    inlet
    {
        type            calculated;
        value           uniform 0;
    }

    outlet
    {
        type            calculated;
        value           uniform 0;
    }

    front
    {
        type            cyclic;
    }

    back
    {
        type            cyclic;
    }

    top
    {
        type            calculated;
        value           uniform 0;
    }

    ground
    {
        type            nutkWallFunction;
        value           uniform 0;
    }

    ".*"
    {
        type            nutkWallFunction;
        value           uniform 0;
    }
}

fvSolution

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

solvers
{
    "alpha.water.*"
    {
        nAlphaCorr      1;
        nAlphaSubCycles 3;
        cAlpha          1;

        MULESCorr       yes;
        nLimiterIter    3;

        solver          smoothSolver;
        smoother        symGaussSeidel;
        tolerance       1e-8;
        relTol          0;
    }

    "pcorr.*"
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance       1e-6;
        relTol          0;
    }

    p_rgh
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance       1e-6;
        relTol          0.1;
    }

    p_rghFinal
    {
        solver          GAMG;
        smoother        DIC;
        tolerance       1e-7;
        relTol          0;
    }

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

    UFinal
    {
        solver          PBiCG;
        preconditioner  DILU;
        tolerance       1e-6;
        relTol          0;
    }

    "(U|k|omega).*"
    {
        solver          smoothSolver;
        smoother        symGaussSeidel;
        nSweeps         1;
        tolerance       1e-6;
        relTol          0.1;
    };
}

PIMPLE
{
    momentumPredictor no;
    nCorrectors     2;
    nNonOrthogonalCorrectors 0;
}

relaxationFactors
{
    equations
    {
        ".*" 1;
    }
}

fvSchemes

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

ddtSchemes
{
    default         Euler;
}

gradSchemes
{
    default         Gauss linear;
}

divSchemes
{
    default             none;
    div(rhoPhi,U)   Gauss linearUpwind grad(U);
    div(phi,alpha)  Gauss vanLeer;
    div(phirb,alpha) Gauss linear;
    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
    "div\(phi,(k|omega)\)"      Gauss upwind;
}

laplacianSchemes
{
    default         Gauss linear orthogonal;
}

interpolationSchemes
{
    default         linear;
}

snGradSchemes
{
    default         corrected;//orthogonal;
}

 wallDist
 {
     method          meshWave;
 }

算例文件
taC3.zip (64.6 KB)