TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Navier_Stokes_phase_field.h
1/****************************************************************************
2* Copyright (c) 2021, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Navier_Stokes_phase_field_included
17#define Navier_Stokes_phase_field_included
18
19#include <Source_Con_Phase_field.h>
20#include <Navier_Stokes_std.h>
21#include <Constituant.h>
22#include <TRUST_Ref.h>
23#include <time.h>
24
25
26/*! @brief classe Navier_Stokes_phase_field Cette classe porte les termes de l'equation de la dynamique
27 *
28 * pour un fluide sans modelisation de la turbulence.
29 * On suppose l'hypothese de fluide incompressible: div U = 0
30 * On peut 1) soit utiliser un modele a rho variable
31 * 2) soit utiliser l'hypothese de Boussinesq
32 * Dans ce cas, on considere la masse volumique constante (egale a rho_0) sauf dans le
33 * terme des forces de gravite.
34 * Sous ces hypotheses, on utilise la forme suivante des equations de
35 * Navier_Stokes:
36 * DU/dt = div(terme visqueux) - gradP/rho_0 + Bt(T-T0)g + autres sources/rho_0
37 * div U = 0
38 * avec DU/dt : derivee particulaire de la vitesse
39 * rho_0 : masse volumique de reference
40 * T0 : temperature de reference
41 * Bt : coefficient de dilatabilite du fluide
42 * g : vecteur gravite
43 * Rq : l'implementation de la classe permet bien sur de negliger
44 * certains termes de l'equation (le terme visqueux, le terme
45 * convectif, tel ou tel terme source).
46 * L'inconnue est le champ de vitesse.
47 *
48 * Pour le traitement des cas un peu particulier : ajout de Traitement_particulier
49 * exemple : THI, canal (CA)
50 *
51 * @sa Equation_base Pb_Hydraulique Pb_Thermohydraulique, Post-traitement du potentiel chimique generalise
52 */
54{
55 Declare_instanciable(Navier_Stokes_phase_field);
56public:
57 void discretiser() override;
58 int preparer_calcul() override;
59 virtual void rho_aux_faces(const DoubleTab&, Champ_Don_base&);
60
61 DoubleTab& derivee_en_temps_inco(DoubleTab&) override;
62 void mettre_a_jour(double) override;
63 const Champ_Don_base& diffusivite_pour_transport() const override;
64
65 double calculer_pas_de_temps() const override;
66
67 inline int& getset_terme_source() { return terme_source_; }
68 inline int& getset_compressible() { return compressible_; }
69
70protected:
71 int terme_source_ = -123, compressible_ = -123;
72};
73
74// Methode de calcul de la valeur sur un champ aux elements d'un champ uniforme ou non a plusieurs composantes
75inline double& valeur(DoubleTab& valeurs, const int elem, const int dim)
76{
77 return valeurs(elem, dim);
78}
79
80#endif /* Navier_Stokes_phase_field_included */
classe Champ_Don_base classe de base des Champs donnes (non calcules)
classe Navier_Stokes_phase_field Cette classe porte les termes de l'equation de la dynamique
DoubleTab & derivee_en_temps_inco(DoubleTab &) override
Returns the time derivative of the unknown I of the equation: dI/dt = M-1*(sum(operators(I) + sources...
virtual void rho_aux_faces(const DoubleTab &, Champ_Don_base &)
Interpole la masse volumique aux faces (pour l'assembleur pression en particulier).
int preparer_calcul() override
Dicretise l'equation.
const Champ_Don_base & diffusivite_pour_transport() const override
void discretiser() override
Dicretise l'equation.
double calculer_pas_de_temps() const override
Calcul du prochain pas de temps.
void mettre_a_jour(double) override
La valeur de l'inconnue sur le pas de temps a ete calculee.