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:
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):
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:
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.