🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_304cvmn_304.py
Version 1.0.0
Date de création 09/03/2026
Auteur / Demandeur IA Généré (Gemini)
Objectif principal Simuler et visualiser en temps réel le comportement physique de particules de fluide interagissant entre elles et avec leur environnement.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script utilise une approche de système de particules pour simuler un fluide simplifié. Il calcule les forces de répulsion (pour éviter l’empilement), la viscosité (pour lisser les mouvements) et la gravité, puis affiche le résultat sous forme d’une animation interactive via matplotlib.
📌 Problème résolu
Il permet de modéliser visuellement des comportements physiques complexes (dynamique des fluides simplifiée) sans nécessiter de moteurs physiques lourds, en utilisant la vectorisation pour optimiser les calculs de voisinage.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows, Linux, MacOS)
Mode d’exécution GUI (Interface Graphique via Matplotlib)
📦 Dépendances / Librairies
Librairies externes (pip install) :
numpy (Calcul matriciel et vectorisation)
matplotlib (Moteur de rendu graphique et animation)
📥 ENTRÉES (INPUTS)
📂 Paramètres de classe (Initialisation)
# Nom Type Obligatoire Description Exemple
1 n_particles int ❌ Non Nombre de points à simuler 50
2 dt float ❌ Non Pas de temps de la simulation 0.1
3 viscosity float ❌ Non Coefficient de frottement interne 0.1
📤 SORTIES (OUTPUTS)
📂 Données en sortie
Type Chemin / Format Description
Rendu Visuel Fenêtre interactive Animation FuncAnimation montrant le mouvement des particules.
🧱 STRUCTURE DU SCRIPT
script_304cvmn_304.py
│
├── 📌 IMPORTS (numpy, matplotlib)
├── 📌 CLASSE FluidSimulation
│ ├── __init__() → Init. positions, vitesses et limites.
│ └── apply_physics() → Moteur de calcul (forces + collisions).
├── 📌 VISUALISATION (Setup de la figure)
└── 📌 MAIN / ANIMATION (update() + plt.show())
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
apply_physics() Aucun None Calcule les interactions, applique la gravité et gère les rebonds.
update(frame) int tuple Met à jour les données du graphique pour l’animation.
🔄 LOGIQUE / ALGORITHME
ÉTAPE 1 → Calcul des distances relatives entre toutes les particules (Matrice de distance).
ÉTAPE 2 → Application d’un masque de voisinage (Rayon < 1.5). ÉTAPE 3 → Calcul des vecteurs de Répulsion (anti-collision) et de Viscosité (alignement). ÉTAPE 4 → Intégration de la Gravité et mise à jour de la position (pos=pos+vel×dt). ÉTAPE 5 → Vérification des limites du bac (x∈[0,10],y∈[0,10]) avec inversion de vitesse (coefficient -0.5). 🚨 GESTION DES ERREURS Instabilité numérique : Si dt est trop élevé, les particules peuvent traverser les murs ou "exploser". Performance : Le script utilise une boucle for sur N particules, ce qui peut ralentir si N>200. Une vectorisation totale via des matrices 3D NumPy serait préférable pour une grande volumétrie.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : Les particules perdent 50% de leur énergie cinétique lors d’un impact contre une paroi.
Règle 2 : La force de répulsion est inversement proportionnelle au carré de la distance.
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu Statut
1 Cas nominal 50 particules Mouvement fluide vers le bas avec accumulation ⬜ À tester
2 Limites du bac Particule à x=11 Rebond immédiat vers l’intérieur (x=10) ⬜ À tester
📝 EXEMPLE D’UTILISATION
▶️ Lancement direct
Bash
python script_304cvmn_304.py
💻 Exemple d’instanciation
Python
sim = FluidSimulation(n_particles=100)
sim.apply_physics() # Calcule un step
print(sim.pos) # Affiche les nouvelles coordonnées



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