17#ifndef Champ_Face_VDF_included
18#define Champ_Face_VDF_included
20#include <Champ_Face_VDF_implementation.h>
21#include <Champ_Face_base.h>
22#include <Domaine_VDF.h>
56 inline const DoubleTab&
tau_diag()
const {
return tau_diag_; }
57 inline const DoubleTab&
tau_croises()
const {
return tau_croises_; }
58 inline DoubleTab&
tau_diag() {
return tau_diag_; }
86 inline DoubleVect&
valeur_a_elem(
const DoubleVect& position, DoubleVect& val,
int le_poly)
const override
96 inline DoubleTab&
valeur_aux_elems(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab& tab_valeurs)
const override
101 inline DoubleTab&
valeur_aux_elems_passe(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab& tab_valeurs)
const override
106 inline DoubleVect&
valeur_aux_elems_compo(
const DoubleTab& positions,
const IntVect& les_polys, DoubleVect& tab_valeurs,
int ncomp)
const override
134 inline double v_norm(
const DoubleTab& val,
const DoubleTab& val_f,
int e,
int f,
int k,
int l,
double *v_ext,
double *dnv)
const
138 const DoubleTab& nf =
domaine.face_normales();
139 const DoubleVect& fs =
domaine.face_surfaces();
141 double scal = 0, vf = f >= 0 ? val_f(f, k) - (l >= 0 ? val_f(f, l) : 0) : 0, v_temp[3], *v = v_ext ? v_ext : v_temp;
142 for (d = 0; d < D; d++)
143 v[d] = val(e, N*d+k ) - (l >= 0 ? val(e, N*d+l ) : 0);
146 for (d = 0, scal =
domaine.dot(v, &nf(f, 0)) / fs(f); d < D; d++) v[d] += (vf - scal) * nf(f, d) / fs(f);
148 double nv = sqrt(
domaine.dot(v, v));
151 for (d = 0; d < D; d++) dnv[d] = nv ? (v[d] - (f >= 0 ? vf * nf(f, d) / fs(f) : 0)) / nv : 0;
153#ifdef _COMPILE_AVEC_PGCC
154 if (dnv) dnv[3] = f >= 0 && nv ? vf / (nv+DMINFLOAT) : 0;
156 if (dnv) dnv[3] = f >= 0 && nv ? vf / nv : 0;
162 double val_imp_face_bord_private(
int face,
int comp)
const;
163 double val_imp_face_bord_private(
int face,
int comp1,
int comp2)
const;
168 DoubleTab tau_croises_;
171double Champ_Face_coeff_frottement_face_bord(
const int,
const int ,
const Domaine_Cl_VDF& zclo);
172double Champ_Face_coeff_frottement_grad_face_bord(
const int,
const int ,
const Domaine_Cl_VDF& zclo);
173double Champ_Face_get_val_imp_face_bord_sym(
const DoubleTab& tab_valeurs,
const double temp,
int face,
int comp,
const Domaine_Cl_VDF& zclo);
174double Champ_Face_get_val_imp_face_bord(
const double temp,
int face,
int comp,
const Domaine_Cl_VDF& zclo) ;
175double Champ_Face_get_val_imp_face_bord(
const double temp,
int face,
int comp,
int comp2,
const Domaine_Cl_VDF& zclo) ;
double valeur_a_elem_compo(const DoubleVect &position, int le_poly, int ncomp) const override
DoubleTab & valeur_aux_faces_post_impl(const Domaine_VDF &, DoubleTab &result) const
DoubleTab & valeur_aux_sommets(const Domaine &, DoubleTab &) const override
DoubleTab & remplir_coord_noeuds(DoubleTab &positions) const override
DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &valeurs, int ncomp) const override
DoubleVect & valeur_a_elem(const DoubleVect &position, DoubleVect &val, int le_poly) const override
int remplir_coord_noeuds_et_polys(DoubleTab &positions, IntVect &polys) const override
DoubleTab & valeur_aux_elems_passe(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &valeurs) const
DoubleVect & valeur_aux_sommets_compo(const Domaine &, DoubleVect &, int) const override
DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &valeurs) const override
DoubleTab & valeur_aux_elems_passe(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &tab_valeurs) const override
DoubleVect & calcul_S_barre(const DoubleTab &, DoubleVect &, const Domaine_Cl_VDF &) const
int imprime(Sortie &, int) const override
int compo_normale_sortante(int) const
void calcul_critere_Q(DoubleTab &, const Domaine_Cl_VDF &)
DoubleTab & remplir_coord_noeuds(DoubleTab &positions) const override
DoubleVect & valeur_a_elem(const DoubleVect &position, DoubleVect &val, int le_poly) const override
Causes an error! Must be overridden by derived classes.
DoubleVect & calcul_S_barre_sans_contrib_paroi(const DoubleTab &, DoubleVect &, const Domaine_Cl_VDF &) const
Returns SMA_barre at elements from the face velocity.
double valeur_a_elem_compo(const DoubleVect &position, int le_poly, int ncomp) const override
Causes an error! Must be overridden by derived classes.
DoubleTab & tau_croises()
DoubleTab & valeur_aux_faces_post(DoubleTab &result) const override
void calculer_dercov_axi(const Domaine_Cl_VDF &)
void mettre_a_jour(double temps) override
Update of the base class Champ_base: does nothing!
double v_norm(const DoubleTab &val, const DoubleTab &val_f, int e, int f, int k, int l, double *v_ext, double *dnv) const
void calculer_dscald_centre_element(DoubleTab &) const
void calcul_y_plus(DoubleTab &, const Domaine_Cl_VDF &)
void verifie_valeurs_cl() override
void calcul_grad_u(const DoubleTab &, DoubleTab &, const Domaine_Cl_VDF &)
DoubleTab & valeur_aux_sommets(const Domaine &dom, DoubleTab &val) const override
Returns the values at the vertices of the Domain dom.
int remplir_coord_noeuds_et_polys(DoubleTab &positions, IntVect &polys) const override
DOES NOTHING. Method to override.
DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &tab_valeurs, int ncomp) const override
Causes an error! Must be overridden by derived classes.
DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &tab_valeurs) const override
Causes an error! Must be overridden by derived classes.
virtual const Champ_Proto & affecter(const double x1, const double x2)
const Domaine_VDF & domaine_vdf() const override
int fixer_nb_valeurs_nodales(int) override
const DoubleTab & tau_croises() const
DoubleTab & calcul_duidxj(const DoubleTab &, DoubleTab &) const
Returns gij at elements from the element velocity (gij represents the partial derivative dui/dxj).
void calculer_rotationnel_ordre2_centre_element(DoubleTab &) const
DoubleTab & trace(const Frontiere_dis_base &, DoubleTab &, double, int distant) const override
Computes the trace of a field on a boundary at time tps.
DoubleVect & valeur_aux_sommets_compo(const Domaine &dom, DoubleVect &val, int comp) const override
Returns the compo-th value at the vertices of dom.
Champ_base & affecter_(const Champ_base &) override
DoubleTab & calcul_S_barre_Multiphase(const DoubleTab &, DoubleTab &, const Domaine_Cl_VDF &) const
void dimensionner_tenseur_Grad()
void calcul_y_plus_diphasique(DoubleTab &, const Domaine_Cl_VDF &)
const DoubleTab & tau_diag() const
const Domaine & domaine() const
class Champ_Proto Class representing a Field prototype.
class Champ_base This class is the base of the fields hierarchy.
Champ_base()
Default constructor of a Champ_base.
virtual Champ_base & le_champ()=0
class Frontiere_dis_base Class representing a discretized boundary.
Base class for output streams.