🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_309cvmn_309.py
Version 1.0.0
Date de création 09/03/2026
Auteur / Demandeur IA Générée (Gemini)
Objectif principal Simuler et visualiser en temps réel l’écoulement d’un fluide autour d’un obstacle cylindrique (Allée de von Kármán) via la méthode Boltzmann sur réseau (LBM).
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script implémente une simulation de mécanique des fluides numérique (CFD) utilisant le modèle D2Q9 (2 dimensions, 9 vecteurs de vitesse). Il modélise le passage d’un fluide dans un canal contenant un cylindre, provoquant l’apparition de tourbillons alternés appelés « Allée de von Kármán », et affiche le résultat via une animation interactive.
📌 Problème résolu
Il permet de visualiser des phénomènes aérodynamiques complexes (instabilités de sillage) sans nécessiter de solveurs Navier-Stokes lourds, en utilisant une approche mésoscopique (Boltzmann) particulièrement efficace pour le parallélisme et les géométries complexes.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x (recommandé 3.8+)
OS cible Tous (Windows, Linux, MacOS)
Mode d’exécution Interface Graphique (Matplotlib Animation)
📦 Dépendances / Librairies
# Librairies externes (pip install)
numpy (Calcul matriciel intensif)
matplotlib (Rendu graphique et animation)
📥 ENTRÉES (INPUTS)
📂 Paramètres de simulation (Hardcodés)
# Nom Type Description Valeur par défaut
1 Nx, Ny int Dimensions de la grille de calcul 400 x 100
2 tau float Temps de relaxation (lié à la viscosité) 0.6
3 v_inlet float Vitesse du fluide à l’entrée 0.1
📤 SORTIES (OUTPUTS)
📂 Visualisation
Type Chemin / Format Description
Graphique Fenêtre Matplotlib Animation interactive de la magnitude de la vitesse.
🧱 STRUCTURE DU SCRIPT
script_309cvmn_309.py
📌 IMPORTS : NumPy pour les calculs, Matplotlib pour le rendu.
📌 FONCTION PRINCIPALE : simulate_lbm()
📌 INITIALISATION : Définition des poids w, des vecteurs v et de l’obstacle.
📌 SOUS-FONCTION : calc_feq() (Calcul de l’équilibre local).
📌 BOUCLE TEMPORELLE :
Streaming (Propagation).
Conditions aux limites (Entrée, Sortie, Obstacle).
Équilibre et Collision (Modèle BGK).
Mise à jour de l’affichage.
🔧 DÉTAIL DES FONCTIONS
Fonction Paramètres Retour Rôle
calc_feq(rho, u) rho (densité), u (vitesse) ndarray Calcule la fonction de distribution d’équilibre de Maxwell-Boltzmann.
simulate_lbm() Aucun None Gère l’intégralité du cycle de vie de la simulation et de l’affichage.
🔄 LOGIQUE / ALGORITHME
Initialisation : Création d’un champ de densité uniforme et d’une vitesse constante.
Streaming : Les particules se déplacent vers les nœuds voisins selon les 9 directions.
Conditions Limites :
Entrée : Vitesse imposée.
Sortie : Flux libre (copie du nœud précédent).
Obstacle : « Bounce-back » (les particules rebondissent sur le cylindre).
Collision : Relaxation des distributions vers l’équilibre (opérateur BGK).
Affichage : Calcul de la norme du vecteur vitesse ux2+uy2 et mise à jour de l’image.
🚨 GESTION DES ERREURS
Instabilité numérique : Si tau est trop proche de 0.5, la simulation peut diverger (division par zéro ou valeurs infinies).
Performance : L’utilisation de np.roll et de boucles Python pour les directions limite la vitesse sur de très grandes grilles.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : La vitesse d’entrée v_inlet doit rester faible (nombre de Mach < 0.1) pour respecter l'hypothèse d'incompressibilité du modèle LBM. Règle 2 : L'obstacle est défini par un masque booléen circulaire. 🧪 TESTS ATTENDUS # Cas de test Entrée Résultat attendu 1 Lancement standard Paramètres par défaut Apparition de tourbillons après t≈500. 2 Fluide visqueux tau = 1.0 Écoulement laminaire sans tourbillons. 3 Grille réduite Nx=100, Ny=50 Simulation plus rapide mais moins résolue. 📝 EXEMPLE D'UTILISATION ▶️ Lancement Bash python script_309cvmn_309.py 📋 Sortie console/graphique attendue Plaintext [Fenêtre graphique s'ouvre] Simulation LBM : Allée de Von Kármán (Itération t=0) ... Simulation LBM : Allée de Von Kármán (Itération t=4000)



Avis
Il n’y a pas encore d’avis.