47 else erreur_champ_(__func__);
49 const DoubleTab& coord = mon_domaine->coord_sommets();
50 const DoubleTab& ch =
valeurs();
53 for (
int rang_poly = 0; rang_poly < les_polys.
size_array(); rang_poly++)
55 le_poly = les_polys(rang_poly);
57 for (
int ncomp = 0; ncomp <
nb_compo_; ncomp++) val(rang_poly, ncomp) = 0;
59 for (
int ncomp = 0; ncomp <
nb_compo_; ncomp++)
61 int som1 = mon_domaine->sommet_elem(le_poly, 0);
62 int som2 = mon_domaine->sommet_elem(le_poly, 1);
63 int som3 = mon_domaine->sommet_elem(le_poly, 2);
64 int som4 = mon_domaine->sommet_elem(le_poly, 3);
65 int som5 = mon_domaine->sommet_elem(le_poly, 4);
66 int som6 = mon_domaine->sommet_elem(le_poly, 5);
67 int som7 = mon_domaine->sommet_elem(le_poly, 6);
68 int som8 = mon_domaine->sommet_elem(le_poly, 7);
70 double xmin = coord(som1, 0);
71 double xmax = coord(som2, 0);
72 double ymin = coord(som1, 1);
73 double ymax = coord(som3, 1);
74 double zmin = coord(som1, 2);
75 double zmax = coord(som5, 2);
77 double hx = xmax - xmin;
78 double hy = ymax - ymin;
79 double hh = zmax - zmin;
81 val(rang_poly, ncomp) = ch(som1, ncomp) * (xmax - positions(rang_poly, 0)) * (ymax - positions(rang_poly, 1)) * (zmax - positions(rang_poly, 2));
82 val(rang_poly, ncomp) += ch(som2, ncomp) * (positions(rang_poly, 0) - xmin) * (ymax - positions(rang_poly, 1)) * (zmax - positions(rang_poly, 2));
83 val(rang_poly, ncomp) += ch(som3, ncomp) * (xmax - positions(rang_poly, 0)) * (positions(rang_poly, 1) - ymin) * (zmax - positions(rang_poly, 2));
84 val(rang_poly, ncomp) += ch(som4, ncomp) * (positions(rang_poly, 0) - xmin) * (positions(rang_poly, 1) - ymin) * (zmax - positions(rang_poly, 2));
85 val(rang_poly, ncomp) += ch(som5, ncomp) * (xmax - positions(rang_poly, 0)) * (ymax - positions(rang_poly, 1)) * (positions(rang_poly, 2) - zmin);
86 val(rang_poly, ncomp) += ch(som6, ncomp) * (positions(rang_poly, 0) - xmin) * (ymax - positions(rang_poly, 1)) * (positions(rang_poly, 2) - zmin);
87 val(rang_poly, ncomp) += ch(som7, ncomp) * (xmax - positions(rang_poly, 0)) * (positions(rang_poly, 1) - ymin) * (positions(rang_poly, 2) - zmin);
88 val(rang_poly, ncomp) += ch(som8, ncomp) * (positions(rang_poly, 0) - xmin) * (positions(rang_poly, 1) - ymin) * (positions(rang_poly, 2) - zmin);
90 val(rang_poly, ncomp) /= (hx * hy * hh);
99 const DoubleTab& coord = mon_domaine->coord_sommets();
100 const DoubleTab& ch =
valeurs();
103 for (
int rang_poly = 0; rang_poly < les_polys.
size_array(); rang_poly++)
105 le_poly = les_polys(rang_poly);
106 if (le_poly == -1) val(rang_poly) = 0;
109 int som1 = mon_domaine->sommet_elem(le_poly, 0);
110 int som2 = mon_domaine->sommet_elem(le_poly, 1);
111 int som3 = mon_domaine->sommet_elem(le_poly, 2);
112 int som4 = mon_domaine->sommet_elem(le_poly, 3);
113 int som5 = mon_domaine->sommet_elem(le_poly, 4);
114 int som6 = mon_domaine->sommet_elem(le_poly, 5);
115 int som7 = mon_domaine->sommet_elem(le_poly, 6);
116 int som8 = mon_domaine->sommet_elem(le_poly, 7);
118 double xmin = coord(som1, 0);
119 double xmax = coord(som2, 0);
120 double ymin = coord(som1, 1);
121 double ymax = coord(som3, 1);
122 double zmin = coord(som1, 2);
123 double zmax = coord(som5, 2);
125 double hx = xmax - xmin;
126 double hy = ymax - ymin;
127 double hh = zmax - zmin;
129 val(rang_poly) = ch(som1, ncomp) * (xmax - positions(rang_poly, 0)) * (ymax - positions(rang_poly, 1)) * (zmax - positions(rang_poly, 2));
130 val(rang_poly) += ch(som2, ncomp) * (positions(rang_poly, 0) - xmin) * (ymax - positions(rang_poly, 1)) * (zmax - positions(rang_poly, 2));
131 val(rang_poly) += ch(som3, ncomp) * (xmax - positions(rang_poly, 0)) * (positions(rang_poly, 1) - ymin) * (zmax - positions(rang_poly, 2));
132 val(rang_poly) += ch(som4, ncomp) * (positions(rang_poly, 0) - xmin) * (positions(rang_poly, 1) - ymin) * (zmax - positions(rang_poly, 2));
133 val(rang_poly) += ch(som5, ncomp) * (xmax - positions(rang_poly, 0)) * (ymax - positions(rang_poly, 1)) * (positions(rang_poly, 2) - zmin);
134 val(rang_poly) += ch(som6, ncomp) * (positions(rang_poly, 0) - xmin) * (ymax - positions(rang_poly, 1)) * (positions(rang_poly, 2) - zmin);
135 val(rang_poly) += ch(som7, ncomp) * (xmax - positions(rang_poly, 0)) * (positions(rang_poly, 1) - ymin) * (positions(rang_poly, 2) - zmin);
136 val(rang_poly) += ch(som8, ncomp) * (positions(rang_poly, 0) - xmin) * (positions(rang_poly, 1) - ymin) * (positions(rang_poly, 2) - zmin);
138 val(rang_poly) /= (hx * hy * hh);