33char op_mult_cp_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Non_class_members/Operators/op_mult_cp.C,v 1.5 2014/10/13 08:53:25 j_novak Exp $" ;
84void _mult_cp_pas_prevu(Tbl* ,
int& base) {
85 cout <<
"mult_cp() is not not implemented for the basis " << base <<
" !"
94void _mult_cp_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 ;
177 cout <<
"_mult_cp_p_cossin : unknown basis in theta !" << endl ;
178 cout <<
" base_t = " << hex << base_t << endl ;
183 base = base_r | base_t | base_p ;
190 if (tb->get_etat() == ETATZERO) {
194 assert(tb->get_etat() == ETATQCQ) ;
197 int nr = tb->get_dim(0) ;
198 int nt = tb->get_dim(1) ;
199 int np = tb->get_dim(2) - 2 ;
212 double*
const cf = tb->t ;
213 double*
const resu =
new double[ tb->get_taille() ] ;
220 for (
int i=0; i<ntnr; i++) {
221 co[i] = 0.5 * cf[q + i] ;
228 for (
int i=0; i<ntnr; i++) {
237 for (
int i=0; i<ntnr; i++) {
238 co[i] = cf[i] + 0.5 * cf[q+i] ;
247 for (
int i=0; i<ntnr; i++) {
258 for (
int i=0; i<ntnr; i++) {
259 co[i] = 0.5 * cf[q+i] ;
266 for (
int k=4; k<np-1; k++) {
267 int q1 = (k-2)*ntnr ;
268 int q2 = (k+2)*ntnr ;
269 for (
int i=0; i<ntnr; i++) {
270 co[i] = 0.5 * ( cf[q1+i] + cf[q2+i] ) ;
279 for (
int i=0; i<ntnr; i++) {
280 co[i] = 0.5 * cf[q+i] ;
291 for (
int i=0; i<ntnr; i++) {
292 co[i] = 0.5 * cf[q+i] ;
299 for (
int i=0; i<ntnr; i++) {
305 assert( co == resu + (np+2)*ntnr ) ;
321void _mult_cp_p_cossin_p(Tbl* tb,
int& base) {
323 assert(tb->get_etat() != ETATNONDEF) ;
327 int base_r = base &
MSQ_R ;
328 int base_t = base &
MSQ_T ;
336 if (tb->get_etat() == ETATZERO) {
340 assert(tb->get_etat() == ETATQCQ) ;
343 int nr = tb->get_dim(0) ;
344 int nt = tb->get_dim(1) ;
345 int np = tb->get_dim(2) - 2 ;
358 double*
const cf = tb->t ;
359 double*
const resu =
new double[ tb->get_taille() ] ;
366 for (
int i=0; i<ntnr; i++) {
367 co[i] = cf[i] + 0.5 * cf[q + i] ;
374 for (
int i=0; i<ntnr; i++) {
383 for (
int i=0; i<ntnr; i++) {
384 co[i] = 0.5 * cf[q+i] ;
392 for (
int k=3; k<np; k++) {
393 int q1 = (k-1)*ntnr ;
394 int q2 = (k+1)*ntnr ;
395 for (
int i=0; i<ntnr; i++) {
396 co[i] = 0.5 * ( cf[q1+i] + cf[q2+i] ) ;
405 for (
int i=0; i<ntnr; i++) {
406 co[i] = 0.5 * cf[q+i] ;
413 for (
int i=0; i<ntnr; i++) {
419 assert( co == resu + (np+2)*ntnr ) ;
435void _mult_cp_p_cossin_i(Tbl* tb,
int& base) {
437 assert(tb->get_etat() != ETATNONDEF) ;
441 int base_r = base &
MSQ_R ;
442 int base_t = base &
MSQ_T ;
450 if (tb->get_etat() == ETATZERO) {
454 assert(tb->get_etat() == ETATQCQ) ;
457 int nr = tb->get_dim(0) ;
458 int nt = tb->get_dim(1) ;
459 int np = tb->get_dim(2) - 2 ;
472 double*
const cf = tb->t ;
473 double*
const resu =
new double[ tb->get_taille() ] ;
479 for (
int i=0; i<ntnr; i++) {
480 co[i] = 0.5 * cf[i] ;
487 for (
int i=0; i<ntnr; i++) {
496 for (
int i=0; i<ntnr; i++) {
497 co[i] = 0.5 * ( cf[i] + cf[q+i] ) ;
504 for (
int k=3; k<np; k++) {
505 int q1 = (k-1)*ntnr ;
506 int q2 = (k+1)*ntnr ;
507 for (
int i=0; i<ntnr; i++) {
508 co[i] = 0.5 * ( cf[q1+i] + cf[q2+i] ) ;
517 for (
int i=0; i<ntnr; i++) {
518 co[i] = 0.5 * cf[q+i] ;
525 for (
int i=0; i<ntnr; i++) {
531 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.