Package maths_fns :: Module correlation_time
[hide private]
[frames] | no frames]

Source Code for Module maths_fns.correlation_time

  1  ############################################################################### 
  2  #                                                                             # 
  3  # Copyright (C) 2004-2005 Edward d'Auvergne                                   # 
  4  #                                                                             # 
  5  # This file is part of the program relax.                                     # 
  6  #                                                                             # 
  7  # relax is free software; you can redistribute it and/or modify               # 
  8  # it under the terms of the GNU General Public License as published by        # 
  9  # the Free Software Foundation; either version 2 of the License, or           # 
 10  # (at your option) any later version.                                         # 
 11  #                                                                             # 
 12  # relax is distributed in the hope that it will be useful,                    # 
 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of              # 
 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               # 
 15  # GNU General Public License for more details.                                # 
 16  #                                                                             # 
 17  # You should have received a copy of the GNU General Public License           # 
 18  # along with relax; if not, write to the Free Software                        # 
 19  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   # 
 20  #                                                                             # 
 21  ############################################################################### 
 22   
 23  # Python module imports. 
 24  from math import sqrt 
 25   
 26   
 27  ########## 
 28  # Sphere # 
 29  ########## 
 30   
 31   
 32   
 33  # Sphere correlation time. 
 34  ######################### 
 35   
