1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23  from math import sqrt 
 24   
 25   
 26   
 27   
 28   
 29   
 30   
 31   
 32   
 33   
 34   
 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   
 48   
 49   
 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   
 67   
 68   
 69   
 70   
 71   
 72   
 73   
 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       
 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       
 95      data.tau_scale[0] = -2.0 
 96      data.tau_scale[1] = -1.0 
 97      data.tau_scale[2] = 2.0 
 98   
 99       
100      data.tau_comps = data.inv_tm + data.tau_scale * diff_data.params[1] 
101   
102       
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       
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       
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       
121      data.ti = 1.0 * data.tau_comps 
 122   
123   
124   
125   
126   
127   
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       
192      data.tau_comps_sqrd = data.tau_comps**2 
193      data.inv_tm_sqrd = data.inv_tm**2 
194   
195   
196       
197       
198   
199      data.dti[0] = data.inv_tm_sqrd * data.tau_comps_sqrd 
200   
201   
202       
203       
204   
205       
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   
215   
216   
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       
326      data.tau_comps_cubed = data.tau_comps**3 
327   
328   
329       
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       
336       
337   
338       
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       
347       
348   
349       
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   
361   
362   
363   
364   
365   
366   
367   
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       
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       
397      data.R = sqrt(1.0 + 3.0*diff_data.params[2]**2) 
398   
399       
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       
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       
411      data.tau_comps = data.inv_tm + data.tau_scale * diff_data.params[1] 
412   
413       
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       
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       
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       
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       
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       
444      data.ti = 1.0 * data.tau_comps 
 445   
446   
447   
448   
449   
450   
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       
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       
570       
571   
572      data.dti[0] = data.inv_tm_sqrd * data.tau_comps_sqrd 
573   
574   
575       
576       
577   
578       
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       
589       
590   
591       
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   
603   
604   
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       
859      data.tau_comps_cubed = data.tau_comps**3 
860   
861   
862       
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       
869       
870   
871       
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       
882       
883   
884       
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       
895       
896   
897       
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       
908       
909   
910       
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       
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       
930       
931   
932       
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       
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