16#include <Domaine_Cl_dis_base.h>
17#include <Equation_base.h>
18#include <Champ_Q1NC.h>
19#include <Periodique.h>
40 int ndeb, nfin, num_face;
42 for (
int i = 0; i < nb_cl; i++)
54 for (num_face = ndeb; num_face < nfin; num_face++)
57 for (
int comp = 0; comp < nb_compo; comp++)
59 if (ch_tab(num_face, comp) != ch_tab(voisine, comp))
61 moy = 0.5 * (ch_tab(num_face, comp) + ch_tab(voisine, comp));
62 ch_tab(num_face, comp) = moy;
63 ch_tab(voisine, comp) = moy;
75 for (
int ncomp = 0; ncomp <
nb_comp(); ncomp++)
77 return (vit_norm > 0);
101 for (num_elem = 0; num_elem < nb_elem; num_elem++)
103 vorticite(num_elem) = gradient_elem(num_elem, 1, 0) - gradient_elem(num_elem, 0, 1);
109 for (num_elem = 0; num_elem < nb_elem; num_elem++)
111 vorticite(num_elem, 0) = gradient_elem(num_elem, 2, 1) - gradient_elem(num_elem, 1, 2);
112 vorticite(num_elem, 1) = gradient_elem(num_elem, 0, 2) - gradient_elem(num_elem, 2, 0);
113 vorticite(num_elem, 2) = gradient_elem(num_elem, 1, 0) - gradient_elem(num_elem, 0, 1);
128 const DoubleTab& face_normales = domaine_VEF.
face_normales();
129 const int nb_faces = domaine_VEF.
nb_faces();
130 const int nb_elem = domaine_VEF.
nb_elem();
131 const IntTab& face_voisins = domaine_VEF.
face_voisins();
133 const DoubleVect& volumes = domaine_VEF.
volumes();
135 assert(gradient_elem.
dimension(0) == nb_elem);
138 operator_egal(gradient_elem, 0.);
139 int icomp, fac, i, elem1, elem2;
143 for (fac = 0; fac < premiere_face_int; fac++)
145 elem1 = face_voisins(fac, 0);
146 for (icomp = 0; icomp <
dimension; icomp++)
149 gradient_elem(elem1, icomp, i) += face_normales(fac, i) * vitesse(fac, icomp);
152 for (; fac < nb_faces; fac++)
154 elem1 = face_voisins(fac, 0);
155 elem2 = face_voisins(fac, 1);
156 for (icomp = 0; icomp <
dimension; icomp++)
159 gradient_elem(elem1, icomp, i) += face_normales(fac, i) * vitesse(fac, icomp);
161 gradient_elem(elem2, icomp, i) -= face_normales(fac, i) * vitesse(fac, icomp);
165 tab_divide_any_shape(gradient_elem, volumes);
virtual void creer_tableau_distribue(const MD_Vector &, RESIZE_OPTIONS=RESIZE_OPTIONS::COPY_INIT)
int lire_donnees(Entree &)
Lit les valeurs du champs a partir d'un flot d'entree.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
DoubleTab & trace(const Frontiere_dis_base &fr, const DoubleTab &y, DoubleTab &x, int distant) const
void cal_rot_ordre1(DoubleTab &)
int compo_normale_sortante(int) const
void gradient(DoubleTab &)
DoubleTab & trace(const Frontiere_dis_base &, DoubleTab &, double, int distant) const override
voir Champ_base Cas particulier (malheureusement) du Champ_P0_VDF :
void verifie_valeurs_cl() override
const Domaine_VEF & domaine_vef() const override
int fixer_nb_valeurs_nodales(int n) override
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
static void verifier(const char *const msg, double)
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int nb_cond_lim() const
Renvoie le nombre de conditions aux limites.
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
int nb_faces() const
renvoie le nombre global de faces.
const MD_Vector & md_vector_faces() const
virtual double face_normales(int face, int comp) const
double volumes(int i) const
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Champ_Inc_base & inconnue() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
const Nom & le_nom() const override
Renvoie le nom du champ.
virtual int nb_comp() const
int num_premiere_face() const
classe Frontiere_dis_base Classe representant une frontiere discretisee.
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
classe Periodique Cette classe represente une condition aux limites periodique.
int face_associee(int i) const
Classe de base des flux de sortie.
_SIZE_ dimension(int d) const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")