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 from Numeric import outerproduct
25
26
27
28
29
30
31
32
33
34
36 """Weight for spherical diffusion.
37
38 c0 = 1.
39 """
40
41 data.ci[0] = 1.0
42
43
44
45
46
47
48
49
50
51
52
53
55 """Weights for spheroidal diffusion.
56
57 The equations are
58
59 c-1 = 1/4 (3dz**2 - 1)**2,
60
61 c0 = 3dz**2 (1 - dz**2),
62
63 c1 = 3/4 (dz**2 - 1)**2,
64
65 where dz is the direction cosine of the unit bond vector along the z-axis of the diffusion
66 tensor which is calculated as the dot product of the unit bond vector with a unit vector along
67 Dpar.
68 """
69
70
71 data.three_dz2_one = 3.0 * data.dz**2 - 1.0
72 data.one_two_dz2 = 1.0 - 2.0 * data.dz**2
73 data.one_dz2 = 1.0 - data.dz**2
74 data.dz2_one = -data.one_dz2
75
76
77 data.ci[0] = 0.25 * data.three_dz2_one**2
78 data.ci[1] = 3.0 * data.dz**2 * data.one_dz2
79 data.ci[2] = 0.75 * data.dz2_one**2
80
81
82
83
84
85
87 """Weight gradient for spheroidal diffusion.
88
89 The equations are
90
91 dc-1 ddz
92 ---- = 3dz (3dz**2 - 1) --- ,
93 dOi dOi
94
95 dc0 ddz
96 --- = 6dz (1 - 2dz**2) --- ,
97 dOi dOi
98
99 dc1 ddz
100 --- = 3dz (dz**2 - 1) --- ,
101 dOi dOi
102
103 where the orientation parameter set O is {theta, phi}.
104 """
105
106
107 data.dci[2:, 0] = 3.0 * data.dz * data.three_dz2_one * data.ddz_dO
108 data.dci[2:, 1] = 6.0 * data.dz * data.one_two_dz2 * data.ddz_dO
109 data.dci[2:, 2] = 3.0 * data.dz * data.dz2_one * data.ddz_dO
110
111
112
113
114
115
117 """Weight Hessian for spheroidal diffusion.
118
119 The equations are
120
121 d2c-1 / ddz ddz d2dz \
122 ------- = 3 |(9dz**2 - 1) --- . --- + dz (3dz**2 - 1) ------- | ,
123 dOi.dOj \ dOi dOj dOi.dOj /
124
125 d2c0 / ddz ddz d2dz \
126 ------- = 6 |(1 - 6dz**2) --- . --- + dz (1 - 2dz**2) ------- | ,
127 dOi.dOj \ dOi dOj dOi.dOj /
128
129 d2c1 / ddz ddz d2dz \
130 ------- = 3 |(3dz**2 - 1) --- . --- + dz (dz**2 - 1) ------- | ,
131 dOi.dOj \ dOi dOj dOi.dOj /
132
133 where the orientation parameter set O is {theta, phi}.
134 """
135
136
137 op = outerproduct(data.ddz_dO, data.ddz_dO)
138
139
140 data.d2ci[2:, 2:, 0] = 3.0 * ((9.0 * data.dz**2 - 1.0) * op + data.dz * data.three_dz2_one * data.d2dz_dO2)
141 data.d2ci[2:, 2:, 1] = 6.0 * ((1.0 - 6.0*data.dz**2) * op + data.dz * data.one_two_dz2 * data.d2dz_dO2)
142 data.d2ci[2:, 2:, 2] = 3.0 * (data.three_dz2_one * op + data.dz * data.dz2_one * data.d2dz_dO2)
143
144
145
146
147
148
149
150
151
152
153
154
156 """Weight equations for ellipsoidal diffusion.
157
158 The equations are
159
160 c-2 = 1/4 (d - e),
161
162 c-1 = 3dy**2.dz**2,
163
164 c0 = 3dx**2.dz**2,
165
166 c1 = 3dx**2.dy**2,
167
168 c2 = 1/4 (d + e),
169
170 where
171
172 d = 3(dx**4 + dy**4 + dz**4) - 1,
173
174 e = 1/R [(1 + 3Dr)(dx**4 + 2dy**2.dz**2) + (1 - 3Dr)(dy**4 + 2dx**2.dz**2)
175 - 2(dz**4 + 2dx**2.dy**2)],
176
177 and where the factor R is defined as
178 ___________
179 R = V 1 + 3Dr**2.
180
181 dx, dy, and dz are the direction cosines of the XH bond vector along the x, y, and z-axes of the
182 diffusion tensor, calculated as the dot product of the unit bond vector and the unit vectors
183 along Dx, Dy, and Dz respectively.
184 """
185
186
187 data.R = sqrt(1 + 3.0*diff_data.params[2]**2)
188 data.inv_R = 1.0 / data.R
189
190
191 data.one_3Dr = 1.0 + 3.0 * diff_data.params[2]
192 data.one_m3Dr = 1.0 - 3.0 * diff_data.params[2]
193 data.dx_sqrd = data.dx**2
194 data.dy_sqrd = data.dy**2
195 data.dz_sqrd = data.dz**2
196 data.dx_cubed = data.dx**3
197 data.dy_cubed = data.dy**3
198 data.dz_cubed = data.dz**3
199 data.dx_quar = data.dx**4
200 data.dy_quar = data.dy**4
201 data.dz_quar = data.dz**4
202
203
204 data.ex = data.dx_quar + 2.0 * data.dy_sqrd * data.dz_sqrd
205 data.ey = data.dy_quar + 2.0 * data.dx_sqrd * data.dz_sqrd
206 data.ez = data.dz_quar + 2.0 * data.dx_sqrd * data.dy_sqrd
207
208
209 d = 3.0 * (data.dx_quar + data.dy_quar + data.dz_quar) - 1.0
210
211
212 e = data.inv_R * (data.one_3Dr * data.ex + data.one_m3Dr * data.ey - 2.0 * data.ez)
213
214
215 data.ci[0] = 0.25 * (d - e)
216
217
218 data.ci[1] = 3.0 * data.dy**2 * data.dz**2
219
220
221 data.ci[2] = 3.0 * data.dx**2 * data.dz**2
222
223
224 data.ci[3] = 3.0 * data.dx**2 * data.dy**2
225
226
227 data.ci[4] = 0.25 * (d + e)
228
229
230
231
232
233
235 """Weight gradient for ellipsoidal diffusion.
236
237 Oi partial derivatives
238 ~~~~~~~~~~~~~~~~~~~~~~
239
240 dc-2 / ddx ddy ddz \ de
241 ---- = 3 | dx**3 --- + dy**3 --- + dz**3 --- | - --- ,
242 dOi \ dOi dOi dOi / dOi
243
244
245 dc-1 / ddz ddy \
246 ---- = 6dy.dz | dy --- + dz --- | ,
247 dOi \ dOi dOi /
248
249
250 dc0 / ddz ddx \
251 --- = 6dx.dz | dx --- + dz --- | ,
252 dOi \ dOi dOi /
253
254
255 dc1 / ddy ddx \
256 --- = 6dx.dy | dx --- + dy --- | ,
257 dOi \ dOi dOi /
258
259
260 dc2 / ddx ddy ddz \ de
261 --- = 3 | dx**3 --- + dy**3 --- + dz**3 --- | + --- ,
262 dOi \ dOi dOi dOi / dOi
263
264
265 where
266
267 de 1 / / ddx / ddz ddy \ \
268 --- = - | (1 + 3Dr) |dx**3 --- + dy.dz | dy --- + dz --- | |
269 dOi R \ \ dOi \ dOi dOi / /
270
271 / ddy / ddz ddx \ \
272 + (1 - 3Dr) | dy**3 --- + dx.dz | dx --- + dz --- | |
273 \ dOi \ dOi dOi / /
274
275 / ddz / ddy ddx \ \ \
276 - 2 | dz**3 --- + dx.dy | dx --- + dy --- | | | ,
277 \ dOi \ dOi dOi / / /
278
279
280 and where the orietation parameter set O is
281
282 O = {alpha, beta, gamma}.
283
284
285 tm partial derivatives
286 ~~~~~~~~~~~~~~~~~~~~~~
287
288 dc-2
289 ---- = 0,
290 dtm
291
292 dc-1
293 ---- = 0,
294 dtm
295
296 dc0
297 --- = 0,
298 dtm
299
300 dc1
301 --- = 0,
302 dtm
303
304 dc2
305 --- = 0.
306 dtm
307
308
309 Da partial derivatives
310 ~~~~~~~~~~~~~~~~~~~~~~
311
312 dc-2
313 ---- = 0,
314 dDa
315
316 dc-1
317 ---- = 0,
318 dDa
319
320 dc0
321 --- = 0,
322 dDa
323
324 dc1
325 --- = 0,
326 dDa
327
328 dc2
329 --- = 0.
330 dDa
331
332
333
334 Dr partial derivatives
335 ~~~~~~~~~~~~~~~~~~~~~~
336
337 dc-2 3 de
338 ---- = - - ---,
339 dDr 4 dDr
340
341 dc-1
342 ---- = 0,
343 dDr
344
345 dc0
346 --- = 0,
347 dDr
348
349 dc1
350 --- = 0,
351 dDr
352
353 dc2 3 de
354 --- = - ---,
355 dDr 4 dDr
356
357 where
358
359 de 1 / \
360 --- = ---- | (1 - Dr) (dx**4 + 2dy**2.dz**2) - (1 + Dr) (dy**4 + 2dx**2.dz**2) + 2Dr (dz**4 + 2dx**2.dy**2) | .
361 dDr R**3 \ /
362
363
364 """
365
366
367 data.inv_R_cubed = data.inv_R ** 3
368 data.one_Dr = 1.0 + diff_data.params[2]
369 data.one_mDr = 1.0 - diff_data.params[2]
370
371
372
373
374
375
376 data.ci_xy = data.dx * data.dy * (data.dx * data.ddy_dO + data.dy * data.ddx_dO)
377 data.ci_xz = data.dx * data.dz * (data.dx * data.ddz_dO + data.dz * data.ddx_dO)
378 data.ci_yz = data.dy * data.dz * (data.dy * data.ddz_dO + data.dz * data.ddy_dO)
379
380 data.ci_x = data.dx_cubed * data.ddx_dO
381 data.ci_y = data.dy_cubed * data.ddy_dO
382 data.ci_z = data.dz_cubed * data.ddz_dO
383
384 data.ci_X = data.ci_x + data.ci_yz
385 data.ci_Y = data.ci_y + data.ci_xz
386 data.ci_Z = data.ci_z + data.ci_xy
387
388
389 dd_dOi = 3.0 * (data.ci_x + data.ci_y + data.ci_z)
390
391
392 de_dOi = data.inv_R * (data.one_3Dr * data.ci_X + data.one_m3Dr * data.ci_Y - 2.0 * data.ci_Z)
393
394
395 data.dci[3:, 0] = dd_dOi - de_dOi
396
397
398 data.dci[3:, 1] = 6.0 * data.ci_yz
399
400
401 data.dci[3:, 2] = 6.0 * data.ci_xz
402
403
404 data.dci[3:, 3] = 6.0 * data.ci_xy
405
406
407 data.dci[3:, 4] = dd_dOi + de_dOi
408
409
410
411
412
413
414 de_dDr = data.inv_R_cubed * (data.one_mDr * data.ex - data.one_Dr * data.ey + 2.0 * diff_data.params[2] * data.ez)
415
416
417 data.dci[2, 0] = -0.75 * de_dDr
418
419
420 data.dci[2, 4] = 0.75 * de_dDr
421
422
423
424
425
426
428 """Weight Hessian for ellipsoidal diffusion.
429
430 Oi-Oj partial derivatives
431 ~~~~~~~~~~~~~~~~~~~~~~~~~
432
433 d2c-2 / / d2dx ddx ddx \ / d2dy ddy ddy \ / d2dz ddz ddz \ \ d2e
434 ------- = 3 | dx**2 | dx ------- + 3 --- . --- | + dy**2 | dy ------- + 3 --- . --- | + dz**2 | dz ------- + 3 --- . --- | | - ------- ,
435 dOi.dOj \ \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj / / dOi.dOj
436
437
438 d2c-1 / d2dz ddz ddz \ / ddy ddz ddz ddy \ / d2dy ddy ddy \
439 ------- = 6 dy**2 | dz ------- + --- . --- | + 12 dy.dz | --- . --- + --- . --- | + 6 dz**2 | dy ------- + --- . --- | ,
440 dOi.dOj \ dOi.dOj dOi dOj / \ dOi dOj dOi dOj / \ dOi.dOj dOi dOj /
441
442
443 d2c0 / d2dz ddz ddz \ / ddx ddz ddz ddx \ / d2dx ddx ddx \
444 ------- = 6 dx**2 | dz ------- + --- . --- | + 12 dx.dz | --- . --- + --- . --- | + 6 dz**2 | dx ------- + --- . --- | ,
445 dOi.dOj \ dOi.dOj dOi dOj / \ dOi dOj dOi dOj / \ dOi.dOj dOi dOj /
446
447
448 d2c1 / d2dy ddy ddy \ / ddx ddy ddy ddx \ / d2dx ddx ddx \
449 ------- = 6 dx**2 | dy ------- + --- . --- | + 12 dx.dy | --- . --- + --- . --- | + 6 dy**2 | dx ------- + --- . --- | ,
450 dOi.dOj \ dOi.dOj dOi dOj / \ dOi dOj dOi dOj / \ dOi.dOj dOi dOj /
451
452
453 d2c2 / / d2dx ddx ddx \ / d2dy ddy ddy \ / d2dz ddz ddz \ \ d2e
454 ------- = 3 | dx**2 | dx ------- + 3 --- . --- | + dy**2 | dy ------- + 3 --- . --- | + dz**2 | dz ------- + 3 --- . --- | | + ------- ,
455 dOi.dOj \ \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj / / dOi.dOj
456
457 where
458
459 d2e 1 / / / d2dx ddx ddx \ / d2dz ddz ddz \
460 ------- = - | (1 + 3Dr) | dx**2 | dx ------- + 3 --- . --- | + dy**2 | dz ------- + --- . --- |
461 dOi.dOj R \ \ \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj /
462
463 / d2dy ddy ddy \ / ddy ddz ddz ddy \ \
464 + dz**2 | dy ------- + --- . --- | + 2dy.dz | --- . --- + --- . --- | |
465 \ dOi.dOj dOi dOj / \ dOi dOj dOi dOj / /
466
467 / / d2dy ddy ddy \ / d2dz ddz ddz \
468 + (1 - 3Dr) | dy**2 | dy ------- + 3 --- . --- | + dx**2 | dz ------- + --- . --- |
469 \ \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj /
470
471 / d2dx ddx ddx \ / ddx ddz ddz ddx \ \
472 + dz**2 | dx ------- + --- . --- | + 2dx.dz | --- . --- + --- . --- | |
473 \ dOi.dOj dOi dOj / \ dOi dOj dOi dOj / /
474
475 / / d2dz ddz ddz \ / d2dy ddy ddy \
476 - 2 | dz**2 | dz ------- + 3 --- . --- | + dx**2 | dy ------- + --- . --- |
477 \ \ dOi.dOj dOi dOj / \ dOi.dOj dOi dOj /
478
479 / d2dx ddx ddx \ / ddx ddy ddy ddx \ \ \
480 + dy**2 | dx ------- + --- . --- | + 2dx.dy | --- . --- + --- . --- | | |
481 \ dOi.dOj dOi dOj / \ dOi dOj dOi dOj / / /
482
483
484 Oi-tm partial derivatives
485 ~~~~~~~~~~~~~~~~~~~~~~~~~
486
487 d2c-2
488 ------- = 0,
489 dOi.dtm
490
491
492 d2c-1
493 ------- = 0,
494 dOi.dtm
495
496
497 d2c0
498 ------- = 0,
499 dOi.dtm
500
501
502 d2c1
503 ------- = 0,
504 dOi.dtm
505
506
507 d2c2
508 ------- = 0.
509 dOi.dtm
510
511
512 Oi-Da partial derivatives
513 ~~~~~~~~~~~~~~~~~~~~~~~~~
514
515 d2c-2
516 ------- = 0,
517 dOi.dDa
518
519
520 d2c-1
521 ------- = 0,
522 dOi.dDa
523
524
525 d2c0
526 ------- = 0,
527 dOi.dDa
528
529
530 d2c1
531 ------- = 0,
532 dOi.dDa
533
534
535 d2c2
536 ------- = 0.
537 dOi.dDa
538
539
540 Oi-Dr partial derivatives
541 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
542
543 d2c-2 d2e
544 ------- = - 3 -------,
545 dOi.dDr dOi.dDr
546
547
548 d2c-1
549 ------- = 0,
550 dOi.dDr
551
552
553 d2c0
554 ------- = 0,
555 dOi.dDr
556
557
558 d2c1
559 ------- = 0,
560 dOi.dDr
561
562
563 d2c2 d2e
564 ------- = 3 -------,
565 dOi.dDr dOi.dDr
566
567 where
568
569 d2e 1 / / ddx / ddz ddy \ \
570 ------- = ---- | (1 - Dr) | dx**3 --- + dy.dz | dy --- + dz --- | |
571 dOi.dDr R**3 \ \ dOi \ dOi dOi / /
572
573 / ddy / ddz ddx \ \
574 - (1 + Dr) | dy**3 --- + dx.dz | dx --- + dz --- | |
575 \ dOi \ dOi dOi / /
576
577 / ddz / ddy ddx \ \ \
578 + 2Dr | dz**3 --- + dx.dy | dx --- + dy --- | | |
579 \ dOi \ dOi dOi / / /
580
581
582 tm-tm partial derivatives
583 ~~~~~~~~~~~~~~~~~~~~~~~~~
584
585 d2c-2
586 ----- = 0,
587 dtm2
588
589
590 d2c-1
591 ----- = 0,
592 dtm2
593
594
595 d2c0
596 ---- = 0,
597 dtm2
598
599
600 d2c1
601 ---- = 0,
602 dtm2
603
604
605 d2c2
606 ---- = 0.
607 dtm2
608
609
610 tm-Da partial derivatives
611 ~~~~~~~~~~~~~~~~~~~~~~~~~
612
613 d2c-2
614 ------- = 0,
615 dtm.dDa
616
617
618 d2c-1
619 ------- = 0,
620 dtm.dDa
621
622
623 d2c0
624 ------- = 0,
625 dtm.dDa
626
627
628 d2c1
629 ------- = 0,
630 dtm.dDa
631
632
633 d2c2
634 ------- = 0.
635 dtm.dDa
636
637
638 tm-Dr partial derivatives
639 ~~~~~~~~~~~~~~~~~~~~~~~~~
640
641 d2c-2
642 ------- = 0,
643 dtm.dDr
644
645
646 d2c-1
647 ------- = 0,
648 dtm.dDr
649
650
651 d2c0
652 ------- = 0,
653 dtm.dDr
654
655
656 d2c1
657 ------- = 0,
658 dtm.dDr
659
660
661 d2c2
662 ------- = 0.
663 dtm.dDr
664
665
666 Da-Da partial derivatives
667 ~~~~~~~~~~~~~~~~~~~~~~~~~
668
669 d2c-2
670 ------ = 0,
671 dDa**2
672
673
674 d2c-1
675 ------ = 0,
676 dDa**2
677
678
679 d2c0
680 ------ = 0,
681 dDa**2
682
683
684 d2c1
685 ------ = 0,
686 dDa**2
687
688
689 d2c2
690 ------ = 0.
691 dDa**2
692
693
694 Da-Dr partial derivatives
695 ~~~~~~~~~~~~~~~~~~~~~~~~~
696
697 d2c-2
698 ------- = 0,
699 dDa.dDr
700
701
702 d2c-1
703 ------- = 0,
704 dDa.dDr
705
706
707 d2c0
708 ------- = 0,
709 dDa.dDr
710
711
712 d2c1
713 ------- = 0,
714 dDa.dDr
715
716
717 d2c2
718 ------- = 0.
719 dDa.dDr
720
721
722 Dr-Dr partial derivatives
723 ~~~~~~~~~~~~~~~~~~~~~~~~~
724
725 d2c-2 3 d2e
726 ------ = - - ------,
727 dDr**2 4 dDr**2
728
729
730 d2c-1
731 ------ = 0,
732 dDr**2
733
734
735 d2c0
736 ------ = 0,
737 dDr**2
738
739
740 d2c1
741 ------ = 0,
742 dDr**2
743
744
745 d2c2 3 d2e
746 ------ = - ------,
747 dDr**2 4 dDr**2
748
749 where
750
751 d2e 1 / \
752 ------ = ---- | (6Dr**2 - 9Dr - 1)(dx**4 + 2dy**2.dz**2) + (6Dr**2 + 9Dr - 1)(dy**4 + 2dx**2.dz**2) - 2(6Dr**2 - 1)(ddz*4 + 2dx**2.dy**2) |
753 dDr**2 R**5 \ /
754 """
755
756
757
758
759
760 op_xx = outerproduct(data.ddx_dO, data.ddx_dO)
761 op_yy = outerproduct(data.ddy_dO, data.ddy_dO)
762 op_zz = outerproduct(data.ddz_dO, data.ddz_dO)
763
764 op_xy = outerproduct(data.ddx_dO, data.ddy_dO)
765 op_yx = outerproduct(data.ddy_dO, data.ddx_dO)
766
767 op_xz = outerproduct(data.ddx_dO, data.ddz_dO)
768 op_zx = outerproduct(data.ddz_dO, data.ddx_dO)
769
770 op_yz = outerproduct(data.ddy_dO, data.ddz_dO)
771 op_zy = outerproduct(data.ddz_dO, data.ddy_dO)
772
773
774 x_comp = data.dx * data.d2dx_dO2 + op_xx
775 y_comp = data.dy * data.d2dy_dO2 + op_yy
776 z_comp = data.dz * data.d2dz_dO2 + op_zz
777
778 x3_comp = data.dx_sqrd * (data.dx * data.d2dx_dO2 + 3.0 * op_xx)
779 y3_comp = data.dy_sqrd * (data.dy * data.d2dy_dO2 + 3.0 * op_yy)
780 z3_comp = data.dz_sqrd * (data.dz * data.d2dz_dO2 + 3.0 * op_zz)
781
782 xy_comp = data.dx_sqrd * y_comp + 2.0 * data.dx * data.dy * (op_xy + op_yx) + data.dy_sqrd * x_comp
783 xz_comp = data.dx_sqrd * z_comp + 2.0 * data.dx * data.dz * (op_xz + op_zx) + data.dz_sqrd * x_comp
784 yz_comp = data.dy_sqrd * z_comp + 2.0 * data.dy * data.dz * (op_yz + op_zy) + data.dz_sqrd * y_comp
785
786
787 d2d_dOidOj = 3.0 * (x3_comp + y3_comp + z3_comp)
788
789
790 d2e_dOidOj = data.inv_R * (data.one_3Dr * (x3_comp + yz_comp) + data.one_m3Dr * (y3_comp + xz_comp) - 2.0 * (z3_comp + xy_comp))
791
792
793 data.d2ci[3:, 3:, 0] = d2d_dOidOj - d2e_dOidOj
794
795
796 data.d2ci[3:, 3:, 1] = 6.0 * yz_comp
797
798
799 data.d2ci[3:, 3:, 2] = 6.0 * xz_comp
800
801
802 data.d2ci[3:, 3:, 3] = 6.0 * xy_comp
803
804
805 data.d2ci[3:, 3:, 4] = d2d_dOidOj + d2e_dOidOj
806
807
808
809
810
811
812 d2e_dOidDr = data.inv_R_cubed * (data.one_mDr * data.ci_X - data.one_Dr * data.ci_Y + 2.0 * diff_data.params[2] * data.ci_Z)
813
814
815 data.d2ci[3:, 2, 0] = data.d2ci[2, 3:, 0] = -3.0 * d2e_dOidDr
816
817
818 data.d2ci[3:, 2, 4] = data.d2ci[2, 3:, 4] = 3.0 * d2e_dOidDr
819
820
821
822
823
824
825 d2e1_dDr2 = 6.0 * diff_data.params[2]**2 - 9.0 * diff_data.params[2] - 1.0
826 d2e2_dDr2 = 6.0 * diff_data.params[2]**2 + 9.0 * diff_data.params[2] - 1.0
827 d2e3_dDr2 = 6.0 * diff_data.params[2]**2 - 1.0
828
829
830 d2e_dDr2 = data.inv_R**5 * (d2e1_dDr2 * data.ex + d2e2_dDr2 * data.ey - 2.0 * d2e3_dDr2 * data.ez)
831
832
833 data.d2ci[2, 2, 0] = -0.75 * d2e_dDr2
834
835
836 data.d2ci[2, 2, 4] = 0.75 * d2e_dDr2
837