113 int nitermax = par.
get_int(0) ;
116 int nz_search = par.
get_int(2) ;
117 int adapt_flag = par.
get_int(3) ;
133 assert(ent.
get_mp() ==
this) ;
134 assert(nzadapt < nz) ;
135 assert(nzadapt > 0) ;
136 assert(nz_search >= nzadapt) ;
137 for (
int l=1; l<nz; l++) {
143 assert(ent_limit.
get_etat() == ETATQCQ) ;
149 const double xi_max = 1 ;
155 if ( (adapt_flag == 0) || (nzadapt == 0) ) {
169 double* nalpha =
new double[nz] ;
170 double* nbeta =
new double[nz] ;
175 Tbl xtgg(np, nt, 1) ;
177 Tbl xtff(np, nt, 1) ;
183 double ent0 = ent_limit(0) ;
191 (ent.
va).equipot_outward(ent0, nz_search, precis, nitermax, niter0,
194 niter = ( niter0 > niter ) ? niter0 : niter ;
203 assert(l_ext.
get_etat() == ETATQCQ) ;
205 double r_eq =
val_r_jk(0, xi_max, j_bord, k_bord) ;
207 double* pxtgg = xtgg.
t ;
208 int* pl_ext = l_ext.
t ;
209 double* px_ext = x_ext.
t ;
211 for (
int k=0; k<np; k++) {
212 for (
int j=0; j<nt; j++) {
214 *pxtgg =
val_r_jk(*pl_ext, *px_ext, j, k) - r_eq ;
228 int base_p = ( ((ent.
va).base).b[0] ) &
MSQ_P ;
242 double* pxtff = xtff.
t ;
254 double* cf =
new double[(np+2)*nt] ;
255 double* cf0 =
new double[(np+2)*nt] ;
256 double* ff0 =
new double[np*nt] ;
258 for (
int i=0; i < np*nt; i++) {
263 cfpcossin(deg, dimc, cf) ;
269 for (
int k=0; k<np-1; k += 4) {
270 for(
int j=0; j<2*nt; j++) {
275 for(
int j=0; j<2*nt; j++) {
282 for(
int j=0; j<2*nt; j++) {
289 cipcossin(deg, dimc, deg, cf0, ff0) ;
292 for (
int i=0; i < np*nt; i++) {
301 for (
int k=0; k<np-1; k += 4) {
302 for(
int j=0; j<2*nt; j++) {
307 for(
int j=0; j<2*nt; j++) {
314 for(
int j=0; j<2*nt; j++) {
320 cipcossin(deg, dimc, deg, cf0, ff0) ;
323 for (
int i=0; i < np*nt; i++) {
335 cout <<
"Map_et::adapt: unknown phi basis !" << endl ;
336 cout <<
" base_p = " << base_p << endl ;
347 double mu = - fact_lamu *
min(xtgg) ;
352 nalpha[0] = r_eq - lambda - mu ;
363 *(nff.
t[0]) = ( xtff + lambda ) / nalpha[0] ;
364 *(ngg.
t[0]) = ( xtgg + mu ) / nalpha[0] ;
372 double r_eqlm1 = r_eq ;
377 for (
int l=1; l<nzadapt; l++) {
379 ent0 = ent_limit(l) ;
386 (ent.
va).equipot_outward(ent0, nz_search, precis, nitermax, niter0,
389 niter = ( niter0 > niter ) ? niter0 : niter ;
398 assert(l_ext.
get_etat() == ETATQCQ) ;
400 r_eq =
val_r_jk(l, xi_max, j_bord, k_bord) ;
406 for (
int k=0; k<np; k++) {
407 for (
int j=0; j<nt; j++) {
409 *pxtgg =
val_r_jk(*pl_ext, *px_ext, j, k) - r_eq ;
421 lambda = - fact_lamu *
max(xtff) ;
422 mu = - fact_lamu *
min(xtgg) ;
427 nalpha[l] = .5 * ( r_eq - r_eqlm1 + lambda - mu ) ;
428 nbeta[l] = .5 * ( r_eq + r_eqlm1 - lambda - mu ) ;
433 *(nff.
t[l]) = ( xtff + lambda ) / nalpha[l] ;
434 *(ngg.
t[l]) = ( xtgg + mu ) / nalpha[l] ;
450 xtff = 1 / (xtff + r_eqlm1) -
double(1) / r_eqlm1 ;
452 lambda = - fact_lamu *
min(xtff) ;
454 nalpha[nzadapt] = .5 * ( lambda - double(1) / r_eqlm1 ) ;
455 nbeta[nzadapt] = - nalpha[nzadapt] ;
458 *(nff.
t[nzadapt]) = ( xtff + lambda ) / nalpha[nzadapt] ;
465 r_eq =
val_r_jk(nzadapt, xi_max, j_bord, k_bord) ;
467 lambda = - fact_lamu *
max(xtff) ;
469 nalpha[nzadapt] = .5 * ( r_eq - r_eqlm1 + lambda ) ;
470 nbeta[nzadapt] = .5 * ( r_eq + r_eqlm1 - lambda ) ;
474 *(nff.
t[nzadapt]) = ( xtff + lambda ) / nalpha[nzadapt] ;
486 for (
int l=nzadapt+1; l<nz; l++) {
488 nalpha[l] =
alpha[l] ;
494 for (
int l=nzadapt+1; l<nz; l++) {
500 assert(
ff.
c != 0x0) ;
502 for (
int l=nzadapt+1; l<nz; l++) {
503 *(nff.
t[l]) = *(
ff.
c->
t[l]) ;
508 for (
int l=nzadapt+1; l<nz; l++) {
514 assert(
gg.
c != 0x0) ;
516 for (
int l=nzadapt+1; l<nz; l++) {
517 *(ngg.
t[l]) = *(
gg.
c->
t[l]) ;
527 for (
int l=0; l<nz; l++) {
530 alpha[l] = nalpha[l] / fact_echelle ;
531 beta[l] = nbeta[l] / fact_echelle ;
534 alpha[l] = fact_echelle * nalpha[l] ;
535 beta[l] = fact_echelle * nbeta[l] ;
547 if (nbr_filtre !=0) {
552 for (
int l=0 ; l<nzadapt+1 ; l++)
553 for (
int k=np-nbr_filtre ; k<np ; k++)
554 for (
int j=0 ; j<nt ; j++) {