Le troisième exemple de cette formation permet le développement d'un module hydrodynamique lagrangienne très simplifié :
- le seul type de maille supporté est l'hexaèdre,
- pas de pseudo viscosité supportée,
- le seul type de calcul de longueur caractéristique supporté est celui utilisant les médianes,
- le seul type de condition aux limites supporté est d'imposer une composante de la vitesse sur une surface,
- la masse nodale est supposée constante et n'est pas recalculée à chaque itération,
- aucun test de cohérence des valeurs (pression positive, volume positif, ...) n'est effectué.
La liste des opérations effectuées par le module est la suivante :
- calcul des forces de pression,
- calcul de l'impulsion,
- prise en compte des conditions aux limites,
- déplacement des noeuds,
- calcul des nouvelles valeurs géométriques : volume des mailles, longueur caractéristique des mailles, resultantes aux sommets de chaque maille,
- calcul de la densité,
- calcul de la pression et de l'énergie par l'équation d'état. Ce calcul est effectué par un service ARCANE. Deux implémentations sont disponibles pour le service : gaz parfait, et "stiffened" gaz.
- calcul du nouveau pas de temps.
La liste des valeurs manipulées par le module est la suivante :
  
| Nom | Elément | Type | Description | 
| Density | Maille | Réel | Densité par maille | 
| Pressure | Maille | Réel | Pression par maille | 
| CellMass | Maille | Réel | Masse par maille | 
| InternalEnergy | Maille | Réel | Energie interne par maille | 
| CellVolume | Maille | Réel | Volume de la maille | 
| OldCellVolume | Maille | Réel | Volume de la maille à l'itération précédente | 
| Force | Noeud | Coordonnée | Force aux noeuds | 
| Velocity | Noeud | Coordonnée | Vitesse aux noeuds | 
| NodeMass | Noeud | Réel | Masse nodale | 
| AdiabaticCst | Maille | Réel | Constante adiabatique par maille | 
| CaracteristicLength | Maille | Réel | Longueur caractéristique par maille | 
| SoundSpeed | Maille | Réel | Vitesse du son dans la maille | 
| NodeCoord | Noeud | Coordonnée | Coordonnées des noeuds | 
| CellCQs | Maille | Tableau de coordonnées | Résultante aux sommets | 
 
Conception de l'application
- Prérequis
- 
- Actions à réaliser
- A partir de l'énoncé de l'exercice et de la documentation des méthodes de la classe MicroHydroModule:
- Ecrire le descripteur du module :
- Fournir la liste des points d'entrée. Chaque opération citée précédemment devient un point d'entrée et un point d'entrée d'initialisation est ajouté,
- Fournir la liste des variables,
- Compléter les options de configuration pour les conditions aux limites conformément au jeu de données MicroHydro.arc
 
- Décrire ensuite l'enchainement des points d'entrée dans le fichier de configuration de l'application MicroHydro.config.
 
Service d'équation d'état
- Prérequis
- 
- Actions à réaliser
- Faire un service capable de calculer l'équation d'état pour un groupe de mailles donné :
- Regarder l'interface du service dans le fichier IEquationOfStateet les implémentations perfect gas et stiffened gas,
- Enregistrer les 2 implémentations dans ARCANE à l'aide à la macro,
- Dans le descripteur du module (MicroHydro.axl), saisir les options de configuration pour le service d'équation d'état conformément au jeu de donnéesMicroHydro.arc,
- Ecrire le code pour le service d'équation d'état du gaz parfait dans le fichier PerfectGasEOSService.cc. Les formules sont :
\[P = (\gamma - 1) \rho e\]
 
\[s = \sqrt{\gamma P / \rho} \]
 avec \(P\) = pression, \(e\) = énergie interne, \(s\) = vitesse du son, \(\gamma\) = constante adiabatique, et \(\rho\) = densité
- Ecrire le code pour le service d'équation d'état "stiffened gas" dans le fichier StiffenedGasEOSService.cc. Les formules sont :
\[P = ((\gamma - 1) \rho e) - (\gamma P_0)\]
 
\[s = \sqrt{(\gamma / \rho)(P+P_0)} \]
 avec \(P\) = pression, \(P_0\) = tension limite, \(e\) = énergie interne, \(s\) = vitesse du son, \(\gamma\) = constante adiabatique, et \(\rho\) = densité
- Compléter les appels au service d'équation d'état dans le fichier MicroHydroModule.cc
- Compiler
- Choisir le service d'équation d'état voulu dans le jeu de données MicroHydro.arc. Ne pas oublier de préciser la tension limite dans le cas du service "stiffened gas".
- Exécuter en séquentiel et en parallèle et regarder les résultats.
 
Prise en compte des protections/reprises
- Prérequis
- Ce module n'utilisant pas de structure de données interne autre que les variables, il n'a rien à faire pour prendre en compte les protections reprises. 
- Actions à réaliser
- 
- Editer le fichier MicroHydro.configet ajouter le moduleArcaneCheckpointpermettant d'écrire des protections.
- Exécuter le code pendant 100 itérations : option -arcane_opt max_iteration 100.
- Reprendre l'exécution : option -arcane_opt continue.
- Ne plus sauvegarder le volume des mailles et ajouter un nouveau point d'entrée d'initialisation de reprise permettant de calculer le volume des mailles à partir de la position des noeuds.