57 const DoubleVect& fs = domaine.face_surfaces();
58 const IntTab& f_e = domaine.face_voisins();
60 const int nb_faces = domaine.nb_faces();
61 DoubleTrav num_flux(nb_faces, n);
64 for (
int f = 0; f < nb_faces; f++)
65 for (
int i = 0; i < 2; i++)
67 const int e = f_e(f, i);
68 if (e >= 0 && e < domaine.nb_elem())
70 for (
int k = 0; k < n; k++)
71 secmem(e, k) -= (i ? -1 : 1) * num_flux(f, k) * fs(f);
78 const Domaine& mon_dom = le_dom_coloc_->domaine();
80 const int impr_sum = (mon_dom.bords_a_imprimer_sum().est_vide() ? 0 : 1);
81 const int impr_bord = (mon_dom.bords_a_imprimer().est_vide() ? 0 : 1);
82 const Schema_Temps_base& sch = le_dcl_coloc_->equation().probleme().schema_temps();
84 int nb_comp = tab_flux_bords.
nb_dim() > 1 ? tab_flux_bords.
dimension(1) : 0;
85 DoubleVect bilan(nb_comp);
88 xgr = le_dom_coloc_->calculer_xgr();
92 int nb_front_Cl = le_dom_coloc_->nb_front_Cl();
93 DoubleTrav flux_bords2(5, nb_front_Cl, nb_comp);
95 for (
int num_cl = 0; num_cl < nb_front_Cl; num_cl++)
97 const Cond_lim& la_cl = le_dcl_coloc_->les_conditions_limites(num_cl);
100 int nfin = ndeb + frontiere_dis.
nb_faces();
101 for (face = ndeb; face < nfin; face++)
103 for (k = 0; k < nb_comp; k++)
105 flux_bords2(0, num_cl, k) += tab_flux_bords(face, k);
106 if (mon_dom.bords_a_imprimer_sum().contient(frontiere_dis.
le_nom()))
107 flux_bords2(3, num_cl, k) += tab_flux_bords(face, k);
113 flux_bords2(4, num_cl, 0) += tab_flux_bords(face, 1) * xgr(face, 0) - tab_flux_bords(face, 0) * xgr(face, 1);
117 flux_bords2(4, num_cl, 0) += tab_flux_bords(face, 2) * xgr(face, 1) - tab_flux_bords(face, 1) * xgr(face, 2);
118 flux_bords2(4, num_cl, 1) += tab_flux_bords(face, 0) * xgr(face, 2) - tab_flux_bords(face, 2) * xgr(face, 0);
119 flux_bords2(4, num_cl, 2) += tab_flux_bords(face, 1) * xgr(face, 0) - tab_flux_bords(face, 0) * xgr(face, 1);
136 for (
int num_cl = 0; num_cl < nb_front_Cl; num_cl++)
138 for (k = 0; k < nb_comp; k++)
140 Flux.add_col(flux_bords2(0, num_cl, k));
142 Flux_sum.add_col(flux_bords2(3, num_cl, k));
143 bilan(k) += flux_bords2(0, num_cl, k);
147 for (k = 0; k < nb_comp; k++)
157 for (k = 0; k < nb_comp; k++)
158 Flux.add_col(bilan(k));
166 const LIST(
Nom) &Liste_bords_a_imprimer = le_dom_coloc_->domaine().bords_a_imprimer();
167 if (!Liste_bords_a_imprimer.est_vide())
171 for (
int num_cl = 0; num_cl < nb_front_Cl; num_cl++)
173 const Frontiere_dis_base& la_fr = le_dcl_coloc_->les_conditions_limites(num_cl)->frontiere_dis();
174 const Cond_lim& la_cl = le_dcl_coloc_->les_conditions_limites(num_cl);
177 int nfin = ndeb + frontiere_dis.
nb_faces();
178 if (mon_dom.bords_a_imprimer().contient(la_fr.
le_nom()))
182 Flux_face <<
"# Flux par face sur " << la_fr.
le_nom() <<
" au temps ";
184 Flux_face <<
" : " << finl;
186 for (face = ndeb; face < nfin; face++)
189 Flux_face <<
"# Face a x= " << le_dom_coloc_->xv(face, 0) <<
" y= " << le_dom_coloc_->xv(face, 1) <<
" : ";
191 Flux_face <<
"# Face a x= " << le_dom_coloc_->xv(face, 0) <<
" y= " << le_dom_coloc_->xv(face, 1) <<
" z= " << le_dom_coloc_->xv(face, 2) <<
" : ";
192 for (k = 0; k < nb_comp; k++)
193 Flux_face << tab_flux_bords(face, k) <<
" ";
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.