sonicFoam forwardStep реалистичные граничные условия приводят к ошибке::printStack(Foam::Ostream&)

Я пытаюсь изменить sonicFoam пример forwardStep с более реалистичными граничными условиями.

In 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

Среднее значение числа Куранта: 0,24881 макс.: 0,25 по диагонали: решение для ро, начальная невязка = 0, конечная невязка = 0, без итераций 0 Без итераций 1 smoothSolver: решение для Uy, начальный остаток = 1, конечный остаток = 6,21609e-17, без итераций 1 smoothSolver: решение для e, начальный остаток = 1, конечный остаток = 2,96112e-06, без итераций 3 smoothSolver: решение для p, начальная невязка = 1, конечная невязка = 9,16163e-07, без итераций 22 диагональ: решение для ро, начальная невязка = 0, конечная невязка = 0, без итераций 0 ошибки непрерывности шага по времени: сумма локальная = 0,000363585, глобальная = 0,000346824, кумулятивный = 0,000346824 PIMPLE: итерация 2 smoothSolver: решение для Ux, начальная невязка = 0,0109637, конечная невязка = 3,46971e-14, без итераций Нет итераций 1 smoothSolver: S вычисление для e, начальный остаток = 0,999979, конечный остаток = 1,12177e-06, без итераций 3 0 Foam::error::printStack(Foam::Ostream&) at ??:? 1 Foam::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() const at ??:? 6 Foam::advectiveFvPatchField::updateCoeffs() в ??:? 7 Foam::GeometricField::Boundary::updateCoeffs() в ??:? 8 Foam::fvMatrix::fvMatrix(Foam::GeometricField const&, Foam::dimensionSet const&) в ??:? 9 Foam::tmp > Foam::fv::optionList::operator()(Foam::GeometricField const&, Foam::GeometricField&, Foam::word const&) в ??:? 10 ? в ??:? 11 __libc_start_main в "/lib64/libc.so.6" 12 ? в ??:? Исключение с плавающей запятой

Я был бы признателен, если бы вы могли помочь мне узнать, что не так и как я могу это решить.

Ключевые слова: Floating point exception, __libc_start_main, Foam::error::printStack(Foam::Ostream&),


person Foad    schedule 27.08.2018    source источник


Ответы (1)


Существует дюжина различных проблем, которые могут вызвать такую ​​​​ошибку. К сожалению, сообщения об ошибках OpenFOAM не очень специфичны, и существует не так много документации, показывающей, как эти сообщения об ошибках могут быть систематически разрешены.

В этом конкретном случае ошибка возникает из-за огромной разницы между измененным начальным значением и значением давления на входе и исходным значением на выходе, которое я забыл соответствующим образом изменить. Изменение:

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

to

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 файле, может уменьшить вероятность этой проблемы.

person Foad    schedule 27.08.2018