36 -def calc_sphere_ti(data, diff_data):
37 """Diffusional correlation times. 38 39 The correlation time is:: 40 41 t0 = tm. 42 """ 43 44 data.ti[0] = diff_data.params[0]
45 46 47 48 # Sphere correlation time gradient. 49 ################################### 50
51 -def calc_sphere_dti(data, diff_data):
52 """Partial derivatives of the diffusional correlation times. 53 54 The tm partial derivatives are:: 55 56 dt0 57 --- = 1. 58 dtm 59 """ 60 61 data.dti[0] = 1.0
62 63 64 65 66 ############ 67 # Spheroid # 68 ############ 69 70 71 72 # Spheroid correlation times. 73 ############################# 74
75 -def calc_spheroid_ti(data, diff_data):
76 """Diffusional correlation times. 77 78 The equations for the parameters {Diso, Da} are:: 79 80 t-1 = (6Diso - 2Da)**-1, 81 82 t0 = (6Diso - Da)**-1, 83 84 t1 = (6Diso + 2Da)**-1, 85 86 The diffusion parameter set in data.diff_params is {tm, Da, theta, phi}. 87 """ 88 89 # Calculate the inverse of tm. 90 if diff_data.params[0] == 0.0: 91 data.inv_tm = 1e99 92 else: 93 data.inv_tm = 1.0 / diff_data.params[0] 94 95 # Scaling factors. 96 data.tau_scale[0] = -2.0 97 data.tau_scale[1] = -1.0 98 data.tau_scale[2] = 2.0 99 100 # Components. 101 data.tau_comps = data.inv_tm + data.tau_scale * diff_data.params[1] 102 103 # t-1 component. 104 if data.tau_comps[0] == 0.0: 105 data.tau_comps[0] = 1e99 106 else: 107 data.tau_comps[0] = 1.0 / data.tau_comps[0] 108 109 # t0 component. 110 if data.tau_comps[1] == 0.0: 111 data.tau_comps[1] = 1e99 112 else: 113 data.tau_comps[1] = 1.0 / data.tau_comps[1] 114 115 # t1 component. 116 if data.tau_comps[2] == 0.0: 117 data.tau_comps[2] = 1e99 118 else: 119 data.tau_comps[2] = 1.0 / data.tau_comps[2] 120 121 # Correlation times. 122 data.ti = 1.0 * data.tau_comps
123 124 125 126 # Spheroid correlation time gradient. 127 ##################################### 128
129 -def calc_spheroid_dti(data, diff_data):
130 """Diffusional correlation time gradients. 131 132 tm partial derivatives 133 ====================== 134 135 The equations are:: 136 137 dt-1 dDiso 138 ---- = -6 ----- (6Diso - 2Da)**-2, 139 dtm dtm 140 141 dt0 dDiso 142 --- = -6 ----- (6Diso - Da)**-2, 143 dtm dtm 144 145 dt1 dDiso 146 --- = -6 ----- (6Diso + 2Da)**-2. 147 dtm dtm 148 149 150 As:: 151 152 dDiso 153 ----- = -1/6 * tm**-2, 154 dtm 155 156 the equations simplify to:: 157 158 dt-1 159 ---- = tm**-2 (6Diso - 2Da)**-2, 160 dtm 161 162 dt0 163 --- = tm**-2 (6Diso - Da)**-2, 164 dtm 165 166 dt1 167 --- = tm**-2 (6Diso + 2Da)**-2. 168 dtm 169 170 171 Da partial derivatives 172 ====================== 173 174 The equations are:: 175 176 dt-1 177 ---- = 2(6Diso - 2Da)**-2, 178 dDa 179 180 dt0 181 --- = (6Diso - Da)**-2, 182 dDa 183 184 dt1 185 --- = -2(6Diso + 2Da)**-2. 186 dDa 187 188 189 The diffusion parameter set in data.diff_params is {tm, Da, theta, phi}. 190 """ 191 192 # Components. 193 data.tau_comps_sqrd = data.tau_comps**2 194 data.inv_tm_sqrd = data.inv_tm**2 195 196 197 # tm partial derivative. 198 ######################## 199 200 data.dti[0] = data.inv_tm_sqrd * data.tau_comps_sqrd 201 202 203 # Da partial derivative. 204 ######################## 205 206 # Scaling factors. 207 data.tau_scale[0] = 2.0 208 data.tau_scale[1] = 1.0 209 data.tau_scale[2] = -2.0 210 211 data.dti[1] = data.tau_scale * data.tau_comps_sqrd
212 213 214 215 # Spheroid correlation time Hessian. 216 #################################### 217
218 -def calc_spheroid_d2ti(data, diff_data):
219 """Diffusional correlation time Hessians. 220 221 tm-tm partial derivatives 222 ========================= 223 224 The equations are:: 225 226 d2t-1 / dDiso \ 2 d2Diso 227 ----- = 72 | ----- | (6Diso - 2Da)**-3 - 6 ------ (6Diso - 2Da)**-2, 228 dtm2 \ dtm / dtm2 229 230 d2t0 / dDiso \ 2 d2Diso 231 ---- = 72 | ----- | (6Diso - Da)**-3 - 6 ------ (6Diso - Da)**-2, 232 dtm2 \ dtm / dtm2 233 234 d2t1 / dDiso \ 2 d2Diso 235 ---- = 72 | ----- | (6Diso + 2Da)**-3 - 6 ------ (6Diso + 2Da)**-2. 236 dtm2 \ dtm / dtm2 237 238 239 As:: 240 241 d2Diso 242 ------ = 1/3 * tm**-3, 243 dtm2 244 245 and:: 246 247 dDiso 248 ----- = -1/6 * tm**-2, 249 dtm 250 251 the equations simplify to:: 252 253 d2t-1 254 ----- = 2tm**-4 (6Diso - 2Da)**-3 - 2tm**-3 (6Diso - 2Da)**-2, 255 dtm2 256 257 d2t0 258 ---- = 2tm**-4 (6Diso - Da)**-3 - 2tm**-3 (6Diso - Da)**-2, 259 dtm2 260 261 d2t1 262 ---- = 2tm**-4 (6Diso + 2Da)**-3 - 2tm**-3 (6Diso + 2Da)**-2. 263 dtm2 264 265 266 tm-Da partial derivatives 267 ========================= 268 269 The equations are:: 270 271 d2t-1 dDiso 272 ------- = -24 ----- (6Diso - 2Da)**-3, 273 dtm.dDa dtm 274 275 d2t0 dDiso 276 ------- = -12 ----- (6Diso - Da)**-3, 277 dtm.dDa dtm 278 279 d2t1 dDiso 280 ------- = 24 ----- (6Diso + 2Da)**-3. 281 dtm.dDa dtm 282 283 As:: 284 285 dDiso 286 ----- = -1/6 * tm**-2, 287 dtm 288 289 the equations simplify to:: 290 291 d2t-1 292 ------- = 4tm**-2 (6Diso - 2Da)**-3, 293 dtm.dDa 294 295 d2t0 296 ------- = 2tm**-2 (6Diso - Da)**-3, 297 dtm.dDa 298 299 d2t1 300 ------- = -4tm**-2 (6Diso + 2Da)**-3. 301 dtm.dDa 302 303 304 305 Da-Da partial derivatives 306 ========================= 307 308 The equations are:: 309 310 d2t-1 311 ----- = 8 (6Diso - 2Da)**-3, 312 dDa2 313 314 d2t0 315 ---- = 2 (6Diso - Da)**-3, 316 dDa2 317 318 d2t1 319 ---- = 8 (6Diso + 2Da)**-3. 320 dDa2 321 322 323 The diffusion parameter set in data.diff_params is {tm, Da, theta, phi}. 324 """ 325 326 # Components. 327 data.tau_comps_cubed = data.tau_comps**3 328 329 330 # tm-tm partial derivative. 331 ########################### 332 333 data.d2ti[0, 0] = 2.0 * data.inv_tm**3 * (data.inv_tm * data.tau_comps_cubed - data.tau_comps_sqrd) 334 335 336 # tm-Da partial derivative. 337 ########################### 338 339 # Scaling factors. 340 data.tau_scale[0] = 4.0 341 data.tau_scale[1] = 2.0 342 data.tau_scale[2] = -4.0 343 344 data.d2ti[0, 1] = data.d2ti[1, 0] = data.tau_scale * data.inv_tm_sqrd * data.tau_comps_cubed 345 346 347 # Da-Da partial derivative. 348 ########################### 349 350 # Scaling factors. 351 data.tau_scale[0] = 8.0 352 data.tau_scale[1] = 2.0 353 data.tau_scale[2] = 8.0 354 355 data.d2ti[1, 1] = data.tau_scale * data.tau_comps_cubed
356 357 358 359 360 ############# 361 # Ellipsoid # 362 ############# 363 364 365 366 # Ellipsoid correlation times. 367 ############################## 368
369 -def calc_ellipsoid_ti(data, diff_data):
370 """Diffusional correlation times. 371 372 The equations for the parameters {Diso, Da, Dr} are:: 373 374 t-2 = (6Diso - 2DaR)**-1, 375 376 t-1 = (6Diso - Da(1 + 3Dr))**-1, 377 378 t0 = (6Diso - Da(1 - 3Dr))**-1, 379 380 t1 = (6Diso + 2Da)**-1, 381 382 t2 = (6Diso + 2DaR)**-1, 383 384 where:: 385 __________ 386 R = \/1 + 3Dr**2. 387 388 The diffusion parameter set in data.diff_params is {tm, Da, Dr, alpha, beta, gamma}. 389 """ 390 391 # Calculate the inverse of tm. 392 if diff_data.params[0] == 0.0: 393 data.inv_tm = 1e99 394 else: 395 data.inv_tm = 1.0 / diff_data.params[0] 396 397 # Calculate R. 398 data.R = sqrt(1.0 + 3.0*diff_data.params[2]**2) 399 400 # Factors. 401 data.one_3Dr = 1.0 + 3.0 * diff_data.params[2] 402 data.one_m3Dr = 1.0 - 3.0 * diff_data.params[2] 403 404 # Scaling factors. 405 data.tau_scale[0] = -2.0 * data.R 406 data.tau_scale[1] = -data.one_3Dr 407 data.tau_scale[2] = -data.one_m3Dr 408 data.tau_scale[3] = 2.0 409 data.tau_scale[4] = 2.0 * data.R 410 411 # Components. 412 data.tau_comps = data.inv_tm + data.tau_scale * diff_data.params[1] 413 414 # t-2 component. 415 if data.tau_comps[0] == 0.0: 416 data.tau_comps[0] = 1e99 417 else: 418 data.tau_comps[0] = 1.0 / data.tau_comps[0] 419 420 # t-1 component. 421 if data.tau_comps[1] == 0.0: 422 data.tau_comps[1] = 1e99 423 else: 424 data.tau_comps[1] = 1.0 / data.tau_comps[1] 425 426 # t0 component. 427 if data.tau_comps[2] == 0.0: 428 data.tau_comps[2] = 1e99 429 else: 430 data.tau_comps[2] = 1.0 / data.tau_comps[2] 431 432 # t1 component. 433 if data.tau_comps[3] == 0.0: 434 data.tau_comps[3] = 1e99 435 else: 436 data.tau_comps[3] = 1.0 / data.tau_comps[3] 437 438 # t2 component. 439 if data.tau_comps[4] == 0.0: 440 data.tau_comps[4] = 1e99 441 else: 442 data.tau_comps[4] = 1.0 / data.tau_comps[4] 443 444 # Correlation times. 445 data.ti = 1.0 * data.tau_comps
446 447 448 449 # Ellipsoid correlation time gradient. 450 ###################################### 451
452 -def calc_ellipsoid_dti(data, diff_data):
453 """Diffusional correlation time gradients. 454 455 tm partial derivatives 456 ====================== 457 458 The equations are:: 459 460 dt-2 dDiso 461 ---- = - 6 ----- (6Diso - 2DaR)**-2, 462 dtm dtm 463 464 dt-1 dDiso 465 ---- = - 6 ----- (6Diso - Da(1 + 3Dr))**-2, 466 dtm dtm 467 468 dt0 dDiso 469 --- = - 6 ----- (6Diso - Da(1 - 3Dr))**-2, 470 dtm dtm 471 472 dt1 dDiso 473 --- = - 6 ----- (6Diso + 2Da)**-2, 474 dtm dtm 475 476 dt2 dDiso 477 --- = - 6 ----- (6Diso + 2DaR)**-2. 478 dtm dtm 479 480 481 As:: 482 483 dDiso 484 ----- = -1/6 * tm**-2, 485 dtm 486 487 the equations simplify to:: 488 489 dt-2 490 ---- = tm**-2 (6Diso - 2DaR)**-2, 491 dtm 492 493 dt-1 494 ---- = tm**-2 (6Diso - Da(1 + 3Dr))**-2, 495 dtm 496 497 dt0 498 --- = tm**-2 (6Diso - Da(1 - 3Dr))**-2, 499 dtm 500 501 dt1 502 --- = tm**-2 (6Diso + 2Da)**-2, 503 dtm 504 505 dt2 506 --- = tm**-2 (6Diso + 2DaR)**-2. 507 dtm 508 509 510 Da partial derivatives 511 ====================== 512 513 The equations are:: 514 515 dt-2 516 ---- = 2R (6Diso - 2DaR)**-2, 517 dDa 518 519 dt-1 520 ---- = (1 + 3Dr) (6Diso - Da(1 + 3Dr))**-2, 521 dDa 522 523 dt0 524 --- = (1 - 3Dr) (6Diso - Da(1 - 3Dr))**-2, 525 dDa 526 527 dt1 528 --- = -2 (6Diso + 2Da)**-2, 529 dDa 530 531 dt2 532 --- = -2R (6Diso + 2DaR)**-2. 533 dDa 534 535 536 Dr partial derivatives 537 ====================== 538 539 The equations are:: 540 541 dt-2 542 ---- = 6 Da.Dr/R (6Diso - 2DaR)**-2, 543 dDr 544 545 dt-1 546 ---- = 3Da (6Diso - Da(1 + 3Dr))**-2, 547 dDr 548 549 dt0 550 --- = -3Da (6Diso - Da(1 - 3Dr))**-2, 551 dDr 552 553 dt1 554 --- = 0, 555 dDr 556 557 dt2 558 --- = -6 Da.Dr/R (6Diso + 2DaR)**-2. 559 dDr 560 561 The diffusion parameter set in data.diff_params is {tm, Da, Dr, alpha, beta, gamma}. 562 """ 563 564 # Components. 565 data.tau_comps_sqrd = data.tau_comps**2 566 data.inv_tm_sqrd = data.inv_tm**2 567 data.sixDaDrR = 6.0 * diff_data.params[1] * diff_data.params[2] / data.R 568 569 570 # tm partial derivative. 571 ######################## 572 573 data.dti[0] = data.inv_tm_sqrd * data.tau_comps_sqrd 574 575 576 # Da partial derivative. 577 ######################## 578 579 # Scaling factors. 580 data.tau_scale[0] = 2.0 * data.R 581 data.tau_scale[1] = data.one_3Dr 582 data.tau_scale[2] = data.one_m3Dr 583 data.tau_scale[3] = -2.0 584 data.tau_scale[4] = -2.0 * data.R 585 586 data.dti[1] = data.tau_scale * data.tau_comps_sqrd 587 588 589 # Dr partial derivative. 590 ######################## 591 592 # Scaling factors. 593 data.tau_scale[0] = data.sixDaDrR 594 data.tau_scale[1] = 3.0 * diff_data.params[1] 595 data.tau_scale[2] = -3.0 * diff_data.params[1] 596 data.tau_scale[3] = 0.0 597 data.tau_scale[4] = -data.sixDaDrR 598 599 data.dti[2] = data.tau_scale * data.tau_comps_sqrd
600 601 602 603 # Ellipsoid correlation time Hessians. 604 ###################################### 605
606 -def calc_ellipsoid_d2ti(data, diff_data):
607 """Diffusional correlation time Hessians. 608 609 tm-tm partial derivatives 610 ========================= 611 612 The equations are:: 613 614 d2t-2 / dDiso \ 2 d2Diso 615 ----- = 72 | ----- | (6Diso - 2DaR)**-3 - 6 ------ (6Diso - 2DaR)**-2, 616 dtm2 \ dtm / dtm2 617 618 d2t-1 / dDiso \ 2 d2Diso 619 ----- = 72 | ----- | (6Diso - Da(1 + 3Dr))**-3 - 6 ------ (6Diso - Da(1 + 3Dr))**-2, 620 dtm2 \ dtm / dtm2 621 622 d2t0 / dDiso \ 2 d2Diso 623 ---- = 72 | ----- | (6Diso - Da(1 - 3Dr))**-3 - 6 ------ (6Diso - Da(1 - 3Dr))**-2, 624 dtm2 \ dtm / dtm2 625 626 d2t1 / dDiso \ 2 d2Diso 627 ---- = 72 | ----- | (6Diso + 2Da)**-3 - 6 ------ (6Diso + 2Da)**-2, 628 dtm2 \ dtm / dtm2 629 630 d2t2 / dDiso \ 2 d2Diso 631 ---- = 72 | ----- | (6Diso + 2DaR)**-3 - 6 ------ (6Diso + 2DaR)**-2. 632 dtm2 \ dtm / dtm2 633 634 As:: 635 636 d2Diso 637 ------ = 1/3 * tm**-3, 638 dtm2 639 640 and:: 641 642 dDiso 643 ----- = -1/6 * tm**-2, 644 dtm 645 646 the equations simplify to:: 647 648 d2t-2 649 ----- = 2tm**-4 (6Diso - 2DaR)**-3 - 2tm**-3 (6Diso - 2DaR)**-2, 650 dtm2 651 652 d2t-1 653 ----- = 2tm**-4 (6Diso - Da(1 + 3Dr))**-3 - 2tm**-3 (6Diso - Da(1 + 3Dr))**-2, 654 dtm2 655 656 d2t0 657 ---- = 2tm**-4 (6Diso - Da(1 - 3Dr))**-3 - 2tm**-3 (6Diso - Da(1 - 3Dr))**-2, 658 dtm2 659 660 d2t1 661 ---- = 2tm**-4 (6Diso + 2Da)**-3 - 2tm**-3 (6Diso + 2Da)**-2, 662 dtm2 663 664 d2t2 665 ---- = 2tm**-4 (6Diso + 2DaR)**-3 - 2tm**-3 (6Diso + 2DaR)**-2. 666 dtm2 667 668 669 670 tm-Da partial derivatives 671 ========================= 672 673 The equations are:: 674 675 d2t-2 dDiso 676 ------- = -24R ----- (6Diso - 2DaR)**-3, 677 dtm.dDa dtm 678 679 d2t-1 dDiso 680 ------- = -12(1 + 3Dr) ----- (6Diso - Da(1 + 3Dr))**-3, 681 dtm.dDa dtm 682 683 d2t0 dDiso 684 ------- = -12(1 - 3Dr) ----- (6Diso - Da(1 - 3Dr))**-3, 685 dtm.dDa dtm 686 687 d2t1 dDiso 688 ------- = 24 ----- (6Diso + 2Da)**-3, 689 dtm.dDa dtm 690 691 d2t2 dDiso 692 ------- = 24R ----- (6Diso + 2DaR)**-3. 693 dtm.dDa dtm 694 695 As:: 696 697 dDiso 698 ----- = -1/6 * tm**-2, 699 dtm 700 701 the equations simplify to:: 702 703 d2t-2 704 ------- = 4R tm**-2 (6Diso - 2DaR)**-3, 705 dtm.dDa 706 707 d2t-1 708 ------- = 2(1 + 3Dr) tm**-2 (6Diso - Da(1 + 3Dr))**-3, 709 dtm.dDa 710 711 d2t0 712 ------- = 2(1 - 3Dr) tm**-2 (6Diso - Da(1 - 3Dr))**-3, 713 dtm.dDa 714 715 d2t1 716 ------- = -4 tm**-2 (6Diso + 2Da)**-3, 717 dtm.dDa 718 719 d2t2 720 ------- = -4R tm**-2 (6Diso + 2DaR)**-3. 721 dtm.dDa 722 723 724 tm-Dr partial derivatives 725 ========================= 726 727 The equations are:: 728 729 d2t-2 dDiso 730 ------- = -72 Da.Dr/R ----- (6Diso - 2DaR)**-3, 731 dtm.dDr dtm 732 733 d2t-1 dDiso 734 ------- = -36 Da ----- (6Diso - Da(1 + 3Dr))**-3, 735 dtm.dDr dtm 736 737 d2t0 dDiso 738 ------- = 36 Da ----- (6Diso - Da(1 - 3Dr))**-3, 739 dtm.dDr dtm 740 741 d2t1 742 ------- = 0, 743 dtm.dDr 744 745 d2t2 dDiso 746 ------- = 72 Da.Dr/R ----- (6Diso + 2DaR)**-3. 747 dtm.dDr dtm 748 749 As:: 750 751 dDiso 752 ----- = -1/6 * tm**-2, 753 dtm 754 755 the equations simplify to:: 756 757 d2t-2 758 ------- = 12 Da.Dr/R tm**-2 (6Diso - 2DaR)**-3, 759 dtm.dDr 760 761 d2t-1 762 ------- = 6 Da tm**-2 (6Diso - Da(1 + 3Dr))**-3, 763 dtm.dDr 764 765 d2t0 766 ------- = -6 Da tm**-2 (6Diso - Da(1 - 3Dr))**-3, 767 dtm.dDr 768 769 d2t1 770 ------- = 0, 771 dtm.dDr 772 773 d2t2 774 ------- = -12 Da.Dr/R tm**-2 (6Diso + 2DaR)**-3. 775 dtm.dDr 776 777 778 Da-Da partial derivatives 779 ========================= 780 781 The equations are:: 782 783 d2t-2 784 ----- = 8R**2 (6Diso - 2DaR)**-3, 785 dDa2 786 787 d2t-1 788 ----- = 2(1 + 3Dr)**2 (6Diso - Da(1 + 3Dr))**-3, 789 dDa2 790 791 d2t0 792 ---- = 2(1 - 3Dr)**2 (6Diso - Da(1 - 3Dr))**-3, 793 dDa2 794 795 d2t1 796 ---- = 8(6Diso + 2Da)**-3, 797 dDa2 798 799 d2t2 800 ---- = 8R**2 (6Diso + 2DaR)**-3. 801 dDa2 802 803 804 Da-Dr partial derivatives 805 ========================= 806 807 The equations are:: 808 809 d2t-2 810 ------- = 24Da.Dr (6Diso - 2DaR)**-3 + 6Dr/R (6Diso - 2DaR)**-2, 811 dDa.dDr 812 813 d2t-1 814 ------- = 6Da (1 + 3Dr)(6Diso - Da(1 + 3Dr))**-3 + 3(6Diso - Da(1 + 3Dr))**-2, 815 dDa.dDr 816 817 d2t0 818 ------- = -6Da (1 - 3Dr)(6Diso - Da(1 - 3Dr))**-3 - 3(6Diso - Da(1 - 3Dr))**-2, 819 dDa.dDr 820 821 d2t1 822 ------- = 0, 823 dDa.dDr 824 825 d2t2 826 ------- = 24Da.Dr (6Diso + 2DaR)**-3 - 6Dr/R (6Diso + 2DaR)**-2. 827 dDa.dDr 828 829 830 Dr-Dr partial derivatives 831 ========================= 832 833 The equations are:: 834 835 d2t-2 836 ----- = 72(Da.Dr/R)**2 (6Diso - 2DaR)**-3 + 6Da/R**3 (6Diso - 2DaR)**-2, 837 dDr2 838 839 d2t-1 840 ----- = 18Da**2 (6Diso - Da(1 + 3Dr))**-3, 841 dDr2 842 843 d2t0 844 ---- = 18Da**2 (6Diso - Da(1 - 3Dr))**-3, 845 dDr2 846 847 d2t1 848 ---- = 0, 849 dDr2 850 851 d2t2 852 ---- = 72(Da.Dr/R)**2 (6Diso + 2DaR)**-3 - 6Da/R**3 (6Diso + 2DaR)**-2. 853 dDr2 854 855 856 The diffusion parameter set in data.diff_params is {tm, Da, Dr, alpha, beta, gamma}. 857 """ 858 859 # Components. 860 data.tau_comps_cubed = data.tau_comps**3 861 862 863 # tm-tm partial derivative. 864 ########################### 865 866 data.d2ti[0, 0] = 2.0 * data.inv_tm**3 * (data.inv_tm * data.tau_comps_cubed - data.tau_comps_sqrd) 867 868 869 # tm-Da partial derivative. 870 ########################### 871 872 # Scaling factors. 873 data.tau_scale[0] = 2.0 * data.R 874 data.tau_scale[1] = data.one_3Dr 875 data.tau_scale[2] = data.one_m3Dr 876 data.tau_scale[3] = -2.0 877 data.tau_scale[4] = -2.0 * data.R 878 879 data.d2ti[0, 1] = data.d2ti[1, 0] = 2.0 * data.tau_scale * data.inv_tm_sqrd * data.tau_comps_cubed 880 881 882 # tm-Dr partial derivative. 883 ########################### 884 885 # Scaling factors. 886 data.tau_scale[0] = data.sixDaDrR 887 data.tau_scale[1] = 3.0 * diff_data.params[1] 888 data.tau_scale[2] = -3.0 * diff_data.params[1] 889 data.tau_scale[3] = 0.0 890 data.tau_scale[4] = -data.sixDaDrR 891 892 data.d2ti[0, 2] = data.d2ti[2, 0] = 2.0 * data.tau_scale * data.inv_tm_sqrd * data.tau_comps_cubed 893 894 895 # Da-Da partial derivative. 896 ########################### 897 898 # Scaling factors. 899 data.tau_scale[0] = 2.0 * data.R 900 data.tau_scale[1] = data.one_3Dr 901 data.tau_scale[2] = data.one_m3Dr 902 data.tau_scale[3] = 2.0 903 data.tau_scale[4] = 2.0 * data.R 904 905 data.d2ti[1, 1] = 2.0 * data.tau_scale**2 * data.tau_comps_cubed 906 907 908 # Da-Dr partial derivative. 909 ########################### 910 911 # Scaling factors. 912 data.tau_scale[0] = 4.0 * diff_data.params[2] 913 data.tau_scale[1] = data.one_3Dr 914 data.tau_scale[2] = -data.one_m3Dr 915 data.tau_scale[3] = 0.0 916 data.tau_scale[4] = 4.0 * diff_data.params[2] 917 918 data.d2ti[1, 2] = 6.0 * diff_data.params[1] * data.tau_scale * data.tau_comps_cubed 919 920 # Scaling factors. 921 data.tau_scale[0] = 6.0 * diff_data.params[2] / data.R 922 data.tau_scale[1] = 3.0 923 data.tau_scale[2] = -3.0 924 data.tau_scale[3] = 0.0 925 data.tau_scale[4] = -6.0 * diff_data.params[2] / data.R 926 927 data.d2ti[1, 2] = data.d2ti[2, 1] = data.d2ti[1, 2] + data.tau_scale * data.tau_comps_sqrd 928 929 930 # Dr-Dr partial derivative. 931 ########################### 932 933 # Scaling factors. 934 data.tau_scale[0] = data.sixDaDrR 935 data.tau_scale[1] = 3.0 * diff_data.params[1] 936 data.tau_scale[2] = 3.0 * diff_data.params[1] 937 data.tau_scale[3] = 0.0 938 data.tau_scale[4] = data.sixDaDrR 939 940 data.d2ti[2, 2] = 2.0 * data.tau_scale**2 * data.tau_comps_cubed 941 942 # Scaling factors. 943 data.tau_scale[0] = 1.0 944 data.tau_scale[1] = 0.0 945 data.tau_scale[2] = 0.0 946 data.tau_scale[3] = 0.0 947 data.tau_scale[4] = -1.0 948 949 try: 950 data.R_cubed = data.R**3 951 except OverflowError: 952 data.R_cubed = 1e99 953 data.d2ti[2, 2] = data.d2ti[2, 2] + 6.0 * diff_data.params[1] / data.R_cubed * data.tau_scale * data.tau_comps_sqrd
954