FIPY est un cadre basé sur Python pour résoudre les équations aux dérivées partielles (PDE) à l’aide de la méthode du volume fini. Si vous débutez sur Fipy, le moyen le plus rapide de « l’obtenir » est d’exécuter un petit exemple de bout en bout et de comprendre de quoi chaque élément de code est responsable.
Dans ce didacticiel, vous créerez une simulation de diffusion 1D minimale (pensez à la chaleur qui se répand à travers une tige ou à un pic de concentration au fil du temps). À la fin, vous connaîtrez le flux de travail de base de Fipy : Mesh → Variable → Équation → Boucle temporelle → Visualisation, et vous pourrez modifier en toute sécurité les paramètres pour voir comment le modèle réagit.
Avant de commencer : ce dont vous avez besoin
Vous aurez besoin de Python installé et d’un environnement de travail capable d’exécuter des packages scientifiques. FIPY s’appuie généralement sur des bibliothèques numériques et de traçage courantes.
Liste de vérification de l’environnement rapide
- Python installé (une version moderne est recommandée)
- Un environnement virtuel (recommandé) pour garder les dépendances propres
- FIPY installé avec ses dépendances numériques
- matplotlib disponible pour le traçage
Si vous suivez cela dans un ordinateur portable, c’est très bien aussi, soyez cohérent dans l’exécution des cellules dans l’ordre.
Ce que nous construisons : un simple modèle de diffusion 1D
La diffusion est l’un des meilleurs « premier exemples » car il est intuitif et stable lorsqu’il est configuré correctement. Vous commencez par un champ (température ou concentration) qui a une caractéristique pointue, comme un pas ou une pointe, et la diffusion lisse progressivement.
Conceptuellement, vous devez vous attendre à ce que la courbe s’aplatit avec le temps. Si le pic ne change pas du tout, le modèle n’avance pas ; Si la courbe devient bruyante ou explose, votre pas de temps ou votre configuration doit probablement être ajusté.
Les blocs de construction Fipy (expliqués)
1) Mesh : votre domaine de simulation
Un maillage définit la géométrie et la résolution de votre problème. En 1D, il s’agit d’une ligne divisée en petites cellules. Plus de cellules signifie généralement de meilleurs détails, mais aussi plus de calculs.
nx: nombre de cellulesdx: Taille de la cellule (étape spatiale)- La longueur du domaine est à peu près
nx * dx
2) Variable : le champ pour lequel vous résolvez
Dans FIPY, le champ inconnu est souvent stocké sous la forme d’un CellVariable (valeurs aux centres de cellules). Vous lui donnez une valeur initiale (votre condition de départ), puis Fipy la met à jour au fur et à mesure que l’équation est résolue au fil du temps.
3) Conditions aux limites : ce qui se passe sur les bords
Les conditions aux limites sont essentielles car les PDE ont besoin de « règles » aux limites du domaine. Deux modèles communs :
- Valeur fixe (Dirichlet) : le champ est épinglé à une constante sur une arête.
- No-Flux (Neumann) : Rien ne passe par la limite (défaut courant pour les démos de diffusion).
Pour une première exécution, il est souvent plus facile d’utiliser des limites sans flux, de sorte que la solution évolue sans forcer supplémentaire depuis les bords.
4) Équation : comment Fipy représente une PDE
Fipy construit des PDE à l’aide d' »objets à terme ». Pour la diffusion dans le temps, la structure ressemble souvent à :
TransientTerm() == DiffusionTerm(coeff=D)
Cela se lit comme suit : « Le changement d’heure est égal à la diffusion. » Le coefficient de diffusion D contrôle la rapidité avec laquelle le champ se lisse.
5) Pas de temps : faire avancer la solution
Vous choisissez un pas de temps dt, puis résolvez l’équation à plusieurs reprises. Un bon dt est suffisamment grand pour que vous voyiez des progrès, mais pas si importants que les résultats deviennent instables ou inexacts.
6) Visualisation : voir ce qui s’est passé
Vous pouvez visualiser avec les outils de visionneuse de Fipy ou avec MatPlotlib. Pour un premier exemple, MatPlotlib est simple et portable, et il est également facile d’enregistrer les tracés.
Votre premier exemple FIPY en état de marche (1D Diffusion)
Vous trouverez ci-dessous un exemple minimal complet que vous pouvez exécuter en tant que script. Il construit une grille 1D, crée un champ avec une condition initiale « étape », puis résout la diffusion dans le temps et trace les instantanés.
Essayez ces 6 petits changements pour apprendre plus rapidement
- Augmenter la résolution : modifiez
nxde 200 à 400 et voir comment la courbe semble plus lisse. - Modifiez la vitesse de diffusion : définissez
Dsur 0,1 (plus lent) ou 5,0 (plus rapide) et comparez. - Modifiez la forme initiale : remplacez l’étape par un « bosse » en définissant une région étroite sur 1,0.
- Capturez plus de snapshots : ajoutez plus d’indices d’étape dans
capture_atpour voir la transition en détail. - Exécutez plus longtemps : augmentez
stepset confirmez que le profil se rapproche d’un état plus uniforme. - Enregistrez le tracé : ajoutez
plt.savefig("diffusion.png", dpi=200)avantplt.show().
Dépannage : problèmes courants de « première exécution »
La ligne ne change pas
- Vous pouvez capturer des instantanés avant l’étape de résolution et ne pas capturer les instants ultérieurs.
stepsest peut-être trop faible oudtpeut être extrêmement petit.- Si vous êtes dans un ordinateur portable, assurez-vous de relancer l’intégralité du bloc-notes de haut en bas.
La solution semble instable ou bruyante
- Essayez de diminuer
dt(par exemple, de1e-4à5e-5). - Réduire
Dou augmenter la résolution spatiale (nx) pour améliorer le comportement.
Importer des erreurs
- Confirmez que FIPY est installé dans l’environnement que vous exécutez.
- Vérifiez que vos bibliothèques de traçage/numérique sont installées et importées correctement.
Étapes suivantes après votre premier exemple
Une fois que vous pouvez exécuter Diffusion en toute confiance, vous pouvez augmenter rapidement une dimension à la fois :
- Déplacez-vous vers un maillage 2D et visualisez un champ sous forme d’image.
- Ajoutez un terme source au modèle de chauffage, d’injection ou de production.
- Essayez la convection-diffusion pour simuler le transport avec le flux.
- Expérimentez avec les balayages de paramètres et les contrôles de validation de base.
Conclusion
Votre premier exemple de Fipy concerne moins la physique que l’apprentissage du flux de travail. Si vous comprenez comment le maillage, les variables, les équations et le pas de temps se connectent, vous pouvez créer de nombreux modèles PDE différents en échangeant des termes et en ajustant les conditions.
Le meilleur coup suivant est d’apporter un petit changement, comme D, nx, ou la condition initiale, réexécutez-le et expliquez-vous ce qui a changé et pourquoi. Cette boucle de « Modifier → exécuter → interpréter » est l’endroit où Fipy commence à se sentir naturel.