16#include <VDF_discretisation.h>
17#include <Rotationnel_Champ_Face.h>
18#include <grad_U_Champ_Face.h>
19#include <Correlation_Vec_Sca_VDF.h>
20#include <Champ_Fonc_Tabule.h>
21#include <Champ_Fonc_Tabule_P0_VDF.h>
22#include <Critere_Q_Champ_Face.h>
23#include <Fluide_Ostwald.h>
24#include <Champ_Ostwald_VDF.h>
25#include <Champ_Uniforme.h>
26#include <Y_plus_Champ_Face.h>
27#include <Reynolds_maille_Champ_Face.h>
28#include <Courant_maille_Champ_Face.h>
29#include <Taux_cisaillement_P0_VDF.h>
30#include <Postraitement_base.h>
31#include <Schema_Temps_base.h>
32#include <Domaine_Cl_VDF.h>
33#include <Navier_Stokes_std.h>
34#include <Domaine_VDF.h>
35#include <Probleme_base.h>
36#include <Champ_P0_VDF.h>
37#include <T_paroi_Champ_P0_VDF.h>
67 motcles[0] =
"vitesse";
68 motcles[1] =
"pression";
69 motcles[2] =
"temperature";
70 motcles[3] =
"divergence_vitesse";
71 motcles[4] =
"gradient_pression";
72 motcles[5] =
"champ_face";
73 motcles[6] =
"champ_elem";
76 int default_nb_comp = -1;
77 int rang = motcles.
search(directive);
81 type =
"Champ_Face_VDF";
85 type =
"Champ_P0_VDF";
89 type =
"Champ_P0_VDF";
93 type =
"Champ_P0_VDF";
97 type =
"Champ_Face_VDF";
101 type =
"Champ_Face_VDF";
105 type =
"Champ_P0_VDF";
114 Cerr <<
"VDF_discretisation : " << motcles;
137 nb_comp = default_nb_comp;
139 creer_champ(champ, z, type, noms[0], unites[0], nb_comp, nb_ddl, nb_pas_dt, temps, directive,
que_suis_je());
141 if (nature == multi_scalaire)
143 champ->fixer_nature_du_champ(nature);
144 champ->fixer_unites(unites);
145 champ->fixer_noms_compo(noms);
158 discretiser_champ_fonc_don(directive, z, nature, noms, unites, nb_comp, temps, champ);
169 discretiser_champ_fonc_don(directive, z, nature, noms, unites, nb_comp, temps, champ);
179void VDF_discretisation::discretiser_champ_fonc_don(
const Motcle& directive,
const Domaine_dis_base& z, Nature_du_champ nature,
const Noms& noms,
const Noms& unites,
int nb_comp,
double temps,
187 motcles[0] =
"pression";
188 motcles[1] =
"temperature";
189 motcles[2] =
"divergence_vitesse";
190 motcles[3] =
"champ_elem";
191 motcles[4] =
"vitesse";
192 motcles[5] =
"gradient_pression";
193 motcles[6] =
"champ_face";
194 motcles[7] =
"champ_sommets";
197 int rang = motcles.search(directive);
198 int default_nb_comp = 1;
202 type =
"Champ_Fonc_P0_VDF";
205 type =
"Champ_Fonc_P0_VDF";
208 type =
"Champ_Fonc_P0_VDF";
211 type =
"Champ_Fonc_P0_VDF";
214 type =
"Champ_Fonc_Face_VDF";
218 type =
"Champ_Fonc_Face_VDF";
222 type =
"Champ_Fonc_Face_VDF";
226 type =
"Champ_Fonc_Q1_VDF";
236 Cerr <<
"VDF_discretisation : " << motcles;
251 const Domaine_VDF& domaine_vdf = ref_cast(Domaine_VDF, z);
252 if (type ==
"Champ_Fonc_P0_VDF")
254 else if (type ==
"Champ_Fonc_Face_VDF")
256 else if (type ==
"Champ_Fonc_Q1_VDF")
257 nb_ddl = domaine_vdf.
nb_som();
262 nb_comp = default_nb_comp;
268 if ((nature == multi_scalaire) && (champ_fonc))
270 champ_fonc->valeur().fixer_nature_du_champ(nature);
271 champ_fonc->valeur().fixer_unites(unites);
272 champ_fonc->valeur().fixer_noms_compo(noms);
274 else if ((nature == multi_scalaire) && (champ_don))
276 Cerr <<
"There is no field of type OWN_PTR(Champ_Don_base) with a multi_scalaire nature." << finl;
286 ch.typer(
"Rotationnel_Champ_Face");
310 ch.typer(
"Critere_Q_Champ_Face");
315 ch_Criter_Q.
nommer(
"Critere_Q");
328 ch.typer(
"grad_U_Champ_Face");
333 ch_grad_u.
nommer(
"gradient_vitesse");
336 for (
int n = 0; n < N; n++)
365 champ.typer(
"Reynolds_maille_Champ_Face");
371 ch.
nommer(
"Reynolds_maille");
385 champ.typer(
"Courant_maille_Champ_Face");
390 ch.
nommer(
"Courant_maille");
405 champ.typer(
"Taux_cisaillement_P0_VDF");
410 ch.
nommer(
"Taux_cisaillement");
413 for (
int n = 0; n < N; n++)
430 Cerr <<
"Discretisation de y plus" << finl;
431 Noms noms(1), unites(1);
432 noms[0] =
Nom(
"Y_plus");
433 unites[0] =
Nom(
"adimensionnel");
435 DoubleTab& tab_y_p = ch->
valeurs();
442 ch.typer(
"Y_plus_Champ_Face");
447 ch_y_plus.
nommer(
"Y_plus");
457 Cerr <<
"Discretisation de temperature_paroi" << finl;
461 ch.typer(
"T_paroi_Champ_P0_VDF");
466 ch_tp.
nommer(
"temperature_paroi");
495 Cerr <<
"Discretisation du fluide_Ostwald" << finl;
503 Cerr <<
"associe domainedisbase" << finl;
507 Cerr <<
"associations finies" << finl;
510 Cerr <<
"fait fixer_nb_valeurs_nodales" << finl;
511 Cerr <<
"nb_valeurs_nodales = " << domaine_vdf.
nb_elem() << finl;
514 Cerr <<
"fait changer_temps" << finl;
517 Cerr <<
"mu est discretise " << finl;
528 ch.typer(
"Rotationnel_Champ_Face");
536 for (
int n = 0; n < N; n++)
552 ch_name +=
"_residu";
553 Cerr <<
"Discretization of " << ch_name << finl;
573 DoubleTab& tab = ch_fonc.
valeurs();
575 Cerr <<
"[Information] Discretisation_base::residu : the residue is set to -10000.0 at initial time" << finl;
580 Cerr <<
"Discretisation de distance paroi globale" << finl;
581 Noms noms(1), unites(1);
582 noms[0] =
Nom(
"distance_paroi_globale");
583 unites[0] =
Nom(
"m");
classe Champ_Don_base classe de base des Champs donnes (non calcules)
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
class Champ_Face_VDF Cette classe sert a representer un champ vectoriel dont on ne calcule
int fixer_nb_valeurs_nodales(int) override
Fixe le nombre de degres de liberte par composante.
int fixer_nb_valeurs_nodales(int n) override
Fixe le nombre de degres de liberte par composante.
void associer_param(const VECT(OBS_PTR(Champ_base))&, const Table &)
Classe Champ_Fonc_Tabule Classe derivee de Champ_Fonc_base qui represente les.
const Table & table() const
void typer_champ_tabule_discretise(const Nom &typ)
const Champ_Fonc_base & le_champ_tabule_discretise() const
Renvoie le champ tabule calcule.
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
void associer_domaine_dis_base(const Domaine_dis_base &) override
const Domaine_dis_base & domaine_dis_base() const override
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Champ_Ostwald_VDF Represente un champ en discretisation VDF qui varie en fonction
void associer_champ(const Champ_Face_VDF &un_champ)
void associer_fluide(const Fluide_Ostwald &le_fluide)
int fixer_nb_valeurs_nodales(int nb_noeuds) override
Fixe le nombre de degres de liberte par composante.
classe Champ_P0_VDF Classe qui represente un champ discret P0 par element associe a un domaine discre...
classe Champ_base Cette classe est la base de la hierarchie des champs.
virtual double changer_temps(const double t)
Fixe le temps auquel se situe le champ.
double temps() const
Renvoie le temps du champ.
void associer_champ(const Champ_Face_VDF &, const Schema_Temps_base &)
classe Critere_Q_Champ_Face
void associer_domaine_Cl_dis_base(const Domaine_Cl_dis_base &le_dom_Cl_dis_base)
void associer_champ(const Champ_Face_VDF &)
classe Discret_Thyd Cette classe est la classe de base representant une discretisation
static void creer_champ(OWN_PTR(Champ_Inc_base)&ch, const Domaine_dis_base &z, const Nom &type, const Nom &nom, const Nom &unite, int nb_comp, int nb_ddl, int nb_pas_dt, double temps, const Nom &directive=NOM_VIDE, const Nom &nom_discretisation=NOM_VIDE)
Methode statique qui cree un OWN_PTR(Champ_Inc_base) du type specifie.
static const Nom NOM_VIDE
static const Motcle DEMANDE_DESCRIPTION
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, const Nom &nom, const Nom &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base)&champ, const Nom &sous_type=NOM_VIDE) const
int verifie_sous_type(Nom &type, const Nom &sous_type, const Motcle &directive) const
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int nb_faces() const
renvoie le nombre global de faces.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes du champ.
const Nom & le_nom() const override
Renvoie le nom du champ.
void nommer(const Nom &) override
Donne un nom au champ.
virtual const Nom & fixer_unite(const Nom &)
Specifie l'unite d'un champ scalaire ou dont toutes les composantes ont la meme unite.
virtual Nature_du_champ fixer_nature_du_champ(Nature_du_champ nat)
Fixer la nature d'un champ: scalaire, multiscalaire, vectoriel.
virtual int nb_comp() const
virtual void add_synonymous(const Nom &nom)
virtual const Nom & fixer_nom_compo(int, const Nom &)
Fixe le nom de la i-eme composante du champ.
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
const Champ_Don_base & viscosite_dynamique() const
const Champ_Don_base & viscosite_cinematique() const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
const Champ_Inc_base & inconnue() const override
Renvoie la vitesse (champ inconnue de l'equation) (version const).
class Nom Une chaine de caractere pour nommer les objets de TRUST
virtual int debute_par(const char *const n) const
Un tableau de chaine de caracteres (VECT(Nom)).
classe Objet_U Cette classe est la classe de base des Objets de TRUST
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
void associer_champ(const Champ_Face_VDF &, const Champ_Don_base &)
classe Rotationnel_Champ_Face
void associer_champ(const Champ_Face_VDF &)
double temps_courant() const
Renvoie le temps courant.
Classe de base des flux de sortie.
_SIZE_ dimension_tot(int) const override
void associer_champ(const Champ_P0_VDF &)
void associer_domaine_Cl_dis_base(const Domaine_Cl_dis_base &le_dom_Cl_dis_base)
classe Taux_cisaillement_P0_VDF
void associer_champ(const Champ_Face_VDF &, const Domaine_Cl_dis_base &)
void vorticite(Domaine_dis_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, Nature_du_champ nature, const Noms &nom, const Noms &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base) &champ, const Nom &sous_type=NOM_VIDE) const override
Discretisation d'un OWN_PTR(Champ_Inc_base) pour le VDF en fonction d'une directive de discretisation...
void residu(const Domaine_dis_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void grad_u(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void t_paroi(const Domaine_dis_base &z, const Domaine_Cl_dis_base &zcl, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&ch) const override
void taux_cisaillement(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void proprietes_physiques_fluide_Ostwald(const Domaine_dis_base &, Fluide_Ostwald &, const Navier_Stokes_std &, const Champ_Inc_base &) const override
discretise en VDF le fluide incompressible, donc K e N
void y_plus(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void distance_paroi_globale(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const override
void reynolds_maille(const Domaine_dis_base &, const Fluide_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void critere_Q(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void courant_maille(const Domaine_dis_base &, const Schema_Temps_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void creer_champ_vorticite(const Schema_Temps_base &, const Champ_Inc_base &, OWN_PTR(Champ_Fonc_base)&) const override
void associer_domaine_Cl_dis_base(const Domaine_Cl_dis_base &le_dom_Cl_dis_base)
void associer_champ(const Champ_Face_VDF &)
void associer_domaine_Cl_dis_base(const Domaine_Cl_dis_base &le_dom_Cl_dis_base)
void associer_champ(const Champ_Face_VDF &)