CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   Exception en virgule flottante (https://www.cfd-online.com/Forums/openfoam/83942-exception-en-virgule-flottante.html)

taalf January 16, 2011 09:13

[RESOLVED] Exception en virgule flottante
 
Hello everybody,

I'm proud to post my first comment in this forum :). I don't speak English so good so I apologize for every English mistakes :D.

And, to show how much I am motivated, I will put pictures in my post : I set a good example, isn't it :D ?

Ok, I'm a false beginner in OpenFOAM that I study for my Final Project and it happens something that I don't understand and that I very would like to solve.

My problem is that when I make a coarse blockMesh geometry for a own icoFoam case, it works, but when I use a finer mesh, it makes an "Exception en virgule flottante" during calculation after very few first iterations.

Here is my coarse case (a 2D case with 2 "empty" boundary conditions and only one cell in the z direction) :

http://www.cfd-online.com/Forums/%3C...coarseMesh.jpghttp://img4.hostingpics.net/pics/860420coarseMesh.jpg

with, in my transportProperties file :

Code:

transportModel  Newtonian;

nu              nu [0 2 -1 0 0 0 0] 1e-06;

and, in my controlDict file :

Code:

application    icoFoam;

startFrom      startTime;

startTime      0;

stopAt          endTime;

endTime        1;

deltaT          0.001;

writeControl    timeStep;

writeInterval  100;



and the results :

http://img4.hostingpics.net/pics/255946firstResult.jpg

Pretty good, isn't it ?

Then, I tried to use a finer mesh by only modifying the simpleGrading values in the blockMeshDict:

http://img4.hostingpics.net/pics/634018fineMesh.jpg

but this happens when I launch icoFoam after deleting the old time directories (0 0.1 0.2 etc.) :

Code:

Time = 0.011

Courant Number mean: 1.01727e+34 max: 7.44368e+37
DILUPBiCG:  Solving for Ux, Initial residual = 5.77125e-09, Final residual = 5.77125e-09, No Iterations 0
DILUPBiCG:  Solving for Uy, Initial residual = 2.41172e-09, Final residual = 2.41172e-09, No Iterations 0
#0  Foam::error:: printStack(Foam::Ostream&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#1  Foam::sigFpe::sigFpeHandler(int) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#2  Uninterpreted:
#3  Foam:: DICPreconditioner::calcReciprocalD(Foam::Field<double>&, Foam::lduMatrix const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#4  Foam:: DICPreconditioner:: DICPreconditioner(Foam::lduMatrix::solver const&, Foam::dictionary const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#5  Foam::lduMatrix:: preconditioner::addsymMatrixConstructorToTable<Foam:: DICPreconditioner>::New(Foam::lduMatrix::solver const&, Foam::dictionary const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#6  Foam::lduMatrix:: preconditioner::New(Foam::lduMatrix::solver const&, Foam::dictionary const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#7  Foam::PCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so"
#8  Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libfiniteVolume.so"
#9 
 in "/opt/openfoam171/applications/bin/linuxGccDPOpt/icoFoam"
#10  __libc_start_main in "/lib/libc.so.6"
#11 
 in "/opt/openfoam171/applications/bin/linuxGccDPOpt/icoFoam"
Exception en point flottant

Even if I reduce the time between iterations :

Code:

deltaT          0.0000001;
it stops after few iterations with the same error.

My extraordinary happiness when I computed my first case totally collapsed when I realized I wasn't able to redo it with fine mesh !

Does somebody have an idea ? ;)

olivierG January 17, 2011 06:47

hello,

Check your Co number:1e34 max !
My guess i a bad boundary condition: give boundary + fvSchemes for more info.
regards,
olivier

taalf January 17, 2011 07:44

Hello,

Yes, the curent number is awesome ! But I think it is due to a solver problem because my theoretical curent number should be very low, as the max velocity is around 0.025 m/s and the size of my cells is about 0.025 m, so :

C0 = dt * |U| / dx => C0 = 0.001 * 0.025 / 0.025 = 0.001 = C0

Here are my files :

constant/polyMesh/blockMeshDict :

Code:

