Exemple

Énoncé du problème – Résoudre un problème physique par simulation numérique. 

Diagramme de class

Diagramme statique qui modélise les interactions des concepts de notre système. Class représente un concept de l’application (propriété ou attribut avec leur méthode ou message). Le diagramme est un des plus important, modélise les relations ente les concepts (association, agrégation, inheritance)

Livre de recettes

Traduit les use case (requis) en modèle de class. Ci-dessous les principales étapes pour développer un simulateur en utilisant le «framework» :

  1. Créer la class Simulator physique par inheritance de la class de base (PhysicsSimulator);
  2. Fournir une implémentation de la configuration physique (IPhysicalConfiguration), par exemple les conditions initiales;
  3. Fournir une implémentation de l’algorithme physique (IPhysicalAlgorithm), traitement numérique des termes de l’équation selon la physique que l’on veut modéliser.
  4. Fournir une implémentation pour les mesures physiques (IPhysicalMeasurement), les différentes mesures physiques telles que: énergie, vitesse;
  5. Fournir une implémentation pour la production d’un rapport (IFinalReport), un rapport final afin de rapporter les statistiques, visualiser la solution, etc…
  6. Fournir une implémentation pour la sauvegarde des données (ex. mesures physiques), data store;
  7. L’algorithme physique, traitement des termes de l’équation physique, par exemple évaluation des flux numériques a l’interface, calcul des termes de friction, de pression;
  1. Choisir une méthode numérique, ceci consiste à définir un modèle (numérique), par exemple une méthode semi-discrète, schéma Runge-Kutta pour la discrétisation temporelle et des schémas aux différences finies;

                                                         physics41

 SFX Numeric Types 

Exemples de Code

Modélisation physique du bris de barrage (Simulateur DamBreak++)

Nous allons donner un exemple sur comment programmer un simulateur physique en utilisant notre environnement de programmation ou «framework». Le simulateur physique que nous allons programmer va simuler la propagation d’une onde (écoulement non-linéaire en présence de choc) communément appelé bris de barrage. Nous considérons un cas idéal, canal horizontal avec un fond plat, et sans friction pour des sections d’écoulement rectangulaires de largeur unitaire (solution analytique connue).

DamBreak run method

DamBreak condition initiale

DamBreak algorithme physique

 

Modélisation de la Propagation d’une Onde de choc

Un schéma semi-discret au deuxième ordre en temps et en espace (modèle aux volumes finis) basé sur une discrétisation aux différences finies est utilisé pour résoudre les équations de Shallow-water. Le modèle avance par « pas » de temps selon un solveur de Runge-Kutta qui utilise une méthode prédicteur-correcteur. Les flux numériques sont calculés par un solveur de Riemann de type HLL (Harten-Lax-van Leer). Un schéma simple TVD est employé pour la méthode de capture de choc et une fonction de flux «Minmod limiter» est utilisée. Dans la figure ci-dessous nous voyons les profils de la propagation de l’onde de choc.

Â

NOUVELLES ET ARTICLES See all

  • Fonction Lambda, un incontournable

    Tips and Tricks!

    Les fonctions anonymes dites “lambda” introduites depuis C++11 trouvent de nombreux cas d’utilisation où l’on aurait à écrire une fonction pour réaliser des taches simples, qui nécessite quelques lignes de code. Je présente un exemple de l’utilisation de celle-ci de notre environnement de programmation.

clients and partners

Autolog