51 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
59 const IntVect& orientation = domaine_VDF.
orientation();
60 const DoubleTab& xv = domaine_VDF.
xv();
74 for (
int n_bord=0; n_bord<domaine_VDF.
nb_front_Cl(); n_bord++)
81 int nfin = ndeb + le_bord.
nb_faces();
88 for (
int num_face=ndeb; num_face<nfin; num_face++)
91 int elem = face_voisins(num_face,0);
94 outlet = (vitesse(num_face)<0?1:0);
95 elem = face_voisins(num_face,1);
98 outlet = (vitesse(num_face)>0?1:0);
100 for (
int dim=0; dim<nb_dim; dim++)
102 double param_face = (outlet ? valeur(param,elem,dim) : 0.5*(valeur(param,elem,dim)+la_cl_neumann_scal.
val_ext(num_face-ndeb,dim)));
103 coef += valeur(beta_valeurs,elem,elem,dim)*(
Scalaire0(dim)-param_face);
108 double cos_teta = cos(xv(num_face,1));
109 double sin_teta = sin(xv(num_face,1));
110 g(0) = grav(0)*cos_teta + grav(1)*sin_teta;
111 g(1) = grav(1)*cos_teta - grav(0)*sin_teta;
113 double vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
114 int ncomp = orientation(num_face);
115 secmem(num_face)+= coef*g(ncomp)*vol;
118 else if (sub_type(
Dirichlet,la_cl_scal.valeur()))
121 for (
int num_face=ndeb; num_face<nfin; num_face++)
124 int elem = face_voisins(num_face,0);
127 outlet = (vitesse(num_face)<0?1:0);
128 elem = face_voisins(num_face,1);
131 outlet = (vitesse(num_face)>0?1:0);
134 for (
int dim=0; dim<nb_dim; dim++)
136 double param_face = (outlet ? valeur(param,elem,dim) : 0.5*(valeur(param,elem,dim)+la_cl_diri_scal.
val_imp(num_face-ndeb,dim)));
137 coef += valeur(beta_valeurs,elem,elem,dim)*(
Scalaire0(dim)-param_face);
141 double cos_teta = cos(xv(num_face,1));
142 double sin_teta = sin(xv(num_face,1));
143 g(0) = grav(0)*cos_teta + grav(1)*sin_teta;
144 g(1) = grav(1)*cos_teta - grav(0)*sin_teta;
146 double vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
147 int ncomp = orientation(num_face);
148 secmem(num_face)+= coef*g(ncomp)*vol;
154 for (
int num_face=ndeb; num_face<nfin; num_face++)
156 int elem = face_voisins(num_face,0);
157 if (elem == -1) elem = face_voisins(num_face,1);
159 for (
int dim=0; dim<nb_dim; dim++)
161 double param_face = valeur(param,elem,dim);
162 coef += valeur(beta_valeurs,elem,elem,dim)*(
Scalaire0(dim)-param_face);
166 double cos_teta = cos(xv(num_face,1));
167 double sin_teta = sin(xv(num_face,1));
168 g(0) = grav(0)*cos_teta + grav(1)*sin_teta;
169 g(1) = grav(1)*cos_teta - grav(0)*sin_teta;
171 int ncomp = orientation(num_face);
172 double vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
173 secmem(num_face) += coef*g(ncomp)*vol;
180 int nb_faces = domaine_VDF.
nb_faces();
181 for (
int num_face=ndeb; num_face<nb_faces; num_face++)
183 int elem1 = face_voisins(num_face,0);
184 int elem2 = face_voisins(num_face,1);
186 for (
int dim=0; dim<nb_dim; dim++)
188 double param_face = 0.5*(valeur(param,elem1,dim)+valeur(param,elem2,dim));
189 coef += valeur(beta_valeurs,elem1,elem2,dim)*(
Scalaire0(dim)-param_face);
193 double cos_teta = cos(xv(num_face,1));
194 double sin_teta = sin(xv(num_face,1));
195 g(0) = grav(0)*cos_teta + grav(1)*sin_teta;
196 g(1) = grav(1)*cos_teta - grav(0)*sin_teta;
198 int ncomp = orientation(num_face);
199 double vol = volumes_entrelaces(num_face)*porosite_surf(num_face);
200 secmem(num_face) += coef*g(ncomp)*vol;
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
int orientation(int) const override
inline DoubleVect& Domaine_VDF::porosite_face() {
int nb_faces() const
renvoie le nombre global de faces.
double xv(int num_face, int k) const
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.