33char op_mult_sp_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_mult_sp.C,v 1.5 2014/10/13 08:53:25 j_novak Exp $" ;
84void _mult_sp_pas_prevu(Tbl* ,
int& base) {
85 cout <<
"mult_sp() is not not implemented for the basis " << base <<
" !"
94void _mult_sp_p_cossin(Tbl* tb,
int& base) {
96 assert(tb->get_etat() != ETATNONDEF) ;
102 int base_r = base &
MSQ_R ;
103 int base_t = base &
MSQ_T ;
104 const int base_p = base &
MSQ_P ;
139 cout <<
"_mult_cp_p_cossin : unknown basis in r !" << endl ;
140 cout <<
" base_r = " << hex << base_r << endl ;
178 cout <<
"_mult_cp_p_cossin : unknown basis in theta !" << endl ;
179 cout <<
" base_t = " << hex << base_t << endl ;
184 base = base_r | base_t | base_p ;
192 if (tb->get_etat() == ETATZERO) {
196 assert(tb->get_etat() == ETATQCQ) ;
199 int nr = tb->get_dim(0) ;
200 int nt = tb->get_dim(1) ;
201 int np = tb->get_dim(2) - 2 ;
208 tb->set_etat_zero() ;
217 double*
const cf = tb->t ;
218 double*
const resu =
new double[ tb->get_taille() ] ;
225 for (
int i=0; i<ntnr; i++) {
226 co[i] = 0.5 * cf[q + i] ;
233 for (
int i=0; i<ntnr; i++) {
243 for (
int i=0; i<ntnr; i++) {
252 for (
int i=0; i<ntnr; i++) {
253 co[i] = cf[i] - 0.5 * cf[q+i] ;
264 for (
int i=0; i<ntnr; i++) {
265 co[i] = 0.5 * cf[q+i] ;
273 for (
int i=0; i<ntnr; i++) {
274 co[i] = cf[i] - 0.5 * cf[q+i] ;
282 for (
int k=4; k<np-2; k+=2) {
286 int q1 = (k1-1)*ntnr ;
287 int q2 = (k1+3)*ntnr ;
288 for (
int i=0; i<ntnr; i++) {
289 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
296 for (
int i=0; i<ntnr; i++) {
297 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
306 for (
int i=0; i<ntnr; i++) {
307 co[i] = - 0.5 * cf[q + i] ;
314 int q1 = (np-4)*ntnr ;
316 for (
int i=0; i<ntnr; i++) {
317 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
328 for (
int i=0; i<ntnr; i++) {
329 co[i] = - 0.5 * cf[q+i] ;
336 for (
int i=0; i<ntnr; i++) {
342 assert( co == resu + (np+2)*ntnr ) ;
357void _mult_sp_p_cossin_p(Tbl* tb,
int& base) {
359 assert(tb->get_etat() != ETATNONDEF) ;
363 int base_r = base &
MSQ_R ;
364 int base_t = base &
MSQ_T ;
372 if (tb->get_etat() == ETATZERO) {
376 assert(tb->get_etat() == ETATQCQ) ;
379 int nr = tb->get_dim(0) ;
380 int nt = tb->get_dim(1) ;
381 int np = tb->get_dim(2) - 2 ;
387 tb->set_etat_zero() ;
395 double*
const cf = tb->t ;
396 double*
const resu =
new double[ tb->get_taille() ] ;
403 for (
int i=0; i<ntnr; i++) {
404 co[i] = 0.5 * cf[q + i] ;
411 for (
int i=0; i<ntnr; i++) {
420 for (
int i=0; i<ntnr; i++) {
421 co[i] = cf[i] - 0.5 * cf[q+i] ;
428 for (
int k=3; k<np-1; k+=2) {
433 int q2 = (k1+2)*ntnr ;
434 for (
int i=0; i<ntnr; i++) {
435 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
442 for (
int i=0; i<ntnr; i++) {
443 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
452 for (
int i=0; i<ntnr; i++) {
453 co[i] = - 0.5 * cf[q+i] ;
460 int q1 = (np-2)*ntnr ;
462 for (
int i=0; i<ntnr; i++) {
463 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
470 for (
int i=0; i<ntnr; i++) {
476 assert( co == resu + (np+2)*ntnr ) ;
492void _mult_sp_p_cossin_i(Tbl* tb,
int& base) {
494 assert(tb->get_etat() != ETATNONDEF) ;
498 int base_r = base &
MSQ_R ;
499 int base_t = base &
MSQ_T ;
507 if (tb->get_etat() == ETATZERO) {
511 assert(tb->get_etat() == ETATQCQ) ;
514 int nr = tb->get_dim(0) ;
515 int nt = tb->get_dim(1) ;
516 int np = tb->get_dim(2) - 2 ;
522 tb->set_etat_zero() ;
530 double*
const cf = tb->t ;
531 double*
const resu =
new double[ tb->get_taille() ] ;
538 for (
int i=0; i<ntnr; i++) {
539 co[i] = 0.5 * cf[q + i] ;
546 for (
int i=0; i<ntnr; i++) {
556 for (
int i=0; i<ntnr; i++) {
557 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
565 for (
int i=0; i<ntnr; i++) {
566 co[i] = 0.5 * ( cf[i] - cf[q+i] ) ;
573 for (
int k=4; k<np; k+=2) {
579 for (
int i=0; i<ntnr; i++) {
580 co[i] = 0.5 * ( cf[q2+i] - cf[q1+i] ) ;
587 for (
int i=0; i<ntnr; i++) {
588 co[i] = 0.5 * ( cf[q1+i] - cf[q2+i] ) ;
597 for (
int i=0; i<ntnr; i++) {
598 co[i] = - 0.5 * cf[q+i] ;
605 for (
int i=0; i<ntnr; i++) {
611 assert( co == resu + (np+2)*ntnr ) ;
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
#define MSQ_R
Extraction de l'info sur R.
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0
#define R_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
#define P_COSSIN_I
dev. sur Phi = 2*phi, freq. impaires
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define MSQ_T
Extraction de l'info sur Theta.
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define R_CHEB
base de Chebychev ordinaire (fin)
#define MSQ_P
Extraction de l'info sur Phi.
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.