Reading Time: 14 minutes

tl;dr — Points clés à emporter

  • Divergence et instabilité se répartissent en quatre catégories : Temporal (LFC/Mesh), Spatial (Qualité maille), Limites/Initiales et Paramètres de solveur.
  • Les résidus à eux seuls ne prouvent pas la convergence. Les points de surveillance (forces, températures, vitesses) doivent également être vérifiés. Les résidus peuvent être flattés tandis qu’une variable localisée explose.
  • Diagnostiquez une variable à la fois. Modifiez un seul paramètre, puis réexécutez. Si vous changez deux choses et que la simulation se stabilise, vous ne savez pas quelle solution réellement fonctionné.
  • l’astuce de l’échange de limites (définir temporairement toutes les limites à fixe ou par défaut et à réexécuter) est le moyen le plus rapide d’isoler si la divergence provient des conditions aux limites ou de la stabilité du pas de temps.
  • Les valeurs propres négatives dans la FEA signalent souvent des erreurs de signalisation, et non une erreur de solveur. Le correctif correct est une méthode de longueur d’arc (RIK) ou une dynamique implicite, et non une tolérance plus stricte.

Pourquoi les simulations divergent – et pourquoi le diagnostic est important

Chaque simulation numérique a la même signature terrifiante : à un certain pas de temps ou à une itération, les valeurs explosent vers NAN ou Infinity, le solveur cesse de progresser et vous restez à regarder une fenêtre de terminal pleine de messages Inf.

Si vous redémarrez immédiatement avec un pas de temps plus petit et que la simulation s’exécute bien, vous avez eu de la chance. Si vous modifiez quelque chose et que la simulation plante toujours, vous déboguez maintenant avec moins d’informations qu’auparavant.

Le problème n’est pas que les simulations ne sont pas fiables. Ils suivent des règles mathématiques bien comprises. Le problème est que lorsqu’une simulation diverge, le message d’erreur ne vous dit presque jamais ce qui s’est mal passé – il vous indique simplement que quelque chose s’est mal passé.

Comprendre la taxonomie de la défaillance numérique est la première étape vers le diagnostic systématique. Les défaillances numériques se divisent en quatre catégories de cause racine :

  1. Instabilité temporelle — Le pas de temps est trop grand, la condition CFL est violée ou le solveur sort de sa zone de stabilité.
  2. Pathologie spatiale (mesh) – cellules hautement asymétriques, rapports d’aspect extrêmes ou volumes négatifs créent des gradients non physiques.
  3. Erreurs de limites ou de condition initiale — Des pressions contradictoires, des valeurs de référence manquantes ou des valeurs de départ incohérentes créent des contradictions numériques.
  4. Problèmes de configuration des solveur — mauvais schémas de discrétisation, facteurs de sous-relaxation agressifs ou tolérances inappropriées.

Lorsque vous savez à quelle catégorie appartient votre défaillance, le diagnostic devient un processus d’élimination. Lorsque vous ne le faites pas, vous finissez par deviner – et deviner, c’est la façon dont vous perdez des heures de calcul.


Les quatre catégories de cause racine

1. Instabilité temporelle

L’instabilité temporelle est la cause la plus fréquente de divergence dans les simulations dépendant du temps. Le principal coupable est la condition CFL (Courant-Friedrichs-Lewy), qui stipule que pour un schéma explicite, le pas de temps doit satisfaire :

$$
c = frac{u delta t}{delta x} leq 1
$$

Quand $c > 1 $, les informations se propagent plus rapidement que le schéma numérique ne peut le suivre et les erreurs se compliquent de manière exponentielle. Ce n’est pas une nuisance numérique mineure, c’est une contrainte mathématique fondamentale.

Que rechercher :

  • La simulation diverge immédiatement après les premiers pas de temps
  • Le message d’erreur fait référence à « Time pas trop petit » ou à « Limitation de stabilité »
  • Les mêmes conditions de maillage et de limites convergent lorsque vous réduisez le pas de temps

