00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 char map_af_fait_C[] = "$Header: /cvsroot/Lorene/C++/Source/Map/map_af_fait.C,v 1.10 2012/01/24 14:59:12 j_novak Exp $" ;
00025
00026
00027
00028
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
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 #include <assert.h>
00094 #include <stdlib.h>
00095 #include <math.h>
00096
00097 #include "mtbl.h"
00098 #include "map.h"
00099 #include "proto.h"
00100
00101
00102
00103
00104
00105 Mtbl* map_af_fait_r(const Map* cvi) {
00106
00107
00108 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00109 const Mg3d* mg = cv->get_mg() ;
00110 int nz = mg->get_nzone() ;
00111
00112
00113 Mtbl* mti = new Mtbl(mg) ;
00114 mti->set_etat_qcq() ;
00115
00116
00117 double* alpha = cv->alpha ;
00118 double* beta = cv->beta ;
00119
00120 int i, j, k ;
00121 for (int l=0 ; l<nz ; l++) {
00122 int ir = mg->get_nr(l);
00123 int it = mg->get_nt(l) ;
00124 int ip = mg->get_np(l) ;
00125 const Grille3d* g = mg->get_grille3d(l) ;
00126 Tbl* tb = (mti->t)[l] ;
00127 tb->set_etat_qcq() ;
00128 double* p_r = tb->t ;
00129
00130 switch(mg->get_type_r(l)) {
00131 case FIN: case RARE: case FINJAC :
00132 for (k=0 ; k<ip ; k++) {
00133 for (j=0 ; j<it ; j++) {
00134 for (i=0 ; i<ir ; i++) {
00135 *p_r = alpha[l] * (g->x)[i] + beta[l] ;
00136 p_r++ ;
00137 }
00138 }
00139 }
00140 break ;
00141
00142 case UNSURR:
00143 for (k=0 ; k<ip ; k++) {
00144 for (j=0 ; j<it ; j++) {
00145 for (i=0 ; i<ir ; i++) {
00146 *p_r = 1./(alpha[l] * (g->x)[i] + beta[l]) ;
00147 p_r++ ;
00148 }
00149 }
00150 }
00151 break ;
00152
00153 default:
00154 cout << "Map_af_fait_r: unknown type_r !\n" ;
00155 abort () ;
00156 exit(-1) ;
00157
00158 }
00159 }
00160
00161
00162 return mti ;
00163 }
00164
00165
00166
00167
00168
00169 Mtbl* map_af_fait_tet(const Map* cvi) {
00170
00171
00172 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00173 const Mg3d* mg = cv->get_mg() ;
00174 int nz = mg->get_nzone() ;
00175
00176
00177 Mtbl* mti = new Mtbl(mg) ;
00178 mti->set_etat_qcq() ;
00179
00180 int i, j, k ;
00181 for (int l=0 ; l<nz ; l++) {
00182 int ir = mg->get_nr(l);
00183 int it = mg->get_nt(l);
00184 int ip = mg->get_np(l);
00185 const Grille3d* g = mg->get_grille3d(l) ;
00186 Tbl* tb = (mti->t)[l] ;
00187 tb->set_etat_qcq() ;
00188 double* p_r = tb->t ;
00189 for (k=0 ; k<ip ; k++) {
00190 for (j=0 ; j<it ; j++) {
00191 for (i=0 ; i<ir ; i++) {
00192 *p_r = (g->tet)[j] ;
00193 p_r++ ;
00194 }
00195 }
00196 }
00197 }
00198
00199
00200 return mti ;
00201 }
00202
00203
00204
00205
00206
00207 Mtbl* map_af_fait_phi(const Map* cvi) {
00208
00209
00210 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00211 const Mg3d* mg = cv->get_mg() ;
00212 int nz = mg->get_nzone() ;
00213
00214
00215 Mtbl* mti = new Mtbl(mg) ;
00216 mti->set_etat_qcq() ;
00217
00218 int i, j, k ;
00219 for (int l=0 ; l<nz ; l++) {
00220 int ir = mg->get_nr(l);
00221 int it = mg->get_nt(l);
00222 int ip = mg->get_np(l);
00223 const Grille3d* g = mg->get_grille3d(l) ;
00224 Tbl* tb = (mti->t)[l] ;
00225 tb->set_etat_qcq() ;
00226 double* p_r = tb->t ;
00227 for (k=0 ; k<ip ; k++) {
00228 for (j=0 ; j<it ; j++) {
00229 for (i=0 ; i<ir ; i++) {
00230 *p_r = (g->phi)[k] ;
00231 p_r++ ;
00232 }
00233 }
00234 }
00235 }
00236
00237
00238 return mti ;
00239 }
00240
00241
00242
00243
00244
00245 Mtbl* map_af_fait_x(const Map* cvi) {
00246
00247
00248 const Mg3d* mg = cvi->get_mg() ;
00249
00250
00251 Mtbl* mti = new Mtbl(mg) ;
00252
00253 *mti = (cvi->r) * (cvi->sint) * (cvi->cosp) ;
00254
00255
00256 return mti ;
00257 }
00258
00259
00260
00261
00262
00263 Mtbl* map_af_fait_y(const Map* cvi) {
00264
00265
00266 const Mg3d* mg = cvi->get_mg() ;
00267
00268
00269 Mtbl* mti = new Mtbl(mg) ;
00270
00271 *mti = (cvi->r) * (cvi->sint) * (cvi->sinp) ;
00272
00273
00274 return mti ;
00275 }
00276
00277
00278
00279
00280
00281 Mtbl* map_af_fait_z(const Map* cvi) {
00282
00283
00284 const Mg3d* mg = cvi->get_mg() ;
00285
00286
00287 Mtbl* mti = new Mtbl(mg) ;
00288
00289 *mti = (cvi->r) * (cvi->cost) ;
00290
00291
00292 return mti ;
00293 }
00294
00295
00296
00297
00298
00299 Mtbl* map_af_fait_xa(const Map* cvi) {
00300
00301
00302 const Mg3d* mg = cvi->get_mg() ;
00303
00304
00305 Mtbl* mti = new Mtbl(mg) ;
00306
00307 double r_phi = cvi->get_rot_phi() ;
00308 double t_x = cvi->get_ori_x() ;
00309
00310 if ( fabs(r_phi) < 1.e-14 ) {
00311 *mti = (cvi->x) + t_x ;
00312 }
00313 else if ( fabs(r_phi - M_PI) < 1.e-14 ) {
00314 *mti = - (cvi->x) + t_x ;
00315 }
00316 else {
00317 Mtbl phi = cvi->phi + r_phi ;
00318 *mti = (cvi->r) * (cvi->sint) * cos(phi) + t_x ;
00319 }
00320
00321
00322 return mti ;
00323 }
00324
00325
00326
00327
00328
00329 Mtbl* map_af_fait_ya(const Map* cvi) {
00330
00331
00332 const Mg3d* mg = cvi->get_mg() ;
00333
00334
00335 Mtbl* mti = new Mtbl(mg) ;
00336
00337 double r_phi = cvi->get_rot_phi() ;
00338 double t_y = cvi->get_ori_y() ;
00339
00340 if ( fabs(r_phi) < 1.e-14 ) {
00341 *mti = (cvi->y) + t_y ;
00342 }
00343 else if ( fabs(r_phi - M_PI) < 1.e-14 ) {
00344 *mti = - (cvi->y) + t_y ;
00345 }
00346 else {
00347 Mtbl phi = cvi->phi + r_phi ;
00348 *mti = (cvi->r) * (cvi->sint) * sin(phi) + t_y ;
00349 }
00350
00351
00352 return mti ;
00353 }
00354
00355
00356
00357
00358
00359 Mtbl* map_af_fait_za(const Map* cvi) {
00360
00361
00362 const Mg3d* mg = cvi->get_mg() ;
00363
00364 double t_z = cvi->get_ori_z() ;
00365
00366
00367 Mtbl* mti = new Mtbl(mg) ;
00368
00369 *mti = (cvi->r) * (cvi->cost) + t_z ;
00370
00371
00372 return mti ;
00373 }
00374
00375
00376
00377
00378
00379 Mtbl* map_af_fait_sint(const Map* cvi) {
00380
00381
00382 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00383 const Mg3d* mg = cv->get_mg() ;
00384 int nz = mg->get_nzone() ;
00385
00386
00387 Mtbl* mti = new Mtbl(mg) ;
00388 mti->set_etat_qcq() ;
00389
00390 int i, j, k ;
00391 for (int l=0 ; l<nz ; l++) {
00392 int ir = mg->get_nr(l);
00393 int it = mg->get_nt(l);
00394 int ip = mg->get_np(l);
00395 const Grille3d* g = mg->get_grille3d(l) ;
00396 Tbl* tb = (mti->t)[l] ;
00397 tb->set_etat_qcq() ;
00398 double* p_r = tb->t ;
00399 for (k=0 ; k<ip ; k++) {
00400 for (j=0 ; j<it ; j++) {
00401 for (i=0 ; i<ir ; i++) {
00402 *p_r = sin(g->tet[j]) ;
00403 p_r++ ;
00404 }
00405 }
00406 }
00407 }
00408
00409
00410 return mti ;
00411 }
00412
00413 Mtbl* map_af_fait_cost(const Map* cvi) {
00414
00415
00416 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00417 const Mg3d* mg = cv->get_mg() ;
00418 int nz = mg->get_nzone() ;
00419
00420
00421 Mtbl* mti = new Mtbl(mg) ;
00422 mti->set_etat_qcq() ;
00423
00424 int i, j, k ;
00425 for (int l=0 ; l<nz ; l++) {
00426 int ir = mg->get_nr(l);
00427 int it = mg->get_nt(l);
00428 int ip = mg->get_np(l);
00429 const Grille3d* g = mg->get_grille3d(l) ;
00430 Tbl* tb = (mti->t)[l] ;
00431 tb->set_etat_qcq() ;
00432 double* p_r = tb->t ;
00433 for (k=0 ; k<ip ; k++) {
00434 for (j=0 ; j<it ; j++) {
00435 for (i=0 ; i<ir ; i++) {
00436 *p_r = cos(g->tet[j]) ;
00437 p_r++ ;
00438 }
00439 }
00440 }
00441 }
00442
00443
00444 return mti ;
00445 }
00446
00447 Mtbl* map_af_fait_sinp(const Map* cvi) {
00448
00449
00450 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00451 const Mg3d* mg = cv->get_mg() ;
00452 int nz = mg->get_nzone() ;
00453
00454
00455 Mtbl* mti = new Mtbl(mg) ;
00456 mti->set_etat_qcq() ;
00457
00458 int i, j, k ;
00459 for (int l=0 ; l<nz ; l++) {
00460 int ir = mg->get_nr(l);
00461 int it = mg->get_nt(l);
00462 int ip = mg->get_np(l);
00463 const Grille3d* g = mg->get_grille3d(l) ;
00464 Tbl* tb = (mti->t)[l] ;
00465 tb->set_etat_qcq() ;
00466 double* p_r = tb->t ;
00467 for (k=0 ; k<ip ; k++) {
00468 for (j=0 ; j<it ; j++) {
00469 for (i=0 ; i<ir ; i++) {
00470 *p_r = sin(g->phi[k]) ;
00471 p_r++ ;
00472 }
00473 }
00474 }
00475 }
00476
00477
00478 return mti ;
00479 }
00480
00481 Mtbl* map_af_fait_cosp(const Map* cvi) {
00482
00483
00484 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00485 const Mg3d* mg = cv->get_mg() ;
00486 int nz = mg->get_nzone() ;
00487
00488
00489 Mtbl* mti = new Mtbl(mg) ;
00490 mti->set_etat_qcq() ;
00491
00492 int i, j, k ;
00493 for (int l=0 ; l<nz ; l++) {
00494 int ir = mg->get_nr(l);
00495 int it = mg->get_nt(l);
00496 int ip = mg->get_np(l);
00497 const Grille3d* g = mg->get_grille3d(l) ;
00498 Tbl* tb = (mti->t)[l] ;
00499 tb->set_etat_qcq() ;
00500 double* p_r = tb->t ;
00501 for (k=0 ; k<ip ; k++) {
00502 for (j=0 ; j<it ; j++) {
00503 for (i=0 ; i<ir ; i++) {
00504 *p_r = cos(g->phi[k]) ;
00505 p_r++ ;
00506 }
00507 }
00508 }
00509 }
00510
00511
00512 return mti ;
00513 }
00514
00515
00516
00517
00518
00519
00520
00521 Mtbl* map_af_fait_xsr(const Map* cvi) {
00522
00523
00524 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00525 const Mg3d* mg = cv->get_mg() ;
00526 int nz = mg->get_nzone() ;
00527
00528
00529 Mtbl* mti = new Mtbl(mg) ;
00530 mti->set_etat_qcq() ;
00531
00532
00533 double* alpha = cv->alpha ;
00534 double* beta = cv->beta ;
00535
00536 int i, j, k ;
00537 for (int l=0 ; l<nz ; l++) {
00538 int ir = mg->get_nr(l);
00539 int it = mg->get_nt(l) ;
00540 int ip = mg->get_np(l) ;
00541 const Grille3d* g = mg->get_grille3d(l) ;
00542 Tbl* tb = (mti->t)[l] ;
00543 tb->set_etat_qcq() ;
00544 double* p_r = tb->t ;
00545
00546 switch(mg->get_type_r(l)) {
00547
00548 case RARE:
00549 assert(beta[l]==0) ;
00550 for (k=0 ; k<ip ; k++) {
00551 for (j=0 ; j<it ; j++) {
00552 for (i=0 ; i<ir ; i++) {
00553 *p_r = 1. / alpha[l] ;
00554 p_r++ ;
00555 }
00556 }
00557 }
00558 break ;
00559
00560 case FINJAC:
00561 for (k=0 ; k<ip ; k++) {
00562 for (j=0 ; j<it ; j++) {
00563 for (i=0 ; i<ir ; i++) {
00564 *p_r = 1. / alpha[l] ;
00565 p_r++ ;
00566 }
00567 }
00568 }
00569 break ;
00570
00571 case FIN:
00572 for (k=0 ; k<ip ; k++) {
00573 for (j=0 ; j<it ; j++) {
00574 if (ir == 1) {
00575 *p_r = 1. / beta[l] ;
00576 p_r++ ;
00577 }
00578 else
00579 for (i=0 ; i<ir ; i++) {
00580 *p_r = 1. / ( alpha[l] * (g->x)[i] + beta[l] ) ;
00581 p_r++ ;
00582 }
00583 }
00584 }
00585 break ;
00586
00587 case UNSURR:
00588 assert(beta[l] == - alpha[l]) ;
00589 for (k=0 ; k<ip ; k++) {
00590 for (j=0 ; j<it ; j++) {
00591 for (i=0 ; i<ir ; i++) {
00592 *p_r = 1. / alpha[l] ;
00593 p_r++ ;
00594 }
00595 }
00596 }
00597 break ;
00598
00599 default:
00600 cout << "map_af_fait_xsr: unknown type_r !" << endl ;
00601 abort() ;
00602
00603 }
00604 }
00605
00606
00607 return mti ;
00608
00609 }
00610
00611
00612
00613
00614
00615
00616
00617 Mtbl* map_af_fait_dxdr(const Map* cvi) {
00618
00619
00620 const Map_af* cv = static_cast<const Map_af*>(cvi) ;
00621 const Mg3d* mg = cv->get_mg() ;
00622 int nz = mg->get_nzone() ;
00623
00624
00625 Mtbl* mti = new Mtbl(mg) ;
00626 mti->set_etat_qcq() ;
00627
00628
00629 double* alpha = cv->alpha ;
00630
00631 int i, j, k ;
00632 for (int l=0 ; l<nz ; l++) {
00633 int ir = mg->get_nr(l);
00634 int it = mg->get_nt(l) ;
00635 int ip = mg->get_np(l) ;
00636 Tbl* tb = (mti->t)[l] ;
00637 tb->set_etat_qcq() ;
00638 double* p_r = tb->t ;
00639
00640 switch(mg->get_type_r(l)) {
00641
00642 case FIN: case RARE: case FINJAC :
00643 for (k=0 ; k<ip ; k++) {
00644 for (j=0 ; j<it ; j++) {
00645 for (i=0 ; i<ir ; i++) {
00646 *p_r = 1. / alpha[l] ;
00647 p_r++ ;
00648 }
00649 }
00650 }
00651 break ;
00652
00653 case UNSURR:
00654 for (k=0 ; k<ip ; k++) {
00655 for (j=0 ; j<it ; j++) {
00656 for (i=0 ; i<ir ; i++) {
00657 *p_r = - 1. / alpha[l] ;
00658 p_r++ ;
00659 }
00660 }
00661 }
00662 break ;
00663
00664
00665 default:
00666 cout << "map_af_fait_dxdr: unknown type_r !" << endl ;
00667 abort() ;
00668 }
00669 }
00670
00671
00672 return mti ;
00673 }
00674
00675
00676
00677
00678
00679
00680
00681 Mtbl* map_af_fait_drdt(const Map* cvi) {
00682
00683
00684 const Mg3d* mg = cvi->get_mg() ;
00685
00686
00687 Mtbl* mti = new Mtbl(mg) ;
00688 mti->set_etat_zero() ;
00689
00690 return mti ;
00691 }
00692
00693
00694
00695
00696
00697
00698
00699 Mtbl* map_af_fait_stdrdp(const Map* cvi) {
00700
00701
00702 const Mg3d* mg = cvi->get_mg() ;
00703
00704
00705 Mtbl* mti = new Mtbl(mg) ;
00706 mti->set_etat_zero() ;
00707
00708 return mti ;
00709 }
00710
00711
00712
00713
00714
00715
00716
00717 Mtbl* map_af_fait_srdrdt(const Map* cvi) {
00718
00719
00720 const Mg3d* mg = cvi->get_mg() ;
00721
00722
00723 Mtbl* mti = new Mtbl(mg) ;
00724 mti->set_etat_zero() ;
00725
00726 return mti ;
00727 }
00728
00729
00730
00731
00732
00733
00734
00735 Mtbl* map_af_fait_srstdrdp(const Map* cvi) {
00736
00737
00738 const Mg3d* mg = cvi->get_mg() ;
00739
00740
00741 Mtbl* mti = new Mtbl(mg) ;
00742 mti->set_etat_zero() ;
00743
00744 return mti ;
00745 }
00746
00747
00748
00749
00750
00751
00752
00753 Mtbl* map_af_fait_sr2drdt(const Map* cvi) {
00754
00755
00756 const Mg3d* mg = cvi->get_mg() ;
00757
00758
00759 Mtbl* mti = new Mtbl(mg) ;
00760 mti->set_etat_zero() ;
00761
00762 return mti ;
00763 }
00764
00765
00766
00767
00768
00769
00770
00771 Mtbl* map_af_fait_sr2stdrdp(const Map* cvi) {
00772
00773
00774 const Mg3d* mg = cvi->get_mg() ;
00775
00776
00777 Mtbl* mti = new Mtbl(mg) ;
00778 mti->set_etat_zero() ;
00779
00780 return mti ;
00781 }
00782
00783
00784
00785
00786
00787
00788
00789 Mtbl* map_af_fait_d2rdx2(const Map* cvi) {
00790
00791
00792 const Mg3d* mg = cvi->get_mg() ;
00793
00794
00795 Mtbl* mti = new Mtbl(mg) ;
00796 mti->set_etat_zero() ;
00797
00798 return mti ;
00799 }
00800
00801
00802
00803
00804
00805
00806
00807 Mtbl* map_af_fait_lapr_tp(const Map* cvi) {
00808
00809
00810 const Mg3d* mg = cvi->get_mg() ;
00811
00812
00813 Mtbl* mti = new Mtbl(mg) ;
00814 mti->set_etat_zero() ;
00815
00816 return mti ;
00817 }
00818
00819
00820
00821
00822
00823
00824
00825 Mtbl* map_af_fait_d2rdtdx(const Map* cvi) {
00826
00827
00828 const Mg3d* mg = cvi->get_mg() ;
00829
00830
00831 Mtbl* mti = new Mtbl(mg) ;
00832 mti->set_etat_zero() ;
00833
00834 return mti ;
00835 }
00836
00837
00838
00839
00840
00841
00842
00843 Mtbl* map_af_fait_sstd2rdpdx(const Map* cvi) {
00844
00845
00846 const Mg3d* mg = cvi->get_mg() ;
00847
00848
00849 Mtbl* mti = new Mtbl(mg) ;
00850 mti->set_etat_zero() ;
00851
00852 return mti ;
00853 }
00854
00855
00856
00857
00858
00859
00860
00861 Mtbl* map_af_fait_sr2d2rdt2(const Map* cvi) {
00862
00863
00864 const Mg3d* mg = cvi->get_mg() ;
00865
00866
00867 Mtbl* mti = new Mtbl(mg) ;
00868 mti->set_etat_zero() ;
00869
00870 return mti ;
00871 }
00872