/*--------------------------------*- C++ -*----------------------------------*\                                   
| =========                |                                                |                                   
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |                                   
|  \\    /  O peration    | Version:  1.7.1                                |                                   
|  \\  /    A nd          | Web:      http://www.OpenFOAM.com              |                                   
|    \\/    M anipulation  |                                                |                                   
\*---------------------------------------------------------------------------*/                                   
FoamFile                                   
{                                   
    version    2.0;                                   
    format      ascii;                                   
    class      dictionary;                                   
    object      blockMeshDict;                                   
}                                   
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //                                   
                                   
convertToMeters    1    ;                           
                                   
vertices (                                   
(    0    0    0    )    //    0           
(    2    0    0    )    //    1           
(    3    0    0    )    //    2           
(    3    0.5    0    )    //    3           
(    2    0.5    0    )    //    4           
(    0    0.5    0    )    //    5           
(    0    1    0    )    //    6           
(    2    1    0    )    //    7           
(    0    0    0.1    )    //    8           
(    2    0    0.1    )    //    9           
(    3    0    0.1    )    //    10           
(    3    0.5    0.1    )    //    11           
(    2    0.5    0.1    )    //    12           
(    0    0.5    0.1    )    //    13           
(    0    1    0.1    )    //    14           
(    2    1    0.1    )    //    15           
                                   
);                                   
                                   
blocks (                                   
hex (    0    1    4    5    8    9    12    13    )
(    80    20    1    )                   
simpleGrading (    1    1    1    )                   
hex (    5    4    7    6    13    12    15    14    )
(    80    20    1    )                   
simpleGrading (    1    1    1    )                   
hex (    1    2    3    4    9    10    11    12    )
(    40    20    1    )                   
simpleGrading (    1    1    1    )                   
);                                   
                                   
Edges (                                   
);                                   
                                   
patches (                                   
empty                                   
frontAndBack (                                   
(    0    1    4    5    )               
(    5    4    7    6    )               
(    1    2    3    4    )               
(    8    9    12    13    )               
(    13    12    15    14    )               
(    9    10    11    12    )               
)                                   
wall                                   
walls (                                   
(    0    8    9    1    )               
(    1    9    10    2    )               
(    6    7    15    14    )               
(    4    3    11    12    )               
(    12    15    7    4    )               
)                                   
patch                                   
inlet (                                   
(    0    5    13    8    )               
(    5    6    14    13    )               
)                                   
patch                                   
outlet (                                   
(    10    11    3    2    )               
)                                   
);                                   
                                   
mergePatchPairs (                                   
);                                   
                                   
// ************************************************************************* //

0/p:

Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.4                                  |
|  \\  /    A nd          | Web:      http://www.openfoam.org              |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/

// Field Dictionary

FoamFile
{
    version        2.0;
    format          ascii;

    root            "/home/william";
    case            "default";
    instance        "0";
    local          "";

    class          volScalarField;
    object          p;
}

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


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

internalField  uniform 0;

boundaryField
{
    walls         
    {
        type            zeroGradient;
    }

    frontAndBack         
    {
        type            empty;
    }

    inlet         
    {
        type            zeroGradient;
    }
   
    outlet         
    {
        type            fixedValue;
        value            uniform 0;
    }
}


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

0/U:

Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.4                                  |
|  \\  /    A nd          | Web:      http://www.openfoam.org              |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/

// Field Dictionary

FoamFile
{
    version        2.0;
    format          ascii;

    root            "/home/william";
    case            "default";
    instance        "0";
    local          "";

    class          volVectorField;
    object          U;
}

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


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

internalField  uniform (0.01 0 0);

boundaryField
{
    walls         
    {
        type            fixedValue;
        value          uniform (0 0 0);
    }
   
    frontAndBack         
    {
        type            empty;
    }
   

    inlet         
    {
        type            fixedValue;
        value          uniform (0.01 0 0);
    }

    outlet         
    {
        type            zeroGradient;
    }
}


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

system/fvSchemes :

Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.4                                  |
|  \\  /    A nd          | Web:      http://www.openfoam.org              |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/

// FoamX Case Dictionary.

FoamFile
{
    version        2.0;
    format          ascii;

    root            "/home/william";
    case            "default";
    instance        "system";
    local          "";

    class          dictionary;
    object          fvSchemes;
}

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

ddtSchemes
{
    default        steadyState;
}

gradSchemes
{
    default        Gauss linear;
    grad(p)        Gauss linear;
    grad(U)        Gauss linear;
}

