32 int num_face, face, k;
43 if (champ_inconnue.
nb_dim() == 2)
48 la_matrice.
dimensionner((n1 + n2) * nb_comp, (n1 + n2) * nb_comp, 0);
58 IntVect rang_voisin(n1 * nb_comp);
61 for (num_face = ndeb; num_face < nfin; num_face++)
63 elem1 = face_voisins(num_face, 0);
64 elem2 = face_voisins(num_face, 1);
65 (rang_voisin(elem2))++;
66 (rang_voisin(elem1))++;
71 for (i = 0; i < les_cl.size(); i++)
80 int nfaces = la_front_dis.
nb_faces();
84 for (face = 0; face < nfaces; face++)
90 ind_face_global = face + numdeb;
92 elem1 = face_voisins(ind_face_global, 0);
93 elem2 = face_voisins(ind_face_global, 1);
95 (rang_voisin(elem2))++;
96 (rang_voisin(elem1))++;
105 for (i = 0; i < n1; i++)
106 for (k = 0; k < nb_comp; k++)
107 tab1(i * nb_comp + 1 + k) = rang_voisin(i) + tab1(i * nb_comp + k);
108 for (i = n1; i < n1 + n2; i++)
109 for (k = 0; k < nb_comp; k++)
110 tab1(i * nb_comp + 1 + k) = tab1(i * nb_comp + k);
114 la_matrice.
dimensionner((n1 + n2) * nb_comp, tab1(n1 * nb_comp) - 1);
116 for (i = 0; i < n1 * nb_comp; i++)
118 tab2[tab1[i] - 1] = i + 1;
119 rang_voisin[i] = (int)tab1[i];
124 for (num_face = ndeb; num_face < nfin; num_face++)
126 elem1 = face_voisins(num_face, 0);
127 elem2 = face_voisins(num_face, 1);
129 for (k = 0; k < nb_comp; k++)
131 tab2[rang_voisin[elem2 * nb_comp + k]] = elem1 * nb_comp + 1 + k;
132 rang_voisin[elem2 * nb_comp + k]++;
134 tab2[rang_voisin[elem1 * nb_comp + k]] = elem2 * nb_comp + 1 + k;
135 rang_voisin[elem1 * nb_comp + k]++;
140 for (i = 0; i < les_cl.size(); i++)
148 int nfaces = la_front_dis.
nb_faces();
150 IntVect fait(nfaces);
152 for (ind_face_local = 0; ind_face_local < nfaces; ind_face_local++)
155 if (fait[ind_face_local] == 0)
157 num_face = numdeb + ind_face_local;
158 fait[ind_face_local] = 1;
161 elem1 = face_voisins(num_face, 0);
162 elem2 = face_voisins(num_face, 1);
164 for (k = 0; k < nb_comp; k++)
166 tab2[rang_voisin[elem2 * nb_comp + k]] = elem1 * nb_comp + 1 + k;
167 rang_voisin[elem2 * nb_comp + k]++;
169 tab2[rang_voisin[elem1 * nb_comp + k]] = elem2 * nb_comp + 1 + k;
170 rang_voisin[elem1 * nb_comp + k]++;
182 int nb_faces = le_domaine.
nb_faces();
185 Stencil stencyl(0, 2);
190 for (
int face = 0; face < nb_faces; face++)
192 for (
int dir = 0; dir < 2; dir++)
194 int elem = face_voisins(face, dir);
197 stencyl.
resize(nb_coef + 1, 2);
198 stencyl(nb_coef, 0) = elem;
199 stencyl(nb_coef, 1) = face;
204 tableau_trier_retirer_doublons(stencyl);
int_t nb_elem_tot() const
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
int nb_faces() const
renvoie le nombre global de faces.
int nb_faces_tot() const
renvoie le nombre total de faces.
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.
const Domaine & domaine() const