16#include <Check_espace_virtuel.h>
17#include <Echange_impose_base.h>
18#include <Op_Grad_P0_to_Face.h>
19#include <Dirichlet_homogene.h>
20#include <Neumann_homogene.h>
21#include <Domaine_Cl_VDF.h>
22#include <Neumann_paroi.h>
23#include <Periodique.h>
25#include <Perf_counters.h>
43 const DoubleTab& inco = semi_impl.count(
"pression") ? semi_impl.at(
"pression") :
equation().
inconnue().
valeurs();
44 assert_espace_virtuel_vect(inco);
48 const DoubleTab& xv = zvdf.
xv();
54 for (
int n_bord = 0; n_bord < zvdf.
nb_front_Cl(); n_bord++)
55 for (
int k = 0; k < N; k++)
62 for (
int num_face = ndeb; num_face < nfin; num_face++)
66 secmem(num_face, k) -= (inco(n1, k) - inco(n0, k)) / dist;
68 else if (sub_type(
Dirichlet, la_cl.valeur()))
73 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
79 secmem(num_face, k) -= (inco(n0, k) - cl.
val_imp(num_face_cl, k)) / (
xp(n0, ori) - xv(num_face, ori));
83 for (
int num_face = ndeb; num_face < nfin; num_face++)
89 secmem(num_face, k) -= inco(n0, k) / (
xp(n0, ori) - xv(num_face, ori));
95 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
101 secmem(num_face, k) -= (inco(n0, k) - cl.
T_ext(num_face_cl, k)) * cl.
h_imp_grad(num_face_cl, k);
103 secmem(num_face, k) += (inco(n0, k) - cl.
T_ext(num_face_cl, k)) * cl.
h_imp_grad(num_face_cl, k);
112 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
115 secmem(num_face, k) -= cl.
flux_impose(num_face_cl, k);
117 secmem(num_face, k) += cl.
flux_impose(num_face_cl, k);
121 for (
int num_face = ndeb; num_face < nfin; num_face++)
129 if (face_opposee == num_face)
133 if ((n1 < 0) || ((n1 == n0) &&
face_voisins(face_opposee, 1) >= 0))
137 secmem(num_face, k) -= (inco(n1, k) - inco(n0, k)) / (
xp(n1, ori) -
xp(n0, ori));
143 for (
int k = 0; k < N; k++)
146 secmem(num_face, k) -= (inco(n1, k) - inco(n0, k)) / (
xp(n1, ori) -
xp(n0, ori));
DoubleTab & valeurs() override
Returns the array of field values at the current time.
virtual double get_temps_defaut() const
virtual bool has_valeurs_au_temps(double temps) const
Champ_front_base & champ_front()
class Cond_lim Generic class used to represent any class
Classe Dirichlet_homogene This class is the base class of the hierarchy of homogeneous Dirichlet-type...
Dirichlet This class is the base class of the hierarchy of Dirichlet-type boundary conditions.
virtual double val_imp(int i) const
Returns the imposed value on the i-th component of the field at the boundary at the default time of c...
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
virtual const DoubleVect & face_surfaces() const
int nb_faces() const
Returns the total number of faces.
double xv(int num_face, int k) const
int elem_faces(int i, int j) const
Returns the index of the i-th face of element num_elem; the face numbering convention is.
int premiere_face_int() const
A face is internal if and only if it separates two elements.
Echange_impose_base: This boundary condition is used only for the energy equation.
virtual double T_ext(int num) const
Returns the value of the imposed temperature on the i-th component of the boundary field.
virtual bool has_h_imp_grad() const
virtual double h_imp_grad(int num) const
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Champ_Inc_base & inconnue() const =0
int num_premiere_face() const
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
Classe Neumann_homogene This class is the base class of the hierarchy of homogeneous Neumann-type bou...
Classe Neumann_paroi This boundary condition corresponds to an imposed flux for the.
virtual double flux_impose(int i) const
Returns the value of the imposed flux on the i-th component of the field representing the flux at the...
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 Op_Grad_P0_to_Face This class represents the gradient operator
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl) const override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl) const override
DoubleVect volume_entrelaces
class Periodique This class represents a periodic boundary condition.
Base class for output streams.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")