sonicFoam forwardStep现实边界条件会导致错误:: printStack(Foam :: Ostream&)

时间:2018-08-27 12:05:45

标签: openfoam

我正在尝试使用更现实的边界条件来修改sonicFoam forwardStep example

0/p中:

//internalField   uniform 1;
internalField   uniform 100000;

boundaryField
{
inlet
{
    type            fixedValue;
    //value           uniform 1;
    value           uniform 100000;
}

0/p中:

//internalField   uniform 1;
internalField   uniform 300;

boundaryField
{
    inlet
    {
        type            fixedValue;
        //value           uniform 1;
        value           uniform 300;
    }

但这会导致严重错误:

  

时间= 0.002

     

Courant Number平均数:0.24881 max:0.25   对角线:求解rho,初始残差= 0,最终残差= 0,   无迭代0 PIMPLE:迭代1 smoothSolver:求解Ux,   初始残差= 1,最终残差= 9.33263e-16,无迭代1   smoothSolver:求解Uy,初始残差= 1,最终残差=   6.21609e-17,无迭代1平滑求解器:求解e,初始残差= 1,最终残差= 2.96112e-06,无迭代3   smoothSolver:求解p,初始残差= 1,最终残差=   9.16163e-07,对角线无迭代22:求解rho,初始残差= 0,最终残差= 0,无迭代0时间步长连续性   错误:本地总和= 0.000363585,全局= 0.000346824,累积=   0.000346824 PIMPLE:迭代2平滑求解器:求解Ux,初始残差= 0.0109637,最终残差= 3.46971e-14,无迭代1   smoothSolver:求解Uy,初始残差= 0.0462988,最终   残差= 1.90246e-17,无迭代1平滑求解器:求解e,   初始残差= 0.999979,最终残差= 1.12177e-06,否   迭代3   0 Foam :: error :: printStack(Foam :: Ostream&)位于??:?   1泡沫:: sigFpe :: sigHandler(int)位于??:?   2?在“ /lib64/libc.so.6”中   3 Foam :: sqrt(Foam :: Field&,Foam :: UList const&)位于??:?   4 Foam :: sqrt(Foam :: tmp> const&)在??:?   5 Foam :: waveTransmissiveFvPatchField :: advectionSpeed()常量位于??:?   6 Fo ?? :: advectiveFvPatchField :: updateCoeffs()在??:?   7 Fo ?? :: GeometricField :: Boundary :: updateCoeffs()位于??:?   8 Foam :: fvMatrix :: fvMatrix(Foam :: GeometricField const&,Foam :: dimensionSet const&)   在 ??:?   9 Foam :: tmp> Foam :: fv :: optionList :: operator()(Foam :: GeometricField const&,   泡沫:: GeometricField&,   在??:?的Foam :: word const&)   10?在 ??:?   11“ /lib64/libc.so.6”中的__libc_start_main   12?在 ??:?浮点异常

如果您能帮助我知道问题出在哪里以及如何解决,我将不胜感激。

关键字: Floating point exception__libc_start_mainFoam::error::printStack(Foam::Ostream&)

1 个答案:

答案 0 :(得分:1)

有很多不同的问题都可能导致这种错误。不幸的是,OpenFOAM错误消息不是很具体,并且没有太多文档显示如何系统地解决这些错误消息。

在这种特定情况下,由于修改后的初始压力和入口压力值与原始出口值之间的巨大差异而导致出现错误,我忘记对此进行相应的修改。修改:

outlet
    {
        type            waveTransmissive;
        field           p;
        psi             thermo:psi;
        gamma           1.4;
        fieldInf        1;
        lInf            3;
        value           uniform 1;
    }

outlet
    {
        type            waveTransmissive;
        field           p;
        psi             thermo:psi;
        gamma           1.4;
        fieldInf        100000;
        lInf            3;
        value           uniform 100000;
    }

或者简单地

outlet
{
    type            fixedValue;
    value           uniform 100000;
}

解决了问题,求解器成功收敛。用经验法则来简化边界条件,将deltaT文件中的controlDict最小化可以减少发生此问题的可能性。