Quoi réparer :

  • Réduisez le pas de temps jusqu’à ce que le nombre de LCF descende en dessous de 0,5 comme point de départ sûr
  • Utilisez une stratégie adaptative de pas de temps qui évolue en fonction des nombres de cours locaux
  • Vérifier la cohérence de la propriété des matériaux – Un fluide à haute vitesse dans un milieu dense peut avoir une limite de LFC beaucoup plus stricte que prévu

2. Pathologie spatiale (maillage)

La qualité du maillage est la deuxième cause de divergence la plus fréquente. Contrairement à l’instabilité temporelle, qui se manifeste généralement tôt, la pathologie du maillage peut entraîner des divergences à n’importe quel stade, en particulier dans les simulations non linéaires ou multiphysiques où le maillage interagit avec le solveur de manière itérative.

Indicateurs de problèmes :

  • asymétrie des cellules élevées (> 0,9 sur une échelle de 0 à 1)
  • Rapports d’aspect extrêmes (> 100:1)
  • Volumes de cellules négatives (l’erreur la plus grave)

La divergence générée par les mailles est particulièrement insidieuse car le maillage est généralement correct pour votre physique – c’est uniquement la discrétisation numérique qui est malheureuse. Un maillage qui semble bien dans un pré-processeur peut avoir des cellules avec des rapports d’aspect extrêmes dans les régions de changement de gradient rapide, provoquant des termes de diffusion non physiques.

Quoi réparer :

  • Inspectez les mesures de qualité du maillage avant la première exécution, pas après
  • Utilisez un tableau de bord de qualité de maillage (la plupart des pré-processeurs CFD en incluent un) et vérifiez l’asymétrie < ; 0,7, rapport d’aspect < ; 50 pour la plupart des solveurs
  • Affiner ou restructurer le maillage dans les régions à gradient élevé
  • N’ignorez jamais les avertissements de volume de cellules négatives – ce sont des impossibilités mathématiques que le solveur ne peut résoudre.

3. Erreurs de limites et de conditions initiales

Les erreurs de condition aux limites sont la catégorie où les chercheurs expérimentés commettent la même erreur que les débutants : La configuration semble correcte, mais la physique se contredit.

Envisagez un scénario de CFD courant. Vous réglez une entrée de pression et une sortie de pression. Les deux ont des valeurs de pression fixes. Le solveur a besoin d’une pression de référence pour établir le champ de pression absolue. Sans référence de pression, le solveur essaie d’équilibrer deux contraintes incompatibles – il diverge.

De même, dans les simulations structurelles, une condition aux limites physiquement impossible – comme la contrainte d’un nœud qui doit également se déplacer librement – crée une contradiction que le solveur ne peut pas résoudre.

Erreurs de conditions limites communes :

  • Valeurs de pression contradictoires à l’entrée et à la sortie (pression de référence manquante)
  • Reflux à une prise (le solveur attend du type de flux BC)
  • Valeurs de référence manquantes (température, pression, potentiel électrique)
  • Conditions initiales incohérentes (la vitesse initiale ne correspond pas à la vitesse aux limites)

Quoi réparer :

  • Vérifiez chaque condition limite par rapport à la physique – le type de limite correspond-il à la direction d’écoulement attendue ?
  • Ajouter un nœud de référence de pression lorsque vous travaillez avec des limites de pression
  • S’assurer que les conditions initiales sont conformes aux conditions aux limites et à l’état physique attendu

4. Problèmes de configuration du solveur

La catégorie des paramètres du solveur est celle où vous pouvez déstabiliser par inadvertance une parfaite simulation en utilisant le mauvais outil pour le travail. Cette catégorie comprend :

  • Schémas de discrétisation incorrects : le contrevent du deuxième ordre sur un maillage grossier produit des oscillations ; Les schémas de premier ordre sont plus stables mais moins précis
  • Une sous-relaxation agressive — les facteurs inférieurs à 0,1 peuvent entraîner une divergence ; Les valeurs typiques sont de 0,1 à 0,7 selon l’équation
  • Tolérances inappropriées — Les tolérances trop serrées provoquent des itérations excessives ; Tolérances trop lâches Acceptez des résultats non physiques
  • Type de solveur erroné — Utilisation d’un solveur basé sur la pression pour un flux incompressible vs un solveur basé sur la densité pour un flux compressible

