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 &)
Reads the field values from an input stream.
DoubleTab & valeurs() override
Returns the array of field values at the current time.
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
See Champ_base. Special case (unfortunately) of Champ_P0_VDF:
void verifie_valeurs_cl() override
const Domaine_VEF & domaine_vef() const override
int fixer_nb_valeurs_nodales(int n) override
class Cond_lim_base Base class for the hierarchy of classes that represent the different boundary con...
virtual Frontiere_dis_base & frontiere_dis()
Returns the discretized boundary to which the boundary conditions apply.
static void verifier(const char *const msg, double)
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
Creates a parallel array of values at elements.
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
int nb_cond_lim() const
Returns the number of boundary conditions.
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
int nb_faces() const
Returns the total number of 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
A face is internal if and only if it separates two elements.
int face_voisins(int num_face, int i) const
Returns the neighbouring element of num_face in 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()
Returns the discretized boundary condition domain associated with the equation.
const Nom & le_nom() const override
Returns the name of the field.
virtual int nb_comp() const
int num_premiere_face() const
class Frontiere_dis_base Class representing a discretized boundary.
: This class is an OWN_PTR but the pointed object is shared among multiple
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
class Periodique This class represents a periodic boundary condition.
int face_associee(int i) const
Base class for output streams.
_SIZE_ dimension(int d) const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")