15#include <Terme_Source_Constituant_Vortex_VEF_Face.h>
17#include <Transport_Interfaces_FT_Disc.h>
18#include <communications.h>
19#include <Probleme_base.h>
27 Cerr <<
"Reading Terme_Source_Constituant_Vortex_VEF_Face\n"
28 <<
" (parameters for expression are (x,y,z,u,v,w) where u,v,w is the interface sensor position)" << finl;
44 param.lire_avec_accolades_depuis(is);
50 Cerr <<
"Error: wrong segments dimension or nb_points_tests" << finl;
74 const DoubleTab& xv = domaine_vef.
xv();
75 const int nb_faces = domaine_vef.
nb_faces();
81 double integrale = 0.;
83 for (
int i_face = 0; i_face < nb_faces; i_face++)
90 f = exp((-x*x-y*y-z*z) * omega);
92 double volume = (i_face < premiere_face_std) ? volumes_cl[i_face] : volumes[i_face];
93 double por = porosites(i_face);
94 double x = f * volume * por;
97 if (faces_doubles[i_face])
99 integrale += x * facteur;
102 integrale =
mp_sum(integrale);
105 const double facteur =
integrale_ / integrale;
119 for (
int i = 0; i < n; i++)
128 Cerr <<
"Source_Constituant_Vortex "
138 const DoubleVect& volumes = domaine_vef.
volumes();
139 const DoubleTab& xp = domaine_vef.
xp();
147 double integrale = 0.;
150 for (elem = 0; elem < nb_elem; elem++)
155 double f = exp((-x*x-y*y-z*z) * omega) * volumes[elem];
159 integrale =
mp_sum(integrale);
165 Cerr <<
"Terme_Source_Constituant_Vortex_VEF_Face::ajouter_terme_div_u " << integrale << finl;
166 for (elem = 0; elem < nb_elem; elem++)
167 secmem_pression[elem] += tmp[elem] * facteur;
DoubleVect & volumes_entrelaces_Cl()
int premiere_face_std() const
int nb_faces() const
Returns the total number of faces.
DoubleVect & volumes_entrelaces()
double xv(int num_face, int k) const
ArrOfInt & faces_doubles()
Returns 1 for faces belonging to a periodic boundary or a shared item, 0 by default.
double volumes(int i) const
double xp(int num_elem, int k) const
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
class Equation_base The role of an equation is the calculation of one or more fields....
virtual const Milieu_base & milieu() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Returns the discretized boundary condition domain associated with the equation.
Domaine_dis_base & domaine_dis()
Returns the discretized domain associated with the equation.
DoubleVect & porosite_face()
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 Probleme_base It is a Probleme_U that is not a coupling.
static double mp_sum(double)
Computes the sum of x over all processors in the current group.
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Base class for output streams.
void resize_array(_SIZE_ new_size, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension(int d) const
_SIZE_ size_totale() const
class Terme_Source_Constituant_VEF_Face
Senseur_Interface senseur_
ArrOfDouble position_spot_
void associer_pb(const Probleme_base &pb) override
DoubleTab & calculer(DoubleTab &tab) const override
DoubleTab & ajouter(DoubleTab &tab) const override
void mettre_a_jour(double temps) override
DOES NOTHING - to override in derived classes.
void ajouter_terme_div_u(DoubleVect &secmem_pression, double dt) const