00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 char base_val_name_theta_C[] = "$Header: /cvsroot/Lorene/C++/Source/Base_val/base_val_name_theta.C,v 1.7 2009/10/23 12:55:16 j_novak Exp $" ;
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 #include <string.h>
00068 #include <stdlib.h>
00069
00070
00071 #include "type_parite.h"
00072 #include "base_val.h"
00073
00074
00075 void basename_t_unknown(int, int, char*) ;
00076 void basename_t_cos(int, int, char*) ;
00077 void basename_t_sin(int, int, char*) ;
00078 void basename_t_cos_p(int, int, char*) ;
00079 void basename_t_sin_p(int, int, char*) ;
00080 void basename_t_cos_i(int, int, char*) ;
00081 void basename_t_sin_i(int, int, char*) ;
00082 void basename_t_cossin_cp(int, int, char*) ;
00083 void basename_t_cossin_sp(int, int, char*) ;
00084 void basename_t_cossin_c(int, int, char*) ;
00085 void basename_t_cossin_s(int, int, char*) ;
00086 void basename_t_cossin_ci(int, int, char*) ;
00087 void basename_t_cossin_si(int, int, char*) ;
00088 void basename_t_leg_p(int, int, char*) ;
00089 void basename_t_leg(int, int, char*) ;
00090 void basename_t_leg_mp(int, int, char*) ;
00091 void basename_t_leg_mi(int, int, char*) ;
00092 void basename_t_leg_pp(int, int, char*) ;
00093 void basename_t_leg_i(int, int, char*) ;
00094 void basename_t_leg_ip(int, int, char*) ;
00095 void basename_t_leg_pi(int, int, char*) ;
00096 void basename_t_leg_ii(int, int, char*) ;
00097 void basename_t_cl_cos_p(int, int, char*) ;
00098 void basename_t_cl_sin_p(int, int, char*) ;
00099 void basename_t_cl_cos_i(int, int, char*) ;
00100 void basename_t_cl_sin_i(int, int, char*) ;
00101
00102
00103
00104
00105
00106
00107 void Base_val::name_theta(int l, int k, int j, char* name) const {
00108
00109
00110 static void(*vbasename_t[MAX_BASE])(int, int, char*) ;
00111
00112 static bool first_call = true ;
00113
00114
00115
00116 if ( first_call ) {
00117
00118 first_call = false ;
00119
00120 for (int i=0 ; i<MAX_BASE ; i++) {
00121 vbasename_t[i] = basename_t_unknown ;
00122 }
00123
00124 vbasename_t[T_COS >> TRA_T] = basename_t_cos ;
00125 vbasename_t[T_SIN >> TRA_T] = basename_t_sin ;
00126 vbasename_t[T_COS_P >> TRA_T] = basename_t_cos_p ;
00127 vbasename_t[T_SIN_P >> TRA_T] = basename_t_sin_p ;
00128 vbasename_t[T_COS_I >> TRA_T] = basename_t_cos_i ;
00129 vbasename_t[T_SIN_I >> TRA_T] = basename_t_sin_i ;
00130 vbasename_t[T_COSSIN_CP >> TRA_T] = basename_t_cossin_cp ;
00131 vbasename_t[T_COSSIN_SP >> TRA_T] = basename_t_cossin_sp ;
00132 vbasename_t[T_COSSIN_CI >> TRA_T] = basename_t_cossin_ci ;
00133 vbasename_t[T_COSSIN_SI >> TRA_T] = basename_t_cossin_si ;
00134 vbasename_t[T_COSSIN_C >> TRA_T] = basename_t_cossin_c ;
00135 vbasename_t[T_COSSIN_S >> TRA_T] = basename_t_cossin_s ;
00136 vbasename_t[T_LEG_P >> TRA_T] = basename_t_leg_p ;
00137 vbasename_t[T_LEG_MP >> TRA_T] = basename_t_leg_mp ;
00138 vbasename_t[T_LEG_MI >> TRA_T] = basename_t_leg_mi ;
00139 vbasename_t[T_LEG >> TRA_T] = basename_t_leg ;
00140 vbasename_t[T_LEG_PP >> TRA_T] = basename_t_leg_pp ;
00141 vbasename_t[T_LEG_I >> TRA_T] = basename_t_leg_i ;
00142 vbasename_t[T_LEG_IP >> TRA_T] = basename_t_leg_ip ;
00143 vbasename_t[T_LEG_PI >> TRA_T] = basename_t_leg_pi ;
00144 vbasename_t[T_LEG_II >> TRA_T] = basename_t_leg_ii ;
00145 vbasename_t[T_CL_COS_P >> TRA_T] = basename_t_cl_cos_p ;
00146 vbasename_t[T_CL_SIN_P >> TRA_T] = basename_t_cl_sin_p ;
00147 vbasename_t[T_CL_COS_I >> TRA_T] = basename_t_cl_cos_i ;
00148 vbasename_t[T_CL_SIN_I >> TRA_T] = basename_t_cl_sin_i ;
00149
00150 }
00151
00152
00153
00154
00155 assert( (l>=0) && (l<nzone) ) ;
00156
00157 int base_t = ( b[l] & MSQ_T ) >> TRA_T ;
00158
00159 vbasename_t[base_t](k, j, name) ;
00160
00161 }
00162
00163
00164
00165
00166
00167
00168 void basename_t_unknown(int, int, char*) {
00169 cout << "Base_val::name_theta : unknwon basis !" << endl ;
00170 abort() ;
00171 }
00172
00173
00174 void basename_t_cos(int , int j, char* name) {
00175
00176 assert( j>=0 ) ;
00177
00178 strcpy(name, "cos") ;
00179
00180 int xt = j ;
00181
00182 char cxt[4] ;
00183 assert( xt < 1000) ;
00184 sprintf(cxt, "%d", xt) ;
00185 strcat(name, cxt) ;
00186 strcat(name, "t") ;
00187 }
00188
00189 void basename_t_sin(int , int j, char* name) {
00190
00191 assert( j>=0 ) ;
00192
00193 strcpy(name, "sin") ;
00194
00195 int xt = j ;
00196
00197 char cxt[4] ;
00198 assert( xt < 1000) ;
00199 sprintf(cxt, "%d", xt) ;
00200 strcat(name, cxt) ;
00201 strcat(name, "t") ;
00202 }
00203
00204
00205 void basename_t_cos_p(int , int j, char* name) {
00206
00207 assert( j>=0 ) ;
00208
00209 strcpy(name, "cos") ;
00210
00211 int xt = 2*j ;
00212
00213 char cxt[4] ;
00214 assert( xt < 1000) ;
00215 sprintf(cxt, "%d", xt) ;
00216 strcat(name, cxt) ;
00217 strcat(name, "t") ;
00218 }
00219
00220
00221 void basename_t_sin_p(int , int j, char* name) {
00222
00223 assert( j>=0 ) ;
00224
00225 if (j == 0) {
00226 strcpy(name, "unused") ;
00227 return ;
00228 }
00229
00230 strcpy(name, "sin") ;
00231
00232 int xt = 2*j ;
00233
00234 char cxt[4] ;
00235 assert( xt < 1000) ;
00236 sprintf(cxt, "%d", xt) ;
00237 strcat(name, cxt) ;
00238 strcat(name, "t") ;
00239 }
00240
00241 void basename_t_cl_cos_p(int , int j, char* name) {
00242
00243 assert( j>=0 ) ;
00244
00245 strcpy(name, "cl_cos") ;
00246
00247 int xt = 2*j ;
00248
00249 char cxt[4] ;
00250 assert( xt < 1000) ;
00251 sprintf(cxt, "%d", xt) ;
00252 strcat(name, cxt) ;
00253 strcat(name, "t") ;
00254 }
00255
00256 void basename_t_cl_sin_p(int , int j, char* name) {
00257
00258 assert( j>=0 ) ;
00259
00260 strcpy(name, "cl_sin") ;
00261
00262 int xt = 2*j ;
00263
00264 char cxt[4] ;
00265 assert( xt < 1000) ;
00266 sprintf(cxt, "%d", xt) ;
00267 strcat(name, cxt) ;
00268 strcat(name, "t") ;
00269 }
00270
00271 void basename_t_cos_i(int , int j, char* name) {
00272
00273 assert( j>=0 ) ;
00274
00275 strcpy(name, "cos") ;
00276
00277 int xt = 2*j + 1 ;
00278
00279 char cxt[4] ;
00280 assert( xt < 1000) ;
00281 sprintf(cxt, "%d", xt) ;
00282 strcat(name, cxt) ;
00283 strcat(name, "t") ;
00284 }
00285
00286 void basename_t_cl_cos_i(int , int j, char* name) {
00287
00288 assert( j>=0 ) ;
00289
00290 strcpy(name, "cl_cos") ;
00291
00292 int xt = 2*j + 1 ;
00293
00294 char cxt[4] ;
00295 assert( xt < 1000) ;
00296 sprintf(cxt, "%d", xt) ;
00297 strcat(name, cxt) ;
00298 strcat(name, "t") ;
00299 }
00300
00301 void basename_t_sin_i(int , int j, char* name) {
00302
00303 assert( j>=0 ) ;
00304
00305 strcpy(name, "sin") ;
00306
00307 int xt = 2*j + 1 ;
00308
00309 char cxt[4] ;
00310 assert( xt < 1000) ;
00311 sprintf(cxt, "%d", xt) ;
00312 strcat(name, cxt) ;
00313 strcat(name, "t") ;
00314 }
00315
00316 void basename_t_cl_sin_i(int , int j, char* name) {
00317
00318 assert( j>=0 ) ;
00319
00320 strcpy(name, "cl_sin") ;
00321
00322 int xt = 2*j + 1 ;
00323
00324 char cxt[4] ;
00325 assert( xt < 1000) ;
00326 sprintf(cxt, "%d", xt) ;
00327 strcat(name, cxt) ;
00328 strcat(name, "t") ;
00329 }
00330
00331
00332 void basename_t_cossin_cp(int k, int j, char* name) {
00333
00334 assert( k>=0 ) ;
00335 assert( j>=0 ) ;
00336
00337 int m = k / 2 ;
00338 int xt ;
00339 if (m%2 == 0) {
00340 strcpy(name, "cos") ;
00341 xt = 2*j ;
00342 }
00343 else {
00344 strcpy(name, "sin") ;
00345 xt = 2*j + 1 ;
00346 }
00347
00348 char cxt[4] ;
00349 assert( xt < 1000) ;
00350 sprintf(cxt, "%d", xt) ;
00351 strcat(name, cxt) ;
00352 strcat(name, "t") ;
00353 }
00354
00355
00356 void basename_t_cossin_sp(int k, int j, char* name) {
00357
00358 assert( k>=0 ) ;
00359 assert( j>=0 ) ;
00360
00361 int m = k / 2 ;
00362 int xt ;
00363 if (m%2 == 0) {
00364 if (j == 0) {
00365 strcpy(name, "unused") ;
00366 return ;
00367 }
00368 else {
00369 strcpy(name, "sin") ;
00370 xt = 2*j ;
00371 }
00372 }
00373 else {
00374 strcpy(name, "cos") ;
00375 xt = 2*j + 1 ;
00376 }
00377
00378 char cxt[4] ;
00379 assert( xt < 1000) ;
00380 sprintf(cxt, "%d", xt) ;
00381 strcat(name, cxt) ;
00382 strcat(name, "t") ;
00383 }
00384
00385 void basename_t_cossin_c(int k, int j, char* name) {
00386
00387 assert( k>=0 ) ;
00388 assert( j>=0 ) ;
00389
00390 int m = k / 2 ;
00391 int xt ;
00392 if (m%2 == 0) {
00393 strcpy(name, "cos") ;
00394 xt = j ;
00395 }
00396 else {
00397 if (j == 0) {
00398 strcpy(name, "unused") ;
00399 return ;
00400 } else {
00401 strcpy(name, "sin") ;
00402 xt = j ;
00403 }
00404 }
00405
00406 char cxt[4] ;
00407 assert( xt < 1000) ;
00408 sprintf(cxt, "%d", xt) ;
00409 strcat(name, cxt) ;
00410 strcat(name, "t") ;
00411 }
00412
00413
00414 void basename_t_cossin_s(int k, int j, char* name) {
00415
00416 assert( k>=0 ) ;
00417 assert( j>=0 ) ;
00418
00419 int m = k / 2 ;
00420 int xt ;
00421 if (m%2 == 0) {
00422 if (j == 0) {
00423 strcpy(name, "unused") ;
00424 return ;
00425 }
00426 else {
00427 strcpy(name, "sin") ;
00428 xt = j ;
00429 }
00430 }
00431 else {
00432 strcpy(name, "cos") ;
00433 xt = j ;
00434 }
00435
00436 char cxt[4] ;
00437 assert( xt < 1000) ;
00438 sprintf(cxt, "%d", xt) ;
00439 strcat(name, cxt) ;
00440 strcat(name, "t") ;
00441 }
00442
00443
00444 void basename_t_cossin_ci(int k, int j, char* name) {
00445
00446 assert( k>=0 ) ;
00447 assert( j>=0 ) ;
00448
00449 int m = k / 2 ;
00450 int xt ;
00451 if (m%2 == 0) {
00452 strcpy(name, "cos") ;
00453 xt = 2*j + 1;
00454 }
00455 else {
00456 if (j == 0) {
00457 strcpy(name, "unused") ;
00458 return ;
00459 }
00460 else {
00461 strcpy(name, "sin") ;
00462 xt = 2*j ;
00463 }
00464 }
00465
00466 char cxt[4] ;
00467 assert( xt < 1000) ;
00468 sprintf(cxt, "%d", xt) ;
00469 strcat(name, cxt) ;
00470 strcat(name, "t") ;
00471 }
00472
00473
00474 void basename_t_cossin_si(int k, int j, char* name) {
00475
00476 assert( k>=0 ) ;
00477 assert( j>=0 ) ;
00478
00479 int m = k / 2 ;
00480 int xt ;
00481 if (m%2 == 0) {
00482 strcpy(name, "sin") ;
00483 xt = 2*j + 1;
00484 }
00485 else {
00486 strcpy(name, "cos") ;
00487 xt = 2*j ;
00488 }
00489
00490 char cxt[4] ;
00491 assert( xt < 1000) ;
00492 sprintf(cxt, "%d", xt) ;
00493 strcat(name, cxt) ;
00494 strcat(name, "t") ;
00495 }
00496
00497 void basename_t_leg(int k, int j, char* name) {
00498
00499 assert( k>=0 ) ;
00500 assert( j>=0 ) ;
00501
00502 int m = k / 2 ;
00503
00504 if (j < m/2) {
00505 strcpy (name, "unused") ;
00506 return ;
00507 }
00508
00509 strcpy(name, "P_") ;
00510
00511 int xt = j;
00512
00513 char cxt[4] ;
00514 assert( xt < 1000) ;
00515 sprintf(cxt, "%d", xt) ;
00516 strcat(name, cxt) ;
00517 strcat(name, "^") ;
00518
00519 assert( m < 1000) ;
00520 sprintf(cxt, "%d", m) ;
00521 strcat(name, cxt) ;
00522 }
00523
00524 void basename_t_leg_mp(int k, int j, char* name) {
00525
00526 assert( k>=0 ) ;
00527 assert( j>=0 ) ;
00528
00529 int m = 2 * (k / 2) ;
00530
00531 if (j < m/2) {
00532 strcpy (name, "unused") ;
00533 return ;
00534 }
00535
00536 strcpy(name, "P_") ;
00537
00538 int xt = j;
00539
00540 char cxt[4] ;
00541 assert( xt < 1000) ;
00542 sprintf(cxt, "%d", xt) ;
00543 strcat(name, cxt) ;
00544 strcat(name, "^") ;
00545
00546 assert( m < 1000) ;
00547 sprintf(cxt, "%d", m) ;
00548 strcat(name, cxt) ;
00549 }
00550
00551 void basename_t_leg_mi(int k, int j, char* name) {
00552
00553 assert( k>=0 ) ;
00554 assert( j>=0 ) ;
00555
00556 int m = 2 * ((k-1) / 2) + 1 ;
00557
00558 if (j < m/2) {
00559 strcpy (name, "unused") ;
00560 return ;
00561 }
00562
00563 strcpy(name, "P_") ;
00564
00565 int xt = j;
00566
00567 char cxt[4] ;
00568 assert( xt < 1000) ;
00569 sprintf(cxt, "%d", xt) ;
00570 strcat(name, cxt) ;
00571 strcat(name, "^") ;
00572
00573 assert( m < 1000) ;
00574 sprintf(cxt, "%d", m) ;
00575 strcat(name, cxt) ;
00576 }
00577
00578 void basename_t_leg_p(int k, int j, char* name) {
00579
00580 assert( k>=0 ) ;
00581 assert( j>=0 ) ;
00582
00583 int m = k / 2 ;
00584
00585 if (j < m/2) {
00586 strcpy (name, "unused") ;
00587 return ;
00588 }
00589
00590 strcpy(name, "P_") ;
00591
00592 int xt = (m%2 == 0) ? 2*j : 2*j + 1 ;
00593
00594 char cxt[4] ;
00595 assert( xt < 1000) ;
00596 sprintf(cxt, "%d", xt) ;
00597 strcat(name, cxt) ;
00598 strcat(name, "^") ;
00599
00600 assert( m < 1000) ;
00601 sprintf(cxt, "%d", m) ;
00602 strcat(name, cxt) ;
00603 }
00604
00605
00606 void basename_t_leg_pp(int k, int j, char* name) {
00607
00608 assert( k>=0 ) ;
00609 assert( j>=0 ) ;
00610
00611 int m = 2 * (k / 2) ;
00612
00613 if (j < m/2) {
00614 strcpy (name, "unused") ;
00615 return ;
00616 }
00617
00618 strcpy(name, "P_") ;
00619
00620 int xt = 2*j ;
00621
00622 char cxt[4] ;
00623 assert( xt < 1000) ;
00624 sprintf(cxt, "%d", xt) ;
00625 strcat(name, cxt) ;
00626 strcat(name, "^") ;
00627
00628 assert( m < 1000) ;
00629 sprintf(cxt, "%d", m) ;
00630 strcat(name, cxt) ;
00631 }
00632
00633
00634 void basename_t_leg_i(int k, int j, char* name) {
00635
00636 assert( k>=0 ) ;
00637 assert( j>=0 ) ;
00638
00639 int m = k / 2 ;
00640
00641 if (j < m/2 + m%2) {
00642 strcpy (name, "unused") ;
00643 return ;
00644 }
00645
00646 strcpy(name, "P_") ;
00647
00648 int xt = (m%2 == 0) ? 2*j + 1 : 2*j ;
00649
00650 char cxt[4] ;
00651 assert( xt < 1000) ;
00652 sprintf(cxt, "%d", xt) ;
00653 strcat(name, cxt) ;
00654 strcat(name, "^") ;
00655
00656 assert( m < 1000) ;
00657 sprintf(cxt, "%d", m) ;
00658 strcat(name, cxt) ;
00659 }
00660
00661
00662 void basename_t_leg_ip(int k, int j, char* name) {
00663
00664 assert( k>=0 ) ;
00665 assert( j>=0 ) ;
00666
00667 int m = 2 * (k / 2) ;
00668
00669 if (j < m/2) {
00670 strcpy (name, "unused") ;
00671 return ;
00672 }
00673
00674 strcpy(name, "P_") ;
00675
00676 int xt = 2*j + 1 ;
00677
00678 char cxt[4] ;
00679 assert( xt < 1000) ;
00680 sprintf(cxt, "%d", xt) ;
00681 strcat(name, cxt) ;
00682 strcat(name, "^") ;
00683
00684 assert( m < 1000) ;
00685 sprintf(cxt, "%d", m) ;
00686 strcat(name, cxt) ;
00687 }
00688
00689
00690 void basename_t_leg_pi(int k, int j, char* name) {
00691
00692 assert( k>=0 ) ;
00693 assert( j>=0 ) ;
00694
00695 int m = 2 * ((k-1) / 2) + 1 ;
00696
00697 if (j < m/2) {
00698 strcpy (name, "unused") ;
00699 return ;
00700 }
00701
00702 strcpy(name, "P_") ;
00703
00704 int xt = 2*j + 1 ;
00705
00706 char cxt[4] ;
00707 assert( xt < 1000) ;
00708 sprintf(cxt, "%d", xt) ;
00709 strcat(name, cxt) ;
00710 strcat(name, "^") ;
00711
00712 assert( m < 1000) ;
00713 sprintf(cxt, "%d", m) ;
00714 strcat(name, cxt) ;
00715 }
00716
00717
00718 void basename_t_leg_ii(int k, int j, char* name) {
00719
00720 assert( k>=0 ) ;
00721 assert( j>=0 ) ;
00722
00723 int m = 2 * ((k-1) / 2) + 1 ;
00724
00725 if (j < m/2 + 1) {
00726 strcpy (name, "unused") ;
00727 return ;
00728 }
00729
00730 strcpy(name, "P_") ;
00731
00732 int xt = 2*j ;
00733
00734 char cxt[4] ;
00735 assert( xt < 1000) ;
00736 sprintf(cxt, "%d", xt) ;
00737 strcat(name, cxt) ;
00738 strcat(name, "^") ;
00739
00740 assert( m < 1000) ;
00741 sprintf(cxt, "%d", m) ;
00742 strcat(name, cxt) ;
00743 }
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757