Quoi réparer :

  • Commencez par la discrétisation du premier ordre, puis montez au second ordre une fois que la solution se stabilise
  • Utilisez initialement les facteurs de sous-relaxation par défaut, puis réglez si nécessaire
  • Vérifiez le type de solveur par rapport à votre régime physique (compressible vs incompressible, turbulent vs laminaire)

Flux de travail de diagnostic

Lorsque votre simulation diverge, ne modifiez pas plusieurs paramètres à la fois. Il s’agit du principe de débogage le plus important dans les CFD, FEA et tous les solveurs numériques.

Suivez ce flux de travail :

Étape 1 : Accélérez la simulation plus rapidement

Si votre simulation s’exécute pour 1 000 itérations avant de diverger, vous perdez du temps. Au lieu de cela, commencez par utiliser un pas de temps plus important ou moins d’itérations par étape pour forcer la défaillance rapidement. Cela vous donne une boucle plus serrée pour le diagnostic.

Étape 2 : Isolez l’échec

Identifiez la variable diverge en premier : vitesse, pression, température, force ? Utilisez la surveillance résiduelle et les points de surveillance (quantités spécifiques que vous suivez à chaque itération). La variable qui diverge en premier vous indique quelle équation et quelle partie du domaine est problématique.

Information critique : Les résidus à eux seuls peuvent cacher la divergence. Comme le souligne le guide de dépannage CFD de Leap Australia, un solveur peut signaler les résidus convergés tandis que les points de surveillance (forces, vitesses, températures) continuent de dériver. Vérifiez toujours les points de surveillance aux côtés des résidus.

Étape 3 : Changez une chose, vérifiez, puis modifiez-en une autre

Après avoir identifié la catégorie d’échec, ne modifiez qu’un seul paramètre. Réexécutez la simulation. S’il se stabilise, vous avez trouvé un correctif, mais vous ne savez pas si c’était la bonne solution. Documentez ce que vous avez changé et le résultat.

Ensuite, ne modifiez qu’un deuxième réglage. Répétez. Cette approche contrôlée vous permet d’isoler ce qui compte réellement.

Étape 4 : Vérifiez avec les bons diagnostics

Différents types de simulation nécessitent différents outils de diagnostic :

pour CFD :

  • Surveiller les résidus, les points de surveillance et les profils de vitesse/pression
  • Utilisez la visualisation du contour résiduel pour voir où les résidus se regroupent dans l’espace (activer le mode expert : solve set expert yes yes yes, puis exécuter une itération : solve iterate 1)
  • Vérifiez la continuité et l’équilibre de l’élan aux limites du domaine

Pour FEA :

  • Inspecter les parcelles de convergence de Newton-Raphson
  • Recherchez des avertissements de valeurs propres négatives (qui indiquent souvent une erreur de flambage plutôt qu’une erreur de solveur)
  • Vérifiez les courbes de force-déflexion pour un comportement non monotone
  • Utilisez des méthodes de longueur d’arc (RIK) pour les problèmes de dérapage ou de flambage

Pour le code numérique général :

  • Exécuter un test unitaire avec une solution fabriquée (méthode des solutions manufacturées, MMS)
  • Rechercher des erreurs de signe sur les termes de diffusion ou de convection – la cause la plus simple de divergence catastrophique est souvent un signe moins mal placé
  • Retracer NAN ou INF jusqu’au temps exact où ils apparaissent pour la première fois

études de cas

Cas 1 : l’erreur de signe unique

Un chercheur a débogué une simulation d’advection-diffusion a révélé que la solution divergeait complètement – les valeurs de vitesse oscillaient et augmentaient de manière exponentielle. Le maillage était fin, le nombre de CFL était conservateur et les conditions aux limites étaient standard.

La cause première était une erreur de signe unique dans le terme de diffusion. La discrétisation avait +D au lieu de -D, inversant effectivement la direction de diffusion. Au lieu d’amortir les perturbations, l’équation les amplifiait.

