00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 char map_log_fait_C[] = "$Header: /cvsroot/Lorene/C++/Source/Map/map_log_fait.C,v 1.1 2004/06/22 08:49:58 p_grandclement Exp $" ;
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <assert.h>
00039 #include <stdlib.h>
00040 #include <math.h>
00041
00042 #include "mtbl.h"
00043 #include "map.h"
00044 #include "proto.h"
00045
00046
00047
00048
00049
00050 Mtbl* map_log_fait_r(const Map* cvi) {
00051
00052
00053 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00054 const Mg3d* mg = cv->get_mg() ;
00055 int nz = mg->get_nzone() ;
00056
00057
00058 Mtbl* mti = new Mtbl(mg) ;
00059 mti->set_etat_qcq() ;
00060
00061
00062 Tbl alpha = cv->alpha ;
00063 Tbl beta = cv->beta ;
00064 Itbl type_var = cv->type_var ;
00065
00066 int i, j, k ;
00067 for (int l=0 ; l<nz ; l++) {
00068 int ir = mg->get_nr(l);
00069 int it = mg->get_nt(l) ;
00070 int ip = mg->get_np(l) ;
00071 const Grille3d* g = mg->get_grille3d(l) ;
00072 Tbl* tb = (mti->t)[l] ;
00073 tb->set_etat_qcq() ;
00074 double* p_r = tb->t ;
00075
00076 switch (type_var(l)) {
00077 case AFFINE : {
00078
00079 switch(mg->get_type_r(l)) {
00080 case FIN: case RARE:
00081 for (k=0 ; k<ip ; k++) {
00082 for (j=0 ; j<it ; j++) {
00083 for (i=0 ; i<ir ; i++) {
00084 *p_r = alpha(l) * (g->x)[i] + beta(l) ;
00085 p_r++ ;
00086 }
00087 }
00088 }
00089 break ;
00090
00091 case UNSURR:
00092 for (k=0 ; k<ip ; k++) {
00093 for (j=0 ; j<it ; j++) {
00094 for (i=0 ; i<ir ; i++) {
00095 *p_r = 1./(alpha(l) * (g->x)[i] + beta(l)) ;
00096 p_r++ ;
00097 }
00098 }
00099 }
00100 break ;
00101
00102 default:
00103 cout << "Map_log_fait_r: unknown type_r !\n" ;
00104 abort () ;
00105 exit(-1) ;
00106
00107 }
00108 break ;
00109 }
00110
00111 case LOG : {
00112 switch(mg->get_type_r(l)) {
00113 case FIN:
00114 for (k=0 ; k<ip ; k++) {
00115 for (j=0 ; j<it ; j++) {
00116 for (i=0 ; i<ir ; i++) {
00117 *p_r = exp(alpha(l) * (g->x)[i] + beta(l)) ;
00118 p_r++ ;
00119 }
00120 }
00121 }
00122 break ;
00123 default: {
00124 cout << "Map_log_fait_r: unknown type_r !\n" ;
00125 abort () ;
00126 exit(-1) ;
00127 }
00128 }
00129 break ;
00130 }
00131 default: {
00132 cout << "Map_log_fait_r: unknown type_r !\n" ;
00133 abort () ;
00134 exit(-1) ;
00135 }
00136 }
00137
00138 }
00139
00140
00141 return mti ;
00142 }
00143
00144
00145
00146
00147
00148 Mtbl* map_log_fait_tet(const Map* cvi) {
00149
00150
00151 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00152 const Mg3d* mg = cv->get_mg() ;
00153 int nz = mg->get_nzone() ;
00154
00155
00156 Mtbl* mti = new Mtbl(mg) ;
00157 mti->set_etat_qcq() ;
00158
00159 int i, j, k ;
00160 for (int l=0 ; l<nz ; l++) {
00161 int ir = mg->get_nr(l);
00162 int it = mg->get_nt(l);
00163 int ip = mg->get_np(l);
00164 const Grille3d* g = mg->get_grille3d(l) ;
00165 Tbl* tb = (mti->t)[l] ;
00166 tb->set_etat_qcq() ;
00167 double* p_r = tb->t ;
00168 for (k=0 ; k<ip ; k++) {
00169 for (j=0 ; j<it ; j++) {
00170 for (i=0 ; i<ir ; i++) {
00171 *p_r = (g->tet)[j] ;
00172 p_r++ ;
00173 }
00174 }
00175 }
00176 }
00177
00178
00179 return mti ;
00180 }
00181
00182
00183
00184
00185
00186 Mtbl* map_log_fait_phi(const Map* cvi) {
00187
00188
00189 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00190 const Mg3d* mg = cv->get_mg() ;
00191 int nz = mg->get_nzone() ;
00192
00193
00194 Mtbl* mti = new Mtbl(mg) ;
00195 mti->set_etat_qcq() ;
00196
00197 int i, j, k ;
00198 for (int l=0 ; l<nz ; l++) {
00199 int ir = mg->get_nr(l);
00200 int it = mg->get_nt(l);
00201 int ip = mg->get_np(l);
00202 const Grille3d* g = mg->get_grille3d(l) ;
00203 Tbl* tb = (mti->t)[l] ;
00204 tb->set_etat_qcq() ;
00205 double* p_r = tb->t ;
00206 for (k=0 ; k<ip ; k++) {
00207 for (j=0 ; j<it ; j++) {
00208 for (i=0 ; i<ir ; i++) {
00209 *p_r = (g->phi)[k] ;
00210 p_r++ ;
00211 }
00212 }
00213 }
00214 }
00215
00216
00217 return mti ;
00218 }
00219
00220
00221
00222
00223
00224 Mtbl* map_log_fait_x(const Map* cvi) {
00225
00226
00227 const Mg3d* mg = cvi->get_mg() ;
00228
00229
00230 Mtbl* mti = new Mtbl(mg) ;
00231
00232 *mti = (cvi->r) * (cvi->sint) * (cvi->cosp) ;
00233
00234
00235 return mti ;
00236 }
00237
00238
00239
00240
00241
00242 Mtbl* map_log_fait_y(const Map* cvi) {
00243
00244
00245 const Mg3d* mg = cvi->get_mg() ;
00246
00247
00248 Mtbl* mti = new Mtbl(mg) ;
00249
00250 *mti = (cvi->r) * (cvi->sint) * (cvi->sinp) ;
00251
00252
00253 return mti ;
00254 }
00255
00256
00257
00258
00259
00260 Mtbl* map_log_fait_z(const Map* cvi) {
00261
00262
00263 const Mg3d* mg = cvi->get_mg() ;
00264
00265
00266 Mtbl* mti = new Mtbl(mg) ;
00267
00268 *mti = (cvi->r) * (cvi->cost) ;
00269
00270
00271 return mti ;
00272 }
00273
00274
00275
00276
00277
00278 Mtbl* map_log_fait_xa(const Map* cvi) {
00279
00280
00281 const Mg3d* mg = cvi->get_mg() ;
00282
00283
00284 Mtbl* mti = new Mtbl(mg) ;
00285
00286 double r_phi = cvi->get_rot_phi() ;
00287 double t_x = cvi->get_ori_x() ;
00288
00289 if ( fabs(r_phi) < 1.e-14 ) {
00290 *mti = (cvi->x) + t_x ;
00291 }
00292 else if ( fabs(r_phi - M_PI) < 1.e-14 ) {
00293 *mti = - (cvi->x) + t_x ;
00294 }
00295 else {
00296 Mtbl phi = cvi->phi + r_phi ;
00297 *mti = (cvi->r) * (cvi->sint) * cos(phi) + t_x ;
00298 }
00299
00300
00301 return mti ;
00302 }
00303
00304
00305
00306
00307
00308 Mtbl* map_log_fait_ya(const Map* cvi) {
00309
00310
00311 const Mg3d* mg = cvi->get_mg() ;
00312
00313
00314 Mtbl* mti = new Mtbl(mg) ;
00315
00316 double r_phi = cvi->get_rot_phi() ;
00317 double t_y = cvi->get_ori_y() ;
00318
00319 if ( fabs(r_phi) < 1.e-14 ) {
00320 *mti = (cvi->y) + t_y ;
00321 }
00322 else if ( fabs(r_phi - M_PI) < 1.e-14 ) {
00323 *mti = - (cvi->y) + t_y ;
00324 }
00325 else {
00326 Mtbl phi = cvi->phi + r_phi ;
00327 *mti = (cvi->r) * (cvi->sint) * sin(phi) + t_y ;
00328 }
00329
00330
00331 return mti ;
00332 }
00333
00334
00335
00336
00337
00338 Mtbl* map_log_fait_za(const Map* cvi) {
00339
00340
00341 const Mg3d* mg = cvi->get_mg() ;
00342
00343 double t_z = cvi->get_ori_z() ;
00344
00345
00346 Mtbl* mti = new Mtbl(mg) ;
00347
00348 *mti = (cvi->r) * (cvi->cost) + t_z ;
00349
00350
00351 return mti ;
00352 }
00353
00354
00355
00356
00357
00358 Mtbl* map_log_fait_sint(const Map* cvi) {
00359
00360
00361 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00362 const Mg3d* mg = cv->get_mg() ;
00363 int nz = mg->get_nzone() ;
00364
00365
00366 Mtbl* mti = new Mtbl(mg) ;
00367 mti->set_etat_qcq() ;
00368
00369 int i, j, k ;
00370 for (int l=0 ; l<nz ; l++) {
00371 int ir = mg->get_nr(l);
00372 int it = mg->get_nt(l);
00373 int ip = mg->get_np(l);
00374 const Grille3d* g = mg->get_grille3d(l) ;
00375 Tbl* tb = (mti->t)[l] ;
00376 tb->set_etat_qcq() ;
00377 double* p_r = tb->t ;
00378 for (k=0 ; k<ip ; k++) {
00379 for (j=0 ; j<it ; j++) {
00380 for (i=0 ; i<ir ; i++) {
00381 *p_r = sin(g->tet[j]) ;
00382 p_r++ ;
00383 }
00384 }
00385 }
00386 }
00387
00388
00389 return mti ;
00390 }
00391
00392 Mtbl* map_log_fait_cost(const Map* cvi) {
00393
00394
00395 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00396 const Mg3d* mg = cv->get_mg() ;
00397 int nz = mg->get_nzone() ;
00398
00399
00400 Mtbl* mti = new Mtbl(mg) ;
00401 mti->set_etat_qcq() ;
00402
00403 int i, j, k ;
00404 for (int l=0 ; l<nz ; l++) {
00405 int ir = mg->get_nr(l);
00406 int it = mg->get_nt(l);
00407 int ip = mg->get_np(l);
00408 const Grille3d* g = mg->get_grille3d(l) ;
00409 Tbl* tb = (mti->t)[l] ;
00410 tb->set_etat_qcq() ;
00411 double* p_r = tb->t ;
00412 for (k=0 ; k<ip ; k++) {
00413 for (j=0 ; j<it ; j++) {
00414 for (i=0 ; i<ir ; i++) {
00415 *p_r = cos(g->tet[j]) ;
00416 p_r++ ;
00417 }
00418 }
00419 }
00420 }
00421
00422
00423 return mti ;
00424 }
00425
00426 Mtbl* map_log_fait_sinp(const Map* cvi) {
00427
00428
00429 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00430 const Mg3d* mg = cv->get_mg() ;
00431 int nz = mg->get_nzone() ;
00432
00433
00434 Mtbl* mti = new Mtbl(mg) ;
00435 mti->set_etat_qcq() ;
00436
00437 int i, j, k ;
00438 for (int l=0 ; l<nz ; l++) {
00439 int ir = mg->get_nr(l);
00440 int it = mg->get_nt(l);
00441 int ip = mg->get_np(l);
00442 const Grille3d* g = mg->get_grille3d(l) ;
00443 Tbl* tb = (mti->t)[l] ;
00444 tb->set_etat_qcq() ;
00445 double* p_r = tb->t ;
00446 for (k=0 ; k<ip ; k++) {
00447 for (j=0 ; j<it ; j++) {
00448 for (i=0 ; i<ir ; i++) {
00449 *p_r = sin(g->phi[k]) ;
00450 p_r++ ;
00451 }
00452 }
00453 }
00454 }
00455
00456
00457 return mti ;
00458 }
00459
00460 Mtbl* map_log_fait_cosp(const Map* cvi) {
00461
00462
00463 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00464 const Mg3d* mg = cv->get_mg() ;
00465 int nz = mg->get_nzone() ;
00466
00467
00468 Mtbl* mti = new Mtbl(mg) ;
00469 mti->set_etat_qcq() ;
00470
00471 int i, j, k ;
00472 for (int l=0 ; l<nz ; l++) {
00473 int ir = mg->get_nr(l);
00474 int it = mg->get_nt(l);
00475 int ip = mg->get_np(l);
00476 const Grille3d* g = mg->get_grille3d(l) ;
00477 Tbl* tb = (mti->t)[l] ;
00478 tb->set_etat_qcq() ;
00479 double* p_r = tb->t ;
00480 for (k=0 ; k<ip ; k++) {
00481 for (j=0 ; j<it ; j++) {
00482 for (i=0 ; i<ir ; i++) {
00483 *p_r = cos(g->phi[k]) ;
00484 p_r++ ;
00485 }
00486 }
00487 }
00488 }
00489
00490
00491 return mti ;
00492 }
00493
00494
00495
00496
00497
00498
00499
00500 Mtbl* map_log_fait_xsr(const Map* cvi) {
00501
00502
00503 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00504 const Mg3d* mg = cv->get_mg() ;
00505 int nz = mg->get_nzone() ;
00506
00507
00508 Mtbl* mti = new Mtbl(mg) ;
00509 mti->set_etat_qcq() ;
00510
00511
00512 Tbl alpha = cv->alpha ;
00513 Tbl beta = cv->beta ;
00514 Itbl type_var = cv->type_var ;
00515
00516 int i, j, k ;
00517 for (int l=0 ; l<nz ; l++) {
00518 int ir = mg->get_nr(l);
00519 int it = mg->get_nt(l) ;
00520 int ip = mg->get_np(l) ;
00521 const Grille3d* g = mg->get_grille3d(l) ;
00522 Tbl* tb = (mti->t)[l] ;
00523 tb->set_etat_qcq() ;
00524 double* p_r = tb->t ;
00525
00526 switch (type_var(l)) {
00527 case AFFINE : {
00528
00529 switch(mg->get_type_r(l)) {
00530
00531 case RARE: {
00532 for (k=0 ; k<ip ; k++) {
00533 for (j=0 ; j<it ; j++) {
00534 for (i=0 ; i<ir ; i++) {
00535 *p_r = 1. / alpha(l) ;
00536 p_r++ ;
00537 }
00538 }
00539 }
00540 break ;
00541 }
00542 case FIN: {
00543 for (k=0 ; k<ip ; k++) {
00544 for (j=0 ; j<it ; j++) {
00545 for (i=0 ; i<ir ; i++) {
00546 *p_r = 1. / ( alpha(l) * (g->x)[i] + beta(l) ) ;
00547 p_r++ ;
00548 }
00549 }
00550 }
00551 break ;
00552 }
00553 case UNSURR: {
00554 for (k=0 ; k<ip ; k++) {
00555 for (j=0 ; j<it ; j++) {
00556 for (i=0 ; i<ir ; i++) {
00557 *p_r = 1. / alpha(l) ;
00558 p_r++ ;
00559 }
00560 }
00561 }
00562 break ;
00563 }
00564 default: {
00565 cout << "map_log_fait_xsr: unknown type_r !" << endl ;
00566 abort() ;
00567 }
00568 }
00569 break ;
00570 }
00571
00572 case LOG: {
00573 switch (mg->get_type_r(l)) {
00574 case FIN: {
00575 for (k=0 ; k<ip ; k++) {
00576 for (j=0 ; j<it ; j++) {
00577 for (i=0 ; i<ir ; i++) {
00578 *p_r = 1. / exp( alpha(l) * (g->x)[i] + beta(l) ) ;
00579 p_r++ ;
00580 }
00581 }
00582 }
00583 break ;
00584 }
00585 default: {
00586 cout << "map_log_fait_xsr: unknown type_r !" << endl ;
00587 abort() ;
00588 }
00589 }
00590 break ;
00591 }
00592
00593 default:
00594 cout << "map_log_fait_xsr: unknown type_r !" << endl ;
00595 abort() ;
00596 }
00597 }
00598
00599 return mti ;
00600
00601 }
00602
00603
00604
00605
00606
00607
00608
00609 Mtbl* map_log_fait_dxdr(const Map* cvi) {
00610
00611
00612 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00613 const Mg3d* mg = cv->get_mg() ;
00614 int nz = mg->get_nzone() ;
00615
00616
00617 Mtbl* mti = new Mtbl(mg) ;
00618 mti->set_etat_qcq() ;
00619
00620
00621 Tbl alpha = cv->alpha ;
00622 Tbl beta = cv->beta ;
00623 Itbl type_var = cv->type_var ;
00624
00625 int i, j, k ;
00626 for (int l=0 ; l<nz ; l++) {
00627 int ir = mg->get_nr(l);
00628 int it = mg->get_nt(l) ;
00629 int ip = mg->get_np(l) ;
00630 const Grille3d* g = mg->get_grille3d(l) ;
00631 Tbl* tb = (mti->t)[l] ;
00632 tb->set_etat_qcq() ;
00633 double* p_r = tb->t ;
00634
00635 switch (type_var(l)) {
00636 case AFFINE : {
00637 switch(mg->get_type_r(l)) {
00638
00639 case RARE: case FIN:
00640 for (k=0 ; k<ip ; k++) {
00641 for (j=0 ; j<it ; j++) {
00642 for (i=0 ; i<ir ; i++) {
00643 *p_r = 1. / alpha(l) ;
00644 p_r++ ;
00645 }
00646 }
00647 }
00648 break ;
00649
00650
00651 case UNSURR:
00652 for (k=0 ; k<ip ; k++) {
00653 for (j=0 ; j<it ; j++) {
00654 for (i=0 ; i<ir ; i++) {
00655 *p_r = - 1. / alpha(l) ;
00656 p_r++ ;
00657 }
00658 }
00659 }
00660 break ;
00661
00662 default:
00663 cout << "map_log_fait_dxdr: unknown type_r !" << endl ;
00664 abort() ;
00665
00666 }
00667 break ;
00668 }
00669 case LOG : {
00670 switch(mg->get_type_r(l)) {
00671 case FIN:
00672 for (k=0 ; k<ip ; k++) {
00673 for (j=0 ; j<it ; j++) {
00674 for (i=0 ; i<ir ; i++) {
00675 *p_r = 1./ (alpha(l) * exp(alpha(l) * (g->x)[i] + beta(l))) ;
00676 p_r++ ;
00677 }
00678 }
00679 }
00680 break ;
00681
00682 default:
00683 cout << "map_log_fait_dxdr: unknown type_r !" << endl ;
00684 abort() ;
00685 }
00686 break ;
00687 }
00688
00689 default:
00690 cout << "map_log_fait_dxdr: unknown type_r !" << endl ;
00691 abort() ;
00692 }
00693 }
00694
00695 return mti ;
00696
00697 }
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707 Mtbl* map_log_fait_drdt(const Map* cvi) {
00708
00709
00710 const Mg3d* mg = cvi->get_mg() ;
00711
00712
00713 Mtbl* mti = new Mtbl(mg) ;
00714 mti->set_etat_zero() ;
00715
00716 return mti ;
00717 }
00718
00719
00720
00721
00722
00723
00724
00725 Mtbl* map_log_fait_stdrdp(const Map* cvi) {
00726
00727
00728 const Mg3d* mg = cvi->get_mg() ;
00729
00730
00731 Mtbl* mti = new Mtbl(mg) ;
00732 mti->set_etat_zero() ;
00733
00734 return mti ;
00735 }
00736
00737
00738
00739
00740
00741
00742
00743 Mtbl* map_log_fait_srdrdt(const Map* cvi) {
00744
00745
00746 const Mg3d* mg = cvi->get_mg() ;
00747
00748
00749 Mtbl* mti = new Mtbl(mg) ;
00750 mti->set_etat_zero() ;
00751
00752 return mti ;
00753 }
00754
00755
00756
00757
00758
00759
00760
00761 Mtbl* map_log_fait_srstdrdp(const Map* cvi) {
00762
00763
00764 const Mg3d* mg = cvi->get_mg() ;
00765
00766
00767 Mtbl* mti = new Mtbl(mg) ;
00768 mti->set_etat_zero() ;
00769
00770 return mti ;
00771 }
00772
00773
00774
00775
00776
00777
00778
00779 Mtbl* map_log_fait_sr2drdt(const Map* cvi) {
00780
00781
00782 const Mg3d* mg = cvi->get_mg() ;
00783
00784
00785 Mtbl* mti = new Mtbl(mg) ;
00786 mti->set_etat_zero() ;
00787
00788 return mti ;
00789 }
00790
00791
00792
00793
00794
00795
00796
00797 Mtbl* map_log_fait_sr2stdrdp(const Map* cvi) {
00798
00799
00800 const Mg3d* mg = cvi->get_mg() ;
00801
00802
00803 Mtbl* mti = new Mtbl(mg) ;
00804 mti->set_etat_zero() ;
00805
00806 return mti ;
00807 }
00808
00809
00810
00811
00812
00813
00814
00815 Mtbl* map_log_fait_d2rdx2(const Map* cvi) {
00816
00817 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00818 const Mg3d* mg = cv->get_mg() ;
00819 int nz = mg->get_nzone() ;
00820
00821
00822 Mtbl* mti = new Mtbl(mg) ;
00823 mti->set_etat_qcq() ;
00824
00825
00826 Tbl alpha = cv->alpha ;
00827 Tbl beta = cv->beta ;
00828 Itbl type_var = cv->type_var ;
00829
00830 int i, j, k ;
00831 for (int l=0 ; l<nz ; l++) {
00832 int ir = mg->get_nr(l);
00833 int it = mg->get_nt(l) ;
00834 int ip = mg->get_np(l) ;
00835 const Grille3d* g = mg->get_grille3d(l) ;
00836 Tbl* tb = (mti->t)[l] ;
00837 tb->set_etat_qcq() ;
00838 double* p_r = tb->t ;
00839
00840 switch (type_var(l)) {
00841 case AFFINE : {
00842 switch(mg->get_type_r(l)) {
00843
00844 case RARE: case FIN : case UNSURR:
00845 for (k=0 ; k<ip ; k++) {
00846 for (j=0 ; j<it ; j++) {
00847 for (i=0 ; i<ir ; i++) {
00848 *p_r = 0. ;
00849 p_r++ ;
00850 }
00851 }
00852 }
00853 break ;
00854
00855 default:
00856 cout << "map_log_fait_d2rdx2: unknown type_r !" << endl ;
00857 abort() ;
00858
00859 }
00860 break ;
00861 }
00862 case LOG : {
00863 switch(mg->get_type_r(l)) {
00864 case FIN:
00865 for (k=0 ; k<ip ; k++) {
00866 for (j=0 ; j<it ; j++) {
00867 for (i=0 ; i<ir ; i++) {
00868 *p_r = exp (alpha(l) * (g->x)[i] + beta(l)) *
00869 alpha(l)*alpha(l) ;
00870 p_r++ ;
00871 }
00872 }
00873 }
00874 break ;
00875
00876 default:
00877 cout << "map_log_fait_d2rdx2: unknown type_r !" << endl ;
00878 abort() ;
00879 }
00880 break ;
00881 }
00882 default:
00883 cout << "map_log_fait_d2rdx2: unknown type_r !" << endl ;
00884 abort() ;
00885 }
00886 }
00887
00888 return mti ;
00889
00890 }
00891
00892
00893
00894
00895
00896
00897
00898 Mtbl* map_log_fait_lapr_tp(const Map* cvi) {
00899
00900
00901 const Mg3d* mg = cvi->get_mg() ;
00902
00903
00904 Mtbl* mti = new Mtbl(mg) ;
00905 mti->set_etat_zero() ;
00906
00907 return mti ;
00908 }
00909
00910
00911
00912
00913
00914
00915
00916 Mtbl* map_log_fait_d2rdtdx(const Map* cvi) {
00917
00918
00919 const Mg3d* mg = cvi->get_mg() ;
00920
00921
00922 Mtbl* mti = new Mtbl(mg) ;
00923 mti->set_etat_zero() ;
00924
00925 return mti ;
00926 }
00927
00928
00929
00930
00931
00932
00933
00934 Mtbl* map_log_fait_sstd2rdpdx(const Map* cvi) {
00935
00936
00937 const Mg3d* mg = cvi->get_mg() ;
00938
00939
00940 Mtbl* mti = new Mtbl(mg) ;
00941 mti->set_etat_zero() ;
00942
00943 return mti ;
00944 }
00945
00946
00947
00948
00949
00950
00951
00952 Mtbl* map_log_fait_sr2d2rdt2(const Map* cvi) {
00953
00954
00955 const Mg3d* mg = cvi->get_mg() ;
00956
00957
00958 Mtbl* mti = new Mtbl(mg) ;
00959 mti->set_etat_zero() ;
00960
00961 return mti ;
00962 }
00963
00964
00965
00966
00967
00968
00969
00970 Mtbl* map_log_fait_dxdlnr(const Map* cvi) {
00971
00972
00973 const Map_log* cv = static_cast<const Map_log*>(cvi) ;
00974 const Mg3d* mg = cv->get_mg() ;
00975 int nz = mg->get_nzone() ;
00976
00977
00978 Mtbl* mti = new Mtbl(mg) ;
00979 mti->set_etat_qcq() ;
00980
00981
00982 Tbl alpha = cv->alpha ;
00983 Tbl beta = cv->beta ;
00984 Itbl type_var = cv->type_var ;
00985
00986 int i, j, k ;
00987 for (int l=0 ; l<nz ; l++) {
00988 int ir = mg->get_nr(l);
00989 int it = mg->get_nt(l) ;
00990 int ip = mg->get_np(l) ;
00991 Tbl* tb = (mti->t)[l] ;
00992 tb->set_etat_qcq() ;
00993 double* p_r = tb->t ;
00994
00995 switch (type_var(l)) {
00996 case AFFINE : {
00997 switch(mg->get_type_r(l)) {
00998
00999 case RARE: case FIN:
01000 for (k=0 ; k<ip ; k++) {
01001 for (j=0 ; j<it ; j++) {
01002 for (i=0 ; i<ir ; i++) {
01003 *p_r = 1. / alpha(l) ;
01004 p_r++ ;
01005 }
01006 }
01007 }
01008 break ;
01009
01010
01011 case UNSURR:
01012 for (k=0 ; k<ip ; k++) {
01013 for (j=0 ; j<it ; j++) {
01014 for (i=0 ; i<ir ; i++) {
01015 *p_r = - 1. / alpha(l) ;
01016 p_r++ ;
01017 }
01018 }
01019 }
01020 break ;
01021
01022 default:
01023 cout << "map_log_fait_dxdr: unknown type_r !" << endl ;
01024 abort() ;
01025
01026 }
01027 break ;
01028 }
01029 case LOG : {
01030 switch(mg->get_type_r(l)) {
01031 case FIN:
01032 for (k=0 ; k<ip ; k++) {
01033 for (j=0 ; j<it ; j++) {
01034 for (i=0 ; i<ir ; i++) {
01035 *p_r = 1./ alpha(l) ;
01036 p_r++ ;
01037 }
01038 }
01039 }
01040 break ;
01041
01042 default:
01043 cout << "map_log_fait_dxdr: unknown type_r !" << endl ;
01044 abort() ;
01045 }
01046 break ;
01047 }
01048
01049 default:
01050 cout << "map_log_fait_dxdr: unknown type_r !" << endl ;
01051 abort() ;
01052 }
01053 }
01054
01055 return mti ;
01056
01057 }