23char op_mult_x_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_mult_x.C,v 1.6 2015/03/05 08:49:32 j_novak Exp $" ;
81void _mult_x_pas_prevu(Tbl * tb,
int& base) {
82 cout <<
"mult_x pas prevu..." << endl ;
83 cout <<
"Tbl: " << tb <<
" base: " << base << endl ;
92void _mult_x_identite(Tbl* ,
int& ) {
100void _mult_x_r_chebp(Tbl* tb,
int& base)
103 if (tb->get_etat() == ETATZERO) {
104 int base_t = base &
MSQ_T ;
105 int base_p = base &
MSQ_P ;
106 base = base_p | base_t |
R_CHEBI ;
111 int nr = (tb->dim).dim[0] ;
112 int nt = (tb->dim).dim[1] ;
113 int np = (tb->dim).dim[2] ;
117 double* xo =
new double [tb->get_taille()];
120 for (
int i=0; i<tb->get_taille(); i++) {
129 int borne_phi = np + 1 ;
134 for (
int k=0 ; k< borne_phi ; k++)
140 for (
int j=0 ; j<nt ; j++) {
142 xco[0] = xci[0] + 0.5*xci[1] ;
143 for (
int i = 1 ; i < nr-1 ; i++ ) {
144 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
159 int base_t = base &
MSQ_T ;
160 int base_p = base &
MSQ_P ;
161 base = base_p | base_t |
R_CHEBI ;
169void _mult_x_r_chebi(Tbl* tb,
int& base)
173 if (tb->get_etat() == ETATZERO) {
174 int base_t = base &
MSQ_T ;
175 int base_p = base &
MSQ_P ;
176 base = base_p | base_t |
R_CHEBP ;
181 int nr = (tb->dim).dim[0] ;
182 int nt = (tb->dim).dim[1] ;
183 int np = (tb->dim).dim[2] ;
187 double* xo =
new double [tb->get_taille()];
190 for (
int i=0; i<tb->get_taille(); i++) {
199 int borne_phi = np + 1 ;
204 for (
int k=0 ; k< borne_phi ; k++)
210 for (
int j=0 ; j<nt ; j++) {
212 xco[0] = 0.5*xci[0] ;
213 for (
int i = 1 ; i < nr-1 ; i++ ) {
214 xco[i] = (xci[i]+xci[i-1])*0.5 ;
216 xco[nr-1] = 0.5*xci[nr-2] ;
229 int base_t = base &
MSQ_T ;
230 int base_p = base &
MSQ_P ;
231 base = base_p | base_t |
R_CHEBP ;
238void _mult_x_r_chebpim_p(Tbl* tb,
int& base)
242 if (tb->get_etat() == ETATZERO) {
243 int base_t = base &
MSQ_T ;
244 int base_p = base &
MSQ_P ;
250 int nr = (tb->dim).dim[0] ;
251 int nt = (tb->dim).dim[1] ;
252 int np = (tb->dim).dim[2] ;
256 double* xo =
new double [tb->get_taille()];
259 for (
int i=0; i<tb->get_taille(); i++) {
276 for (
int k=0 ; k<np+1 ; k += 4) {
278 auxiliaire = (k==np) ? 1 : 2 ;
279 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
284 if ((k==0) && (kmod == 1)) {
290 for (
int j=0 ; j<nt ; j++) {
292 xco[0] = xci[0] + 0.5*xci[1] ;
293 for (
int i = 1 ; i < nr-1 ; i++ ) {
294 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
309 for (
int k=2 ; k<np+1 ; k += 4) {
311 auxiliaire = (k==np) ? 1 : 2 ;
312 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
313 for (
int j=0 ; j<nt ; j++) {
315 xco[0] = 0.5*xci[0] ;
316 for (
int i = 1 ; i < nr-1 ; i++ ) {
317 xco[i] = (xci[i]+xci[i-1])*0.5 ;
319 xco[nr-1] = 0.5*xci[nr-2] ;
335 int base_t = base &
MSQ_T ;
336 int base_p = base &
MSQ_P ;
344void _mult_x_r_chebpim_i(Tbl* tb,
int& base)
348 if (tb->get_etat() == ETATZERO) {
349 int base_t = base &
MSQ_T ;
350 int base_p = base &
MSQ_P ;
356 int nr = (tb->dim).dim[0] ;
357 int nt = (tb->dim).dim[1] ;
358 int np = (tb->dim).dim[2] ;
362 double* xo =
new double [tb->get_taille()];
365 for (
int i=0; i<tb->get_taille(); i++) {
381 for (
int k=0 ; k<np+1 ; k += 4) {
383 auxiliaire = (k==np) ? 1 : 2 ;
384 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
389 if ((k==0) && (kmod == 1)) {
395 for (
int j=0 ; j<nt ; j++) {
397 xco[0] = 0.5*xci[0] ;
398 for (
int i = 1 ; i < nr-1 ; i++ ) {
399 xco[i] = (xci[i]+xci[i-1])*0.5 ;
401 xco[nr-1] = 0.5*xci[nr-2] ;
414 for (
int k=2 ; k<np+1 ; k += 4) {
416 auxiliaire = (k==np) ? 1 : 2 ;
417 for (
int kmod=0 ; kmod<auxiliaire ; kmod++) {
418 for (
int j=0 ; j<nt ; j++) {
420 xco[0] = xci[0] + 0.5*xci[1] ;
421 for (
int i = 1 ; i < nr-1 ; i++ ) {
422 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
440 int base_t = base &
MSQ_T ;
441 int base_p = base &
MSQ_P ;
449void _mult_x_r_chebpi_p(Tbl* tb,
int& base)
452 if (tb->get_etat() == ETATZERO) {
453 int base_t = base &
MSQ_T ;
454 int base_p = base &
MSQ_P ;
460 int nr = (tb->dim).dim[0] ;
461 int nt = (tb->dim).dim[1] ;
462 int np = (tb->dim).dim[2] ;
466 double* xo =
new double [tb->get_taille()];
469 for (
int i=0; i<tb->get_taille(); i++) {
478 int borne_phi = np + 1 ;
483 for (
int k=0 ; k< borne_phi ; k++)
489 for (
int j=0 ; j<nt ; j++) {
492 xco[0] = xci[0] + 0.5*xci[1] ;
493 for (
int i = 1 ; i < nr-1 ; i++ ) {
494 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
498 xco[0] = 0.5*xci[0] ;
499 for (
int i = 1 ; i < nr-1 ; i++ ) {
500 xco[i] = (xci[i]+xci[i-1])*0.5 ;
502 xco[nr-1] = 0.5*xci[nr-2] ;
515 int base_t = base &
MSQ_T ;
516 int base_p = base &
MSQ_P ;
525void _mult_x_r_chebpi_i(Tbl* tb,
int& base)
529 if (tb->get_etat() == ETATZERO) {
530 int base_t = base &
MSQ_T ;
531 int base_p = base &
MSQ_P ;
537 int nr = (tb->dim).dim[0] ;
538 int nt = (tb->dim).dim[1] ;
539 int np = (tb->dim).dim[2] ;
543 double* xo =
new double [tb->get_taille()];
546 for (
int i=0; i<tb->get_taille(); i++) {
555 int borne_phi = np + 1 ;
560 for (
int k=0 ; k< borne_phi ; k++)
566 for (
int j=0 ; j<nt ; j++) {
569 xco[0] = xci[0] + 0.5*xci[1] ;
570 for (
int i = 1 ; i < nr-1 ; i++ ) {
571 xco[i] = 0.5*(xci[i]+xci[i+1]) ;
575 xco[0] = 0.5*xci[0] ;
576 for (
int i = 1 ; i < nr-1 ; i++ ) {
577 xco[i] = (xci[i]+xci[i-1])*0.5 ;
579 xco[nr-1] = 0.5*xci[nr-2] ;
592 int base_t = base &
MSQ_T ;
593 int base_p = base &
MSQ_P ;
601void _mult_x_r_jaco02(Tbl* tb,
int&)
604 if (tb->get_etat() == ETATZERO) {
609 int nr = (tb->dim).dim[0] ;
610 int nt = (tb->dim).dim[1] ;
611 int np = (tb->dim).dim[2] ;
615 double* xo =
new double [tb->get_taille()];
618 for (
int i=0; i<tb->get_taille(); i++) {
627 int borne_phi = np + 1 ;
632 for (
int k=0 ; k< borne_phi ; k++)
638 for (
int j=0 ; j<nt ; j++) {
640 xco[0] = 1.5*xci[0] + 0.3*xci[1] ;
641 for (
int i = 1 ; i < nr-1 ; i++) {
642 xco[i] = i*(i+2)/
double((i+1)*(2*i+1))*xci[i-1] + (i*i+3*i+3)/
double((i+1)*(i+2))*xci[i] + (i+1)*(i+3)/double((i+2)*(2*i+5))*xci[i+1] ;
644 xco[nr-1] = (nr*nr-1)/
double((nr)*(2*nr-1))*xci[nr-2] + (1+1/double((nr)*(nr+1)))*xci[nr-1] ;
664void _mult_x_r_legp(Tbl* tb,
int& base)
667 if (tb->get_etat() == ETATZERO) {
668 int base_t = base &
MSQ_T ;
669 int base_p = base &
MSQ_P ;
670 base = base_p | base_t |
R_LEGI ;
675 int nr = (tb->dim).dim[0] ;
676 int nt = (tb->dim).dim[1] ;
677 int np = (tb->dim).dim[2] ;
681 double* xo =
new double [tb->get_taille()];
684 for (
int i=0; i<tb->get_taille(); i++) {
693 int borne_phi = np + 1 ;
698 for (
int k=0 ; k< borne_phi ; k++)
704 for (
int j=0 ; j<nt ; j++) {
706 xco[0] = xci[0] + 0.4*xci[1] ;
707 for (
int i = 1 ; i < nr-1 ; i++ ) {
708 xco[i] = double(2*i+1)*xci[i]/double(4*i+1)
709 + double(2*i+2)*xci[i+1]/double(4*i+5) ;
724 int base_t = base &
MSQ_T ;
725 int base_p = base &
MSQ_P ;
726 base = base_p | base_t |
R_LEGI ;
734void _mult_x_r_legi(Tbl* tb,
int& base)
738 if (tb->get_etat() == ETATZERO) {
739 int base_t = base &
MSQ_T ;
740 int base_p = base &
MSQ_P ;
741 base = base_p | base_t |
R_LEGP ;
746 int nr = (tb->dim).dim[0] ;
747 int nt = (tb->dim).dim[1] ;
748 int np = (tb->dim).dim[2] ;
752 double* xo =
new double [tb->get_taille()];
755 for (
int i=0; i<tb->get_taille(); i++) {
764 int borne_phi = np + 1 ;
769 for (
int k=0 ; k< borne_phi ; k++)
775 for (
int j=0 ; j<nt ; j++) {
778 for (
int i = 1 ; i < nr-1 ; i++ ) {
779 xco[i] = double(2*i+1)*xci[i]/double(4*i+3)
780 + double(2*i)*xci[i-1]/double(4*i-1) ;
782 xco[nr-1] = double(2*nr-2)*xci[nr-2]/double(4*nr-5) ;
795 int base_t = base &
MSQ_T ;
796 int base_p = base &
MSQ_P ;
797 base = base_p | base_t |
R_LEGP ;
#define R_LEGP
base de Legendre paire (rare) seulement
#define R_LEGI
base de Legendre impaire (rare) seulement
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define MSQ_T
Extraction de l'info sur Theta.
#define R_CHEBP
base de Cheb. paire (rare) seulement
#define MSQ_P
Extraction de l'info sur Phi.
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.