Leçon : Vérifiez d’abord les signes de discrétisation. Avant de vérifier la qualité du maillage ou les paramètres du solveur, confirmez que la forme mathématique de vos équations est correcte. Une erreur de signe dans un terme de diffusion est numériquement équivalente à la diffusion négative – la simulation diverge par conception.

Cas 2 : Échange de conditions aux limites (l’astuce de diagnostic FDTD)

Dans une simulation FDTD, un utilisateur a signalé que la modification des conditions aux limites a corrigé la divergence. Le workflow de diagnostic de la documentation ANSYS FDTD illustre pourquoi :

Étape 1 : Définissez temporairement toutes les conditions aux limites sur « Métal » (fixe) et réexécutez la simulation. Si la simulation devient stable, la divergence est liée au PML.

Étape 2 : Si la simulation diverge encore avec des limites de métal, la divergence est due à la stabilité de $dt$ – le pas de temps est trop important pour que le solveur puisse le gérer.

Cette astuce d’échange de limites est un flux de travail de diagnostic pratique qui réduit immédiatement l’espace de recherche. Au lieu de vérifier simultanément le maillage, les paramètres du solveur, les propriétés des matériaux et les conditions aux limites, vous isolez les conditions aux limites en tant que catégorie et corrigez la cause réelle.

Cas 3 : Diagnostic des contours résiduels

Le flux de travail expert TUI de Leap Australia démontre une technique de visualisation puissante. Au lieu d’examiner les valeurs résiduelles scalaires, vous générez des tracés de contour résiduels et des iso-surfaces qui montrent exactement où dans le cluster des résidus élevés de domaine.

Dans un cas, les résidus étaient plats à 10 $^{-3}$ alors que la simulation divergeait réellement dans une région localisée. Les contours résiduels présentaient des valeurs extrêmes près d’une limite d’entrée où la qualité du maillage était médiocre (asymétrie 0,85). Le résidu scalaire masquait le problème localisé car il était moyenné sur l’ensemble du domaine.

Leçon : Visualisez toujours les résidus dans l’espace, pas seulement numériquement. Les tracés de contour révèlent d’où vient la divergence.

Cas 4 : Raideur non monotone dans la FEA

L’étude de cas non linéaire FEA d’Enterfea couvre un mode de défaillance courant. Une simulation structurelle a divergé au point d’équilibre où la rigidité a fortement chuté. Un solveur contrôlé par la force ne peut pas suivre le point d’équilibre – il oscille et échoue.

Le correctif passait du contrôle de la force au contrôle de déplacement ou à l’aide d’une méthode de longueur d’arc (RIKS). Ce n’est pas un problème de réglage du solveur – c’est un décalage fondamental entre la stratégie de solveur et la physique.

Leçon : Pour les problèmes non linéaires avec le snap-through, le flambage ou le contact, utilisez des méthodes de contrôle de la longueur d’arc ou du déplacement. Les solveurs contrôlés par la force échouent aux points d’équilibre où la rigidité est non monotone.


Pièges courants – Ce qui conduit à la divergence

Ces erreurs sont bien documentées dans les CFD, FEA et les solveurs numériques généraux. Ils partagent tous une caractéristique : La simulation semble correcte jusqu’à ce qu’elle diverge.

1. Modification simultanée de plusieurs paramètres

Lorsque vous modifiez le pas de temps, le schéma de discrétisation et le facteur de sous-relaxation en une seule fois et que la simulation se stabilise, vous n’avez aucune idée du changement qui a réellement fonctionné. Changez toujours un paramètre à la fois. C’est la règle d’or du débogage numérique.

2. Faire confiance aux résidus aveuglément

Les résidus peuvent être plats tandis qu’une variable localisée diverge. Comme le avertit la liste de contrôle Leap Australia, vous devez également inspecter les points de surveillance – des quantités spécifiques telles que les forces, les vitesses et les températures. Les résidus mesurent l’erreur d’équation, et non l’exactitude physique de votre solution.

3. Utilisation de schémas de second ordre sur des maillages grossiers

La discrétisation du second ordre produit des oscillations sur des mailles grossières. Commencez par la discrétisation du premier ordre, stabilisez la solution, puis passez au second ordre. Ce n’est pas théorique – c’est un flux de travail pratique utilisé par des praticiens expérimentés de la CFD.

