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