86 const DoubleVect& secmem,
91 Cerr <<
"Precond_local::precond not coded for nproc > 1" << finl;
94 VECT(
Descripteur)& desc = solution.structure().descripteur();
95 int nb_struct = desc.
size();
98 else if (nb_struct==2)
102 Cerr <<
"Cases still not supported in Precond_local::preconditionner." << finl;
169 const DoubleVect& secmem,
170 DoubleVect& solution,
180 const Domaine& domaine = zdisb.
domaine();
181 int nb_som = domaine.
nb_som();
182 int nb_elem = domaine.nb_elem();
183 int nb_elem_tot = domaine.nb_elem_tot();
188 const IntVect& tab1_tot = mat.
tab1_;
189 const IntVect& tab2_tot = mat.
tab2_;
190 const DoubleVect& coeff_tot = mat.
coeff_;
195 for(ii=0; ii<nb_elem; ii++)
197 int dl = tab1_tot(ii);
198 int fl = tab1_tot(ii+1);
199 for(jj=dl; jj<fl; jj++)
201 int i_col = tab2_tot(jj-1);
202 if( (i_col<=nb_elem) ||
203 ((i_col>=nb_elem_tot+1) && (i_col<=(nb_elem_tot+nb_som))) )
206 tab1_reel(ii+1)=cpt+1;
208 for(ii=nb_elem_tot; ii<(nb_elem_tot+nb_som); ii++)
210 int dl = tab1_tot(ii);
211 int fl = tab1_tot(ii+1);
212 for(jj=dl; jj<fl; jj++)
214 if(tab2_tot(jj-1)<=(nb_elem_tot+nb_som))
217 tab1_reel((ii-nb_elem_tot)+nb_elem+1)=cpt+1;
221 for(ii=0; ii<nb_elem; ii++)
223 int dl = tab1_tot(ii);
224 int fl = tab1_tot(ii+1);
225 for(jj=dl; jj<fl; jj++)
227 int i_col = tab2_tot(jj-1);
230 tab2_reel(cpt)=tab2_tot(jj-1);
231 coeff_reel(cpt++)=coeff_tot(jj-1);
233 if( (i_col>=nb_elem_tot+1) &&
234 (i_col<=(nb_elem_tot+nb_som)) )
236 tab2_reel(cpt)=tab2_tot(jj-1)-nb_elem_tot+nb_elem;
237 coeff_reel(cpt++)=coeff_tot(jj-1);
241 for(ii=nb_elem_tot; ii<(nb_elem_tot+nb_som); ii++)
243 int dl = tab1_tot(ii);
244 int fl = tab1_tot(ii+1);
245 for(jj=dl; jj<fl; jj++)
247 if(tab2_tot(jj-1)<=(nb_elem_tot+nb_som))
249 tab2_reel(cpt)=tab2_tot(jj-1)-nb_elem_tot+nb_elem;
250 coeff_reel(cpt++)=coeff_tot(jj-1);
258 const ArrOfInt& items_tot = solution.get_items_communs_tot();
261 k = items_tot[i]-nb_elem_tot+nb_elem;
262 for(j=tab1_reel[k]+1; j<tab1_reel[k+1]; j++)
264 coeff_reel(j-1) = 0. ;
269 for(l=tab1_reel[j]+1; l<tab1_reel[j+1]; l++)
271 if((tab2_reel[l-1]-1)==k)
273 coeff_reel(l-1) = 0. ;
281 VECT(
Descripteur)& desc = solution.structure().descripteur();
282 int nb_struct = desc.
size();
285 for(ind_struct=0; ind_struct<nb_struct; ind_struct++)
290 DoubleTab sol_loc(taille);
291 DoubleTab sec_loc(taille);
293 for(ind_struct=0; ind_struct<nb_struct; ind_struct++)
298 int fin=deb+desci.nb();
299 for(i=deb; i<fin; i++)
301 sol_loc[cpt] = solution[i];
302 sec_loc[cpt] = secmem[i];
307 sec_loc,sol_loc,champ);
309 for(ind_struct=0; ind_struct<nb_struct; ind_struct++)
314 int fin=deb+desci.nb();
315 for(i=deb; i<fin; i++)
316 solution[i]=sol_loc[cpt++];
int_t nb_som() const
Renvoie le nombre de sommets du domaine.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
const Domaine & domaine() const