SolucionadoErrores y DebuggingOpenCFD·OpenFOAM v2412pimpleFoam

Floating point exception (core dumped) al paso t=0.002 en pimpleFoam

p
pimple_diego94(Ubuntu 24.04 LTS)
Publicado: 28 de enero de 20251890 visitas
19
Buenas noches gente, Estoy corriendo un caso transitorio 2D de un cilindro en un canal con `pimpleFoam` y a las pocas iteraciones me explota con el temido:
text
1
2
3
4
5
6
7
8
9
10
11
Time = 0.002 Courant Number mean: 0.12 max: 4.82 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 PBiCGStab: Solving for Ux, Initial residual = 0.0041, Final residual = 1.2e-06, No Iterations 2 PBiCGStab: Solving for Uy, Initial residual = 0.0089, Final residual = 3.1e-06, No Iterations 2 GAMG: Solving for p, Initial residual = 0.9841, Final residual = 0.0042, No Iterations 50 #0 Foam::error::printStack(Foam::Ostream&) in "/usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/usr/lib/openfoam/openfoam2412/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" #3 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const [1] Floating point exception (core dumped)
El paso temporal lo tengo en `deltaT 0.001;`. He probado a bajarlo a `0.0001` pero me sigue petando al cabo de unos pasos. Alguna idea de por donde empezar a mirar??
#Floating-Point-Exception#pimpleFoam#Courant#GAMG#divergencia

Documentación y guías relacionadas

Consulta la referencia técnica de pimpleFoam y las guías de numerics en nuestro catálogo.

Ver referencia oficial →

1 Respuestas de la comunidad

Respuesta marcada como Solución Aceptada
Resuelve el problema
24
t
turbu_master88· CFD Tech Lab
2140
29 ene 2025, 08:30
Fijate en tu propio log:
text
1
2
Courant Number mean: 0.12 max: 4.82 GAMG: Solving for p, Initial residual = 0.9841, Final residual = 0.0042, No Iterations 50
Hay 2 banderas rojas clarisimas: 1. **Courant max de 4.82** en el segundo 0.002. Tienes una celda diminuta en la malla (seguramente pegada al cilindro) donde la velocidad se dispara. 2. **GAMG llega a 50 iteraciones sin converger** (residual 0.98). La ecuacion de Poisson de presion no esta convergiendo porque la matriz se ha vuelto no definida positiva. ### Como solucionarlo: 1. En `controlDict` activa el paso temporal adaptativo:
text
1
2
3
adjustTimeStep yes; maxCo 0.8; // manten el Courant maximo por debajo de 1 maxDeltaT 0.001;
2. En `fvSolution` bajo el bloque `PIMPLE`, aumenta los correctores y pon relajacion consistente:
text
1
2
3
4
5
6
7
8
PIMPLE { nOuterCorrectors 2; // Bucles no lineales para resolver la conveccion nCorrectors 2; // Bucles de presion PISO nNonOrthogonalCorrectors 1; pRefCell 0; pRefValue 0; }
3. Comprueba tu malla con `checkMesh`. Si tienes celdas con `aspect ratio > 100` o no-ortogonalidad alta, el GAMG puede atascarse. Cambiar el solver de presion en `fvSolution` de `GAMG` a `PCG` con precondicionador `DIC` suele ser mucho mas tolerante al inicio.
pimple_diego94:Era exactamente eso! Active adjustTimeStep con maxCo 0.8 y meti nOuterCorrectors 2 en PIMPLE y ahora corre como la seda sin explotar.29/1/2025

Escribe tu respuesta técnica

Insertar:

Soporta formato Markdown estándar y bloques de código con resaltado de sintaxis.