16#include <PolyMAC_CDO_discretisation.h>
17#include <Domaine_PolyMAC_CDO.h>
18#include <Champ_Fonc_Tabule.h>
19#include <Champ_Fonc_Elem_PolyMAC_CDO.h>
20#include <Champ_Fonc_Tabule_Elem_PolyMAC_CDO.h>
21#include <Milieu_base.h>
22#include <Equation_base.h>
23#include <Champ_Uniforme.h>
24#include <DescStructure.h>
25#include <Schema_Temps_base.h>
27#include <Domaine_Cl_PolyMAC_family.h>
28#include <grad_U_Champ_Face_PolyMAC_CDO.h>
57 motcles[0] =
"vitesse";
58 motcles[1] =
"pression";
59 motcles[2] =
"temperature";
60 motcles[3] =
"divergence_vitesse";
61 motcles[4] =
"gradient_pression";
62 motcles[5] =
"champ_elem";
63 motcles[6] =
"champ_sommets";
66 Nom type_champ_vitesse(
"Champ_Face_PolyMAC_CDO");
67 Nom type_elem(
"Champ_Elem_PolyMAC_CDO");
69 int default_nb_comp = 0;
70 int rang = motcles.
search(directive);
75 type = type_champ_vitesse;
91 Cerr <<
"PolyMAC_CDO_discretisation : " << motcles;
110 else if (type.
debute_par(
"Champ_Som_PolyMAC_CDO"))
111 nb_ddl = domaine_PolyMAC_CDO.
nb_som();
116 nb_comp = default_nb_comp;
118 creer_champ(champ, z, type, noms[0], unites[0], nb_comp, nb_ddl, nb_pas_dt, temps, directive,
que_suis_je());
119 if (nature == multi_scalaire)
121 champ->fixer_nature_du_champ(nature);
122 champ->fixer_unites(unites);
123 champ->fixer_noms_compo(noms);
135 discretiser_champ_fonc_don(directive, z, nature, noms, unites, nb_comp, temps, champ);
146 discretiser_champ_fonc_don(directive, z, nature, noms, unites, nb_comp, temps, champ);
156void PolyMAC_CDO_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,
166 motcles[0] =
"pression";
167 motcles[1] =
"temperature";
168 motcles[2] =
"divergence_vitesse";
169 motcles[3] =
"champ_elem";
170 motcles[6] =
"champ_sommets";
171 motcles[4] =
"vitesse";
172 motcles[7] =
"champ_face";
173 motcles[5] =
"gradient_pression";
176 Nom type_champ_vitesse(
"Champ_Fonc_Face_PolyMAC_CDO");
177 Nom type_elem(
"Champ_Fonc_Elem_PolyMAC_CDO");
180 int default_nb_comp = 0;
181 int rang = motcles.search(directive);
194 type = type_champ_vitesse;
198 type =
"Champ_Fonc_Som_PolyMAC_CDO";
207 Cerr <<
"PolyMAC_CDO_discretisation : " << motcles;
222 if (type ==
"Champ_Fonc_Elem_PolyMAC_CDO")
224 else if (type == type_champ_vitesse)
225 nb_ddl = domaine_PolyMAC_CDO.
nb_faces();
226 else if (type ==
"Champ_Fonc_Som_PolyMAC_CDO")
227 nb_ddl = domaine_PolyMAC_CDO.
nb_som();
233 nb_comp = default_nb_comp;
238 if ((nature == multi_scalaire) && (champ_fonc))
240 champ_fonc->valeur().fixer_nature_du_champ(nature);
241 champ_fonc->valeur().fixer_unites(unites);
242 champ_fonc->valeur().fixer_noms_compo(noms);
244 else if ((nature == multi_scalaire) && (champ_don))
246 Cerr <<
"There is no field of type OWN_PTR(Champ_Don_base) with a multi_scalaire nature." << finl;
253 Cerr <<
"Discretisation de la distance paroi" << finl;
255 ch.typer(
"Champ_Fonc_Elem_PolyMAC_CDO");
258 ch_dist_paroi.
nommer(
"distance_paroi");
281 ch.typer(
"grad_U_Champ_Face_PolyMAC_CDO");
286 ch_grad_u.
nommer(
"gradient_vitesse");
331 if (class_operateur ==
"Source")
333 type = type_operateur;
341 else if (class_operateur ==
"Solveur_Masse")
350 type =
"Masse_PolyMAC_CDO";
353 else if (class_operateur ==
"Operateur_Grad")
355 type =
"Op_Grad_PolyMAC_CDO_Face";
357 else if (class_operateur ==
"Operateur_Div")
359 type =
"Op_Div_PolyMAC_CDO";
362 else if (class_operateur ==
"Operateur_Diff")
372 if (type_operateur !=
"")
375 type += type_operateur;
377 type +=
"_PolyMAC_CDO";
380 else if (class_operateur ==
"Operateur_Conv")
383 type += type_operateur;
402 Cerr <<
"Discretisation de distance paroi globale" << finl;
403 Noms noms(1), unites(1);
404 noms[0] =
Nom(
"distance_paroi_globale");
405 unites[0] =
Nom(
"m");
classe Champ_Don_base classe de base des Champs donnes (non calcules)
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
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.
classe Discret_Thyd Cette classe est la classe de base representant une discretisation
OBS_PTR(Domaine) le_domaine_
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.
virtual Nom get_name_of_type_for(const Nom &class_operateur, const Nom &type_operteur, const Equation_base &eqn, const OBS_PTR(Champ_base)&champ_supp=OBS_PTR(Champ_base)()) const
remplit le Nom type en focntion de la classe de operateur, du type de l'operateur et de l'equation
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
int_t nb_aretes() const
Renvoie le nombre d'aretes reelles.
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.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Champ_Inc_base & inconnue() const =0
virtual void fixer_nb_comp(int i)
Fixe le nombre de composantes 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 const Nom & fixer_nom_compo(int, const Nom &)
Fixe le nom de la i-eme composante du champ.
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
class Nom Une chaine de caractere pour nommer les objets de TRUST
virtual int debute_par(const char *const n) const
Nom & suffix(const char *const)
Extraction de suffixe : Nom x("azerty");.
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.
void distance_paroi_globale(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const override
void distance_paroi(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Fonc_base)&) const
void grad_u(const Domaine_dis_base &z, const Domaine_Cl_dis_base &zcl, const Champ_Inc_base &ch_vitesse, OWN_PTR(Champ_Fonc_base)&ch) const override
discretise en PolyMAC_CDO le fluide incompressible, donc K e N
Nom get_name_of_type_for(const Nom &class_operateur, const Nom &type_operateur, const Equation_base &eqn, const OBS_PTR(Champ_base) &champ_sup) const override
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 champ pour le PolyMAC_CDO en fonction d'une directive de discretisation.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
double temps_courant() const
Renvoie le temps courant.
Classe de base des flux de sortie.
void associer_champ(const Champ_Face_PolyMAC_CDO &)
void associer_domaine_Cl_dis_base(const Domaine_Cl_dis_base &)