4. Ignorer les volumes cellulaires négatifs

Les volumes cellulaires négatifs sont des impossibilités mathématiques. Ils se produisent lorsqu’une cellule maillée est inversée ou effondrée. Si votre pré-processeur ou votre générateur de maillage signale des volumes négatifs, corrigez le maillage avant de tenter une simulation. Aucun solveur ne peut résoudre des volumes négatifs.

5. En supposant que les valeurs propres négatives sont des erreurs de solveurs

Dans ABAQUS et d’autres solveurs FEA, les messages persistants à valeur proprement élevée indiquent souvent un comportement de flambage, et non une instabilité numérique. Le correctif correct est une méthode de longueur d’arc (RIKS) ou un solveur de dynamique implicite – pas une tolérance plus étroite ou un algorithme de solveur différent.


Outils et techniques de diagnostic

Surveillance résiduelle

La plupart des solveurs rapportent des valeurs résiduelles pour chaque équation (continuité, momentum, énergie, turbulence). Surveiller les résidus sur les itérations. Un résidu bien convergé diminue généralement de 3 à 4 ordres de grandeur, de 10 $^{-1}$ à 10 $^{-4}$ ou moins.

Important : Si les résidus chutent initialement mais puis le plateau sans atteindre la cible, la simulation peut avoir convergé numériquement sans atteindre la précision physique. Vérifiez les points de surveillance pour ce cas.

Surveiller les points

Les points de surveillance sont des quantités spécifiques que vous suivez à chaque itération. Dans le CFD, ce sont généralement des forces (soulèvement, traînée), des températures, des vitesses ou des pressions à des endroits spécifiques. Dans FEA, ce sont des forces de réaction, des déplacements ou des pressions de contact.

Les points de surveillance révèlent une divergence que les résidus masquent. Comme le souligne le guide Leap Australia, une simulation avec des résidus plats peut toujours avoir des points de surveillance divergents. Exécutez toujours les résidus et surveillez les points ensemble.

Diagnostic des solveurs

Différents solveurs fournissent différents outils de diagnostic :

  • Plots de convergence de Newton-Raphson (FEA) — Montrer si le solveur progresse vers l’équilibre ou l’oscillation
  • Suivi des valeurs propres (FEA) — Les valeurs propres négatives indiquent un contact de flambage ou un contact instable
  • Diagnostics de TreeDepth et R-Hat (MMCMC/Bayesian Solvers) — Identifier les transitions divergentes dans le Monte Carlo hamiltonien
  • Surveillance de la BFMI (Information basale) (Stan/MCMC) — Détecte les régions de courbure pathologique

Visualisation du contour résiduel

Activez le mode expert dans votre solveur et exécutez une seule itération. La plupart des solveurs généreront des tracés de contour résiduels montrant où les résidus se regroupent dans l’espace. Cela révèle la région du domaine d’origine de la divergence – une limite d’entrée, une zone de transition de maillage ou une région à gradient élevé localisé.

Nan et Inf Traçage

Identifiez le pas de temps ou l’itération exact où les valeurs NAN ou INF apparaissent pour la première fois. Remontez ensuite à l’étape précédente et examinez les valeurs qui ont conduit à la NAN. Ceci est particulièrement utile pour déterminer si la divergence est spatiale (une région du domaine) ou temporelle (le solveur sortant de sa région de stabilité).


Quand escalader

Parfois, une simulation diverge malgré le maillage, les conditions aux limites et les paramètres du solveur. Dans ces cas, le problème peut être :

  • Impossibilité physique — Les conditions aux limites ou les conditions initiales décrivent un scénario qui est physiquement impossible pour les hypothèses du solveur (par exemple, flux incompressible avec des matériaux compressibles)
  • Limitation du solveur — Le solveur ne peut pas gérer le régime physique spécifique (p. ex., flux multiphasé avec des rapports de densité extrêmes)
  • Bug au niveau du code : une erreur de discrétisation, une erreur de signature ou un terme manquant dans votre implémentation

