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 mg3d_std_base_C[] = "$Header: /cvsroot/Lorene/C++/Source/Mg3d/mg3d_std_base.C,v 1.10 2012/01/24 15:02:28 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
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 #include <assert.h>
00079
00080
00081 #include "grilles.h"
00082 #include "base_val.h"
00083 #include "type_parite.h"
00084
00085 int std_base_scal_1z(int type_r, int type_t, int type_p) ;
00086 int std_base_scal_odd_1z(int type_r, int type_t, int type_p) ;
00087
00088
00089
00090
00091
00092
00093 Base_val Mg3d::std_base_scal() const {
00094
00095 Base_val base(nzone) ;
00096
00097 for (int l=0; l<nzone; l++) {
00098 base.b[l] = std_base_scal_1z(type_r[l], type_t, type_p) ;
00099 }
00100
00101 return base ;
00102
00103 }
00104
00105 Base_val Mg3d::std_base_scal_odd() const {
00106
00107 Base_val base(nzone) ;
00108
00109 for (int l=0; l<nzone; l++) {
00110 base.b[l] = std_base_scal_odd_1z(type_r[l], type_t, type_p) ;
00111 }
00112
00113 return base ;
00114
00115 }
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 Base_val** Mg3d::std_base_vect_cart() const {
00134
00135
00136 int nz = get_nzone() ;
00137
00138
00139 Base_val** bases = new Base_val*[3] ;
00140 for (int i=0 ; i<3 ; i++)
00141 bases[i] = new Base_val(nz) ;
00142
00143
00144 for (int l=0; l<nzone; l++) {
00145
00146
00147 int type_r0 = get_type_r(l) ;
00148
00149
00150
00151
00152 int base1, base2, base3 ;
00153 switch ( type_p ) {
00154
00155 case NONSYM :
00156
00157
00158
00159
00160
00161
00162 base1 = P_COSSIN ;
00163 base2 = P_COSSIN ;
00164 base3 = P_COSSIN ;
00165
00166
00167
00168
00169 switch ( type_t ) {
00170 case SYM :
00171
00172
00173 base1 = base1 | T_COSSIN_CP ;
00174 base2 = base2 | T_COSSIN_CP ;
00175 base3 = base3 | T_COSSIN_CI ;
00176
00177
00178
00179 switch ( type_r0 ) {
00180
00181 case FIN :
00182
00183
00184 base1 = base1 | R_CHEB ;
00185 base2 = base2 | R_CHEB ;
00186 base3 = base3 | R_CHEB ;
00187 break ;
00188
00189 case FINJAC :
00190
00191
00192 base1 = base1 | R_JACO02 ;
00193 base2 = base2 | R_JACO02 ;
00194 base3 = base3 | R_JACO02 ;
00195 break ;
00196
00197
00198 case RARE :
00199
00200
00201 base1 = base1 | R_CHEBPIM_P ;
00202 base2 = base2 | R_CHEBPIM_P ;
00203 base3 = base3 | R_CHEBPIM_I ;
00204
00205 break ;
00206
00207 case UNSURR :
00208
00209
00210 base1 = base1 | R_CHEBU ;
00211 base2 = base2 | R_CHEBU ;
00212 base3 = base3 | R_CHEBU ;
00213 break ;
00214
00215
00216 default :
00217 cout <<
00218 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
00219 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00220 cout <<
00221 " dans la zone l = " << l << " n'est pas prevu ! "
00222 << endl ;
00223 abort () ;
00224 }
00225
00226 break ;
00227
00228
00229 case NONSYM :
00230
00231
00232 base1 = base1 | T_COSSIN_C ;
00233 base2 = base2 | T_COSSIN_C ;
00234 base3 = base3 | T_COSSIN_C ;
00235
00236
00237
00238 switch ( type_r0 ) {
00239
00240 case FIN :
00241
00242
00243 base1 = base1 | R_CHEB ;
00244 base2 = base2 | R_CHEB ;
00245 base3 = base3 | R_CHEB ;
00246 break ;
00247
00248 case FINJAC :
00249
00250
00251 base1 = base1 | R_JACO02 ;
00252 base2 = base2 | R_JACO02 ;
00253 base3 = base3 | R_JACO02 ;
00254 break ;
00255
00256 case RARE :
00257
00258
00259 base1 = base1 | R_CHEBPI_P ;
00260 base2 = base2 | R_CHEBPI_P ;
00261 base3 = base3 | R_CHEBPI_P ;
00262
00263 break ;
00264
00265 case UNSURR :
00266
00267
00268 base1 = base1 | R_CHEBU ;
00269 base2 = base2 | R_CHEBU ;
00270 base3 = base3 | R_CHEBU ;
00271 break ;
00272
00273
00274 default :
00275 cout <<
00276 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
00277 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00278 cout <<
00279 " dans la zone l = " << l << " n'est pas prevu ! "
00280 << endl ;
00281 abort () ;
00282 }
00283
00284 break ;
00285
00286
00287
00288
00289 default :
00290 cout <<
00291 "Mg3d::std_base_vect_cart : le cas type_p, type_t = "
00292 << type_p<< " " <<type_t << endl ;
00293 cout <<
00294 " dans la zone l = " << l << " n'est pas prevu ! "
00295 << endl ;
00296 abort () ;
00297
00298 }
00299
00300
00301
00302 break ;
00303
00304
00305 case SYM :
00306
00307
00308
00309
00310
00311
00312 base1 = P_COSSIN_I ;
00313 base2 = P_COSSIN_I ;
00314 base3 = P_COSSIN_P ;
00315
00316
00317
00318
00319 switch ( type_t ) {
00320
00321 case SYM :
00322
00323
00324 base1 = base1 | T_SIN_I ;
00325 base2 = base2 | T_SIN_I ;
00326 base3 = base3 | T_COS_I;
00327
00328
00329
00330 switch ( type_r0 ) {
00331
00332 case FIN :
00333
00334
00335 base1 = base1 | R_CHEB ;
00336 base2 = base2 | R_CHEB ;
00337 base3 = base3 | R_CHEB ;
00338 break ;
00339
00340 case FINJAC :
00341
00342
00343 base1 = base1 | R_JACO02 ;
00344 base2 = base2 | R_JACO02 ;
00345 base3 = base3 | R_JACO02 ;
00346 break ;
00347
00348 case RARE :
00349
00350
00351 base1 = base1 | R_CHEBI ;
00352 base2 = base2 | R_CHEBI ;
00353 base3 = base3 | R_CHEBI ;
00354 break ;
00355
00356 case UNSURR :
00357
00358
00359 base1 = base1 | R_CHEBU ;
00360 base2 = base2 | R_CHEBU ;
00361 base3 = base3 | R_CHEBU ;
00362 break ;
00363
00364
00365 default :
00366 cout <<
00367 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
00368 << type_p<< " " <<type_t<< " " <<type_r0 << endl ;
00369 cout <<
00370 " dans la zone l = " << l << " n'est pas prevu ! "
00371 << endl ;
00372 abort () ;
00373 }
00374
00375 break ;
00376
00377
00378 case NONSYM :
00379
00380
00381 base1 = base1 | T_SIN ;
00382 base2 = base2 | T_SIN ;
00383 base3 = base3 | T_COS ;
00384
00385
00386
00387 switch ( type_r0 ) {
00388
00389 case FIN :
00390
00391
00392 base1 = base1 | R_CHEB ;
00393 base2 = base2 | R_CHEB ;
00394 base3 = base3 | R_CHEB ;
00395 break ;
00396
00397 case FINJAC :
00398
00399
00400 base1 = base1 | R_JACO02 ;
00401 base2 = base2 | R_JACO02 ;
00402 base3 = base3 | R_JACO02 ;
00403 break ;
00404
00405 case RARE :
00406
00407
00408 base1 = base1 | R_CHEBPI_P ;
00409 base2 = base2 | R_CHEBPI_P ;
00410 base3 = base3 | R_CHEBPI_P ;
00411
00412 break ;
00413
00414 case UNSURR :
00415
00416
00417 base1 = base1 | R_CHEBU ;
00418 base2 = base2 | R_CHEBU ;
00419 base3 = base3 | R_CHEBU ;
00420 break ;
00421
00422
00423 default :
00424 cout <<
00425 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
00426 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00427 cout <<
00428 " dans la zone l = " << l << " n'est pas prevu ! "
00429 << endl ;
00430 abort () ;
00431 }
00432
00433 break ;
00434
00435
00436 default :
00437 cout <<
00438 "Mg3d::std_base_vect_cart : le cas type_p, type_t = "
00439 << type_p<< " " <<type_t << endl ;
00440 cout <<
00441 " dans la zone l = " << l << " n'est pas prevu ! "
00442 << endl ;
00443 abort () ;
00444
00445 }
00446
00447
00448
00449 break ;
00450
00451
00452 default :
00453 cout <<
00454 "Mg3d::std_base_vect_cart : le cas type_p = " << type_p << endl ;
00455 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00456 << endl ;
00457 abort () ;
00458
00459
00460 }
00461
00462 bases[0]->b[l] = base1 ;
00463 bases[1]->b[l] = base2 ;
00464 bases[2]->b[l] = base3 ;
00465 }
00466
00467 return bases ;
00468 }
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485 Base_val** Mg3d::std_base_vect_spher() const {
00486
00487
00488 int nz = get_nzone() ;
00489
00490
00491 Base_val** bases = new Base_val*[3] ;
00492 for (int i=0 ; i<3 ; i++)
00493 bases[i] = new Base_val(nz) ;
00494
00495
00496 for (int l=0; l<nzone; l++) {
00497
00498
00499 int type_r0 = get_type_r(l) ;
00500
00501
00502
00503
00504 int base1, base2, base3 ;
00505 switch ( type_p ) {
00506
00507 case NONSYM :
00508
00509
00510
00511
00512
00513
00514 base1 = P_COSSIN ;
00515 base2 = P_COSSIN ;
00516 base3 = P_COSSIN ;
00517
00518
00519
00520
00521 switch ( type_t ) {
00522 case SYM :
00523
00524
00525 base1 = base1 | T_COSSIN_CP ;
00526 base2 = base2 | T_COSSIN_SP ;
00527 base3 = base3 | T_COSSIN_SI ;
00528
00529
00530
00531 switch ( type_r0 ) {
00532
00533 case FIN :
00534
00535
00536 base1 = base1 | R_CHEB ;
00537 base2 = base2 | R_CHEB ;
00538 base3 = base3 | R_CHEB ;
00539 break ;
00540
00541 case FINJAC :
00542
00543
00544 base1 = base1 | R_JACO02 ;
00545 base2 = base2 | R_JACO02 ;
00546 base3 = base3 | R_JACO02 ;
00547 break ;
00548
00549 case RARE :
00550
00551
00552 base1 = base1 | R_CHEBPIM_I ;
00553 base2 = base2 | R_CHEBPIM_I ;
00554 base3 = base3 | R_CHEBPIM_I ;
00555
00556 break ;
00557
00558 case UNSURR :
00559
00560
00561 base1 = base1 | R_CHEBU ;
00562 base2 = base2 | R_CHEBU ;
00563 base3 = base3 | R_CHEBU ;
00564 break ;
00565
00566
00567 default :
00568 cout <<
00569 "Mg3d::std_base_vect_sphere : le cas type_p, type_t, type_r = "
00570 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00571 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00572 << endl ;
00573 abort () ;
00574 }
00575
00576 break ;
00577
00578 case NONSYM :
00579
00580
00581
00582 base1 = base1 | T_COSSIN_C ;
00583 base2 = base2 | T_COSSIN_S ;
00584 base3 = base3 | T_COSSIN_S ;
00585
00586
00587
00588 switch ( type_r0 ) {
00589
00590 case FIN :
00591
00592
00593 base1 = base1 | R_CHEB ;
00594 base2 = base2 | R_CHEB ;
00595 base3 = base3 | R_CHEB ;
00596 break ;
00597
00598 case FINJAC :
00599
00600
00601 base1 = base1 | R_JACO02 ;
00602 base2 = base2 | R_JACO02 ;
00603 base3 = base3 | R_JACO02 ;
00604 break ;
00605
00606 case RARE :
00607
00608
00609 base1 = base1 | R_CHEBPI_I ;
00610 base2 = base2 | R_CHEBPI_I ;
00611 base3 = base3 | R_CHEBPI_P ;
00612
00613 break ;
00614
00615 case UNSURR :
00616
00617
00618 base1 = base1 | R_CHEBU ;
00619 base2 = base2 | R_CHEBU ;
00620 base3 = base3 | R_CHEBU ;
00621 break ;
00622
00623
00624 default :
00625 cout <<
00626 "Mg3d::std_base_vect_sphere : le cas type_p, type_t, type_r = "
00627 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00628 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00629 << endl ;
00630 abort () ;
00631 }
00632
00633 break ;
00634
00635
00636 default :
00637 cout << "Mg3d::std_base_vect_spher : le cas type_p, type_t = "
00638 << type_p<< " " <<type_t << endl ;
00639 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00640 << endl ;
00641 abort () ;
00642
00643 }
00644
00645 break ;
00646
00647
00648 case SYM :
00649
00650
00651
00652
00653
00654
00655 base1 = P_COSSIN_P ;
00656 base2 = P_COSSIN_P ;
00657 base3 = P_COSSIN_P ;
00658
00659
00660
00661
00662 switch ( type_t ) {
00663
00664 case SYM :
00665
00666
00667 base1 = base1 | T_COS_P ;
00668 base2 = base2 | T_SIN_P ;
00669 base3 = base3 | T_SIN_I;
00670
00671
00672
00673 switch ( type_r0 ) {
00674
00675 case FIN :
00676
00677
00678 base1 = base1 | R_CHEB ;
00679 base2 = base2 | R_CHEB ;
00680 base3 = base3 | R_CHEB ;
00681 break ;
00682
00683 case FINJAC :
00684
00685
00686 base1 = base1 | R_JACO02 ;
00687 base2 = base2 | R_JACO02 ;
00688 base3 = base3 | R_JACO02 ;
00689 break ;
00690
00691 case RARE :
00692
00693
00694 base1 = base1 | R_CHEBI ;
00695 base2 = base2 | R_CHEBI ;
00696 base3 = base3 | R_CHEBI ;
00697 break ;
00698
00699 case UNSURR :
00700
00701
00702 base1 = base1 | R_CHEBU ;
00703 base2 = base2 | R_CHEBU ;
00704 base3 = base3 | R_CHEBU ;
00705 break ;
00706
00707
00708 default :
00709 cout <<
00710 "Mg3d::std_base_vect_spher : le cas type_p, type_t, type_r = "
00711 << type_p<< " " <<type_t<< " " <<type_r0 << endl ;
00712 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00713 << endl ;
00714 abort () ;
00715 }
00716
00717 break ;
00718
00719 case NONSYM :
00720
00721
00722
00723 base1 = base1 | T_COS ;
00724 base2 = base2 | T_SIN ;
00725 base3 = base3 | T_SIN ;
00726
00727
00728
00729 switch ( type_r0 ) {
00730
00731 case FIN :
00732
00733
00734 base1 = base1 | R_CHEB ;
00735 base2 = base2 | R_CHEB ;
00736 base3 = base3 | R_CHEB ;
00737 break ;
00738
00739 case FINJAC :
00740
00741
00742 base1 = base1 | R_JACO02 ;
00743 base2 = base2 | R_JACO02 ;
00744 base3 = base3 | R_JACO02 ;
00745 break ;
00746
00747 case RARE :
00748
00749
00750 base1 = base1 | R_CHEBPI_I ;
00751 base2 = base2 | R_CHEBPI_I ;
00752 base3 = base3 | R_CHEBPI_P ;
00753
00754 break ;
00755
00756 case UNSURR :
00757
00758
00759 base1 = base1 | R_CHEBU ;
00760 base2 = base2 | R_CHEBU ;
00761 base3 = base3 | R_CHEBU ;
00762 break ;
00763
00764 default :
00765 cout << "Mg3d::std_base_vect_spher : le cas type_p, type_t = "
00766 << type_p<< " " <<type_t << endl ;
00767 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00768 << endl ;
00769 abort () ;
00770 }
00771 }
00772
00773 break ;
00774
00775 default :
00776 cout <<
00777 "Mg3d::std_base_vect_spher : le cas type_p = " << type_p << endl ;
00778 cout << " dans la zone l = " << l << " n'est pas prevu ! "
00779 << endl ;
00780 abort () ;
00781
00782
00783 }
00784
00785 bases[0]->b[l] = base1 ;
00786 bases[1]->b[l] = base2 ;
00787 bases[2]->b[l] = base3 ;
00788 }
00789
00790 return bases ;
00791 }
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810 Base_val** Mg3d::pseudo_base_vect_cart() const {
00811
00812
00813 int nz = get_nzone() ;
00814
00815
00816 Base_val** bases = new Base_val*[3] ;
00817 for (int i=0 ; i<3 ; i++)
00818 bases[i] = new Base_val(nz) ;
00819
00820
00821 for (int l=0; l<nzone; l++) {
00822
00823
00824 int type_r0 = get_type_r(l) ;
00825
00826
00827
00828
00829 int base1, base2, base3 ;
00830 switch ( type_p ) {
00831
00832 case NONSYM :
00833
00834
00835
00836
00837
00838
00839 base1 = P_COSSIN ;
00840 base2 = P_COSSIN ;
00841 base3 = P_COSSIN ;
00842
00843
00844
00845
00846 switch ( type_t ) {
00847 case SYM :
00848
00849
00850 base1 = base1 | T_COSSIN_CI ;
00851 base2 = base2 | T_COSSIN_CI ;
00852 base3 = base3 | T_COSSIN_CP ;
00853
00854
00855
00856 switch ( type_r0 ) {
00857
00858 case FIN :
00859
00860
00861 base1 = base1 | R_CHEB ;
00862 base2 = base2 | R_CHEB ;
00863 base3 = base3 | R_CHEB ;
00864 break ;
00865
00866 case FINJAC :
00867
00868
00869 base1 = base1 | R_JACO02 ;
00870 base2 = base2 | R_JACO02 ;
00871 base3 = base3 | R_JACO02 ;
00872 break ;
00873
00874
00875 case RARE :
00876
00877
00878 base1 = base1 | R_CHEBPIM_I ;
00879 base2 = base2 | R_CHEBPIM_I ;
00880 base3 = base3 | R_CHEBPIM_P ;
00881
00882 break ;
00883
00884 case UNSURR :
00885
00886
00887 base1 = base1 | R_CHEBU ;
00888 base2 = base2 | R_CHEBU ;
00889 base3 = base3 | R_CHEBU ;
00890 break ;
00891
00892
00893 default :
00894 cout <<
00895 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
00896 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00897 cout <<
00898 " dans la zone l = " << l << " n'est pas prevu ! "
00899 << endl ;
00900 abort () ;
00901 }
00902
00903 break ;
00904
00905
00906 case NONSYM :
00907
00908
00909 base1 = base1 | T_COSSIN_C ;
00910 base2 = base2 | T_COSSIN_C ;
00911 base3 = base3 | T_COSSIN_C ;
00912
00913
00914
00915 switch ( type_r0 ) {
00916
00917 case FIN :
00918
00919
00920 base1 = base1 | R_CHEB ;
00921 base2 = base2 | R_CHEB ;
00922 base3 = base3 | R_CHEB ;
00923 break ;
00924
00925 case FINJAC :
00926
00927
00928 base1 = base1 | R_JACO02 ;
00929 base2 = base2 | R_JACO02 ;
00930 base3 = base3 | R_JACO02 ;
00931 break ;
00932
00933 case RARE :
00934
00935
00936 base1 = base1 | R_CHEBPI_P ;
00937 base2 = base2 | R_CHEBPI_P ;
00938 base3 = base3 | R_CHEBPI_P ;
00939
00940 break ;
00941
00942 case UNSURR :
00943
00944
00945 base1 = base1 | R_CHEBU ;
00946 base2 = base2 | R_CHEBU ;
00947 base3 = base3 | R_CHEBU ;
00948 break ;
00949
00950
00951 default :
00952 cout <<
00953 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
00954 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
00955 cout <<
00956 " dans la zone l = " << l << " n'est pas prevu ! "
00957 << endl ;
00958 abort () ;
00959 }
00960
00961 break ;
00962
00963
00964
00965
00966 default :
00967 cout <<
00968 "Mg3d::std_base_vect_cart : le cas type_p, type_t = "
00969 << type_p<< " " <<type_t << endl ;
00970 cout <<
00971 " dans la zone l = " << l << " n'est pas prevu ! "
00972 << endl ;
00973 abort () ;
00974
00975 }
00976
00977
00978
00979 break ;
00980
00981
00982 case SYM :
00983
00984
00985
00986
00987
00988
00989 base1 = P_COSSIN_I ;
00990 base2 = P_COSSIN_I ;
00991 base3 = P_COSSIN_P ;
00992
00993
00994
00995
00996 switch ( type_t ) {
00997
00998 case SYM :
00999
01000
01001 base1 = base1 | T_SIN_P ;
01002 base2 = base2 | T_SIN_P ;
01003 base3 = base3 | T_COS_P;
01004
01005
01006
01007 switch ( type_r0 ) {
01008
01009 case FIN :
01010
01011
01012 base1 = base1 | R_CHEB ;
01013 base2 = base2 | R_CHEB ;
01014 base3 = base3 | R_CHEB ;
01015 break ;
01016
01017 case FINJAC :
01018
01019
01020 base1 = base1 | R_JACO02 ;
01021 base2 = base2 | R_JACO02 ;
01022 base3 = base3 | R_JACO02 ;
01023 break ;
01024
01025 case RARE :
01026
01027
01028 base1 = base1 | R_CHEBP ;
01029 base2 = base2 | R_CHEBP ;
01030 base3 = base3 | R_CHEBP ;
01031 break ;
01032
01033 case UNSURR :
01034
01035
01036 base1 = base1 | R_CHEBU ;
01037 base2 = base2 | R_CHEBU ;
01038 base3 = base3 | R_CHEBU ;
01039 break ;
01040
01041
01042 default :
01043 cout <<
01044 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
01045 << type_p<< " " <<type_t<< " " <<type_r0 << endl ;
01046 cout <<
01047 " dans la zone l = " << l << " n'est pas prevu ! "
01048 << endl ;
01049 abort () ;
01050 }
01051
01052 break ;
01053
01054
01055 case NONSYM :
01056
01057
01058 base1 = base1 | T_SIN ;
01059 base2 = base2 | T_SIN ;
01060 base3 = base3 | T_COS ;
01061
01062
01063
01064 switch ( type_r0 ) {
01065
01066 case FIN :
01067
01068
01069 base1 = base1 | R_CHEB ;
01070 base2 = base2 | R_CHEB ;
01071 base3 = base3 | R_CHEB ;
01072 break ;
01073
01074 case FINJAC :
01075
01076
01077 base1 = base1 | R_JACO02 ;
01078 base2 = base2 | R_JACO02 ;
01079 base3 = base3 | R_JACO02 ;
01080 break ;
01081
01082 case RARE :
01083
01084
01085 base1 = base1 | R_CHEBPI_P ;
01086 base2 = base2 | R_CHEBPI_P ;
01087 base3 = base3 | R_CHEBPI_P ;
01088
01089 break ;
01090
01091 case UNSURR :
01092
01093
01094 base1 = base1 | R_CHEBU ;
01095 base2 = base2 | R_CHEBU ;
01096 base3 = base3 | R_CHEBU ;
01097 break ;
01098
01099
01100 default :
01101 cout <<
01102 "Mg3d::std_base_vect_cart : le cas type_p, type_t, type_r = "
01103 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
01104 cout <<
01105 " dans la zone l = " << l << " n'est pas prevu ! "
01106 << endl ;
01107 abort () ;
01108 }
01109
01110 break ;
01111
01112 default :
01113 cout <<
01114 "Mg3d::std_base_vect_cart : le cas type_p, type_t = "
01115 << type_p<< " " <<type_t << endl ;
01116 cout <<
01117 " dans la zone l = " << l << " n'est pas prevu ! "
01118 << endl ;
01119 abort () ;
01120
01121 }
01122
01123
01124
01125 break ;
01126
01127
01128 default :
01129 cout <<
01130 "Mg3d::std_base_vect_cart : le cas type_p = " << type_p << endl ;
01131 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01132 << endl ;
01133 abort () ;
01134
01135
01136 }
01137
01138 bases[0]->b[l] = base1 ;
01139 bases[1]->b[l] = base2 ;
01140 bases[2]->b[l] = base3 ;
01141 }
01142
01143 return bases ;
01144 }
01145
01146
01147
01148
01149
01150
01151
01152
01153
01154
01155
01156
01157
01158
01159
01160
01161 Base_val** Mg3d::pseudo_base_vect_spher() const {
01162
01163
01164 int nz = get_nzone() ;
01165
01166
01167 Base_val** bases = new Base_val*[3] ;
01168 for (int i=0 ; i<3 ; i++)
01169 bases[i] = new Base_val(nz) ;
01170
01171
01172 for (int l=0; l<nzone; l++) {
01173
01174
01175 int type_r0 = get_type_r(l) ;
01176
01177
01178
01179
01180 int base1, base2, base3 ;
01181 switch ( type_p ) {
01182
01183 case NONSYM :
01184
01185
01186
01187
01188
01189
01190 base1 = P_COSSIN ;
01191 base2 = P_COSSIN ;
01192 base3 = P_COSSIN ;
01193
01194
01195
01196
01197 switch ( type_t ) {
01198 case SYM :
01199
01200
01201 base1 = base1 | T_COSSIN_CI ;
01202 base2 = base2 | T_COSSIN_SI ;
01203 base3 = base3 | T_COSSIN_SP ;
01204
01205
01206
01207 switch ( type_r0 ) {
01208
01209 case FIN :
01210
01211
01212 base1 = base1 | R_CHEB ;
01213 base2 = base2 | R_CHEB ;
01214 base3 = base3 | R_CHEB ;
01215 break ;
01216
01217 case FINJAC :
01218
01219
01220 base1 = base1 | R_JACO02 ;
01221 base2 = base2 | R_JACO02 ;
01222 base3 = base3 | R_JACO02 ;
01223 break ;
01224
01225 case RARE :
01226
01227
01228 base1 = base1 | R_CHEBPIM_P ;
01229 base2 = base2 | R_CHEBPIM_P ;
01230 base3 = base3 | R_CHEBPIM_P ;
01231
01232 break ;
01233
01234 case UNSURR :
01235
01236
01237 base1 = base1 | R_CHEBU ;
01238 base2 = base2 | R_CHEBU ;
01239 base3 = base3 | R_CHEBU ;
01240 break ;
01241
01242
01243 default :
01244 cout <<
01245 "Mg3d::std_base_vect_sphere : le cas type_p, type_t, type_r = "
01246 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
01247 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01248 << endl ;
01249 abort () ;
01250 }
01251
01252 break ;
01253
01254 case NONSYM :
01255
01256
01257
01258 base1 = base1 | T_COSSIN_C ;
01259 base2 = base2 | T_COSSIN_S ;
01260 base3 = base3 | T_COSSIN_S ;
01261
01262
01263
01264 switch ( type_r0 ) {
01265
01266 case FIN :
01267
01268
01269 base1 = base1 | R_CHEB ;
01270 base2 = base2 | R_CHEB ;
01271 base3 = base3 | R_CHEB ;
01272 break ;
01273
01274 case FINJAC :
01275
01276
01277 base1 = base1 | R_JACO02 ;
01278 base2 = base2 | R_JACO02 ;
01279 base3 = base3 | R_JACO02 ;
01280 break ;
01281
01282 case RARE :
01283
01284
01285 base1 = base1 | R_CHEBPI_I ;
01286 base2 = base2 | R_CHEBPI_I ;
01287 base3 = base3 | R_CHEBPI_P ;
01288
01289 break ;
01290
01291 case UNSURR :
01292
01293
01294 base1 = base1 | R_CHEBU ;
01295 base2 = base2 | R_CHEBU ;
01296 base3 = base3 | R_CHEBU ;
01297 break ;
01298
01299
01300 default :
01301 cout <<
01302 "Mg3d::std_base_vect_sphere : le cas type_p, type_t, type_r = "
01303 << type_p<< " " << type_t<< " " <<type_r0 << endl ;
01304 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01305 << endl ;
01306 abort () ;
01307 }
01308
01309 break ;
01310
01311
01312 default :
01313 cout << "Mg3d::std_base_vect_spher : le cas type_p, type_t = "
01314 << type_p<< " " <<type_t << endl ;
01315 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01316 << endl ;
01317 abort () ;
01318
01319 }
01320
01321 break ;
01322
01323
01324 case SYM :
01325
01326
01327
01328
01329
01330
01331 base1 = P_COSSIN_P ;
01332 base2 = P_COSSIN_P ;
01333 base3 = P_COSSIN_P ;
01334
01335
01336
01337
01338 switch ( type_t ) {
01339
01340 case SYM :
01341
01342
01343 base1 = base1 | T_COS_I ;
01344 base2 = base2 | T_SIN_I ;
01345 base3 = base3 | T_SIN_P;
01346
01347
01348
01349 switch ( type_r0 ) {
01350
01351 case FIN :
01352
01353
01354 base1 = base1 | R_CHEB ;
01355 base2 = base2 | R_CHEB ;
01356 base3 = base3 | R_CHEB ;
01357 break ;
01358
01359 case FINJAC :
01360
01361
01362 base1 = base1 | R_JACO02 ;
01363 base2 = base2 | R_JACO02 ;
01364 base3 = base3 | R_JACO02 ;
01365 break ;
01366
01367 case RARE :
01368
01369
01370 base1 = base1 | R_CHEBP ;
01371 base2 = base2 | R_CHEBP ;
01372 base3 = base3 | R_CHEBP ;
01373 break ;
01374
01375 case UNSURR :
01376
01377
01378 base1 = base1 | R_CHEBU ;
01379 base2 = base2 | R_CHEBU ;
01380 base3 = base3 | R_CHEBU ;
01381 break ;
01382
01383
01384 default :
01385 cout <<
01386 "Mg3d::std_base_vect_spher : le cas type_p, type_t, type_r = "
01387 << type_p<< " " <<type_t<< " " <<type_r0 << endl ;
01388 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01389 << endl ;
01390 abort () ;
01391 }
01392
01393 break ;
01394
01395 case NONSYM :
01396
01397
01398
01399 base1 = base1 | T_COS ;
01400 base2 = base2 | T_SIN ;
01401 base3 = base3 | T_SIN ;
01402
01403
01404
01405 switch ( type_r0 ) {
01406
01407 case FIN :
01408
01409
01410 base1 = base1 | R_CHEB ;
01411 base2 = base2 | R_CHEB ;
01412 base3 = base3 | R_CHEB ;
01413 break ;
01414
01415 case FINJAC :
01416
01417
01418 base1 = base1 | R_JACO02 ;
01419 base2 = base2 | R_JACO02 ;
01420 base3 = base3 | R_JACO02 ;
01421 break ;
01422
01423 case RARE :
01424
01425
01426 base1 = base1 | R_CHEBPI_I ;
01427 base2 = base2 | R_CHEBPI_I ;
01428 base3 = base3 | R_CHEBPI_P ;
01429
01430 break ;
01431
01432 case UNSURR :
01433
01434
01435 base1 = base1 | R_CHEBU ;
01436 base2 = base2 | R_CHEBU ;
01437 base3 = base3 | R_CHEBU ;
01438 break ;
01439
01440 default :
01441 cout << "Mg3d::std_base_vect_spher : le cas type_p, type_t = "
01442 << type_p<< " " <<type_t << endl ;
01443 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01444 << endl ;
01445 abort () ;
01446
01447 }
01448
01449 default :
01450 cout << "Mg3d::std_base_vect_spher : le cas type_p, type_t = "
01451 << type_p<< " " <<type_t << endl ;
01452 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01453 << endl ;
01454 abort () ;
01455
01456 }
01457
01458 break ;
01459
01460 default :
01461 cout <<
01462 "Mg3d::std_base_vect_spher : le cas type_p = " << type_p << endl ;
01463 cout << " dans la zone l = " << l << " n'est pas prevu ! "
01464 << endl ;
01465 abort () ;
01466
01467
01468 }
01469
01470 bases[0]->b[l] = base1 ;
01471 bases[1]->b[l] = base2 ;
01472 bases[2]->b[l] = base3 ;
01473 }
01474
01475 return bases ;
01476 }
01477