Реальные граничные условия sonicFoam forwardStep приводят к ошибке :: printStack (Foam :: Ostream &) - PullRequest
0 голосов
/ 27 августа 2018

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

В 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 диагональ: решение для rho, начальный остаток = 0, конечный остаток = 0, Нет итераций 0 PIMPLE: итерация 1 smoothSolver: решение для Ux, Начальный остаток = 1, Конечный остаток = 9.33263e-16, Нет итераций 1 smoothSolver: решение для Uy, начальный остаток = 1, конечный остаток = 6.21609e-17, без итераций 1 smoothSolver: решение для 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 smoothSolver: решение для Ux, начальный остаток = 0.0109637, конечный остаток = 3.46971e-14, без итераций 1 smoothSolver: решение для Uy, начальный остаток = 0.0462988, финал остаток = 1.90246e-17, без итераций 1 smoothSolver: решение для e, Начальный остаток = 0,999979, Конечный остаток = 1,12177e-06, Нет Итерации 3 0 Foam :: error :: printStack (Foam :: Ostream &) at ??:? 1 Foam :: sigFpe :: sigHandler (int) at ??:? 2? в "/lib64/libc.so.6" 3 Foam :: sqrt (Foam :: Field &, Foam :: UList const &) at ??:? 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 &, Пена :: GeometricField &, Пена :: слово const &) в ??:? 10? в ??:? 11 __libc_start_main в "/lib64/libc.so.6" 12? в ??:? Исключение с плавающей точкой

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

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

1 Ответ

0 голосов
/ 27 августа 2018

Существует десятка различных проблем, которые могут вызвать такую ​​ошибку. К сожалению, сообщения об ошибках 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 может уменьшить вероятность этой проблемы.

...