Stabilité du solveur OFET : erreurs liées au maillage, à la convergence et à la simulation.
Cette section explique comment diagnostiquer les problèmes de stabilité et de convergence du solveur dans les simulations 2D d’OFET. Les simulations unidimensionnelles sont généralement stables et rapides, mais à mesure que la dimensionnalité augmente, passant de 1D à 2D et 3D, le nombre d’équations couplées et de termes de liaison augmente rapidement. Par conséquent, un mauvais choix de maillage, des valeurs de mobilité irréalistes, des contacts mal définis ou des pas de polarisation trop importants peuvent entraîner l’échec de la convergence du solveur de dérive-diffusion.
Dans cette section, nous allons délibérément mettre en place quelques configurations simples afin de provoquer une divergence, puis nous analyserons les raisons de ce phénomène et la manière de le corriger. En reproduisant vous-même ces modes d’échec courants, vous apprendrez à reconnaître les symptômes et à appliquer les solutions appropriées (par exemple, en ajustant le maillage, en réduisant la taille du pas de biais ou en modérant les paramètres extrêmes des matériaux) afin d’obtenir une solution stable.
1. Instabilité du solveur due à une mobilité anormalement faible.
Dans de nombreux cas, les problèmes de convergence sont dus à des valeurs d’entrée qui ne correspondent pas à la réalité physique. Pour illustrer ce point, nous définissons intentionnellement la mobilité des porteurs à 0 et nous analysons les erreurs qui en résultent. Bien entendu, la mobilité n’est jamais réellement nulle dans un matériau réel ; elle a toujours une valeur finie. Cependant, cet exemple montre ce qui se passe lorsque le solveur reçoit un paramètre irréaliste. La mobilité est configurée dans l’éditeur des paramètres électriques OFET. Si la valeur est définie en dehors d’une plage physiquement pertinente, les équations de dérive-diffusion peuvent devenir mal conditionnées ou ne pas converger.
Ouvrez l’éditeur des paramètres électriques (fenêtre principale → onglet Appareil) et définissez la mobilité sur 0, comme indiqué dans ??. Lancez ensuite la simulation. Vous devriez voir un écran d’erreur semblable à ??, avec deux rectangles rouges : un rectangle vertical autour du résumé des résidus et un rectangle horizontal près du message d’erreur.
Si vous regardez la boîte rouge verticale, vous pouvez voir f()=2.54e2, suivi d’autres lignes où f() est très élevé (par exemple, 1e15, 1e5, 1e8, 1e7). Ici, f() représente l’erreur résiduelle du solveur : il s’agit d’une mesure de la manière dont les équations couplées sont actuellement satisfaites. Idéalement, l’erreur résiduelle du solveur devrait être exactement nulle, mais en pratique, cela ne peut jamais être atteint. Une erreur résiduelle comprise entre 1e−10 et 1e−8 indique une très bonne convergence, tandis que des valeurs proches de 1e−1 restent acceptables. En revanche, des erreurs résiduelles de l’ordre de la centaine (par exemple, 2.54e2), surtout lorsqu’elles sont accompagnées de valeurs de composant aussi élevées que 1e15, sont un signe clair que le solveur a du mal et que le système est devenu instable.
La boîte rouge horizontale indique généralement la raison pour laquelle l’exécution s’arrête : Holes asking for 3e5 but only defined in range [min, max]. Cela signifie que le niveau quasi-Fermi calculé a dépassé la plage de valeurs préétablie. Avant de démarrer, le modèle précalcule des relations telles que le niveau quasi-Fermi en fonction de la densité de porteurs sur une large plage d’énergies, une plage beaucoup plus étendue que ce que l’on pourrait normalement attendre dans un dispositif. Lorsque le solveur devient instable, le modèle peut demander des valeurs irréalistes qui dépassent largement cette plage ; à ce moment-là, le solveur ne peut plus calculer les quantités nécessaires et s’arrête.
En résumé, en attribuant une valeur non physique à la mobilité (μ = 0), nous avons forcé les équations à adopter un régime qui n’a aucun sens physique, ce qui entraîne l’échec de la méthode numérique : des résidus importants, suivis d’une demande de valeurs en dehors des tables précalculées, puis un plantage. Il est important de noter que ce résultat n’est pas une faiblesse du modèle ni un bug logiciel. En introduisant des paramètres non physiques, le solveur est amené à fonctionner dans un régime où aucune solution mathématique ou physiquement valide n’existe, et par conséquent, il ne peut pas fournir un résultat pertinent.
2. Instabilité du solveur due à une mobilité excessive et irréaliste.
Dans cet exemple, nous avons fixé la mobilité des porteurs à μ = 1×106 m²·V⁻¹·s⁻¹. Il s’agit d’une valeur délibérément non physique pour un modèle de dérive-diffusion des semi-conducteurs : une valeur de cette ampleur serait plutôt associée à des régimes de conduction métallique qu’à un transport par saut ou par bande dans les semi-conducteurs organiques ou classiques. En pratique, vous n’utiliserez pas une valeur aussi élevée pour les simulations d’OFET.
Si vous exécutez la simulation avec cette configuration, vous pourrez constater que le solveur a du mal à converger. Dans l’affichage des résidus (la fenêtre qui affiche f()), vous verrez apparaître des erreurs extrêmement importantes, par exemple 1e24, 1e19, 1e21, qui ne diminuent pas. Il est normal que les résidus soient élevés au cours des premières itérations, le solveur cherchant un état stable, mais ils devraient rapidement se stabiliser à des valeurs faibles. Des résidus constamment élevés indiquent clairement que le système est devenu numériquement instable ou physiquement irréaliste en raison des paramètres choisis.
En résumé : évitez d’utiliser des valeurs de mobilité excessivement élevées et irréalistes. Des coefficients de transport excessifs rendent le système d’équations aux dérivées partielles très rigide, ce qui entraîne une mauvaise condition et une non-convergence. Utilisez des valeurs de μ physiquement raisonnables pour votre système de matériaux et relancez la simulation avec des pas de polarisation modérés afin de rétablir un comportement stable.
3. Conception défectueuse des dispositifs et problèmes de connexion non résolus.
Dans cet exemple, nous ouvrons l’éditeur de contacts et définissons la largeur du contact de la source à une valeur très faible (voir ??), soit un micron. Au premier abord, cela peut ne pas sembler poser de problème, mais cela crée une difficulté subtile : la simulation est basée sur un maillage aux différences finies, où des grandeurs telles que le champ électrique et la densité de porteurs sont calculées uniquement aux points du maillage définis.
Si vous examinez l’éditeur de maillage électrique (que vous trouverez dans l’onglet « Électricité »), vous remarquerez que ce contact ultra-fin d’un micron se situe entre les points du maillage (voir ??). Par conséquent, le contact n’est pas correctement pris en compte par la grille de différences finies et n’est jamais appliqué correctement à la structure du dispositif. Cela crée une incohérence entre la géométrie définie et le maillage numérique, ce qui empêche la simulation de converger.
Pour résoudre ce problème, vous pouvez soit augmenter l’épaisseur du contact afin qu’il chevauche au moins un point du maillage, soit augmenter la densité du maillage (c’est-à-dire ajouter davantage de points) dans la grille de différences finies, de manière à ce que le contact soit correctement pris en compte.
4. Densité du maillage, convergence et raffinement excessif.
Une idée préconçue courante lorsqu’on commence à utiliser des modèles aux différences finies est que l’augmentation du nombre de points de maillage permet d’obtenir automatiquement des résultats plus précis. On raisonne souvent ainsi : « cinq points de maillage ne peuvent donner que des résultats médiocres, mais un millier de points doit donner d’excellents résultats ». En réalité, ce n’est pas le cas.
OghmaNano utilise une méthode de discrétisation appelée le schéma de Scharfetter–Gummel, qui permet d’interpoler avec précision des grandeurs telles que la densité de porteurs et le potentiel entre les points du maillage. Le solveur ne se contente pas de supposer un comportement linéaire entre les nœuds ; il utilise plutôt une approche d’ajustement exponentiel qui prend en compte la physique du transport avec une grande précision, même sur des maillages relativement grossiers. Cela signifie que vous pouvez obtenir une bonne précision avec un nombre étonnamment faible de points.
Augmenter la densité du maillage ne se limite pas à allonger le temps de calcul ; cela peut en réalité réduire la stabilité et la précision. Un maillage plus fin génère un système d’équations plus vaste, ce qui rend le problème numérique plus difficile à résoudre. Par conséquent, la matrice devient plus rigide, les résidus peuvent augmenter et le solveur peut avoir du mal à converger.
Il existe toujours un compromis à trouver entre la modélisation précise des phénomènes physiques, la limitation du temps de simulation et la réduction des erreurs numériques inutiles. Les illustrations ci-dessous l’expliquent : avec 100 points de maillage répartis sur l’ensemble du dispositif, le solveur affiche initialement des résidus très importants (par exemple, 1e6, 1e5). Ce n’est qu’après de nombreuses itérations que les valeurs se stabilisent et atteignent des niveaux acceptables (f()). Cette instabilité est due au fait que le maillage est trop fin, ce qui rend le système difficile à gérer pour le solveur.
👉 Prochaines étapes :
- Retour à introduction à l’électronique organique pour une vue d’ensemble plus large du sujet.