42 const int nb_elem = zvef.
nb_elem();
43 int size_vol = les_sous_domaines.size()+1;
44 vol_glob_pond.
resize(size_vol);
46 const int nb_faces = zvef.
nb_faces();
55 double fac_pond,vol_entrelace;
58 IntVect face_fait(nb_faces);
60 for (
auto& itr : les_sous_domaines)
62 const Sous_Domaine& sz = itr.valeur();
65 int el,elem0,elem1,elem_test;
67 for (
int elem=0; elem<size_sz; elem++)
73 for (
int fac=0; fac<nb_fac_el; fac++)
75 face_g = elem_faces(el,fac);
77 if (!face_fait(face_g))
95 int ok_trouve_loc = 0;
99 for (
int poly=0; poly<size_sz; poly++)
101 if (elem_test==sz(poly))
104 if (elem_test>nb_elem-1)
111 if ((ok_trouve_loc==1) || (elem_test==-1))
118 if (face_g<prem_face_std)
119 vol_entrelace = vol_entrelaces_Cl(face_g);
121 vol_entrelace = vol_entrelaces(face_g);
123 vol_glob_pond(cpt) += fac_pond*vol_entrelace*por_face(face_g);
124 face_fait(face_g) = 1;
132 for (
int n_bord=0; n_bord<zvef.
nb_front_Cl(); n_bord++)
141 for (
int ind_face=num1; ind_face<num2; ind_face++)
144 if (face_fait(face)==1)
145 vol_glob_pond(cpt) -= vol_entrelaces_Cl(face)*por_face(face);
153 for (
int num_face=0; num_face<prem_face_std; num_face++)
155 face_marq = faces_doubles[num_face];
156 double contrib_double = double(face_marq);
157 vol_glob_pond(0) += (1.-0.5*contrib_double)*vol_entrelaces_Cl(num_face)*por_face(num_face);
163 for (
int n_bord=0; n_bord<zvef.
nb_front_Cl(); n_bord++)
172 for (
int ind_face=num1; ind_face<num2; ind_face++)
175 face_marq = faces_doubles[face];
176 double contrib_double = double(face_marq);
177 vol_glob_pond(0) -= (1.-0.5*contrib_double)*vol_entrelaces_Cl(face)*por_face(face);
182 for (
int num_face=prem_face_std; num_face<nb_faces; num_face++)
184 face_marq = faces_doubles[num_face];
185 double contrib_double = double(face_marq);
186 vol_glob_pond(0) += (1.-0.5*contrib_double)*vol_entrelaces(num_face)*por_face(num_face);
188 vol_glob_pond(0) =
mp_sum(vol_glob_pond(0));
190 for (
int i=1; i<size_vol; i++)
192 vol_glob_pond(i) =
mp_sum(vol_glob_pond(i));
193 vol_glob_pond(0) -= vol_glob_pond(i);
196 return vol_glob_pond;
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
DoubleVect & volumes_entrelaces_Cl()
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 premiere_face_std() const
int nb_faces() const
renvoie le nombre global de faces.
DoubleVect & volumes_entrelaces()
ArrOfInt & faces_doubles()
renvoie 1 pour les faces appartenant a un bord perio ou un item commun, 0 par defaut
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
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.
const Domaine & domaine() const
int_t nb_elem_tot() const