Package lib :: Package diffusion :: Module correlation_time
[hide private]
[frames] | no frames]

Source Code for Module lib.diffusion.correlation_time

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