Quand escalader :

  • Vous avez vérifié la qualité du maillage, les conditions aux limites, le pas de temps et les paramètres du solveur
  • La simulation diverge même avec un pas de temps conservateur et une discrétisation du premier ordre
  • Les points de surveillance divergent tandis que les résidus convergent (ou vice versa)
  • Vous soupçonnez une erreur de signe de discrétisation mais vous ne le trouvez pas

Dans ces cas, envisagez de contacter le support de solveur, de consulter la littérature pour des cas similaires ou d’utiliser la méthode des solutions fabriquées pour vérifier votre code de discrétisation ligne par ligne.


Résumé et étapes suivantes

Le débogage des simulations numériques ne consiste pas à trouver le bon paramètre, il s’agit de suivre un flux de travail de diagnostic systématique. Les quatre catégories de causes racines (conditions temporelles, spatiales, limites/initiales, paramètres de solveur) vous donnent une taxonomie pour réduire l’espace de recherche. L’astuce d’échange de limites, la visualisation de contour résiduelle et l’inspection des points de surveillance vous donnent des outils pratiques que les praticiens expérimentés utilisent pour isoler la cause réelle.

Vos prochaines étapes :

  1. Lorsque votre simulation diverge, commencez par forcer plus rapidement une défaillance (pas de temps plus important, moins d’itérations)
  2. Isoler quelle variable diverge en premier à l’aide de points de surveillance
  3. Modifier un paramètre à la fois, vérifier et documenter
  4. Utilisez la visualisation du contour résiduel pour trouver les origines de la divergence dans l’espace
  5. Pour la FEA non linéaire, passez aux méthodes de longueur d’arc lorsque le contrôle de la force échoue aux points d’équilibre

Si vous travaillez spécifiquement avec des problèmes difficiles, le guide sur problèmes raides et solveurs rigides couvre quand et pourquoi les méthodes explicites échouent. Pour les flux de travail de débogage de codes généraux au-delà du diagnostic numérique, consultez le python de débogage pour le code scientifique.


Guides connexes


Liste de contrôle pratique : ce qu’il faut essayer en premier

Utilisez cette liste de contrôle lorsque votre simulation diverge. Travaillez à chaque étape avant de passer à la suivante.

  • [ ] Vérifier la qualité du maillage — asymétrique < 0,7, rapport d’aspect < ; 50, pas de volumes négatifs
  • [ ] Vérifier le numéro CFL — Réduisez le pas de temps jusqu’à $c < 0,5 $
  • [ ] Vérifier les conditions aux limites — cohérence d’entrée/sortie, pression de référence, direction d’écoulement
  • [ ] Définir les conditions initiales — Assurez-vous qu’elles correspondent aux conditions aux limites et à l’état physique attendu
  • [ ] Utiliser la discrétisation du premier ordre – monter au second ordre après la stabilisation
  • [ ] Vérifiez les facteurs de sous-relaxation — utilisez les valeurs par défaut, puis réglez si nécessaire
  • [ ] Surveiller les résidus et les points de surveillance – les résidus plats ne garantissent pas la convergence
  • [ ] Générer des tracés de contour résiduels — Visualisez où les résidus cluster dans l’espace
  • [ ] Pour FEA : cochez les valeurs propres — les valeurs propres négatives indiquent souvent une erreur de flambage, et non une erreur de solveur.
  • [ ] Pour FEA : passer à la méthode de longueur d’arc (RIKS) si le solveur contrôlé par la force échoue à l’équilibre
  • [ ] Vérifier les signes de discrétisation – Une erreur de signe unique peut entraîner une divergence catastrophique
  • [ ] ne modifiez qu’un seul réglage à la fois — toujours, jamais deux simultanément

Très bas : La divergence est diagnostiquée. Les quatre catégories (conditions temporelles, spatiales, limites/initiales, paramètres du solveur) fournissent un cadre. Les techniques (swap de frontière, contours résiduels, points de surveillance, un changement à la fois) fournissent les outils. Utilisez-les systématiquement et vous trouverez la cause profonde, et non seulement masquer le symptôme.


Sources externes

Les sources externes suivantes ont été consultées lors de la recherche et sont recommandées pour une lecture plus approfondie :