Saltar a contenido

Divergencia del Solucionador y Estabilidad Numérica

Los solucionadores simbólicos basados en IA física pueden sufrir inestabilidades numéricas si las condiciones iniciales no son físicas, la calidad de la malla es deficiente o el paso de tiempo es excesivamente grande. Esta guía proporciona pautas para diagnosticar y solucionar problemas de divergencia en Shardian.


1. Monitorización de Residuos

Una simulación CFD numéricamente estable debe mostrar una reducción monótona de los residuos. Los residuos de velocidad (\(U_x, U_y, U_z\)), presión (\(p\)) y variables turbulentas (\(k, \omega\)) deben situarse por debajo de \(10^{-5}\) o \(10^{-6}\).

Time = 150
DILUPBiCGStab:  Solving for Ux, Initial residual = 4.21e-05, Final residual = 1.02e-06, No Iterations 2
DILUPBiCGStab:  Solving for Uy, Initial residual = 8.11e-05, Final residual = 1.45e-06, No Iterations 2
GAMG:  Solving for p, Initial residual = 3.82e-04, Final residual = 6.12e-06, No Iterations 5

Si los residuos fluctúan o comienzan a crecer exponencialmente: 1. Aero: Comprueba el valor máximo local de nut. Si supera la viscosidad de entrada en más de 5 órdenes de magnitud, significa que las correcciones del modelo zonal están generando una viscosidad turbulenta irreal. 2. Atmos: Revisa las salidas de error de WRF (rsl.error.0000) y busca velocidades verticales extremas:

Max w-velocity =  35.2 m/s at grid cell (45, 12, 10)
Si la velocidad vertical supera los \(50\text{ m/s}\) en zonas no convectivas, el acoplamiento de capa límite ha entrado en divergencia.


2. Pautas de Estabilidad para OpenFOAM (Shardian Aero)

Si la simulación en OpenFOAM aborta con un error de coma flotante (floating point exception - sigFpe), aplica los siguientes ajustes:

A. Factores de Sub-Relajación

Reduce los factores de relajación en el archivo system/fvSolution durante la fase inicial del cálculo:

relaxationFactors
{
    fields
    {
        p               0.2; // Estándar: 0.3
    }
    equations
    {
        U               0.5; // Estándar: 0.7
        k               0.5; // Estándar: 0.7
        omega           0.5; // Estándar: 0.7
    }
}

Una vez estabilizados los residuos (por ejemplo, tras 200 iteraciones), puedes restaurar los factores de relajación habituales (0.3 para presión, 0.7 para velocidad y turbulencia).

B. Acotación de Esquemas de Turbulencia

Asegúrate de utilizar esquemas de discretización acotados (bounded) para las variables de turbulencia en system/fvSchemes:

divSchemes
{
    default         none;
    div(phi,U)      bounded Gauss linearUpwind grad(U);
    div(phi,k)      bounded Gauss upwind;
    div(phi,omega)  bounded Gauss upwind;
}

3. Pautas de Estabilidad para WRF (Shardian Atmos)

En el modelado meteorológico de mesoescala, la estabilidad está regida por la condición de Courant-Friedrichs-Lewy (CFL):

\[\text{CFL} = \frac{u \Delta t}{\Delta x} \le 1\]

Si Shardian Atmos experimenta divergencia (usualmente indicada como cfl error o w-wind exceeding limits en los logs):

A. Reducir el Paso de Tiempo (\(\Delta t\))

La regla general recomendada para WRF es configurar el paso de tiempo en segundos a 4 veces el espaciado de malla en kilómetros:

\[\Delta t \approx 4 \cdot \Delta x_{\text{km}}\]

Por ejemplo, para una malla de \(\Delta x = 3\text{ km}\), el paso de tiempo recomendado es \(\Delta t = 12\text{ s}\). En entornos de gran inestabilidad térmica, reduce este factor a 3 veces el espaciado de malla (\(\Delta t = 9\text{ s}\)).

B. Configurar una Transición Suave en Vertical

Evita cambios bruscos en el espaciado vertical de los niveles del modelo. Asegura una tasa de estiramiento suave (menor a 1.2) al definir los niveles \(\eta\) (eta_levels) en tu namelist.input.