Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
MicroHydroModule Class Reference

#include <tutorial/microhydro/MicroHydroModule.h>

Public Member Functions

 MicroHydroModule (const ModuleBuildInfo &mbi)
 ~MicroHydroModule ()
virtual void hydroStartInit ()
virtual void computePressureForce ()
virtual void computeVelocity ()
virtual void applyBoundaryCondition ()
virtual void moveNodes ()
virtual void computeGeometricValues ()
virtual void updateDensity ()
virtual void applyEquationOfState ()
virtual void computeDeltaT ()
virtual VersionInfo versionInfo () const

Detailed Description

Représente un module d'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.

Definition at line 31 of file MicroHydroModule.h.

Constructor & Destructor Documentation

◆ MicroHydroModule()

MicroHydroModule::MicroHydroModule ( const ModuleBuildInfo & mbi)
inline

Constructeur de la classe

Definition at line 36 of file MicroHydroModule.h.

◆ ~MicroHydroModule()

MicroHydroModule::~MicroHydroModule ( )
inline

Destructeur de la classe

Definition at line 39 of file MicroHydroModule.h.

Member Function Documentation

◆ applyBoundaryCondition()

void MicroHydroModule::applyBoundaryCondition ( )
virtual

Applique les conditions aux limites. Les conditions aux limites dépendent des options du jeu de données. Dans cette implémentation, une condition aux limites possède les propriétés suivantes :

  • un type: trois types sont supportés: contraindre la composante \(x\) du vecteur vitesse, contraindre la composante \(y\) du vecteur vitesse ou contraindre la composante \(z\) du vecteur vitesse,
  • une valeur: il s'agit d'un réel indiquant la valeur de la contrainte,
  • une surface: il s'agit de la surface sur laquelle s'applique la contrainte.

Appliquer les conditions aux limites consiste donc à fixer une composante d'un vecteur vitesse pour chaque noeud de chaque face de chaque surface sur laquelle on impose une condition aux limites.

Definition at line 86 of file MicroHydroModule.cc.

References ENUMERATE_FACE, Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::node(), TypesMicroHydro::Unknown, TypesMicroHydro::VelocityX, TypesMicroHydro::VelocityY, TypesMicroHydro::VelocityZ, Arcane::Real3POD::x, Arcane::Real3POD::y, and Arcane::Real3POD::z.

◆ applyEquationOfState()

void MicroHydroModule::applyEquationOfState ( )
virtual

Ce point d'entrée calcule l'énergie interne, la pression et la vitesse du son dans la maille en faisant appel au service d'équation d'état.

Definition at line 215 of file MicroHydroModule.cc.

References ENUMERATE_CELL.

◆ computeDeltaT()

void MicroHydroModule::computeDeltaT ( )
virtual

Détermine la valeur du pas de temps pour l'itération suivante. Le pas de temps est contraint par :

  • la valeur de la CFL,
  • les valeurs deltatMin() et deltatMax() du jeu de données,
  • la valeur du temps final. Lors de la dernière itération, le pas de temps doit être tel qu'on s'arrête exactement au temps spécifié dans le jeu de données (finalTime()).

Definition at line 236 of file MicroHydroModule.cc.

References ENUMERATE_CELL, and Arcane::Parallel::ReduceMin.

◆ computeGeometricValues()

void MicroHydroModule::computeGeometricValues ( )
virtual

Ce point d'entrée regroupe l'ensemble des calculs géométriques utiles pour le schéma. Dans notre cas, il s'agit pour chaque maille :

  • de calculer sa longueur caractéristique,
  • de calculer les résultantes à ses sommets,
  • de calculer son volume.

Pour optimiser le calcul (utilisation du cache), à chaque itération sur une maille, sont stockées localement les coordonnées de ses noeuds et celles du centre de ses faces.

Definition at line 141 of file MicroHydroModule.cc.

References Arcane::Real3::abs(), ENUMERATE_CELL, Arcane::ItemWithNodes::nodes(), and Arcane::math::scaMul().

Referenced by hydroStartInit().

◆ computePressureForce()

void MicroHydroModule::computePressureForce ( )
virtual

Calcule la contribution des forces de pression par noeud au temps courant \(t^{n}\). Pour chaque noeud de chaque maille, il s'agit de la pression multipliée par la résultante en ce noeud. Calcule les forces de pression au temps courant \(t^{n}\).

Definition at line 48 of file MicroHydroModule.cc.

References ENUMERATE_CELL, and Arcane::ItemWithNodes::nodes().

◆ computeVelocity()

void MicroHydroModule::computeVelocity ( )
virtual

Calcule la force (m_force) qui s'applique aux noeuds en ajoutant l'éventuelle contribution de la pseudo-viscosité. Calcule ensuite la nouvelle vitesse (m_velocity) aux noeuds.

Definition at line 67 of file MicroHydroModule.cc.

References ENUMERATE_NODE.

◆ hydroStartInit()

void MicroHydroModule::hydroStartInit ( )
virtual

Initialise le module. L'initialisation comporte deux parties distinctes:

  • la première partie où il faut indiquer la taille des variables tableaux. Dans notre cas, il s'agit de m_cell_cqs et m_viscosity_force, qui sont toutes deux des variables aux mailles possédant une valeur pour chaque noeud de chaque maille. Comme on ne supporte que les héxaèdres, il y a 8 valeurs par maille,
  • la deuxième partie qui consiste à initialiser les variables avec leur valeur de départ. Pour les variables Pressure, Density et AdiabaticCst, c'est ARCANE qui les initialisent directement à partir du jeu de donnée. La variable NodeCoord est aussi initialisée par l'architecture lors de la lecture du maillage. Les autres variables sont calculées comme suit :
    • le pas de temps initial est donné par le jeu de donnée,
    • les valeurs géométriques (longueur caractéristique, volume et résultantes aux sommets) sont calculées à partir des coordonnées des noeuds,
    • la masse des mailles est calculée à partir de sa densité et de son volume,
    • la masse des mailles et la masse nodale. La masse d'une maille est calculée à partir de sa densité et de son volume,
    • la masse nodale est calculée en ajoutant les contributions de chaque maille connecté à un noeud donné. Chaque maille contribue pour 1/8ème de sa masse à la masse nodale de chacun de ses sommets,
    • l'énergie interne et la vitesse du son sont calculées en fonction de l' équation d'état.

Definition at line 13 of file MicroHydroModule.cc.

References computeGeometricValues(), ENUMERATE_CELL, and Arcane::ItemWithNodes::nodes().

◆ moveNodes()

void MicroHydroModule::moveNodes ( )
virtual

Modifie les coordonnées (m_node_coord) des noeuds d'après la valeur du vecteur vitesse et du pas de temps.

Definition at line 128 of file MicroHydroModule.cc.

References ENUMERATE_NODE.

◆ updateDensity()

void MicroHydroModule::updateDensity ( )
virtual

Calcule la nouvelle valeur de la densité des mailles, en considérant que la masse d'une maille est constante au cours du temps. Dans ce cas, la nouvelle densité est égale à la masse divisée par le nouveau volume.

Definition at line 199 of file MicroHydroModule.cc.

References ENUMERATE_CELL.

◆ versionInfo()

virtual VersionInfo MicroHydroModule::versionInfo ( ) const
inlinevirtual

Retourne le numéro de version du module

Definition at line 153 of file MicroHydroModule.h.


The documentation for this class was generated from the following files: