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>
55 inline const DoubleTab&
tau_diag()
const {
return tau_diag_; }
56 inline const DoubleTab&
tau_croises()
const {
return tau_croises_; }
57 inline DoubleTab&
tau_diag() {
return tau_diag_; }
85 inline DoubleVect&
valeur_a_elem(
const DoubleVect& position, DoubleVect& val,
int le_poly)
const override
95 inline DoubleTab&
valeur_aux_elems(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab& tab_valeurs)
const override
100 inline DoubleTab&
valeur_aux_elems_passe(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab& tab_valeurs)
const override
105 inline DoubleVect&
valeur_aux_elems_compo(
const DoubleTab& positions,
const IntVect& les_polys, DoubleVect& tab_valeurs,
int ncomp)
const override
133 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
137 const DoubleTab& nf =
domaine.face_normales();
138 const DoubleVect& fs =
domaine.face_surfaces();
140 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;
141 for (d = 0; d < D; d++)
142 v[d] = val(e, N*d+k ) - (l >= 0 ? val(e, N*d+l ) : 0);
145 for (d = 0, scal =
domaine.dot(v, &nf(f, 0)) / fs(f); d < D; d++) v[d] += (vf - scal) * nf(f, d) / fs(f);
147 double nv = sqrt(
domaine.dot(v, v));
150 for (d = 0; d < D; d++) dnv[d] = nv ? (v[d] - (f >= 0 ? vf * nf(f, d) / fs(f) : 0)) / nv : 0;
152#ifdef _COMPILE_AVEC_PGCC
153 if (dnv) dnv[3] = f >= 0 && nv ? vf / (nv+DMINFLOAT) : 0;
155 if (dnv) dnv[3] = f >= 0 && nv ? vf / nv : 0;
161 double val_imp_face_bord_private(
int face,
int comp)
const;
162 double val_imp_face_bord_private(
int face,
int comp1,
int comp2)
const;
167 DoubleTab tau_croises_;
170double Champ_Face_coeff_frottement_face_bord(
const int,
const int ,
const Domaine_Cl_VDF& zclo);
171double Champ_Face_coeff_frottement_grad_face_bord(
const int,
const int ,
const Domaine_Cl_VDF& zclo);
172double Champ_Face_get_val_imp_face_bord_sym(
const DoubleTab& tab_valeurs,
const double temp,
int face,
int comp,
const Domaine_Cl_VDF& zclo);
173double Champ_Face_get_val_imp_face_bord(
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,
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
class Champ_Face_VDF Cette classe sert a representer un champ vectoriel dont on ne calcule
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
provoque une erreur ! doit etre surchargee par les classes derivees
DoubleVect & calcul_S_barre_sans_contrib_paroi(const DoubleTab &, DoubleVect &, const Domaine_Cl_VDF &) const
Methode qui renvoie SMA_barre aux elements a partir de la vitesse aux faces.
double valeur_a_elem_compo(const DoubleVect &position, int le_poly, int ncomp) const override
provoque une erreur ! doit etre surchargee par les classes derivees
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
mettre_a_jour de la classe de base Champ_base :ne fait rien !
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
renvoie les valeurs aux sommets du Domaine dom
int remplir_coord_noeuds_et_polys(DoubleTab &positions, IntVect &polys) const override
NE FAIT RIEN Methode a surcharger.
DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &tab_valeurs, int ncomp) const override
provoque une erreur ! doit etre surchargee par les classes derivees
DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &tab_valeurs) const override
provoque une erreur ! doit etre surchargee par les classes derivees
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
Methode qui renvoie gij aux elements a partir de la vitesse aux elements (gij represente la derivee p...
void calculer_rotationnel_ordre2_centre_element(DoubleTab &) const
DoubleTab & trace(const Frontiere_dis_base &, DoubleTab &, double, int distant) const override
Calcule la trace d'un champ sur une frontiere au temps tps.
DoubleVect & valeur_aux_sommets_compo(const Domaine &dom, DoubleVect &val, int comp) const override
renvoie la compo eme valeur aux sommets de 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
classe Champ_Proto Classe representant un prototype de Champ.
classe Champ_base Cette classe est la base de la hierarchie des champs.
Champ_base()
Constructeur par defaut d'un Champ_base.
virtual Champ_base & le_champ()=0
classe Frontiere_dis_base Classe representant une frontiere discretisee.
Classe de base des flux de sortie.