divSchemes
{
    default        Gauss upwind;
    div(phi,U)      Gauss upwind;
    div(phi,k)      Gauss upwind;
    div(phi,epsilon) Gauss upwind;
    div(phi,R)      Gauss upwind;
    div(R)          Gauss linear;
    div(phi,nuTilda) Gauss upwind;
    div((nuEff*dev(grad(U).T()))) Gauss linear;
}

laplacianSchemes
{
    default        none;
    laplacian(nu,U) Gauss linear corrected;
    laplacian(nuEff,U) Gauss linear corrected;
    laplacian((1|A(U)),p) Gauss linear corrected;
    laplacian(DkEff,k) Gauss linear corrected;
    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
    laplacian(DREff,R) Gauss linear corrected;
    laplacian(DnuTildaEff,nuTilda) Gauss linear corrected;
}

interpolationSchemes
{
    default        linear;
    interpolate(U)  linear;
}

snGradSchemes
{
    default        corrected;
}

fluxRequired
{
    default        no;
    p;
}


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

And, just in case :

constant/TransportProperties:

Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.4                                  |
|  \\  /    A nd          | Web:      http://www.openfoam.org              |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/

// FoamX Case Dictionary.

FoamFile
{
    version        2.0;
    format          ascii;

    root            "/home/william";
    case            "default";
    instance        "constant";
    local          "";

    class          dictionary;
    object          transportProperties;
}

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

transportModel  Newtonian;

nu              nu [0 2 -1 0 0 0 0] 1e-06;

CrossPowerLawCoeffs
{
    nu0            nu0 [0 2 -1 0 0 0 0] 1.48e-05;
    nuInf          nuInf [0 2 -1 0 0 0 0] 1.48e-05;
    m              m [0 0 1 0 0 0 0] 1.225;
    n              n [0 0 0 0 0 0 0] 1;
}

BirdCarreauCoeffs
{
    nu0            nu0 [0 2 -1 0 0 0 0] 1e-06;
    nuInf          nuInf [0 2 -1 0 0 0 0] 1e-06;
    k              k [0 0 1 0 0 0 0] 0;
    n              n [0 0 0 0 0 0 0] 1;
}


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

system/controlDict:

Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.4                                  |
|  \\  /    A nd          | Web:      http://www.openfoam.org              |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/

// FoamX Case Dictionary.

FoamFile
{
    version        2.0;
    format          ascii;

    root            "/home/william";
    case            "default";
    instance        "system";
    local          "";

    class          dictionary;
    object          controlDict;
}

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

application    icoFoam;

startFrom      startTime;

startTime      0;

stopAt          endTime;

endTime        1;

deltaT          0.001;

writeControl    timeStep;

writeInterval  100;

purgeWrite      0;

writeFormat    ascii;

writePrecision  6;

writeCompression uncompressed;

timeFormat      general;

timePrecision  6;

graphFormat    raw;

runTimeModifiable yes;

functions     
(
);


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

system/fvSolution:

Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.4                                  |
|  \\  /    A nd          | Web:      http://www.openfoam.org              |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/

// FoamX Case Dictionary.

FoamFile
{
    version        2.0;
    format          ascii;

    root            "/home/william";
    case            "default";
    instance        "system";
    local          "";

    class          dictionary;
    object          fvSolution;
}

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

solvers
{
    p
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance      1e-06;
        relTol          0;
    }

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

    epsilon        PBiCG
    {
        tolerance      1e-05;
        relTol          0;
        preconditioner  DILU;
    };

    R              PBiCG
    {
        tolerance      1e-05;
        relTol          0;
        preconditioner  DILU;
    };

    nuTilda        PBiCG
    {
        tolerance      1e-05;
        relTol          0;
        preconditioner  DILU;
    };
}

PISO
{
    nCorrectors    2;
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue      0;
}

SIMPLE
{
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue      0;
}

relaxationFactors
{
    p              0.2;
    U              0.2;
    k              0.7;
    epsilon        0.7;
    R              0.7;
    nuTilda        0.7;
}


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


Chris Lucas January 17, 2011 08:08

Hi,

you use a transient solver with a steady state ddt scheme.

Either use a different ddt scheme (e.g. Euler) or a steadyState solver (e.g. simpleFoam)

Regards,
Christian

taalf January 17, 2011 08:25

Hello,

Thank you very much, guys ! It works perfectly !

:)


All times are GMT -4. The time now is 00:35.