55 const DoubleVect& vol = dvdf.
volumes();
60 const DoubleTab& temp = mon_champ_->valeurs();
71 IntTrav indx_pond(n_elem, N);
73 for (
int n_bord = 0; n_bord < dvdf.
nb_front_Cl(); n_bord++)
74 for (
int k = 0; k < N; k++)
76 const Cond_lim& la_cl = le_dom_Cl_VDF->les_conditions_limites(n_bord);
82 for (
int num_face = ndeb; num_face < nfin; num_face++)
84 const int elem1 = face_voisins(num_face, 0), elem2 = face_voisins(num_face, 1);
86 val(elem1, k) += (vol(elem1) * temp(elem1, k) + vol(elem2) * temp(elem2, k)) / (vol(elem1) + vol(elem2));
87 val(elem2, k) = val(elem1, k);
89 indx_pond(elem1, k)++;
90 indx_pond(elem1, k)++;
93 else if (sub_type(
Dirichlet, la_cl.valeur()))
95 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
97 int elem = face_voisins(num_face, 0);
99 elem = face_voisins(num_face, 1);
101 val(elem, k) += ref_cast(
Dirichlet, la_cl.valeur()).val_imp(num_face_cl, k);
103 indx_pond(elem, k)++;
108 for (
int num_face = ndeb; num_face < nfin; num_face++)
110 int elem = face_voisins(num_face, 0);
112 elem = face_voisins(num_face, 1);
115 indx_pond(elem, k)++;
120 for (
int num_face = ndeb; num_face < nfin; num_face++)
122 int elem = face_voisins(num_face, 0);
124 elem = face_voisins(num_face, 1);
126 val(elem, k) += temp(elem, k);
127 indx_pond(elem, k)++;
133 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
135 const int elem1 = face_voisins(num_face, 0), elem2 = face_voisins(num_face, 1);
142 const IntVect& fmap = Text_int.
face_map();
143 int opp_face = fmap[num_face_cl]+ num_face - num_face_cl ;
144 int e1 = face_voisins(opp_face, 0);
145 elem_opp = (e1 != -1) ? e1 : face_voisins(opp_face, 1);
150 const int elem = elem1 > -1 ? elem1 : elem2;
152 const double h_imp = la_cl_ext.
h_imp(num_face_cl, k) , T_ext = (elem_opp == -1) ? la_cl_ext.
T_ext(num_face_cl, k) : temp(elem_opp, k);
153 const double nu = eval.
nu_2_impl(elem, k), t_elem = temp(elem, k);
154 const double eps = is_radiatif ? la_cl_ext.
emissivite(num_face_cl, k) : 0;
156 val(elem, k) += newton_T_paroi_VDF(eps, h_imp, T_ext, nu, e, t_elem);
157 indx_pond(elem, k)++;
163 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
165 const int elem1 = face_voisins(num_face, 0), elem2 = face_voisins(num_face, 1);
166 const int elem = elem1 > -1 ? elem1 : elem2;
168 const double h_imp = la_cl_glob.
h_imp(num_face_cl, k) , T_ext = la_cl_glob.
T_ext(num_face_cl, k);
169 const double nu = eval.
nu_2_impl(elem, k), t_elem = temp(elem, k);
171 const double phi = phi_ext + h_imp * (T_ext - t_elem);
173 val(elem, k) += e * phi / nu + t_elem;
174 indx_pond(elem, k)++;
178 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
180 const int elem1 = face_voisins(num_face, 0), elem2 = face_voisins(num_face, 1);
181 const double signe = elem1 > -1 ? -1.0 : 1.0;
182 const int elem = elem1 > -1 ? elem1 : elem2;
184 const double nu = eval.
nu_2_impl(elem, k), t_elem = temp(elem, k);
186 val(elem, k) += signe * e * ref_cast(
Neumann_paroi, la_cl.valeur()).flux_impose(num_face_cl, k) / nu + t_elem;
187 indx_pond(elem, k)++;
192 for (
int elem = 0; elem < n_elem; elem++)
193 for (
int k = 0; k < N; k++)
194 if (indx_pond(elem, k) > 0)
195 val(elem, k) /= (double)indx_pond(elem, k);
double dist_norm_bord(int num_face) const override
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.