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