Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
2af97193
Commit
2af97193
authored
Jul 29, 2010
by
Peter Eastman
Browse files
Optimizations to Kirkwood kernel
parent
b1232a0f
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1273 additions
and
1665 deletions
+1273
-1665
plugins/amoeba/platforms/cuda/src/kernels/kCalculateAmoebaCudaKirkwood.cu
...latforms/cuda/src/kernels/kCalculateAmoebaCudaKirkwood.cu
+1270
-1662
plugins/amoeba/platforms/cuda/src/kernels/kCalculateAmoebaCudaKirkwood.h
...platforms/cuda/src/kernels/kCalculateAmoebaCudaKirkwood.h
+3
-3
No files found.
plugins/amoeba/platforms/cuda/src/kernels/kCalculateAmoebaCudaKirkwood.cu
View file @
2af97193
...
@@ -5,12 +5,8 @@
...
@@ -5,12 +5,8 @@
#include "amoebaGpuTypes.h"
#include "amoebaGpuTypes.h"
#include "amoebaCudaKernels.h"
#include "amoebaCudaKernels.h"
#include "kCalculateAmoebaCudaUtilities.h"
#include "kCalculateAmoebaCudaUtilities.h"
#ifdef _MSC_VER
extern
void
kCalculateObcGbsaForces2
(
gpuContext
gpu
);
#else
#include "cudaKernels.h"
#endif
#include "kCalculateAmoebaCudaKirkwoodParticle.h"
#include "kCalculateAmoebaCudaKirkwoodParticle.h"
extern
void
kCalculateObcGbsaForces2
(
gpuContext
gpu
);
//#define AMOEBA_DEBUG
//#define AMOEBA_DEBUG
#undef AMOEBA_DEBUG
#undef AMOEBA_DEBUG
...
@@ -184,19 +180,6 @@ __device__ void calculateKirkwoodPairIxn_kernel( unsigned int sameAtom,
...
@@ -184,19 +180,6 @@ __device__ void calculateKirkwoodPairIxn_kernel( unsigned int sameAtom,
float
dpsymdz
,
dpwidz
,
dpwkdz
;
float
dpsymdz
,
dpwidz
,
dpwkdz
;
float
dwipdr
,
dwkpdr
;
float
dwipdr
,
dwkpdr
;
float
duvdr
;
float
duvdr
;
float
a
[
6
][
4
];
float
b
[
5
][
3
];
float
fid
[
4
],
fkd
[
4
];
float
fidg
[
4
][
4
],
fkdg
[
4
][
4
];
float
trq
[
4
];
float
trqi
[
4
];
float
trq_k
[
4
];
float
trqi_k
[
4
];
float
gc
[
31
];
float
gux
[
31
],
guy
[
31
],
guz
[
31
];
float
gqxx
[
31
],
gqxy
[
31
];
float
gqxz
[
31
],
gqyy
[
31
];
float
gqyz
[
31
],
gqzz
[
31
];
float
gkc
;
float
gkc
;
...
@@ -293,1011 +276,759 @@ __device__ void calculateKirkwoodPairIxn_kernel( unsigned int sameAtom,
...
@@ -293,1011 +276,759 @@ __device__ void calculateKirkwoodPairIxn_kernel( unsigned int sameAtom,
// reaction potential auxiliary terms;
// reaction potential auxiliary terms;
a
[
0
][
0
]
=
gf
;
float
a00
=
gf
;
a
[
1
][
0
]
=
-
gf3
;
float
a10
=
-
gf3
;
a
[
2
][
0
]
=
3.0
f
*
gf5
;
float
a20
=
3.0
f
*
gf5
;
a
[
3
][
0
]
=
-
15.0
f
*
gf7
;
float
a30
=
-
15.0
f
*
gf7
;
a
[
4
][
0
]
=
105.0
f
*
gf9
;
float
a40
=
105.0
f
*
gf9
;
a
[
5
][
0
]
=
-
945.0
f
*
gf11
;
float
a50
=
-
945.0
f
*
gf11
;
// Born radii derivatives of reaction potential auxiliary terms;
// Born radii derivatives of reaction potential auxiliary terms;
b
[
0
][
0
]
=
dgfdr
*
a
[
1
][
0
]
;
float
b00
=
dgfdr
*
a
10
;
b
[
1
][
0
]
=
dgfdr
*
a
[
2
][
0
]
;
float
b10
=
dgfdr
*
a
20
;
b
[
2
][
0
]
=
dgfdr
*
a
[
3
][
0
]
;
float
b20
=
dgfdr
*
a
30
;
b
[
3
][
0
]
=
dgfdr
*
a
[
4
][
0
]
;
float
b30
=
dgfdr
*
a
40
;
b
[
4
][
0
]
=
dgfdr
*
a
[
5
][
0
]
;
float
b40
=
dgfdr
*
a
50
;
// reaction potential gradient auxiliary terms;
// reaction potential gradient auxiliary terms;
expc1
=
1.0
f
-
expc
;
expc1
=
1.0
f
-
expc
;
a
[
0
][
1
]
=
expc1
*
a
[
1
][
0
]
;
float
a01
=
expc1
*
a
10
;
a
[
1
][
1
]
=
expc1
*
a
[
2
][
0
]
;
float
a11
=
expc1
*
a
20
;
a
[
2
][
1
]
=
expc1
*
a
[
3
][
0
]
;
float
a21
=
expc1
*
a
30
;
a
[
3
][
1
]
=
expc1
*
a
[
4
][
0
]
;
float
a31
=
expc1
*
a
40
;
a
[
4
][
1
]
=
expc1
*
a
[
5
][
0
]
;
float
a41
=
expc1
*
a
50
;
// Born radii derivs of reaction potential gradient auxiliary terms;
// Born radii derivs of reaction potential gradient auxiliary terms;
b
[
0
][
1
]
=
b
[
1
][
0
]
-
expcr
*
a
[
1
][
0
]
-
expc
*
b
[
1
][
0
]
;
float
b01
=
b
10
-
expcr
*
a
10
-
expc
*
b
10
;
b
[
1
][
1
]
=
b
[
2
][
0
]
-
expcr
*
a
[
2
][
0
]
-
expc
*
b
[
2
][
0
]
;
float
b11
=
b
20
-
expcr
*
a
20
-
expc
*
b
20
;
b
[
2
][
1
]
=
b
[
3
][
0
]
-
expcr
*
a
[
3
][
0
]
-
expc
*
b
[
3
][
0
]
;
float
b21
=
b
30
-
expcr
*
a
30
-
expc
*
b
30
;
b
[
3
][
1
]
=
b
[
4
][
0
]
-
expcr
*
a
[
4
][
0
]
-
expc
*
b
[
4
][
0
]
;
float
b31
=
b
40
-
expcr
*
a
40
-
expc
*
b
40
;
// 2nd reaction potential gradient auxiliary terms;
// 2nd reaction potential gradient auxiliary terms;
expcdexpc
=
-
expc
*
dexpc
;
expcdexpc
=
-
expc
*
dexpc
;
a
[
0
][
2
]
=
expc1
*
a
[
1
][
1
]
+
expcdexpc
*
a
[
1
][
0
]
;
float
a02
=
expc1
*
a
11
+
expcdexpc
*
a
10
;
a
[
1
][
2
]
=
expc1
*
a
[
2
][
1
]
+
expcdexpc
*
a
[
2
][
0
]
;
float
a12
=
expc1
*
a
21
+
expcdexpc
*
a
20
;
a
[
2
][
2
]
=
expc1
*
a
[
3
][
1
]
+
expcdexpc
*
a
[
3
][
0
]
;
float
a22
=
expc1
*
a
31
+
expcdexpc
*
a
30
;
a
[
3
][
2
]
=
expc1
*
a
[
4
][
1
]
+
expcdexpc
*
a
[
4
][
0
]
;
float
a32
=
expc1
*
a
41
+
expcdexpc
*
a
40
;
// Born radii derivatives of the 2nd reaction potential
// Born radii derivatives of the 2nd reaction potential
// gradient auxiliary terms
// gradient auxiliary terms
b
[
0
][
2
]
=
b
[
1
][
1
]
-
(
expcr
*
(
a
[
1
][
1
]
+
dexpc
*
a
[
1
][
0
]
)
float
b02
=
b
11
-
(
expcr
*
(
a
11
+
dexpc
*
a
10
)
+
expc
*
(
b
[
1
][
1
]
+
dexpcr
*
a
[
1
][
0
]
+
dexpc
*
b
[
1
][
0
]
));
+
expc
*
(
b
11
+
dexpcr
*
a
10
+
dexpc
*
b
10
));
b
[
1
][
2
]
=
b
[
2
][
1
]
-
(
expcr
*
(
a
[
2
][
1
]
+
dexpc
*
a
[
2
][
0
]
)
float
b12
=
b
21
-
(
expcr
*
(
a
21
+
dexpc
*
a
20
)
+
expc
*
(
b
[
2
][
1
]
+
dexpcr
*
a
[
2
][
0
]
+
dexpc
*
b
[
2
][
0
]
));
+
expc
*
(
b
21
+
dexpcr
*
a
20
+
dexpc
*
b
20
));
b
[
2
][
2
]
=
b
[
3
][
1
]
-
(
expcr
*
(
a
[
3
][
1
]
+
dexpc
*
a
[
3
][
0
]
)
float
b22
=
b
31
-
(
expcr
*
(
a
31
+
dexpc
*
a
30
)
+
expc
*
(
b
[
3
][
1
]
+
dexpcr
*
a
[
3
][
0
]
+
dexpc
*
b
[
3
][
0
]
));
+
expc
*
(
b
31
+
dexpcr
*
a
30
+
dexpc
*
b
30
));
// 3rd reaction potential gradient auxiliary terms;
// 3rd reaction potential gradient auxiliary terms;
expcdexpc
=
2.0
f
*
expcdexpc
;
expcdexpc
=
2.0
f
*
expcdexpc
;
a
[
0
][
3
]
=
expc1
*
a
[
1
][
2
]
+
expcdexpc
*
a
[
1
][
1
]
;
float
a03
=
expc1
*
a
12
+
expcdexpc
*
a
11
;
a
[
1
][
3
]
=
expc1
*
a
[
2
][
2
]
+
expcdexpc
*
a
[
2
][
1
]
;
float
a13
=
expc1
*
a
22
+
expcdexpc
*
a
21
;
a
[
2
][
3
]
=
expc1
*
a
[
3
][
2
]
+
expcdexpc
*
a
[
3
][
1
]
;
float
a23
=
expc1
*
a
32
+
expcdexpc
*
a
31
;
//expcdexpc = -expc * powf( dexpc, 2.0f );
//expcdexpc = -expc * powf( dexpc, 2.0f );
expcdexpc
=
-
expc
*
dexpc
*
dexpc
;
expcdexpc
=
-
expc
*
dexpc
*
dexpc
;
a
[
0
][
3
]
=
a
[
0
][
3
]
+
expcdexpc
*
a
[
1
][
0
]
;
a
03
=
a
03
+
expcdexpc
*
a
10
;
a
[
1
][
3
]
=
a
[
1
][
3
]
+
expcdexpc
*
a
[
2
][
0
]
;
a
13
=
a
13
+
expcdexpc
*
a
20
;
a
[
2
][
3
]
=
a
[
2
][
3
]
+
expcdexpc
*
a
[
3
][
0
]
;
a
23
=
a
23
+
expcdexpc
*
a
30
;
// multiply the auxillary terms by their dieletric functions;
// multiply the auxillary terms by their dieletric functions;
a
[
0
][
0
]
=
fc
*
a
[
0
][
0
]
;
a
00
=
fc
*
a
00
;
a
[
0
][
1
]
=
fc
*
a
[
0
][
1
]
;
a
01
=
fc
*
a
01
;
a
[
0
][
2
]
=
fc
*
a
[
0
][
2
]
;
a
02
=
fc
*
a
02
;
a
[
0
][
3
]
=
fc
*
a
[
0
][
3
]
;
a
03
=
fc
*
a
03
;
b
[
0
][
0
]
=
fc
*
b
[
0
][
0
]
;
b
00
=
fc
*
b
00
;
b
[
0
][
1
]
=
fc
*
b
[
0
][
1
]
;
b
01
=
fc
*
b
01
;
b
[
0
][
2
]
=
fc
*
b
[
0
][
2
]
;
b
02
=
fc
*
b
02
;
a
[
1
][
0
]
=
fd
*
a
[
1
][
0
]
;
a
10
=
fd
*
a
10
;
a
[
1
][
1
]
=
fd
*
a
[
1
][
1
]
;
a
11
=
fd
*
a
11
;
a
[
1
][
2
]
=
fd
*
a
[
1
][
2
]
;
a
12
=
fd
*
a
12
;
a
[
1
][
3
]
=
fd
*
a
[
1
][
3
]
;
a
13
=
fd
*
a
13
;
b
[
1
][
0
]
=
fd
*
b
[
1
][
0
]
;
b
10
=
fd
*
b
10
;
b
[
1
][
1
]
=
fd
*
b
[
1
][
1
]
;
b
11
=
fd
*
b
11
;
b
[
1
][
2
]
=
fd
*
b
[
1
][
2
]
;
b
12
=
fd
*
b
12
;
a
[
2
][
0
]
=
fq
*
a
[
2
][
0
]
;
a
20
=
fq
*
a
20
;
a
[
2
][
1
]
=
fq
*
a
[
2
][
1
]
;
a
21
=
fq
*
a
21
;
a
[
2
][
2
]
=
fq
*
a
[
2
][
2
]
;
a
22
=
fq
*
a
22
;
a
[
2
][
3
]
=
fq
*
a
[
2
][
3
]
;
a
23
=
fq
*
a
23
;
b
[
2
][
0
]
=
fq
*
b
[
2
][
0
]
;
b
20
=
fq
*
b
20
;
b
[
2
][
1
]
=
fq
*
b
[
2
][
1
]
;
b
21
=
fq
*
b
21
;
b
[
2
][
2
]
=
fq
*
b
[
2
][
2
]
;
b
22
=
fq
*
b
22
;
// unweighted reaction potential tensor;
// unweighted reaction potential tensor;
gc
[
1
]
=
a
[
0
][
0
]
;
float
gc1
=
a
00
;
gux
[
1
]
=
xr
*
a
[
1
][
0
]
;
float
gux1
=
xr
*
a
10
;
guy
[
1
]
=
yr
*
a
[
1
][
0
]
;
float
guy1
=
yr
*
a
10
;
guz
[
1
]
=
zr
*
a
[
1
][
0
]
;
float
guz1
=
zr
*
a
10
;
gqxx
[
1
]
=
xr2
*
a
[
2
][
0
]
;
float
gqxx
1
=
xr2
*
a
20
;
gqyy
[
1
]
=
yr2
*
a
[
2
][
0
]
;
float
gqyy
1
=
yr2
*
a
20
;
gqzz
[
1
]
=
zr2
*
a
[
2
][
0
]
;
float
gqzz
1
=
zr2
*
a
20
;
gqxy
[
1
]
=
xr
*
yr
*
a
[
2
][
0
]
;
float
gqxy
1
=
xr
*
yr
*
a
20
;
gqxz
[
1
]
=
xr
*
zr
*
a
[
2
][
0
]
;
float
gqxz
1
=
xr
*
zr
*
a
20
;
gqyz
[
1
]
=
yr
*
zr
*
a
[
2
][
0
]
;
float
gqyz
1
=
yr
*
zr
*
a
20
;
// Born radii derivs of unweighted reaction potential tensor;
// Born radii derivs of unweighted reaction potential tensor;
gc
[
21
]
=
b
[
0
][
0
]
;
float
gc21
=
b
00
;
gux
[
21
]
=
xr
*
b
[
1
][
0
]
;
float
gux21
=
xr
*
b
10
;
guy
[
21
]
=
yr
*
b
[
1
][
0
]
;
float
guy21
=
yr
*
b
10
;
guz
[
21
]
=
zr
*
b
[
1
][
0
]
;
float
guz21
=
zr
*
b
10
;
gqxx
[
21
]
=
xr2
*
b
[
2
][
0
]
;
float
gqxx21
=
xr2
*
b
20
;
gqyy
[
21
]
=
yr2
*
b
[
2
][
0
]
;
float
gqyy21
=
yr2
*
b
20
;
gqzz
[
21
]
=
zr2
*
b
[
2
][
0
]
;
float
gqzz21
=
zr2
*
b
20
;
gqxy
[
21
]
=
xr
*
yr
*
b
[
2
][
0
]
;
float
gqxy21
=
xr
*
yr
*
b
20
;
gqxz
[
21
]
=
xr
*
zr
*
b
[
2
][
0
]
;
float
gqxz21
=
xr
*
zr
*
b
20
;
gqyz
[
21
]
=
yr
*
zr
*
b
[
2
][
0
]
;
float
gqyz21
=
yr
*
zr
*
b
20
;
// unweighted reaction potential gradient tensor;
// unweighted reaction potential gradient tensor;
gc
[
2
]
=
xr
*
a
[
0
][
1
]
;
float
gc2
=
xr
*
a
01
;
gc
[
3
]
=
yr
*
a
[
0
][
1
]
;
float
gc3
=
yr
*
a
01
;
gc
[
4
]
=
zr
*
a
[
0
][
1
]
;
float
gc4
=
zr
*
a
01
;
gux
[
2
]
=
a
[
1
][
0
]
+
xr2
*
a
[
1
][
1
]
;
float
gux2
=
a
10
+
xr2
*
a
11
;
gux
[
3
]
=
xr
*
yr
*
a
[
1
][
1
]
;
float
gux3
=
xr
*
yr
*
a
11
;
gux
[
4
]
=
xr
*
zr
*
a
[
1
][
1
]
;
float
gux4
=
xr
*
zr
*
a
11
;
guy
[
2
]
=
gux
[
3
]
;
float
guy2
=
gux
3
;
guy
[
3
]
=
a
[
1
][
0
]
+
yr2
*
a
[
1
][
1
]
;
float
guy3
=
a
10
+
yr2
*
a
11
;
guy
[
4
]
=
yr
*
zr
*
a
[
1
][
1
]
;
float
guy4
=
yr
*
zr
*
a
11
;
guz
[
2
]
=
gux
[
4
]
;
float
guz2
=
gux
4
;
guz
[
3
]
=
guy
[
4
]
;
float
guz3
=
guy
4
;
guz
[
4
]
=
a
[
1
][
0
]
+
zr2
*
a
[
1
][
1
]
;
float
guz4
=
a
10
+
zr2
*
a
11
;
gqxx
[
2
]
=
xr
*
(
2.0
f
*
a
[
2
][
0
]
+
xr2
*
a
[
2
][
1
]
);
float
gqxx
2
=
xr
*
(
2.0
f
*
a
20
+
xr2
*
a21
);
gqxx
[
3
]
=
yr
*
xr2
*
a
[
2
][
1
]
;
float
gqxx
3
=
yr
*
xr2
*
a
21
;
gqxx
[
4
]
=
zr
*
xr2
*
a
[
2
][
1
]
;
float
gqxx
4
=
zr
*
xr2
*
a
21
;
gqyy
[
2
]
=
xr
*
yr2
*
a
[
2
][
1
]
;
float
gqyy
2
=
xr
*
yr2
*
a
21
;
gqyy
[
3
]
=
yr
*
(
2.0
f
*
a
[
2
][
0
]
+
yr2
*
a
[
2
][
1
]
);
float
gqyy
3
=
yr
*
(
2.0
f
*
a
20
+
yr2
*
a21
);
gqyy
[
4
]
=
zr
*
yr2
*
a
[
2
][
1
]
;
float
gqyy
4
=
zr
*
yr2
*
a
21
;
gqzz
[
2
]
=
xr
*
zr2
*
a
[
2
][
1
]
;
float
gqzz
2
=
xr
*
zr2
*
a
21
;
gqzz
[
3
]
=
yr
*
zr2
*
a
[
2
][
1
]
;
float
gqzz
3
=
yr
*
zr2
*
a
21
;
gqzz
[
4
]
=
zr
*
(
2.0
f
*
a
[
2
][
0
]
+
zr2
*
a
[
2
][
1
]
);
float
gqzz
4
=
zr
*
(
2.0
f
*
a
20
+
zr2
*
a21
);
gqxy
[
2
]
=
yr
*
(
a
[
2
][
0
]
+
xr2
*
a
[
2
][
1
]
);
float
gqxy
2
=
yr
*
(
a
20
+
xr2
*
a21
);
gqxy
[
3
]
=
xr
*
(
a
[
2
][
0
]
+
yr2
*
a
[
2
][
1
]
);
float
gqxy
3
=
xr
*
(
a
20
+
yr2
*
a21
);
gqxy
[
4
]
=
zr
*
xr
*
yr
*
a
[
2
][
1
]
;
float
gqxy
4
=
zr
*
xr
*
yr
*
a
21
;
gqxz
[
2
]
=
zr
*
(
a
[
2
][
0
]
+
xr2
*
a
[
2
][
1
]
);
float
gqxz
2
=
zr
*
(
a
20
+
xr2
*
a21
);
gqxz
[
3
]
=
gqxy
[
4
]
;
float
gqxz
3
=
gqxy
4
;
gqxz
[
4
]
=
xr
*
(
a
[
2
][
0
]
+
zr2
*
a
[
2
][
1
]
);
float
gqxz
4
=
xr
*
(
a
20
+
zr2
*
a21
);
gqyz
[
2
]
=
gqxy
[
4
]
;
float
gqyz
2
=
gqxy
4
;
gqyz
[
3
]
=
zr
*
(
a
[
2
][
0
]
+
yr2
*
a
[
2
][
1
]
);
float
gqyz
3
=
zr
*
(
a
20
+
yr2
*
a21
);
gqyz
[
4
]
=
yr
*
(
a
[
2
][
0
]
+
zr2
*
a
[
2
][
1
]
);
float
gqyz
4
=
yr
*
(
a
20
+
zr2
*
a21
);
// Born derivs of the unweighted reaction potential gradient tensor;
// Born derivs of the unweighted reaction potential gradient tensor;
gc
[
22
]
=
xr
*
b
[
0
][
1
];
float
gc22
=
xr
*
b01
;
gc
[
22
]
=
xr
*
b
[
0
][
1
];
float
gc23
=
yr
*
b01
;
gc
[
23
]
=
yr
*
b
[
0
][
1
];
float
gc24
=
zr
*
b01
;
gc
[
24
]
=
zr
*
b
[
0
][
1
];
float
gux22
=
b10
+
xr2
*
b11
;
gux
[
22
]
=
b
[
1
][
0
]
+
xr2
*
b
[
1
][
1
];
float
gux23
=
xr
*
yr
*
b11
;
gux
[
23
]
=
xr
*
yr
*
b
[
1
][
1
];
float
gux24
=
xr
*
zr
*
b11
;
gux
[
24
]
=
xr
*
zr
*
b
[
1
][
1
];
float
guy22
=
gux23
;
guy
[
22
]
=
gux
[
23
];
float
guy23
=
b10
+
yr2
*
b11
;
guy
[
23
]
=
b
[
1
][
0
]
+
yr2
*
b
[
1
][
1
];
float
guy24
=
yr
*
zr
*
b11
;
guy
[
24
]
=
yr
*
zr
*
b
[
1
][
1
];
float
guz22
=
gux24
;
guz
[
22
]
=
gux
[
24
];
float
guz23
=
guy24
;
guz
[
23
]
=
guy
[
24
];
float
guz24
=
b10
+
zr2
*
b11
;
guz
[
24
]
=
b
[
1
][
0
]
+
zr2
*
b
[
1
][
1
];
float
gqxx22
=
xr
*
(
2.0
f
*
b20
+
xr2
*
b21
);
gqxx
[
22
]
=
xr
*
(
2.0
f
*
b
[
2
][
0
]
+
xr2
*
b
[
2
][
1
]);
float
gqxx23
=
yr
*
xr2
*
b21
;
gqxx
[
23
]
=
yr
*
xr2
*
b
[
2
][
1
];
float
gqxx24
=
zr
*
xr2
*
b21
;
gqxx
[
24
]
=
zr
*
xr2
*
b
[
2
][
1
];
float
gqyy22
=
xr
*
yr2
*
b21
;
gqyy
[
22
]
=
xr
*
yr2
*
b
[
2
][
1
];
float
gqyy23
=
yr
*
(
2.0
f
*
b20
+
yr2
*
b21
);
gqyy
[
23
]
=
yr
*
(
2.0
f
*
b
[
2
][
0
]
+
yr2
*
b
[
2
][
1
]);
float
gqyy24
=
zr
*
yr2
*
b21
;
gqyy
[
24
]
=
zr
*
yr2
*
b
[
2
][
1
];
float
gqzz22
=
xr
*
zr2
*
b21
;
gqzz
[
22
]
=
xr
*
zr2
*
b
[
2
][
1
];
float
gqzz23
=
yr
*
zr2
*
b21
;
gqzz
[
23
]
=
yr
*
zr2
*
b
[
2
][
1
];
float
gqzz24
=
zr
*
(
2.0
f
*
b20
+
zr2
*
b21
);
gqzz
[
24
]
=
zr
*
(
2.0
f
*
b
[
2
][
0
]
+
zr2
*
b
[
2
][
1
]);
float
gqxy22
=
yr
*
(
b20
+
xr2
*
b21
);
gqxy
[
22
]
=
yr
*
(
b
[
2
][
0
]
+
xr2
*
b
[
2
][
1
]);
float
gqxy23
=
xr
*
(
b20
+
yr2
*
b21
);
gqxy
[
23
]
=
xr
*
(
b
[
2
][
0
]
+
yr2
*
b
[
2
][
1
]);
float
gqxy24
=
zr
*
xr
*
yr
*
b21
;
gqxy
[
24
]
=
zr
*
xr
*
yr
*
b
[
2
][
1
];
float
gqxz22
=
zr
*
(
b20
+
xr2
*
b21
);
gqxz
[
22
]
=
zr
*
(
b
[
2
][
0
]
+
xr2
*
b
[
2
][
1
]);
float
gqxz23
=
gqxy24
;
gqxz
[
23
]
=
gqxy
[
24
];
float
gqxz24
=
xr
*
(
b20
+
zr2
*
b21
);
gqxz
[
24
]
=
xr
*
(
b
[
2
][
0
]
+
zr2
*
b
[
2
][
1
]);
float
gqyz22
=
gqxy24
;
gqyz
[
22
]
=
gqxy
[
24
];
float
gqyz23
=
zr
*
(
b20
+
yr2
*
b21
);
gqyz
[
23
]
=
zr
*
(
b
[
2
][
0
]
+
yr2
*
b
[
2
][
1
]);
float
gqyz24
=
yr
*
(
b20
+
zr2
*
b21
);
gqyz
[
24
]
=
yr
*
(
b
[
2
][
0
]
+
zr2
*
b
[
2
][
1
]);
// unweighted 2nd reaction potential gradient tensor;
// unweighted 2nd reaction potential gradient tensor;
gc
[
5
]
=
a
[
0
][
1
]
+
xr2
*
a
[
0
][
2
]
;
float
gc5
=
a
01
+
xr2
*
a
02
;
gc
[
6
]
=
xr
*
yr
*
a
[
0
][
2
]
;
float
gc6
=
xr
*
yr
*
a
02
;
gc
[
7
]
=
xr
*
zr
*
a
[
0
][
2
]
;
float
gc7
=
xr
*
zr
*
a
02
;
gc
[
8
]
=
a
[
0
][
1
]
+
yr2
*
a
[
0
][
2
]
;
float
gc8
=
a
01
+
yr2
*
a
02
;
gc
[
9
]
=
yr
*
zr
*
a
[
0
][
2
]
;
float
gc9
=
yr
*
zr
*
a
02
;
gc
[
10
]
=
a
[
0
][
1
]
+
zr2
*
a
[
0
][
2
]
;
float
gc10
=
a
01
+
zr2
*
a
02
;
gux
[
5
]
=
xr
*
(
3.0
f
*
a
[
1
][
1
]
+
xr2
*
a
[
1
][
2
]
);
float
gux5
=
xr
*
(
3.0
f
*
a
11
+
xr2
*
a12
);
gux
[
6
]
=
yr
*
(
a
[
1
][
1
]
+
xr2
*
a
[
1
][
2
]
);
float
gux6
=
yr
*
(
a
11
+
xr2
*
a12
);
gux
[
7
]
=
zr
*
(
a
[
1
][
1
]
+
xr2
*
a
[
1
][
2
]
);
float
gux7
=
zr
*
(
a
11
+
xr2
*
a12
);
gux
[
8
]
=
xr
*
(
a
[
1
][
1
]
+
yr2
*
a
[
1
][
2
]
);
float
gux8
=
xr
*
(
a
11
+
yr2
*
a12
);
gux
[
9
]
=
zr
*
xr
*
yr
*
a
[
1
][
2
]
;
float
gux9
=
zr
*
xr
*
yr
*
a
12
;
gux
[
10
]
=
xr
*
(
a
[
1
][
1
]
+
zr2
*
a
[
1
][
2
]
);
float
gux10
=
xr
*
(
a
11
+
zr2
*
a12
);
guy
[
5
]
=
yr
*
(
a
[
1
][
1
]
+
xr2
*
a
[
1
][
2
]
);
float
guy5
=
yr
*
(
a
11
+
xr2
*
a12
);
guy
[
6
]
=
xr
*
(
a
[
1
][
1
]
+
yr2
*
a
[
1
][
2
]
);
float
guy6
=
xr
*
(
a
11
+
yr2
*
a12
);
guy
[
7
]
=
gux
[
9
]
;
float
guy7
=
gux
9
;
guy
[
8
]
=
yr
*
(
3.0
f
*
a
[
1
][
1
]
+
yr2
*
a
[
1
][
2
]
);
float
guy8
=
yr
*
(
3.0
f
*
a
11
+
yr2
*
a12
);
guy
[
9
]
=
zr
*
(
a
[
1
][
1
]
+
yr2
*
a
[
1
][
2
]
);
float
guy9
=
zr
*
(
a
11
+
yr2
*
a12
);
guy
[
10
]
=
yr
*
(
a
[
1
][
1
]
+
zr2
*
a
[
1
][
2
]
);
float
guy10
=
yr
*
(
a
11
+
zr2
*
a12
);
guz
[
5
]
=
zr
*
(
a
[
1
][
1
]
+
xr2
*
a
[
1
][
2
]
);
float
guz5
=
zr
*
(
a
11
+
xr2
*
a12
);
guz
[
6
]
=
gux
[
9
]
;
float
guz6
=
gux
9
;
guz
[
7
]
=
xr
*
(
a
[
1
][
1
]
+
zr2
*
a
[
1
][
2
]
);
float
guz7
=
xr
*
(
a
11
+
zr2
*
a12
);
guz
[
8
]
=
zr
*
(
a
[
1
][
1
]
+
yr2
*
a
[
1
][
2
]
);
float
guz8
=
zr
*
(
a
11
+
yr2
*
a12
);
guz
[
9
]
=
yr
*
(
a
[
1
][
1
]
+
zr2
*
a
[
1
][
2
]
);
float
guz9
=
yr
*
(
a
11
+
zr2
*
a12
);
guz
[
10
]
=
zr
*
(
3.0
f
*
a
[
1
][
1
]
+
zr2
*
a
[
1
][
2
]
);
float
guz10
=
zr
*
(
3.0
f
*
a
11
+
zr2
*
a12
);
gqxx
[
5
]
=
2.0
f
*
a
[
2
][
0
]
+
xr2
*
(
5.0
f
*
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxx
5
=
2.0
f
*
a
20
+
xr2
*
(
5.0
f
*
a
21
+
xr2
*
a22
);
gqxx
[
6
]
=
yr
*
xr
*
(
2.0
f
*
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxx
6
=
yr
*
xr
*
(
2.0
f
*
a
21
+
xr2
*
a22
);
gqxx
[
7
]
=
zr
*
xr
*
(
2.0
f
*
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxx
7
=
zr
*
xr
*
(
2.0
f
*
a
21
+
xr2
*
a22
);
gqxx
[
8
]
=
xr2
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqxx
8
=
xr2
*
(
a
21
+
yr2
*
a22
);
gqxx
[
9
]
=
zr
*
yr
*
xr2
*
a
[
2
][
2
]
;
float
gqxx
9
=
zr
*
yr
*
xr2
*
a
22
;
gqxx
[
10
]
=
xr2
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqxx10
=
xr2
*
(
a
21
+
zr2
*
a22
);
gqyy
[
5
]
=
yr2
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqyy
5
=
yr2
*
(
a
21
+
xr2
*
a22
);
gqyy
[
6
]
=
xr
*
yr
*
(
2.0
f
*
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqyy
6
=
xr
*
yr
*
(
2.0
f
*
a
21
+
yr2
*
a22
);
gqyy
[
7
]
=
xr
*
zr
*
yr2
*
a
[
2
][
2
]
;
float
gqyy
7
=
xr
*
zr
*
yr2
*
a
22
;
gqyy
[
8
]
=
2.0
f
*
a
[
2
][
0
]
+
yr2
*
(
5.0
f
*
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqyy
8
=
2.0
f
*
a
20
+
yr2
*
(
5.0
f
*
a
21
+
yr2
*
a22
);
gqyy
[
9
]
=
yr
*
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqyy
9
=
yr
*
zr
*
(
2.0
f
*
a
21
+
yr2
*
a22
);
gqyy
[
10
]
=
yr2
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqyy10
=
yr2
*
(
a
21
+
zr2
*
a22
);
gqzz
[
5
]
=
zr2
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqzz
5
=
zr2
*
(
a
21
+
xr2
*
a22
);
gqzz
[
6
]
=
xr
*
yr
*
zr2
*
a
[
2
][
2
]
;
float
gqzz
6
=
xr
*
yr
*
zr2
*
a
22
;
gqzz
[
7
]
=
xr
*
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqzz
7
=
xr
*
zr
*
(
2.0
f
*
a
21
+
zr2
*
a22
);
gqzz
[
8
]
=
zr2
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqzz
8
=
zr2
*
(
a
21
+
yr2
*
a22
);
gqzz
[
9
]
=
yr
*
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqzz
9
=
yr
*
zr
*
(
2.0
f
*
a
21
+
zr2
*
a22
);
gqzz
[
10
]
=
2.0
f
*
a
[
2
][
0
]
+
zr2
*
(
5.0
f
*
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqzz10
=
2.0
f
*
a
20
+
zr2
*
(
5.0
f
*
a
21
+
zr2
*
a22
);
gqxy
[
5
]
=
xr
*
yr
*
(
3.0
f
*
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxy
5
=
xr
*
yr
*
(
3.0
f
*
a
21
+
xr2
*
a22
);
gqxy
[
6
]
=
a
[
2
][
0
]
+
(
xr2
+
yr2
)
*
a
[
2
][
1
]
+
xr2
*
yr2
*
a
[
2
][
2
]
;
float
gqxy
6
=
a
20
+
(
xr2
+
yr2
)
*
a
21
+
xr2
*
yr2
*
a
22
;
gqxy
[
7
]
=
zr
*
yr
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxy
7
=
zr
*
yr
*
(
a
21
+
xr2
*
a22
);
gqxy
[
8
]
=
xr
*
yr
*
(
3.0
f
*
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqxy
8
=
xr
*
yr
*
(
3.0
f
*
a
21
+
yr2
*
a22
);
gqxy
[
9
]
=
zr
*
xr
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqxy
9
=
zr
*
xr
*
(
a
21
+
yr2
*
a22
);
gqxy
[
10
]
=
xr
*
yr
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqxy10
=
xr
*
yr
*
(
a
21
+
zr2
*
a22
);
gqxz
[
5
]
=
xr
*
zr
*
(
3.0
f
*
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxz
5
=
xr
*
zr
*
(
3.0
f
*
a
21
+
xr2
*
a22
);
gqxz
[
6
]
=
yr
*
zr
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqxz
6
=
yr
*
zr
*
(
a
21
+
xr2
*
a22
);
gqxz
[
7
]
=
a
[
2
][
0
]
+
(
xr2
+
zr2
)
*
a
[
2
][
1
]
+
xr2
*
zr2
*
a
[
2
][
2
]
;
float
gqxz
7
=
a
20
+
(
xr2
+
zr2
)
*
a
21
+
xr2
*
zr2
*
a
22
;
gqxz
[
8
]
=
xr
*
zr
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqxz
8
=
xr
*
zr
*
(
a
21
+
yr2
*
a22
);
gqxz
[
9
]
=
xr
*
yr
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqxz
9
=
xr
*
yr
*
(
a
21
+
zr2
*
a22
);
gqxz
[
10
]
=
xr
*
zr
*
(
3.0
f
*
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqxz10
=
xr
*
zr
*
(
3.0
f
*
a
21
+
zr2
*
a22
);
gqyz
[
5
]
=
zr
*
yr
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
]
);
float
gqyz
5
=
zr
*
yr
*
(
a
21
+
xr2
*
a22
);
gqyz
[
6
]
=
xr
*
zr
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqyz
6
=
xr
*
zr
*
(
a
21
+
yr2
*
a22
);
gqyz
[
7
]
=
xr
*
yr
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqyz
7
=
xr
*
yr
*
(
a
21
+
zr2
*
a22
);
gqyz
[
8
]
=
yr
*
zr
*
(
3.0
f
*
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
]
);
float
gqyz
8
=
yr
*
zr
*
(
3.0
f
*
a
21
+
yr2
*
a22
);
gqyz
[
9
]
=
a
[
2
][
0
]
+
(
yr2
+
zr2
)
*
a
[
2
][
1
]
+
yr2
*
zr2
*
a
[
2
][
2
]
;
float
gqyz
9
=
a
20
+
(
yr2
+
zr2
)
*
a
21
+
yr2
*
zr2
*
a
22
;
gqyz
[
10
]
=
yr
*
zr
*
(
3.0
f
*
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
]
);
float
gqyz10
=
yr
*
zr
*
(
3.0
f
*
a
21
+
zr2
*
a22
);
// Born radii derivatives of the unweighted 2nd reaction;
// Born radii derivatives of the unweighted 2nd reaction;
// potential gradient tensor;
// potential gradient tensor;
gc
[
25
]
=
b
[
0
][
1
]
+
xr2
*
b
[
0
][
2
]
;
float
gc25
=
b
01
+
xr2
*
b
02
;
gc
[
26
]
=
xr
*
yr
*
b
[
0
][
2
]
;
float
gc26
=
xr
*
yr
*
b
02
;
gc
[
27
]
=
xr
*
zr
*
b
[
0
][
2
]
;
float
gc27
=
xr
*
zr
*
b
02
;
gc
[
28
]
=
b
[
0
][
1
]
+
yr2
*
b
[
0
][
2
]
;
float
gc28
=
b
01
+
yr2
*
b
02
;
gc
[
29
]
=
yr
*
zr
*
b
[
0
][
2
]
;
float
gc29
=
yr
*
zr
*
b
02
;
gc
[
30
]
=
b
[
0
][
1
]
+
zr2
*
b
[
0
][
2
]
;
float
gc30
=
b
01
+
zr2
*
b
02
;
gux
[
25
]
=
xr
*
(
3.0
f
*
b
[
1
][
1
]
+
xr2
*
b
[
1
][
2
]
);
float
gux25
=
xr
*
(
3.0
f
*
b
11
+
xr2
*
b12
);
gux
[
26
]
=
yr
*
(
b
[
1
][
1
]
+
xr2
*
b
[
1
][
2
]
);
float
gux26
=
yr
*
(
b
11
+
xr2
*
b12
);
gux
[
27
]
=
zr
*
(
b
[
1
][
1
]
+
xr2
*
b
[
1
][
2
]
);
float
gux27
=
zr
*
(
b
11
+
xr2
*
b12
);
gux
[
28
]
=
xr
*
(
b
[
1
][
1
]
+
yr2
*
b
[
1
][
2
]
);
float
gux28
=
xr
*
(
b
11
+
yr2
*
b12
);
gux
[
29
]
=
zr
*
xr
*
yr
*
b
[
1
][
2
]
;
float
gux29
=
zr
*
xr
*
yr
*
b
12
;
gux
[
30
]
=
xr
*
(
b
[
1
][
1
]
+
zr2
*
b
[
1
][
2
]
);
float
gux30
=
xr
*
(
b
11
+
zr2
*
b12
);
guy
[
25
]
=
yr
*
(
b
[
1
][
1
]
+
xr2
*
b
[
1
][
2
]
);
float
guy25
=
yr
*
(
b
11
+
xr2
*
b12
);
guy
[
26
]
=
xr
*
(
b
[
1
][
1
]
+
yr2
*
b
[
1
][
2
]
);
float
guy26
=
xr
*
(
b
11
+
yr2
*
b12
);
guy
[
27
]
=
gux
[
29
]
;
float
guy27
=
gux29
;
guy
[
28
]
=
yr
*
(
3.0
f
*
b
[
1
][
1
]
+
yr2
*
b
[
1
][
2
]
);
float
guy28
=
yr
*
(
3.0
f
*
b
11
+
yr2
*
b12
);
guy
[
29
]
=
zr
*
(
b
[
1
][
1
]
+
yr2
*
b
[
1
][
2
]
);
float
guy29
=
zr
*
(
b
11
+
yr2
*
b12
);
guy
[
30
]
=
yr
*
(
b
[
1
][
1
]
+
zr2
*
b
[
1
][
2
]
);
float
guy30
=
yr
*
(
b
11
+
zr2
*
b12
);
guz
[
25
]
=
zr
*
(
b
[
1
][
1
]
+
xr2
*
b
[
1
][
2
]
);
float
guz25
=
zr
*
(
b
11
+
xr2
*
b12
);
guz
[
26
]
=
gux
[
29
]
;
float
guz26
=
gux29
;
guz
[
27
]
=
xr
*
(
b
[
1
][
1
]
+
zr2
*
b
[
1
][
2
]
);
float
guz27
=
xr
*
(
b
11
+
zr2
*
b12
);
guz
[
28
]
=
zr
*
(
b
[
1
][
1
]
+
yr2
*
b
[
1
][
2
]
);
float
guz28
=
zr
*
(
b
11
+
yr2
*
b12
);
guz
[
29
]
=
yr
*
(
b
[
1
][
1
]
+
zr2
*
b
[
1
][
2
]
);
float
guz29
=
yr
*
(
b
11
+
zr2
*
b12
);
guz
[
30
]
=
zr
*
(
3.0
f
*
b
[
1
][
1
]
+
zr2
*
b
[
1
][
2
]
);
float
guz30
=
zr
*
(
3.0
f
*
b
11
+
zr2
*
b12
);
gqxx
[
25
]
=
2.0
f
*
b
[
2
][
0
]
+
xr2
*
(
5.0
f
*
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxx25
=
2.0
f
*
b
20
+
xr2
*
(
5.0
f
*
b
21
+
xr2
*
b22
);
gqxx
[
26
]
=
yr
*
xr
*
(
2.0
f
*
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxx26
=
yr
*
xr
*
(
2.0
f
*
b
21
+
xr2
*
b22
);
gqxx
[
27
]
=
zr
*
xr
*
(
2.0
f
*
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxx27
=
zr
*
xr
*
(
2.0
f
*
b
21
+
xr2
*
b22
);
gqxx
[
28
]
=
xr2
*
(
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqxx28
=
xr2
*
(
b
21
+
yr2
*
b22
);
gqxx
[
29
]
=
zr
*
yr
*
xr2
*
b
[
2
][
2
]
;
float
gqxx29
=
zr
*
yr
*
xr2
*
b
22
;
gqxx
[
30
]
=
xr2
*
(
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqxx30
=
xr2
*
(
b
21
+
zr2
*
b22
);
gqyy
[
25
]
=
yr2
*
(
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqyy25
=
yr2
*
(
b
21
+
xr2
*
b22
);
gqyy
[
26
]
=
xr
*
yr
*
(
2.0
f
*
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqyy26
=
xr
*
yr
*
(
2.0
f
*
b
21
+
yr2
*
b22
);
gqyy
[
27
]
=
xr
*
zr
*
yr2
*
b
[
2
][
2
]
;
float
gqyy27
=
xr
*
zr
*
yr2
*
b
22
;
gqyy
[
28
]
=
2.0
f
*
b
[
2
][
0
]
+
yr2
*
(
5.0
f
*
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqyy28
=
2.0
f
*
b
20
+
yr2
*
(
5.0
f
*
b
21
+
yr2
*
b22
);
gqyy
[
29
]
=
yr
*
zr
*
(
2.0
f
*
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqyy29
=
yr
*
zr
*
(
2.0
f
*
b
21
+
yr2
*
b22
);
gqyy
[
30
]
=
yr2
*
(
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqyy30
=
yr2
*
(
b
21
+
zr2
*
b22
);
gqzz
[
25
]
=
zr2
*
(
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqzz25
=
zr2
*
(
b
21
+
xr2
*
b22
);
gqzz
[
26
]
=
xr
*
yr
*
zr2
*
b
[
2
][
2
]
;
float
gqzz26
=
xr
*
yr
*
zr2
*
b
22
;
gqzz
[
27
]
=
xr
*
zr
*
(
2.0
f
*
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqzz27
=
xr
*
zr
*
(
2.0
f
*
b
21
+
zr2
*
b22
);
gqzz
[
28
]
=
zr2
*
(
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqzz28
=
zr2
*
(
b
21
+
yr2
*
b22
);
gqzz
[
29
]
=
yr
*
zr
*
(
2.0
f
*
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqzz29
=
yr
*
zr
*
(
2.0
f
*
b
21
+
zr2
*
b22
);
gqzz
[
30
]
=
2.0
f
*
b
[
2
][
0
]
+
zr2
*
(
5.0
f
*
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqzz30
=
2.0
f
*
b
20
+
zr2
*
(
5.0
f
*
b
21
+
zr2
*
b22
);
gqxy
[
25
]
=
xr
*
yr
*
(
3.0
f
*
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxy25
=
xr
*
yr
*
(
3.0
f
*
b
21
+
xr2
*
b
22
);
gqxy
[
26
]
=
b
[
2
][
0
]
+
(
xr2
+
yr2
)
*
b
[
2
][
1
]
+
xr2
*
yr2
*
b
[
2
][
2
]
;
float
gqxy26
=
b
20
+
(
xr2
+
yr2
)
*
b
21
+
xr2
*
yr2
*
b
22
;
gqxy
[
27
]
=
zr
*
yr
*
(
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxy27
=
zr
*
yr
*
(
b
21
+
xr2
*
b22
);
gqxy
[
28
]
=
xr
*
yr
*
(
3.0
f
*
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqxy28
=
xr
*
yr
*
(
3.0
f
*
b
21
+
yr2
*
b22
);
gqxy
[
29
]
=
zr
*
xr
*
(
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqxy29
=
zr
*
xr
*
(
b
21
+
yr2
*
b22
);
gqxy
[
30
]
=
xr
*
yr
*
(
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqxy30
=
xr
*
yr
*
(
b
21
+
zr2
*
b22
);
gqxz
[
25
]
=
xr
*
zr
*
(
3.0
f
*
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxz25
=
xr
*
zr
*
(
3.0
f
*
b
21
+
xr2
*
b22
);
gqxz
[
26
]
=
yr
*
zr
*
(
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqxz26
=
yr
*
zr
*
(
b
21
+
xr2
*
b22
);
gqxz
[
27
]
=
b
[
2
][
0
]
+
(
xr2
+
zr2
)
*
b
[
2
][
1
]
+
xr2
*
zr2
*
b
[
2
][
2
]
;
float
gqxz27
=
b
20
+
(
xr2
+
zr2
)
*
b
21
+
xr2
*
zr2
*
b
22
;
gqxz
[
28
]
=
xr
*
zr
*
(
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqxz28
=
xr
*
zr
*
(
b
21
+
yr2
*
b22
);
gqxz
[
29
]
=
xr
*
yr
*
(
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqxz29
=
xr
*
yr
*
(
b
21
+
zr2
*
b22
);
gqxz
[
30
]
=
xr
*
zr
*
(
3.0
f
*
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqxz30
=
xr
*
zr
*
(
3.0
f
*
b
21
+
zr2
*
b22
);
gqyz
[
25
]
=
zr
*
yr
*
(
b
[
2
][
1
]
+
xr2
*
b
[
2
][
2
]
);
float
gqyz25
=
zr
*
yr
*
(
b
21
+
xr2
*
b22
);
gqyz
[
26
]
=
xr
*
zr
*
(
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqyz26
=
xr
*
zr
*
(
b
21
+
yr2
*
b22
);
gqyz
[
27
]
=
xr
*
yr
*
(
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqyz27
=
xr
*
yr
*
(
b
21
+
zr2
*
b22
);
gqyz
[
28
]
=
yr
*
zr
*
(
3.0
f
*
b
[
2
][
1
]
+
yr2
*
b
[
2
][
2
]
);
float
gqyz28
=
yr
*
zr
*
(
3.0
f
*
b
21
+
yr2
*
b22
);
gqyz
[
29
]
=
b
[
2
][
0
]
+
(
yr2
+
zr2
)
*
b
[
2
][
1
]
+
yr2
*
zr2
*
b
[
2
][
2
]
;
float
gqyz29
=
b
20
+
(
yr2
+
zr2
)
*
b
21
+
yr2
*
zr2
*
b
22
;
gqyz
[
30
]
=
yr
*
zr
*
(
3.0
f
*
b
[
2
][
1
]
+
zr2
*
b
[
2
][
2
]
);
float
gqyz30
=
yr
*
zr
*
(
3.0
f
*
b
21
+
zr2
*
b22
);
// unweighted 3rd reaction potential gradient tensor;
// unweighted 3rd reaction potential gradient tensor;
gc
[
11
]
=
xr
*
(
3.0
f
*
a
[
0
][
2
]
+
xr2
*
a
[
0
][
3
]
);
float
gc11
=
xr
*
(
3.0
f
*
a
02
+
xr2
*
a03
);
gc
[
12
]
=
yr
*
(
a
[
0
][
2
]
+
xr2
*
a
[
0
][
3
]
);
float
gc12
=
yr
*
(
a
02
+
xr2
*
a03
);
gc
[
13
]
=
zr
*
(
a
[
0
][
2
]
+
xr2
*
a
[
0
][
3
]
);
float
gc13
=
zr
*
(
a
02
+
xr2
*
a03
);
gc
[
14
]
=
xr
*
(
a
[
0
][
2
]
+
yr2
*
a
[
0
][
3
]
);
float
gc14
=
xr
*
(
a
02
+
yr2
*
a03
);
gc
[
15
]
=
xr
*
yr
*
zr
*
a
[
0
][
3
]
;
float
gc15
=
xr
*
yr
*
zr
*
a
03
;
gc
[
16
]
=
xr
*
(
a
[
0
][
2
]
+
zr2
*
a
[
0
][
3
]
);
float
gc16
=
xr
*
(
a
02
+
zr2
*
a03
);
gc
[
17
]
=
yr
*
(
3.0
f
*
a
[
0
][
2
]
+
yr2
*
a
[
0
][
3
]
);
float
gc17
=
yr
*
(
3.0
f
*
a
02
+
yr2
*
a03
);
gc
[
18
]
=
zr
*
(
a
[
0
][
2
]
+
yr2
*
a
[
0
][
3
]
);
float
gc18
=
zr
*
(
a
02
+
yr2
*
a03
);
gc
[
19
]
=
yr
*
(
a
[
0
][
2
]
+
zr2
*
a
[
0
][
3
]
);
float
gc19
=
yr
*
(
a
02
+
zr2
*
a03
);
gc
[
20
]
=
zr
*
(
3.0
f
*
a
[
0
][
2
]
+
zr2
*
a
[
0
][
3
]
);
float
gc20
=
zr
*
(
3.0
f
*
a
02
+
zr2
*
a03
);
gux
[
11
]
=
3.0
f
*
a
[
1
][
1
]
+
xr2
*
(
6.0
f
*
a
[
1
][
2
]
+
xr2
*
a
[
1
][
3
]
);
float
gux11
=
3.0
f
*
a
11
+
xr2
*
(
6.0
f
*
a
12
+
xr2
*
a13
);
gux
[
12
]
=
xr
*
yr
*
(
3.0
f
*
a
[
1
][
2
]
+
xr2
*
a
[
1
][
3
]
);
float
gux12
=
xr
*
yr
*
(
3.0
f
*
a
12
+
xr2
*
a13
);
gux
[
13
]
=
xr
*
zr
*
(
3.0
f
*
a
[
1
][
2
]
+
xr2
*
a
[
1
][
3
]
);
float
gux13
=
xr
*
zr
*
(
3.0
f
*
a
12
+
xr2
*
a13
);
gux
[
14
]
=
a
[
1
][
1
]
+
(
xr2
+
yr2
)
*
a
[
1
][
2
]
+
xr2
*
yr2
*
a
[
1
][
3
]
;
float
gux14
=
a
11
+
(
xr2
+
yr2
)
*
a
12
+
xr2
*
yr2
*
a
13
;
gux
[
15
]
=
yr
*
zr
*
(
a
[
1
][
2
]
+
xr2
*
a
[
1
][
3
]
);
float
gux15
=
yr
*
zr
*
(
a
12
+
xr2
*
a13
);
gux
[
16
]
=
a
[
1
][
1
]
+
(
xr2
+
zr2
)
*
a
[
1
][
2
]
+
xr2
*
zr2
*
a
[
1
][
3
]
;
float
gux16
=
a
11
+
(
xr2
+
zr2
)
*
a
12
+
xr2
*
zr2
*
a
13
;
gux
[
17
]
=
xr
*
yr
*
(
3.0
f
*
a
[
1
][
2
]
+
yr2
*
a
[
1
][
3
]
);
float
gux17
=
xr
*
yr
*
(
3.0
f
*
a
12
+
yr2
*
a13
);
gux
[
18
]
=
xr
*
zr
*
(
a
[
1
][
2
]
+
yr2
*
a
[
1
][
3
]
);
float
gux18
=
xr
*
zr
*
(
a
12
+
yr2
*
a13
);
gux
[
19
]
=
xr
*
yr
*
(
a
[
1
][
2
]
+
zr2
*
a
[
1
][
3
]
);
float
gux19
=
xr
*
yr
*
(
a
12
+
zr2
*
a13
);
gux
[
20
]
=
xr
*
zr
*
(
3.0
f
*
a
[
1
][
2
]
+
zr2
*
a
[
1
][
3
]
);
float
gux20
=
xr
*
zr
*
(
3.0
f
*
a
12
+
zr2
*
a13
);
guy
[
11
]
=
gux
[
12
]
;
float
guy11
=
gux12
;
guy
[
12
]
=
gux
[
14
]
;
float
guy12
=
gux14
;
guy
[
13
]
=
gux
[
15
]
;
float
guy13
=
gux15
;
guy
[
14
]
=
gux
[
17
]
;
float
guy14
=
gux17
;
guy
[
15
]
=
gux
[
18
]
;
float
guy15
=
gux18
;
guy
[
16
]
=
gux
[
19
]
;
float
guy16
=
gux19
;
guy
[
17
]
=
3.0
f
*
a
[
1
][
1
]
+
yr2
*
(
6.0
f
*
a
[
1
][
2
]
+
yr2
*
a
[
1
][
3
]
);
float
guy17
=
3.0
f
*
a
11
+
yr2
*
(
6.0
f
*
a
12
+
yr2
*
a13
);
guy
[
18
]
=
yr
*
zr
*
(
3.0
f
*
a
[
1
][
2
]
+
yr2
*
a
[
1
][
3
]
);
float
guy18
=
yr
*
zr
*
(
3.0
f
*
a
12
+
yr2
*
a13
);
guy
[
19
]
=
a
[
1
][
1
]
+
(
yr2
+
zr2
)
*
a
[
1
][
2
]
+
yr2
*
zr2
*
a
[
1
][
3
]
;
float
guy19
=
a
11
+
(
yr2
+
zr2
)
*
a
12
+
yr2
*
zr2
*
a
13
;
guy
[
20
]
=
yr
*
zr
*
(
3.0
f
*
a
[
1
][
2
]
+
zr2
*
a
[
1
][
3
]
);
float
guy20
=
yr
*
zr
*
(
3.0
f
*
a
12
+
zr2
*
a13
);
guz
[
11
]
=
gux
[
13
]
;
float
guz11
=
gux13
;
guz
[
12
]
=
gux
[
15
]
;
float
guz12
=
gux15
;
guz
[
13
]
=
gux
[
16
]
;
float
guz13
=
gux16
;
guz
[
14
]
=
gux
[
18
]
;
float
guz14
=
gux18
;
guz
[
15
]
=
gux
[
19
]
;
float
guz15
=
gux19
;
guz
[
16
]
=
gux
[
20
]
;
float
guz16
=
gux20
;
guz
[
17
]
=
guy
[
18
]
;
float
guz17
=
guy18
;
guz
[
18
]
=
guy
[
19
]
;
float
guz18
=
guy19
;
guz
[
19
]
=
guy
[
20
]
;
float
guz19
=
guy20
;
guz
[
20
]
=
3.0
f
*
a
[
1
][
1
]
+
zr2
*
(
6.0
f
*
a
[
1
][
2
]
+
zr2
*
a
[
1
][
3
]
);
float
guz20
=
3.0
f
*
a
11
+
zr2
*
(
6.0
f
*
a
12
+
zr2
*
a13
);
gqxx
[
11
]
=
xr
*
(
12.0
f
*
a
[
2
][
1
]
+
xr2
*
(
9.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxx11
=
xr
*
(
12.0
f
*
a
21
+
xr2
*
(
9.0
f
*
a
22
+
xr2
*
a
23
));
gqxx
[
12
]
=
yr
*
(
2.0
f
*
a
[
2
][
1
]
+
xr2
*
(
5.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxx12
=
yr
*
(
2.0
f
*
a
21
+
xr2
*
(
5.0
f
*
a
22
+
xr2
*
a
23
));
gqxx
[
13
]
=
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
xr2
*
(
5.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxx13
=
zr
*
(
2.0
f
*
a
21
+
xr2
*
(
5.0
f
*
a
22
+
xr2
*
a
23
));
gqxx
[
14
]
=
xr
*
(
2.0
f
*
a
[
2
][
1
]
+
yr2
*
2.0
f
*
a
[
2
][
2
]
+
xr2
*
(
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqxx14
=
xr
*
(
2.0
f
*
a
21
+
yr2
*
2.0
f
*
a
22
+
xr2
*
(
a
22
+
yr2
*
a23
));
gqxx
[
15
]
=
xr
*
yr
*
zr
*
(
2.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqxx15
=
xr
*
yr
*
zr
*
(
2.0
f
*
a
22
+
xr2
*
a23
);
gqxx
[
16
]
=
xr
*
(
2.0
f
*
a
[
2
][
1
]
+
zr2
*
2.0
f
*
a
[
2
][
2
]
+
xr2
*
(
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqxx16
=
xr
*
(
2.0
f
*
a
21
+
zr2
*
2.0
f
*
a
22
+
xr2
*
(
a
22
+
zr2
*
a23
));
gqxx
[
17
]
=
yr
*
xr2
*
(
3.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqxx17
=
yr
*
xr2
*
(
3.0
f
*
a
22
+
yr2
*
a23
);
gqxx
[
18
]
=
zr
*
xr2
*
(
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqxx18
=
zr
*
xr2
*
(
a
22
+
yr2
*
a23
);
gqxx
[
19
]
=
yr
*
xr2
*
(
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqxx19
=
yr
*
xr2
*
(
a
22
+
zr2
*
a23
);
gqxx
[
20
]
=
zr
*
xr2
*
(
3.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqxx20
=
zr
*
xr2
*
(
3.0
f
*
a
22
+
zr2
*
a23
);
gqxy
[
11
]
=
yr
*
(
3.0
f
*
a
[
2
][
1
]
+
xr2
*
(
6.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxy11
=
yr
*
(
3.0
f
*
a
21
+
xr2
*
(
6.0
f
*
a
22
+
xr2
*
a
23
));
gqxy
[
12
]
=
xr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
])
+
xr2
*
(
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqxy12
=
xr
*
(
3.0
f
*
(
a
21
+
yr2
*
a22
)
+
xr2
*
(
a22
+
yr2
*
a23
));
gqxy
[
13
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqxy13
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
xr2
*
a23
);
gqxy
[
14
]
=
yr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
])
+
yr2
*
(
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxy14
=
yr
*
(
3.0
f
*
(
a
21
+
xr2
*
a22
)
+
yr2
*
(
a22
+
xr2
*
a23
));
gqxy
[
15
]
=
zr
*
(
a
[
2
][
1
]
+
(
yr2
+
xr2
)
*
a
[
2
][
2
]
+
yr2
*
xr2
*
a
[
2
][
3
]
);
float
gqxy15
=
zr
*
(
a
21
+
(
yr2
+
xr2
)
*
a
22
+
yr2
*
xr2
*
a
23
);
gqxy
[
16
]
=
yr
*
(
a
[
2
][
1
]
+
(
xr2
+
zr2
)
*
a
[
2
][
2
]
+
xr2
*
zr2
*
a
[
2
][
3
]
);
float
gqxy16
=
yr
*
(
a
21
+
(
xr2
+
zr2
)
*
a
22
+
xr2
*
zr2
*
a
23
);
gqxy
[
17
]
=
xr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
])
+
yr2
*
(
3.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqxy17
=
xr
*
(
3.0
f
*
(
a
21
+
yr2
*
a22
)
+
yr2
*
(
3.0
f
*
a22
+
yr2
*
a23
));
gqxy
[
18
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqxy18
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
yr2
*
a23
);
gqxy
[
19
]
=
xr
*
(
a
[
2
][
1
]
+
(
yr2
+
zr2
)
*
a
[
2
][
2
]
+
yr2
*
zr2
*
a
[
2
][
3
]
);
float
gqxy19
=
xr
*
(
a
21
+
(
yr2
+
zr2
)
*
a
22
+
yr2
*
zr2
*
a
23
);
gqxy
[
20
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqxy20
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
zr2
*
a23
);
gqxz
[
11
]
=
zr
*
(
3.0
f
*
a
[
2
][
1
]
+
xr2
*
(
6.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxz11
=
zr
*
(
3.0
f
*
a
21
+
xr2
*
(
6.0
f
*
a
22
+
xr2
*
a
23
));
gqxz
[
12
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqxz12
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
xr2
*
a23
);
gqxz
[
13
]
=
xr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
])
+
xr2
*
(
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqxz13
=
xr
*
(
3.0
f
*
(
a
21
+
zr2
*
a22
)
+
xr2
*
(
a22
+
zr2
*
a23
));
gqxz
[
14
]
=
zr
*
(
a
[
2
][
1
]
+
(
xr2
+
yr2
)
*
a
[
2
][
2
]
+
xr2
*
yr2
*
a
[
2
][
3
]
);
float
gqxz14
=
zr
*
(
a
21
+
(
xr2
+
yr2
)
*
a
22
+
xr2
*
yr2
*
a
23
);
gqxz
[
15
]
=
yr
*
(
a
[
2
][
1
]
+
(
xr2
+
zr2
)
*
a
[
2
][
2
]
+
zr2
*
xr2
*
a
[
2
][
3
]
);
float
gqxz15
=
yr
*
(
a
21
+
(
xr2
+
zr2
)
*
a
22
+
zr2
*
xr2
*
a
23
);
gqxz
[
16
]
=
zr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
xr2
*
a
[
2
][
2
])
+
zr2
*
(
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqxz16
=
zr
*
(
3.0
f
*
(
a
21
+
xr2
*
a22
)
+
zr2
*
(
a22
+
xr2
*
a23
));
gqxz
[
17
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqxz17
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
yr2
*
a23
);
gqxz
[
18
]
=
xr
*
(
a
[
2
][
1
]
+
(
zr2
+
yr2
)
*
a
[
2
][
2
]
+
zr2
*
yr2
*
a
[
2
][
3
]
);
float
gqxz18
=
xr
*
(
a
21
+
(
zr2
+
yr2
)
*
a
22
+
zr2
*
yr2
*
a
23
);
gqxz
[
19
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqxz19
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
zr2
*
a23
);
gqxz
[
20
]
=
xr
*
(
3.0
f
*
a
[
2
][
1
]
+
zr2
*
(
6.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqxz20
=
xr
*
(
3.0
f
*
a
21
+
zr2
*
(
6.0
f
*
a
22
+
zr2
*
a
23
));
gqyy
[
11
]
=
xr
*
yr2
*
(
3.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqyy11
=
xr
*
yr2
*
(
3.0
f
*
a
22
+
xr2
*
a23
);
gqyy
[
12
]
=
yr
*
(
2.0
f
*
a
[
2
][
1
]
+
xr2
*
2.0
f
*
a
[
2
][
2
]
+
yr2
*
(
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqyy12
=
yr
*
(
2.0
f
*
a
21
+
xr2
*
2.0
f
*
a
22
+
yr2
*
(
a
22
+
xr2
*
a23
));
gqyy
[
13
]
=
zr
*
yr2
*
(
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqyy13
=
zr
*
yr2
*
(
a
22
+
xr2
*
a23
);
gqyy
[
14
]
=
xr
*
(
2.0
f
*
a
[
2
][
1
]
+
yr2
*
(
5.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqyy14
=
xr
*
(
2.0
f
*
a
21
+
yr2
*
(
5.0
f
*
a
22
+
yr2
*
a
23
));
gqyy
[
15
]
=
xr
*
yr
*
zr
*
(
2.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqyy15
=
xr
*
yr
*
zr
*
(
2.0
f
*
a
22
+
yr2
*
a23
);
gqyy
[
16
]
=
xr
*
yr2
*
(
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqyy16
=
xr
*
yr2
*
(
a
22
+
zr2
*
a23
);
gqyy
[
17
]
=
yr
*
(
12.0
f
*
a
[
2
][
1
]
+
yr2
*
(
9.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqyy17
=
yr
*
(
12.0
f
*
a
21
+
yr2
*
(
9.0
f
*
a
22
+
yr2
*
a
23
));
gqyy
[
18
]
=
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
yr2
*
(
5.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqyy18
=
zr
*
(
2.0
f
*
a
21
+
yr2
*
(
5.0
f
*
a
22
+
yr2
*
a
23
));
gqyy
[
19
]
=
yr
*
(
2.0
f
*
a
[
2
][
1
]
+
zr2
*
2.0
f
*
a
[
2
][
2
]
+
yr2
*
(
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqyy19
=
yr
*
(
2.0
f
*
a
21
+
zr2
*
2.0
f
*
a
22
+
yr2
*
(
a
22
+
zr2
*
a23
));
gqyy
[
20
]
=
zr
*
yr2
*
(
3.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqyy20
=
zr
*
yr2
*
(
3.0
f
*
a
22
+
zr2
*
a23
);
gqyz
[
11
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqyz11
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
xr2
*
a23
);
gqyz
[
12
]
=
zr
*
(
a
[
2
][
1
]
+
(
xr2
+
yr2
)
*
a
[
2
][
2
]
+
xr2
*
yr2
*
a
[
2
][
3
]
);
float
gqyz12
=
zr
*
(
a
21
+
(
xr2
+
yr2
)
*
a
22
+
xr2
*
yr2
*
a
23
);
gqyz
[
13
]
=
yr
*
(
a
[
2
][
1
]
+
(
xr2
+
zr2
)
*
a
[
2
][
2
]
+
xr2
*
zr2
*
a
[
2
][
3
]
);
float
gqyz13
=
yr
*
(
a
21
+
(
xr2
+
zr2
)
*
a
22
+
xr2
*
zr2
*
a
23
);
gqyz
[
14
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqyz14
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
yr2
*
a23
);
gqyz
[
15
]
=
xr
*
(
a
[
2
][
1
]
+
(
yr2
+
zr2
)
*
a
[
2
][
2
]
+
yr2
*
zr2
*
a
[
2
][
3
]
);
float
gqyz15
=
xr
*
(
a
21
+
(
yr2
+
zr2
)
*
a
22
+
yr2
*
zr2
*
a
23
);
gqyz
[
16
]
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqyz16
=
xr
*
yr
*
zr
*
(
3.0
f
*
a
22
+
zr2
*
a23
);
gqyz
[
17
]
=
zr
*
(
3.0
f
*
a
[
2
][
1
]
+
yr2
*
(
6.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqyz17
=
zr
*
(
3.0
f
*
a
21
+
yr2
*
(
6.0
f
*
a
22
+
yr2
*
a
23
));
gqyz
[
18
]
=
yr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
zr2
*
a
[
2
][
2
])
+
yr2
*
(
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqyz18
=
yr
*
(
3.0
f
*
(
a
21
+
zr2
*
a22
)
+
yr2
*
(
a22
+
zr2
*
a23
));
gqyz
[
19
]
=
zr
*
(
3.0
f
*
(
a
[
2
][
1
]
+
yr2
*
a
[
2
][
2
])
+
zr2
*
(
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqyz19
=
zr
*
(
3.0
f
*
(
a
21
+
yr2
*
a22
)
+
zr2
*
(
a22
+
yr2
*
a23
));
gqyz
[
20
]
=
yr
*
(
3.0
f
*
a
[
2
][
1
]
+
zr2
*
(
6.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqyz20
=
yr
*
(
3.0
f
*
a
21
+
zr2
*
(
6.0
f
*
a
22
+
zr2
*
a
23
));
gqzz
[
11
]
=
xr
*
zr2
*
(
3.0
f
*
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
);
float
gqzz11
=
xr
*
zr2
*
(
3.0
f
*
a
22
+
xr2
*
a23
);
gqzz
[
12
]
=
yr
*
(
zr2
*
a
[
2
][
2
]
+
xr2
*
(
zr2
*
a
[
2
][
3
]
));
float
gqzz12
=
yr
*
(
zr2
*
a
22
+
xr2
*
(
zr2
*
a
23
));
gqzz
[
13
]
=
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
xr2
*
2.0
f
*
a
[
2
][
2
]
+
zr2
*
(
a
[
2
][
2
]
+
xr2
*
a
[
2
][
3
]
));
float
gqzz13
=
zr
*
(
2.0
f
*
a
21
+
xr2
*
2.0
f
*
a
22
+
zr2
*
(
a
22
+
xr2
*
a23
));
gqzz
[
14
]
=
xr
*
zr2
*
(
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqzz14
=
xr
*
zr2
*
(
a
22
+
yr2
*
a23
);
gqzz
[
15
]
=
xr
*
yr
*
zr
*
(
2.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
);
float
gqzz15
=
xr
*
yr
*
zr
*
(
2.0
f
*
a
22
+
zr2
*
a23
);
gqzz
[
16
]
=
xr
*
(
2.0
f
*
a
[
2
][
1
]
+
zr2
*
(
5.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqzz16
=
xr
*
(
2.0
f
*
a
21
+
zr2
*
(
5.0
f
*
a
22
+
zr2
*
a
23
));
gqzz
[
17
]
=
yr
*
zr2
*
(
3.0
f
*
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
);
float
gqzz17
=
yr
*
zr2
*
(
3.0
f
*
a
22
+
yr2
*
a23
);
gqzz
[
18
]
=
zr
*
(
2.0
f
*
a
[
2
][
1
]
+
yr2
*
2.0
f
*
a
[
2
][
2
]
+
zr2
*
(
a
[
2
][
2
]
+
yr2
*
a
[
2
][
3
]
));
float
gqzz18
=
zr
*
(
2.0
f
*
a
21
+
yr2
*
2.0
f
*
a
22
+
zr2
*
(
a
22
+
yr2
*
a23
));
gqzz
[
19
]
=
yr
*
(
2.0
f
*
a
[
2
][
1
]
+
zr2
*
(
5.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqzz19
=
yr
*
(
2.0
f
*
a
21
+
zr2
*
(
5.0
f
*
a
22
+
zr2
*
a
23
));
gqzz
[
20
]
=
zr
*
(
12.0
f
*
a
[
2
][
1
]
+
zr2
*
(
9.0
f
*
a
[
2
][
2
]
+
zr2
*
a
[
2
][
3
]
));
float
gqzz20
=
zr
*
(
12.0
f
*
a
21
+
zr2
*
(
9.0
f
*
a
22
+
zr2
*
a
23
));
// electrostatic solvation energy of the permanent multipoles
// electrostatic solvation energy of the permanent multipoles
// in their own GK reaction potential
// in their own GK reaction potential
esym
=
ci
*
ck
*
gc
[
1
]
-
(
uxi
*
(
uxk
*
gux
[
2
]
+
uyk
*
guy
[
2
]
+
uzk
*
guz
[
2
])
esym
=
ci
*
ck
*
gc1
-
(
uxi
*
(
uxk
*
gux2
+
uyk
*
guy2
+
uzk
*
guz2
)
+
uyi
*
(
uxk
*
gux
[
3
]
+
uyk
*
guy
[
3
]
+
uzk
*
guz
[
3
])
+
uyi
*
(
uxk
*
gux3
+
uyk
*
guy3
+
uzk
*
guz3
)
+
uzi
*
(
uxk
*
gux
[
4
]
+
uyk
*
guy
[
4
]
+
uzk
*
guz
[
4
]));
+
uzi
*
(
uxk
*
gux4
+
uyk
*
guy4
+
uzk
*
guz4
));
ewi
=
ci
*
(
uxk
*
gc
[
2
]
+
uyk
*
gc
[
3
]
+
uzk
*
gc
[
4
])
ewi
=
ci
*
(
uxk
*
gc2
+
uyk
*
gc3
+
uzk
*
gc4
)
-
ck
*
(
uxi
*
gux
[
1
]
+
uyi
*
guy
[
1
]
+
uzi
*
guz
[
1
])
-
ck
*
(
uxi
*
gux1
+
uyi
*
guy1
+
uzi
*
guz1
)
+
ci
*
(
qxxk
*
gc
[
5
]
+
qyyk
*
gc
[
8
]
+
qzzk
*
gc
[
10
]
+
ci
*
(
qxxk
*
gc5
+
qyyk
*
gc8
+
qzzk
*
gc10
+
2.0
f
*
(
qxyk
*
gc
[
6
]
+
qxzk
*
gc
[
7
]
+
qyzk
*
gc
[
9
]))
+
2.0
f
*
(
qxyk
*
gc6
+
qxzk
*
gc7
+
qyzk
*
gc9
))
+
ck
*
(
qxxi
*
gqxx
[
1
]
+
qyyi
*
gqyy
[
1
]
+
qzzi
*
gqzz
[
1
]
+
ck
*
(
qxxi
*
gqxx1
+
qyyi
*
gqyy1
+
qzzi
*
gqzz1
+
2.0
f
*
(
qxyi
*
gqxy
[
1
]
+
qxzi
*
gqxz
[
1
]
+
qyzi
*
gqyz
[
1
]))
+
2.0
f
*
(
qxyi
*
gqxy1
+
qxzi
*
gqxz1
+
qyzi
*
gqyz1
))
-
uxi
*
(
qxxk
*
gux
[
5
]
+
qyyk
*
gux
[
8
]
+
qzzk
*
gux
[
10
]
-
uxi
*
(
qxxk
*
gux5
+
qyyk
*
gux8
+
qzzk
*
gux10
+
2.0
f
*
(
qxyk
*
gux
[
6
]
+
qxzk
*
gux
[
7
]
+
qyzk
*
gux
[
9
]))
+
2.0
f
*
(
qxyk
*
gux6
+
qxzk
*
gux7
+
qyzk
*
gux9
))
-
uyi
*
(
qxxk
*
guy
[
5
]
+
qyyk
*
guy
[
8
]
+
qzzk
*
guy
[
10
]
-
uyi
*
(
qxxk
*
guy5
+
qyyk
*
guy8
+
qzzk
*
guy10
+
2.0
f
*
(
qxyk
*
guy
[
6
]
+
qxzk
*
guy
[
7
]
+
qyzk
*
guy
[
9
]))
+
2.0
f
*
(
qxyk
*
guy6
+
qxzk
*
guy7
+
qyzk
*
guy9
))
-
uzi
*
(
qxxk
*
guz
[
5
]
+
qyyk
*
guz
[
8
]
+
qzzk
*
guz
[
10
]
-
uzi
*
(
qxxk
*
guz5
+
qyyk
*
guz8
+
qzzk
*
guz10
+
2.0
f
*
(
qxyk
*
guz
[
6
]
+
qxzk
*
guz
[
7
]
+
qyzk
*
guz
[
9
]))
+
2.0
f
*
(
qxyk
*
guz6
+
qxzk
*
guz7
+
qyzk
*
guz9
))
+
uxk
*
(
qxxi
*
gqxx
[
2
]
+
qyyi
*
gqyy
[
2
]
+
qzzi
*
gqzz
[
2
]
+
uxk
*
(
qxxi
*
gqxx2
+
qyyi
*
gqyy2
+
qzzi
*
gqzz2
+
2.0
f
*
(
qxyi
*
gqxy
[
2
]
+
qxzi
*
gqxz
[
2
]
+
qyzi
*
gqyz
[
2
]))
+
2.0
f
*
(
qxyi
*
gqxy2
+
qxzi
*
gqxz2
+
qyzi
*
gqyz2
))
+
uyk
*
(
qxxi
*
gqxx
[
3
]
+
qyyi
*
gqyy
[
3
]
+
qzzi
*
gqzz
[
3
]
+
uyk
*
(
qxxi
*
gqxx3
+
qyyi
*
gqyy3
+
qzzi
*
gqzz3
+
2.0
f
*
(
qxyi
*
gqxy
[
3
]
+
qxzi
*
gqxz
[
3
]
+
qyzi
*
gqyz
[
3
]))
+
2.0
f
*
(
qxyi
*
gqxy3
+
qxzi
*
gqxz3
+
qyzi
*
gqyz3
))
+
uzk
*
(
qxxi
*
gqxx
[
4
]
+
qyyi
*
gqyy
[
4
]
+
qzzi
*
gqzz
[
4
]
+
uzk
*
(
qxxi
*
gqxx4
+
qyyi
*
gqyy4
+
qzzi
*
gqzz4
+
2.0
f
*
(
qxyi
*
gqxy
[
4
]
+
qxzi
*
gqxz
[
4
]
+
qyzi
*
gqyz
[
4
]))
+
2.0
f
*
(
qxyi
*
gqxy4
+
qxzi
*
gqxz4
+
qyzi
*
gqyz4
))
+
qxxi
*
(
qxxk
*
gqxx
[
5
]
+
qyyk
*
gqxx
[
8
]
+
qzzk
*
gqxx
[
10
]
+
qxxi
*
(
qxxk
*
gqxx5
+
qyyk
*
gqxx8
+
qzzk
*
gqxx10
+
2.0
f
*
(
qxyk
*
gqxx
[
6
]
+
qxzk
*
gqxx
[
7
]
+
qyzk
*
gqxx
[
9
]))
+
2.0
f
*
(
qxyk
*
gqxx6
+
qxzk
*
gqxx7
+
qyzk
*
gqxx9
))
+
qyyi
*
(
qxxk
*
gqyy
[
5
]
+
qyyk
*
gqyy
[
8
]
+
qzzk
*
gqyy
[
10
]
+
qyyi
*
(
qxxk
*
gqyy5
+
qyyk
*
gqyy8
+
qzzk
*
gqyy10
+
2.0
f
*
(
qxyk
*
gqyy
[
6
]
+
qxzk
*
gqyy
[
7
]
+
qyzk
*
gqyy
[
9
]))
+
2.0
f
*
(
qxyk
*
gqyy6
+
qxzk
*
gqyy7
+
qyzk
*
gqyy9
))
+
qzzi
*
(
qxxk
*
gqzz
[
5
]
+
qyyk
*
gqzz
[
8
]
+
qzzk
*
gqzz
[
10
]
+
qzzi
*
(
qxxk
*
gqzz5
+
qyyk
*
gqzz8
+
qzzk
*
gqzz10
+
2.0
f
*
(
qxyk
*
gqzz
[
6
]
+
qxzk
*
gqzz
[
7
]
+
qyzk
*
gqzz
[
9
]))
+
2.0
f
*
(
qxyk
*
gqzz6
+
qxzk
*
gqzz7
+
qyzk
*
gqzz9
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy
[
5
]
+
qyyk
*
gqxy
[
8
]
+
qzzk
*
gqxy
[
10
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy5
+
qyyk
*
gqxy8
+
qzzk
*
gqxy10
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxy
[
7
]
+
qyzk
*
gqxy
[
9
]))
+
2.0
f
*
(
qxyk
*
gqxy6
+
qxzk
*
gqxy7
+
qyzk
*
gqxy9
))
+
qxzi
*
(
qxxk
*
gqxz
[
5
]
+
qyyk
*
gqxz
[
8
]
+
qzzk
*
gqxz
[
10
]
+
qxzi
*
(
qxxk
*
gqxz5
+
qyyk
*
gqxz8
+
qzzk
*
gqxz10
+
2.0
f
*
(
qxyk
*
gqxz
[
6
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqxz
[
9
]))
+
2.0
f
*
(
qxyk
*
gqxz6
+
qxzk
*
gqxz7
+
qyzk
*
gqxz9
))
+
qyzi
*
(
qxxk
*
gqyz
[
5
]
+
qyyk
*
gqyz
[
8
]
+
qzzk
*
gqyz
[
10
]
+
qyzi
*
(
qxxk
*
gqyz5
+
qyyk
*
gqyz8
+
qzzk
*
gqyz10
+
2.0
f
*
(
qxyk
*
gqyz
[
6
]
+
qxzk
*
gqyz
[
7
]
+
qyzk
*
gqyz
[
9
])));
+
2.0
f
*
(
qxyk
*
gqyz6
+
qxzk
*
gqyz7
+
qyzk
*
gqyz9
)));
#ifdef AMOEBA_DEBUG
ewk
=
ci
*
(
uxk
*
gux1
+
uyk
*
guy1
+
uzk
*
guz1
)
//int n2 = numberOfAtoms*numberOfAtoms;
-
ck
*
(
uxi
*
gc2
+
uyi
*
gc3
+
uzi
*
gc4
)
//int debugIndex = atomI*numberOfAtoms + atomJ;
+
ci
*
(
qxxk
*
gqxx1
+
qyyk
*
gqyy1
+
qzzk
*
gqzz1
#if 0
+
2.0
f
*
(
qxyk
*
gqxy1
+
qxzk
*
gqxz1
+
qyzk
*
gqyz1
))
if( atomI == -1 ){
+
ck
*
(
qxxi
*
gc5
+
qyyi
*
gc8
+
qzzi
*
gc10
// 4, [3,3], [5,5], [5,5],[5,5],
+
2.0
f
*
(
qxyi
*
gc6
+
qxzi
*
gc7
+
qyzi
*
gc9
))
int debugIndex = atomJ;
-
uxi
*
(
qxxk
*
gqxx2
+
qyyk
*
gqyy2
+
qzzk
*
gqzz2
+
2.0
f
*
(
qxyk
*
gqxy2
+
qxzk
*
gqxz2
+
qyzk
*
gqyz2
))
debugArray[debugIndex].x = gkc;
-
uyi
*
(
qxxk
*
gqxx3
+
qyyk
*
gqyy3
+
qzzk
*
gqzz3
debugArray[debugIndex].y = fc;
+
2.0
f
*
(
qxyk
*
gqxy3
+
qxzk
*
gqxz3
+
qyzk
*
gqyz3
))
debugArray[debugIndex].z = gf2;
-
uzi
*
(
qxxk
*
gqxx4
+
qyyk
*
gqyy4
+
qzzk
*
gqzz4
+
2.0
f
*
(
qxyk
*
gqxy4
+
qxzk
*
gqxz4
+
qyzk
*
gqyz4
))
debugIndex += numberOfAtoms;
+
uxk
*
(
qxxi
*
gux5
+
qyyi
*
gux8
+
qzzi
*
gux10
debugArray[debugIndex].x = ci;
+
2.0
f
*
(
qxyi
*
gux6
+
qxzi
*
gux7
+
qyzi
*
gux9
))
debugArray[debugIndex].y = ck;
+
uyk
*
(
qxxi
*
guy5
+
qyyi
*
guy8
+
qzzi
*
guy10
debugArray[debugIndex].z = esym;
+
2.0
f
*
(
qxyi
*
guy6
+
qxzi
*
guy7
+
qyzi
*
guy9
))
debugArray[debugIndex].w = ewi;
+
uzk
*
(
qxxi
*
guz5
+
qyyi
*
guz8
+
qzzi
*
guz10
+
2.0
f
*
(
qxyi
*
guz6
+
qxzi
*
guz7
+
qyzi
*
guz9
))
debugIndex += numberOfAtoms;
+
qxxi
*
(
qxxk
*
gqxx5
+
qyyk
*
gqyy5
+
qzzk
*
gqzz5
debugArray[debugIndex].x = uxi;
+
2.0
f
*
(
qxyk
*
gqxy5
+
qxzk
*
gqxz5
+
qyzk
*
gqyz5
))
debugArray[debugIndex].y = uyi;
+
qyyi
*
(
qxxk
*
gqxx8
+
qyyk
*
gqyy8
+
qzzk
*
gqzz8
debugArray[debugIndex].z = uzi;
+
2.0
f
*
(
qxyk
*
gqxy8
+
qxzk
*
gqxz8
+
qyzk
*
gqyz8
))
+
qzzi
*
(
qxxk
*
gqxx10
+
qyyk
*
gqyy10
+
qzzk
*
gqzz10
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyk
*
gqxy10
+
qxzk
*
gqxz10
+
qyzk
*
gqyz10
))
debugArray[debugIndex].x = uxk;
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx6
+
qyyk
*
gqyy6
+
qzzk
*
gqzz6
debugArray[debugIndex].y = uyk;
+
2.0
f
*
(
qxyk
*
gqxy6
+
qxzk
*
gqxz6
+
qyzk
*
gqyz6
))
debugArray[debugIndex].z = uzk;
+
qxzi
*
(
qxxk
*
gqxx7
+
qyyk
*
gqyy7
+
qzzk
*
gqzz7
+
2.0
f
*
(
qxyk
*
gqxy7
+
qxzk
*
gqxz7
+
qyzk
*
gqyz7
))
debugIndex += numberOfAtoms;
+
qyzi
*
(
qxxk
*
gqxx9
+
qyyk
*
gqyy9
+
qzzk
*
gqzz9
debugArray[debugIndex].x = gc[1];
+
2.0
f
*
(
qxyk
*
gqxy9
+
qxzk
*
gqxz9
+
qyzk
*
gqyz9
)));
debugArray[debugIndex].y = gc[2];
debugArray[debugIndex].z = gc[3];
desymdx
=
ci
*
ck
*
gc2
-
(
uxi
*
(
uxk
*
gux5
+
uyk
*
guy5
+
uzk
*
guz5
)
debugArray[debugIndex].w = gc[4];
+
uyi
*
(
uxk
*
gux6
+
uyk
*
guy6
+
uzk
*
guz6
)
+
uzi
*
(
uxk
*
gux7
+
uyk
*
guy7
+
uzk
*
guz7
));
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gc[5];
dewidx
=
ci
*
(
uxk
*
gc5
+
uyk
*
gc6
+
uzk
*
gc7
)
debugArray[debugIndex].y = gc[6];
-
ck
*
(
uxi
*
gux2
+
uyi
*
guy2
+
uzi
*
guz2
)
debugArray[debugIndex].z = gc[7];
+
ci
*
(
qxxk
*
gc11
+
qyyk
*
gc14
+
qzzk
*
gc16
debugArray[debugIndex].w = gc[8];
+
2.0
f
*
(
qxyk
*
gc12
+
qxzk
*
gc13
+
qyzk
*
gc15
))
+
ck
*
(
qxxi
*
gqxx2
+
qyyi
*
gqyy2
+
qzzi
*
gqzz2
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyi
*
gqxy2
+
qxzi
*
gqxz2
+
qyzi
*
gqyz2
))
debugArray[debugIndex].x = gc[9];
-
uxi
*
(
qxxk
*
gux11
+
qyyk
*
gux14
+
qzzk
*
gux16
debugArray[debugIndex].y = gc[10];
+
2.0
f
*
(
qxyk
*
gux12
+
qxzk
*
gux13
+
qyzk
*
gux15
))
-
uyi
*
(
qxxk
*
guy11
+
qyyk
*
guy14
+
qzzk
*
guy16
+
2.0
f
*
(
qxyk
*
guy12
+
qxzk
*
guy13
+
qyzk
*
guy15
))
debugIndex += numberOfAtoms;
-
uzi
*
(
qxxk
*
guz11
+
qyyk
*
guz14
+
qzzk
*
guz16
debugArray[debugIndex].x = gux[1];
+
2.0
f
*
(
qxyk
*
guz12
+
qxzk
*
guz13
+
qyzk
*
guz15
))
debugArray[debugIndex].y = gux[2];
+
uxk
*
(
qxxi
*
gqxx5
+
qyyi
*
gqyy5
+
qzzi
*
gqzz5
debugArray[debugIndex].z = gux[3];
+
2.0
f
*
(
qxyi
*
gqxy5
+
qxzi
*
gqxz5
+
qyzi
*
gqyz5
))
debugArray[debugIndex].w = gux[4];
+
uyk
*
(
qxxi
*
gqxx6
+
qyyi
*
gqyy6
+
qzzi
*
gqzz6
+
2.0
f
*
(
qxyi
*
gqxy6
+
qxzi
*
gqxz6
+
qyzi
*
gqyz6
))
debugIndex += numberOfAtoms;
+
uzk
*
(
qxxi
*
gqxx7
+
qyyi
*
gqyy7
+
qzzi
*
gqzz7
debugArray[debugIndex].x = gux[5];
+
2.0
f
*
(
qxyi
*
gqxy7
+
qxzi
*
gqxz7
+
qyzi
*
gqyz7
))
debugArray[debugIndex].y = gux[6];
+
qxxi
*
(
qxxk
*
gqxx11
+
qyyk
*
gqxx14
+
qzzk
*
gqxx16
debugArray[debugIndex].z = gux[7];
+
2.0
f
*
(
qxyk
*
gqxx12
+
qxzk
*
gqxx13
+
qyzk
*
gqxx15
))
debugArray[debugIndex].w = gux[8];
+
qyyi
*
(
qxxk
*
gqyy11
+
qyyk
*
gqyy14
+
qzzk
*
gqyy16
+
2.0
f
*
(
qxyk
*
gqyy12
+
qxzk
*
gqyy13
+
qyzk
*
gqyy15
))
debugIndex += numberOfAtoms;
+
qzzi
*
(
qxxk
*
gqzz11
+
qyyk
*
gqzz14
+
qzzk
*
gqzz16
debugArray[debugIndex].x = gux[9];
+
2.0
f
*
(
qxyk
*
gqzz12
+
qxzk
*
gqzz13
+
qyzk
*
gqzz15
))
debugArray[debugIndex].y = gux[10];
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy11
+
qyyk
*
gqxy14
+
qzzk
*
gqxy16
+
2.0
f
*
(
qxyk
*
gqxy12
+
qxzk
*
gqxy13
+
qyzk
*
gqxy15
))
debugIndex += numberOfAtoms;
+
qxzi
*
(
qxxk
*
gqxz11
+
qyyk
*
gqxz14
+
qzzk
*
gqxz16
debugArray[debugIndex].x = guy[1];
+
2.0
f
*
(
qxyk
*
gqxz12
+
qxzk
*
gqxz13
+
qyzk
*
gqxz15
))
debugArray[debugIndex].y = guy[2];
+
qyzi
*
(
qxxk
*
gqyz11
+
qyyk
*
gqyz14
+
qzzk
*
gqyz16
debugArray[debugIndex].z = guy[3];
+
2.0
f
*
(
qxyk
*
gqyz12
+
qxzk
*
gqyz13
+
qyzk
*
gqyz15
)));
debugArray[debugIndex].w = guy[4];
dewkdx
=
ci
*
(
uxk
*
gux2
+
uyk
*
guy2
+
uzk
*
guz2
)
debugIndex += numberOfAtoms;
-
ck
*
(
uxi
*
gc5
+
uyi
*
gc6
+
uzi
*
gc7
)
debugArray[debugIndex].x = guy[5];
+
ci
*
(
qxxk
*
gqxx2
+
qyyk
*
gqyy2
+
qzzk
*
gqzz2
debugArray[debugIndex].y = guy[6];
+
2.0
f
*
(
qxyk
*
gqxy2
+
qxzk
*
gqxz2
+
qyzk
*
gqyz2
))
debugArray[debugIndex].z = guy[7];
+
ck
*
(
qxxi
*
gc11
+
qyyi
*
gc14
+
qzzi
*
gc16
debugArray[debugIndex].w = guy[8];
+
2.0
f
*
(
qxyi
*
gc12
+
qxzi
*
gc13
+
qyzi
*
gc15
))
-
uxi
*
(
qxxk
*
gqxx5
+
qyyk
*
gqyy5
+
qzzk
*
gqzz5
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyk
*
gqxy5
+
qxzk
*
gqxz5
+
qyzk
*
gqyz5
))
debugArray[debugIndex].x = guy[9];
-
uyi
*
(
qxxk
*
gqxx6
+
qyyk
*
gqyy6
+
qzzk
*
gqzz6
debugArray[debugIndex].y = guy[10];
+
2.0
f
*
(
qxyk
*
gqxy6
+
qxzk
*
gqxz6
+
qyzk
*
gqyz6
))
-
uzi
*
(
qxxk
*
gqxx7
+
qyyk
*
gqyy7
+
qzzk
*
gqzz7
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyk
*
gqxy7
+
qxzk
*
gqxz7
+
qyzk
*
gqyz7
))
debugArray[debugIndex].x = guz[1];
+
uxk
*
(
qxxi
*
gux11
+
qyyi
*
gux14
+
qzzi
*
gux16
debugArray[debugIndex].y = guz[2];
+
2.0
f
*
(
qxyi
*
gux12
+
qxzi
*
gux13
+
qyzi
*
gux15
))
debugArray[debugIndex].z = guz[3];
+
uyk
*
(
qxxi
*
guy11
+
qyyi
*
guy14
+
qzzi
*
guy16
debugArray[debugIndex].w = guz[4];
+
2.0
f
*
(
qxyi
*
guy12
+
qxzi
*
guy13
+
qyzi
*
guy15
))
+
uzk
*
(
qxxi
*
guz11
+
qyyi
*
guz14
+
qzzi
*
guz16
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyi
*
guz12
+
qxzi
*
guz13
+
qyzi
*
guz15
))
debugArray[debugIndex].x = guz[5];
+
qxxi
*
(
qxxk
*
gqxx11
+
qyyk
*
gqyy11
+
qzzk
*
gqzz11
debugArray[debugIndex].y = guz[6];
+
2.0
f
*
(
qxyk
*
gqxy11
+
qxzk
*
gqxz11
+
qyzk
*
gqyz11
))
debugArray[debugIndex].z = guz[7];
+
qyyi
*
(
qxxk
*
gqxx14
+
qyyk
*
gqyy14
+
qzzk
*
gqzz14
debugArray[debugIndex].w = guz[8];
+
2.0
f
*
(
qxyk
*
gqxy14
+
qxzk
*
gqxz14
+
qyzk
*
gqyz14
))
+
qzzi
*
(
qxxk
*
gqxx16
+
qyyk
*
gqyy16
+
qzzk
*
gqzz16
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyk
*
gqxy16
+
qxzk
*
gqxz16
+
qyzk
*
gqyz16
))
debugArray[debugIndex].x = guz[9];
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx12
+
qyyk
*
gqyy12
+
qzzk
*
gqzz12
debugArray[debugIndex].y = guz[10];
+
2.0
f
*
(
qxyk
*
gqxy12
+
qxzk
*
gqxz12
+
qyzk
*
gqyz12
))
+
qxzi
*
(
qxxk
*
gqxx13
+
qyyk
*
gqyy13
+
qzzk
*
gqzz13
debugIndex += numberOfAtoms;
+
2.0
f
*
(
qxyk
*
gqxy13
+
qxzk
*
gqxz13
+
qyzk
*
gqyz13
))
debugArray[debugIndex].x = qxxi;
+
qyzi
*
(
qxxk
*
gqxx15
+
qyyk
*
gqyy15
+
qzzk
*
gqzz15
debugArray[debugIndex].y = qyyi;
+
2.0
f
*
(
qxyk
*
gqxy15
+
qxzk
*
gqxz15
+
qyzk
*
gqyz15
)));
debugArray[debugIndex].z = qzzi;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = qxxk;
debugArray[debugIndex].y = qyyk;
debugArray[debugIndex].z = qzzk;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = qxyi;
debugArray[debugIndex].y = qxzi;
debugArray[debugIndex].z = qyzi;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = qxyk;
debugArray[debugIndex].y = qxzk;
debugArray[debugIndex].z = qyzk;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxx[1];
debugArray[debugIndex].y = gqxx[2];
debugArray[debugIndex].z = gqxx[3];
debugArray[debugIndex].w = gqxx[4];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxx[5];
debugArray[debugIndex].y = gqxx[6];
debugArray[debugIndex].z = gqxx[7];
debugArray[debugIndex].w = gqxx[8];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxx[9];
debugArray[debugIndex].y = gqxx[10];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxy[1];
debugArray[debugIndex].y = gqxy[2];
debugArray[debugIndex].z = gqxy[3];
debugArray[debugIndex].w = gqxy[4];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxy[5];
debugArray[debugIndex].y = gqxy[6];
debugArray[debugIndex].z = gqxy[7];
debugArray[debugIndex].w = gqxy[8];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxy[9];
debugArray[debugIndex].y = gqxy[10];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxz[1];
debugArray[debugIndex].y = gqxz[2];
debugArray[debugIndex].z = gqxz[3];
debugArray[debugIndex].w = gqxz[4];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxz[5];
debugArray[debugIndex].y = gqxz[6];
debugArray[debugIndex].z = gqxz[7];
debugArray[debugIndex].w = gqxz[8];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = gqxz[9];
debugArray[debugIndex].y = gqxz[10];
// float a[6][4];
// float b[5][3];
unsigned int idx1, idx2;
idx1 = 0;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = a[idx1][idx2++];
debugArray[debugIndex].y = a[idx1][idx2++];
debugArray[debugIndex].z = a[idx1][idx2++];
debugArray[debugIndex].w = a[idx1][idx2++];
idx1 = 1;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = a[idx1][idx2++];
debugArray[debugIndex].y = a[idx1][idx2++];
debugArray[debugIndex].z = a[idx1][idx2++];
debugArray[debugIndex].w = a[idx1][idx2++];
idx1 = 2;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = a[idx1][idx2++];
debugArray[debugIndex].y = a[idx1][idx2++];
debugArray[debugIndex].z = a[idx1][idx2++];
debugArray[debugIndex].w = a[idx1][idx2++];
idx1 = 3;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = a[idx1][idx2++];
debugArray[debugIndex].y = a[idx1][idx2++];
debugArray[debugIndex].z = a[idx1][idx2++];
debugArray[debugIndex].w = a[idx1][idx2++];
idx1 = 4;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = a[idx1][idx2++];
debugArray[debugIndex].y = a[idx1][idx2++];
debugArray[debugIndex].z = a[idx1][idx2++];
debugArray[debugIndex].w = a[idx1][idx2++];
idx1 = 5;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = a[idx1][idx2++];
debugArray[debugIndex].y = a[idx1][idx2++];
debugArray[debugIndex].z = a[idx1][idx2++];
debugArray[debugIndex].w = a[idx1][idx2++];
idx1 = 0;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = b[idx1][idx2++];
debugArray[debugIndex].y = b[idx1][idx2++];
debugArray[debugIndex].z = b[idx1][idx2++];
idx1 = 1;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = b[idx1][idx2++];
debugArray[debugIndex].y = b[idx1][idx2++];
debugArray[debugIndex].z = b[idx1][idx2++];
idx1 = 2;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = b[idx1][idx2++];
debugArray[debugIndex].y = b[idx1][idx2++];
debugArray[debugIndex].z = b[idx1][idx2++];
idx1 = 3;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = b[idx1][idx2++];
debugArray[debugIndex].y = b[idx1][idx2++];
debugArray[debugIndex].z = b[idx1][idx2++];
idx1 = 4;
idx2 = 0;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = b[idx1][idx2++];
debugArray[debugIndex].y = b[idx1][idx2++];
debugArray[debugIndex].z = b[idx1][idx2++];
}
#endif
#endif
ewk
=
ci
*
(
uxk
*
gux
[
1
]
+
uyk
*
guy
[
1
]
+
uzk
*
guz
[
1
])
-
ck
*
(
uxi
*
gc
[
2
]
+
uyi
*
gc
[
3
]
+
uzi
*
gc
[
4
])
+
ci
*
(
qxxk
*
gqxx
[
1
]
+
qyyk
*
gqyy
[
1
]
+
qzzk
*
gqzz
[
1
]
+
2.0
f
*
(
qxyk
*
gqxy
[
1
]
+
qxzk
*
gqxz
[
1
]
+
qyzk
*
gqyz
[
1
]))
+
ck
*
(
qxxi
*
gc
[
5
]
+
qyyi
*
gc
[
8
]
+
qzzi
*
gc
[
10
]
+
2.0
f
*
(
qxyi
*
gc
[
6
]
+
qxzi
*
gc
[
7
]
+
qyzi
*
gc
[
9
]))
-
uxi
*
(
qxxk
*
gqxx
[
2
]
+
qyyk
*
gqyy
[
2
]
+
qzzk
*
gqzz
[
2
]
+
2.0
f
*
(
qxyk
*
gqxy
[
2
]
+
qxzk
*
gqxz
[
2
]
+
qyzk
*
gqyz
[
2
]))
-
uyi
*
(
qxxk
*
gqxx
[
3
]
+
qyyk
*
gqyy
[
3
]
+
qzzk
*
gqzz
[
3
]
+
2.0
f
*
(
qxyk
*
gqxy
[
3
]
+
qxzk
*
gqxz
[
3
]
+
qyzk
*
gqyz
[
3
]))
-
uzi
*
(
qxxk
*
gqxx
[
4
]
+
qyyk
*
gqyy
[
4
]
+
qzzk
*
gqzz
[
4
]
+
2.0
f
*
(
qxyk
*
gqxy
[
4
]
+
qxzk
*
gqxz
[
4
]
+
qyzk
*
gqyz
[
4
]))
+
uxk
*
(
qxxi
*
gux
[
5
]
+
qyyi
*
gux
[
8
]
+
qzzi
*
gux
[
10
]
+
2.0
f
*
(
qxyi
*
gux
[
6
]
+
qxzi
*
gux
[
7
]
+
qyzi
*
gux
[
9
]))
+
uyk
*
(
qxxi
*
guy
[
5
]
+
qyyi
*
guy
[
8
]
+
qzzi
*
guy
[
10
]
+
2.0
f
*
(
qxyi
*
guy
[
6
]
+
qxzi
*
guy
[
7
]
+
qyzi
*
guy
[
9
]))
+
uzk
*
(
qxxi
*
guz
[
5
]
+
qyyi
*
guz
[
8
]
+
qzzi
*
guz
[
10
]
+
2.0
f
*
(
qxyi
*
guz
[
6
]
+
qxzi
*
guz
[
7
]
+
qyzi
*
guz
[
9
]))
+
qxxi
*
(
qxxk
*
gqxx
[
5
]
+
qyyk
*
gqyy
[
5
]
+
qzzk
*
gqzz
[
5
]
+
2.0
f
*
(
qxyk
*
gqxy
[
5
]
+
qxzk
*
gqxz
[
5
]
+
qyzk
*
gqyz
[
5
]))
+
qyyi
*
(
qxxk
*
gqxx
[
8
]
+
qyyk
*
gqyy
[
8
]
+
qzzk
*
gqzz
[
8
]
+
2.0
f
*
(
qxyk
*
gqxy
[
8
]
+
qxzk
*
gqxz
[
8
]
+
qyzk
*
gqyz
[
8
]))
+
qzzi
*
(
qxxk
*
gqxx
[
10
]
+
qyyk
*
gqyy
[
10
]
+
qzzk
*
gqzz
[
10
]
+
2.0
f
*
(
qxyk
*
gqxy
[
10
]
+
qxzk
*
gqxz
[
10
]
+
qyzk
*
gqyz
[
10
]))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx
[
6
]
+
qyyk
*
gqyy
[
6
]
+
qzzk
*
gqzz
[
6
]
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxz
[
6
]
+
qyzk
*
gqyz
[
6
]))
+
qxzi
*
(
qxxk
*
gqxx
[
7
]
+
qyyk
*
gqyy
[
7
]
+
qzzk
*
gqzz
[
7
]
+
2.0
f
*
(
qxyk
*
gqxy
[
7
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqyz
[
7
]))
+
qyzi
*
(
qxxk
*
gqxx
[
9
]
+
qyyk
*
gqyy
[
9
]
+
qzzk
*
gqzz
[
9
]
+
2.0
f
*
(
qxyk
*
gqxy
[
9
]
+
qxzk
*
gqxz
[
9
]
+
qyzk
*
gqyz
[
9
])));
desymdx
=
ci
*
ck
*
gc
[
2
]
-
(
uxi
*
(
uxk
*
gux
[
5
]
+
uyk
*
guy
[
5
]
+
uzk
*
guz
[
5
])
+
uyi
*
(
uxk
*
gux
[
6
]
+
uyk
*
guy
[
6
]
+
uzk
*
guz
[
6
])
+
uzi
*
(
uxk
*
gux
[
7
]
+
uyk
*
guy
[
7
]
+
uzk
*
guz
[
7
]));
dewidx
=
ci
*
(
uxk
*
gc
[
5
]
+
uyk
*
gc
[
6
]
+
uzk
*
gc
[
7
])
-
ck
*
(
uxi
*
gux
[
2
]
+
uyi
*
guy
[
2
]
+
uzi
*
guz
[
2
])
+
ci
*
(
qxxk
*
gc
[
11
]
+
qyyk
*
gc
[
14
]
+
qzzk
*
gc
[
16
]
+
2.0
f
*
(
qxyk
*
gc
[
12
]
+
qxzk
*
gc
[
13
]
+
qyzk
*
gc
[
15
]))
+
ck
*
(
qxxi
*
gqxx
[
2
]
+
qyyi
*
gqyy
[
2
]
+
qzzi
*
gqzz
[
2
]
+
2.0
f
*
(
qxyi
*
gqxy
[
2
]
+
qxzi
*
gqxz
[
2
]
+
qyzi
*
gqyz
[
2
]))
-
uxi
*
(
qxxk
*
gux
[
11
]
+
qyyk
*
gux
[
14
]
+
qzzk
*
gux
[
16
]
+
2.0
f
*
(
qxyk
*
gux
[
12
]
+
qxzk
*
gux
[
13
]
+
qyzk
*
gux
[
15
]))
-
uyi
*
(
qxxk
*
guy
[
11
]
+
qyyk
*
guy
[
14
]
+
qzzk
*
guy
[
16
]
+
2.0
f
*
(
qxyk
*
guy
[
12
]
+
qxzk
*
guy
[
13
]
+
qyzk
*
guy
[
15
]))
-
uzi
*
(
qxxk
*
guz
[
11
]
+
qyyk
*
guz
[
14
]
+
qzzk
*
guz
[
16
]
+
2.0
f
*
(
qxyk
*
guz
[
12
]
+
qxzk
*
guz
[
13
]
+
qyzk
*
guz
[
15
]))
+
uxk
*
(
qxxi
*
gqxx
[
5
]
+
qyyi
*
gqyy
[
5
]
+
qzzi
*
gqzz
[
5
]
+
2.0
f
*
(
qxyi
*
gqxy
[
5
]
+
qxzi
*
gqxz
[
5
]
+
qyzi
*
gqyz
[
5
]))
+
uyk
*
(
qxxi
*
gqxx
[
6
]
+
qyyi
*
gqyy
[
6
]
+
qzzi
*
gqzz
[
6
]
+
2.0
f
*
(
qxyi
*
gqxy
[
6
]
+
qxzi
*
gqxz
[
6
]
+
qyzi
*
gqyz
[
6
]))
+
uzk
*
(
qxxi
*
gqxx
[
7
]
+
qyyi
*
gqyy
[
7
]
+
qzzi
*
gqzz
[
7
]
+
2.0
f
*
(
qxyi
*
gqxy
[
7
]
+
qxzi
*
gqxz
[
7
]
+
qyzi
*
gqyz
[
7
]))
+
qxxi
*
(
qxxk
*
gqxx
[
11
]
+
qyyk
*
gqxx
[
14
]
+
qzzk
*
gqxx
[
16
]
+
2.0
f
*
(
qxyk
*
gqxx
[
12
]
+
qxzk
*
gqxx
[
13
]
+
qyzk
*
gqxx
[
15
]))
+
qyyi
*
(
qxxk
*
gqyy
[
11
]
+
qyyk
*
gqyy
[
14
]
+
qzzk
*
gqyy
[
16
]
+
2.0
f
*
(
qxyk
*
gqyy
[
12
]
+
qxzk
*
gqyy
[
13
]
+
qyzk
*
gqyy
[
15
]))
+
qzzi
*
(
qxxk
*
gqzz
[
11
]
+
qyyk
*
gqzz
[
14
]
+
qzzk
*
gqzz
[
16
]
+
2.0
f
*
(
qxyk
*
gqzz
[
12
]
+
qxzk
*
gqzz
[
13
]
+
qyzk
*
gqzz
[
15
]))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy
[
11
]
+
qyyk
*
gqxy
[
14
]
+
qzzk
*
gqxy
[
16
]
+
2.0
f
*
(
qxyk
*
gqxy
[
12
]
+
qxzk
*
gqxy
[
13
]
+
qyzk
*
gqxy
[
15
]))
+
qxzi
*
(
qxxk
*
gqxz
[
11
]
+
qyyk
*
gqxz
[
14
]
+
qzzk
*
gqxz
[
16
]
+
2.0
f
*
(
qxyk
*
gqxz
[
12
]
+
qxzk
*
gqxz
[
13
]
+
qyzk
*
gqxz
[
15
]))
+
qyzi
*
(
qxxk
*
gqyz
[
11
]
+
qyyk
*
gqyz
[
14
]
+
qzzk
*
gqyz
[
16
]
+
2.0
f
*
(
qxyk
*
gqyz
[
12
]
+
qxzk
*
gqyz
[
13
]
+
qyzk
*
gqyz
[
15
])));
dewkdx
=
ci
*
(
uxk
*
gux
[
2
]
+
uyk
*
guy
[
2
]
+
uzk
*
guz
[
2
])
-
ck
*
(
uxi
*
gc
[
5
]
+
uyi
*
gc
[
6
]
+
uzi
*
gc
[
7
])
+
ci
*
(
qxxk
*
gqxx
[
2
]
+
qyyk
*
gqyy
[
2
]
+
qzzk
*
gqzz
[
2
]
+
2.0
f
*
(
qxyk
*
gqxy
[
2
]
+
qxzk
*
gqxz
[
2
]
+
qyzk
*
gqyz
[
2
]))
+
ck
*
(
qxxi
*
gc
[
11
]
+
qyyi
*
gc
[
14
]
+
qzzi
*
gc
[
16
]
+
2.0
f
*
(
qxyi
*
gc
[
12
]
+
qxzi
*
gc
[
13
]
+
qyzi
*
gc
[
15
]))
-
uxi
*
(
qxxk
*
gqxx
[
5
]
+
qyyk
*
gqyy
[
5
]
+
qzzk
*
gqzz
[
5
]
+
2.0
f
*
(
qxyk
*
gqxy
[
5
]
+
qxzk
*
gqxz
[
5
]
+
qyzk
*
gqyz
[
5
]))
-
uyi
*
(
qxxk
*
gqxx
[
6
]
+
qyyk
*
gqyy
[
6
]
+
qzzk
*
gqzz
[
6
]
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxz
[
6
]
+
qyzk
*
gqyz
[
6
]))
-
uzi
*
(
qxxk
*
gqxx
[
7
]
+
qyyk
*
gqyy
[
7
]
+
qzzk
*
gqzz
[
7
]
+
2.0
f
*
(
qxyk
*
gqxy
[
7
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqyz
[
7
]))
+
uxk
*
(
qxxi
*
gux
[
11
]
+
qyyi
*
gux
[
14
]
+
qzzi
*
gux
[
16
]
+
2.0
f
*
(
qxyi
*
gux
[
12
]
+
qxzi
*
gux
[
13
]
+
qyzi
*
gux
[
15
]))
+
uyk
*
(
qxxi
*
guy
[
11
]
+
qyyi
*
guy
[
14
]
+
qzzi
*
guy
[
16
]
+
2.0
f
*
(
qxyi
*
guy
[
12
]
+
qxzi
*
guy
[
13
]
+
qyzi
*
guy
[
15
]))
+
uzk
*
(
qxxi
*
guz
[
11
]
+
qyyi
*
guz
[
14
]
+
qzzi
*
guz
[
16
]
+
2.0
f
*
(
qxyi
*
guz
[
12
]
+
qxzi
*
guz
[
13
]
+
qyzi
*
guz
[
15
]))
+
qxxi
*
(
qxxk
*
gqxx
[
11
]
+
qyyk
*
gqyy
[
11
]
+
qzzk
*
gqzz
[
11
]
+
2.0
f
*
(
qxyk
*
gqxy
[
11
]
+
qxzk
*
gqxz
[
11
]
+
qyzk
*
gqyz
[
11
]))
+
qyyi
*
(
qxxk
*
gqxx
[
14
]
+
qyyk
*
gqyy
[
14
]
+
qzzk
*
gqzz
[
14
]
+
2.0
f
*
(
qxyk
*
gqxy
[
14
]
+
qxzk
*
gqxz
[
14
]
+
qyzk
*
gqyz
[
14
]))
+
qzzi
*
(
qxxk
*
gqxx
[
16
]
+
qyyk
*
gqyy
[
16
]
+
qzzk
*
gqzz
[
16
]
+
2.0
f
*
(
qxyk
*
gqxy
[
16
]
+
qxzk
*
gqxz
[
16
]
+
qyzk
*
gqyz
[
16
]))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx
[
12
]
+
qyyk
*
gqyy
[
12
]
+
qzzk
*
gqzz
[
12
]
+
2.0
f
*
(
qxyk
*
gqxy
[
12
]
+
qxzk
*
gqxz
[
12
]
+
qyzk
*
gqyz
[
12
]))
+
qxzi
*
(
qxxk
*
gqxx
[
13
]
+
qyyk
*
gqyy
[
13
]
+
qzzk
*
gqzz
[
13
]
+
2.0
f
*
(
qxyk
*
gqxy
[
13
]
+
qxzk
*
gqxz
[
13
]
+
qyzk
*
gqyz
[
13
]))
+
qyzi
*
(
qxxk
*
gqxx
[
15
]
+
qyyk
*
gqyy
[
15
]
+
qzzk
*
gqzz
[
15
]
+
2.0
f
*
(
qxyk
*
gqxy
[
15
]
+
qxzk
*
gqxz
[
15
]
+
qyzk
*
gqyz
[
15
])));
dedx
=
desymdx
+
0.5
f
*
(
dewidx
+
dewkdx
);
dedx
=
desymdx
+
0.5
f
*
(
dewidx
+
dewkdx
);
desymdy
=
ci
*
ck
*
gc
[
3
]
desymdy
=
ci
*
ck
*
gc
3
-
(
uxi
*
(
uxk
*
gux
[
6
]
+
uyk
*
guy
[
6
]
+
uzk
*
guz
[
6
]
)
-
(
uxi
*
(
uxk
*
gux
6
+
uyk
*
guy
6
+
uzk
*
guz
6
)
+
uyi
*
(
uxk
*
gux
[
8
]
+
uyk
*
guy
[
8
]
+
uzk
*
guz
[
8
]
)
+
uyi
*
(
uxk
*
gux
8
+
uyk
*
guy
8
+
uzk
*
guz
8
)
+
uzi
*
(
uxk
*
gux
[
9
]
+
uyk
*
guy
[
9
]
+
uzk
*
guz
[
9
]
));
+
uzi
*
(
uxk
*
gux
9
+
uyk
*
guy
9
+
uzk
*
guz
9
));
dewidy
=
ci
*
(
uxk
*
gc
[
6
]
+
uyk
*
gc
[
8
]
+
uzk
*
gc
[
9
]
)
dewidy
=
ci
*
(
uxk
*
gc
6
+
uyk
*
gc
8
+
uzk
*
gc
9
)
-
ck
*
(
uxi
*
gux
[
3
]
+
uyi
*
guy
[
3
]
+
uzi
*
guz
[
3
]
)
-
ck
*
(
uxi
*
gux
3
+
uyi
*
guy
3
+
uzi
*
guz
3
)
+
ci
*
(
qxxk
*
gc
[
12
]
+
qyyk
*
gc
[
17
]
+
qzzk
*
gc
[
19
]
+
ci
*
(
qxxk
*
gc12
+
qyyk
*
gc17
+
qzzk
*
gc19
+
2.0
f
*
(
qxyk
*
gc
[
14
]
+
qxzk
*
gc
[
15
]
+
qyzk
*
gc
[
18
]
))
+
2.0
f
*
(
qxyk
*
gc14
+
qxzk
*
gc15
+
qyzk
*
gc18
))
+
ck
*
(
qxxi
*
gqxx
[
3
]
+
qyyi
*
gqyy
[
3
]
+
qzzi
*
gqzz
[
3
]
+
ck
*
(
qxxi
*
gqxx
3
+
qyyi
*
gqyy
3
+
qzzi
*
gqzz
3
+
2.0
f
*
(
qxyi
*
gqxy
[
3
]
+
qxzi
*
gqxz
[
3
]
+
qyzi
*
gqyz
[
3
]
))
+
2.0
f
*
(
qxyi
*
gqxy
3
+
qxzi
*
gqxz
3
+
qyzi
*
gqyz
3
))
-
uxi
*
(
qxxk
*
gux
[
12
]
+
qyyk
*
gux
[
17
]
+
qzzk
*
gux
[
19
]
-
uxi
*
(
qxxk
*
gux12
+
qyyk
*
gux17
+
qzzk
*
gux19
+
2.0
f
*
(
qxyk
*
gux
[
14
]
+
qxzk
*
gux
[
15
]
+
qyzk
*
gux
[
18
]
))
+
2.0
f
*
(
qxyk
*
gux14
+
qxzk
*
gux15
+
qyzk
*
gux18
))
-
uyi
*
(
qxxk
*
guy
[
12
]
+
qyyk
*
guy
[
17
]
+
qzzk
*
guy
[
19
]
-
uyi
*
(
qxxk
*
guy12
+
qyyk
*
guy17
+
qzzk
*
guy19
+
2.0
f
*
(
qxyk
*
guy
[
14
]
+
qxzk
*
guy
[
15
]
+
qyzk
*
guy
[
18
]
))
+
2.0
f
*
(
qxyk
*
guy14
+
qxzk
*
guy15
+
qyzk
*
guy18
))
-
uzi
*
(
qxxk
*
guz
[
12
]
+
qyyk
*
guz
[
17
]
+
qzzk
*
guz
[
19
]
-
uzi
*
(
qxxk
*
guz12
+
qyyk
*
guz17
+
qzzk
*
guz19
+
2.0
f
*
(
qxyk
*
guz
[
14
]
+
qxzk
*
guz
[
15
]
+
qyzk
*
guz
[
18
]
))
+
2.0
f
*
(
qxyk
*
guz14
+
qxzk
*
guz15
+
qyzk
*
guz18
))
+
uxk
*
(
qxxi
*
gqxx
[
6
]
+
qyyi
*
gqyy
[
6
]
+
qzzi
*
gqzz
[
6
]
+
uxk
*
(
qxxi
*
gqxx
6
+
qyyi
*
gqyy
6
+
qzzi
*
gqzz
6
+
2.0
f
*
(
qxyi
*
gqxy
[
6
]
+
qxzi
*
gqxz
[
6
]
+
qyzi
*
gqyz
[
6
]
))
+
2.0
f
*
(
qxyi
*
gqxy
6
+
qxzi
*
gqxz
6
+
qyzi
*
gqyz
6
))
+
uyk
*
(
qxxi
*
gqxx
[
8
]
+
qyyi
*
gqyy
[
8
]
+
qzzi
*
gqzz
[
8
]
+
uyk
*
(
qxxi
*
gqxx
8
+
qyyi
*
gqyy
8
+
qzzi
*
gqzz
8
+
2.0
f
*
(
qxyi
*
gqxy
[
8
]
+
qxzi
*
gqxz
[
8
]
+
qyzi
*
gqyz
[
8
]
))
+
2.0
f
*
(
qxyi
*
gqxy
8
+
qxzi
*
gqxz
8
+
qyzi
*
gqyz
8
))
+
uzk
*
(
qxxi
*
gqxx
[
9
]
+
qyyi
*
gqyy
[
9
]
+
qzzi
*
gqzz
[
9
]
+
uzk
*
(
qxxi
*
gqxx
9
+
qyyi
*
gqyy
9
+
qzzi
*
gqzz
9
+
2.0
f
*
(
qxyi
*
gqxy
[
9
]
+
qxzi
*
gqxz
[
9
]
+
qyzi
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyi
*
gqxy
9
+
qxzi
*
gqxz
9
+
qyzi
*
gqyz
9
))
+
qxxi
*
(
qxxk
*
gqxx
[
12
]
+
qyyk
*
gqxx
[
17
]
+
qzzk
*
gqxx
[
19
]
+
qxxi
*
(
qxxk
*
gqxx12
+
qyyk
*
gqxx17
+
qzzk
*
gqxx19
+
2.0
f
*
(
qxyk
*
gqxx
[
14
]
+
qxzk
*
gqxx
[
15
]
+
qyzk
*
gqxx
[
18
]
))
+
2.0
f
*
(
qxyk
*
gqxx14
+
qxzk
*
gqxx15
+
qyzk
*
gqxx18
))
+
qyyi
*
(
qxxk
*
gqyy
[
12
]
+
qyyk
*
gqyy
[
17
]
+
qzzk
*
gqyy
[
19
]
+
qyyi
*
(
qxxk
*
gqyy12
+
qyyk
*
gqyy17
+
qzzk
*
gqyy19
+
2.0
f
*
(
qxyk
*
gqyy
[
14
]
+
qxzk
*
gqyy
[
15
]
+
qyzk
*
gqyy
[
18
]
))
+
2.0
f
*
(
qxyk
*
gqyy14
+
qxzk
*
gqyy15
+
qyzk
*
gqyy18
))
+
qzzi
*
(
qxxk
*
gqzz
[
12
]
+
qyyk
*
gqzz
[
17
]
+
qzzk
*
gqzz
[
19
]
+
qzzi
*
(
qxxk
*
gqzz12
+
qyyk
*
gqzz17
+
qzzk
*
gqzz19
+
2.0
f
*
(
qxyk
*
gqzz
[
14
]
+
qxzk
*
gqzz
[
15
]
+
qyzk
*
gqzz
[
18
]
))
+
2.0
f
*
(
qxyk
*
gqzz14
+
qxzk
*
gqzz15
+
qyzk
*
gqzz18
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy
[
12
]
+
qyyk
*
gqxy
[
17
]
+
qzzk
*
gqxy
[
19
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy12
+
qyyk
*
gqxy17
+
qzzk
*
gqxy19
+
2.0
f
*
(
qxyk
*
gqxy
[
14
]
+
qxzk
*
gqxy
[
15
]
+
qyzk
*
gqxy
[
18
]
))
+
2.0
f
*
(
qxyk
*
gqxy14
+
qxzk
*
gqxy15
+
qyzk
*
gqxy18
))
+
qxzi
*
(
qxxk
*
gqxz
[
12
]
+
qyyk
*
gqxz
[
17
]
+
qzzk
*
gqxz
[
19
]
+
qxzi
*
(
qxxk
*
gqxz12
+
qyyk
*
gqxz17
+
qzzk
*
gqxz19
+
2.0
f
*
(
qxyk
*
gqxz
[
14
]
+
qxzk
*
gqxz
[
15
]
+
qyzk
*
gqxz
[
18
]
))
+
2.0
f
*
(
qxyk
*
gqxz14
+
qxzk
*
gqxz15
+
qyzk
*
gqxz18
))
+
qyzi
*
(
qxxk
*
gqyz
[
12
]
+
qyyk
*
gqyz
[
17
]
+
qzzk
*
gqyz
[
19
]
+
qyzi
*
(
qxxk
*
gqyz12
+
qyyk
*
gqyz17
+
qzzk
*
gqyz19
+
2.0
f
*
(
qxyk
*
gqyz
[
14
]
+
qxzk
*
gqyz
[
15
]
+
qyzk
*
gqyz
[
18
]
)));
+
2.0
f
*
(
qxyk
*
gqyz14
+
qxzk
*
gqyz15
+
qyzk
*
gqyz18
)));
dewkdy
=
ci
*
(
uxk
*
gux
[
3
]
+
uyk
*
guy
[
3
]
+
uzk
*
guz
[
3
]
)
dewkdy
=
ci
*
(
uxk
*
gux
3
+
uyk
*
guy
3
+
uzk
*
guz
3
)
-
ck
*
(
uxi
*
gc
[
6
]
+
uyi
*
gc
[
8
]
+
uzi
*
gc
[
9
]
)
-
ck
*
(
uxi
*
gc
6
+
uyi
*
gc
8
+
uzi
*
gc
9
)
+
ci
*
(
qxxk
*
gqxx
[
3
]
+
qyyk
*
gqyy
[
3
]
+
qzzk
*
gqzz
[
3
]
+
ci
*
(
qxxk
*
gqxx
3
+
qyyk
*
gqyy
3
+
qzzk
*
gqzz
3
+
2.0
f
*
(
qxyk
*
gqxy
[
3
]
+
qxzk
*
gqxz
[
3
]
+
qyzk
*
gqyz
[
3
]
))
+
2.0
f
*
(
qxyk
*
gqxy
3
+
qxzk
*
gqxz
3
+
qyzk
*
gqyz
3
))
+
ck
*
(
qxxi
*
gc
[
12
]
+
qyyi
*
gc
[
17
]
+
qzzi
*
gc
[
19
]
+
ck
*
(
qxxi
*
gc12
+
qyyi
*
gc17
+
qzzi
*
gc19
+
2.0
f
*
(
qxyi
*
gc
[
14
]
+
qxzi
*
gc
[
15
]
+
qyzi
*
gc
[
18
]
))
+
2.0
f
*
(
qxyi
*
gc14
+
qxzi
*
gc15
+
qyzi
*
gc18
))
-
uxi
*
(
qxxk
*
gqxx
[
6
]
+
qyyk
*
gqyy
[
6
]
+
qzzk
*
gqzz
[
6
]
-
uxi
*
(
qxxk
*
gqxx
6
+
qyyk
*
gqyy
6
+
qzzk
*
gqzz
6
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxz
[
6
]
+
qyzk
*
gqyz
[
6
]
))
+
2.0
f
*
(
qxyk
*
gqxy
6
+
qxzk
*
gqxz
6
+
qyzk
*
gqyz
6
))
-
uyi
*
(
qxxk
*
gqxx
[
8
]
+
qyyk
*
gqyy
[
8
]
+
qzzk
*
gqzz
[
8
]
-
uyi
*
(
qxxk
*
gqxx
8
+
qyyk
*
gqyy
8
+
qzzk
*
gqzz
8
+
2.0
f
*
(
qxyk
*
gqxy
[
8
]
+
qxzk
*
gqxz
[
8
]
+
qyzk
*
gqyz
[
8
]
))
+
2.0
f
*
(
qxyk
*
gqxy
8
+
qxzk
*
gqxz
8
+
qyzk
*
gqyz
8
))
-
uzi
*
(
qxxk
*
gqxx
[
9
]
+
qyyk
*
gqyy
[
9
]
+
qzzk
*
gqzz
[
9
]
-
uzi
*
(
qxxk
*
gqxx
9
+
qyyk
*
gqyy
9
+
qzzk
*
gqzz
9
+
2.0
f
*
(
qxyk
*
gqxy
[
9
]
+
qxzk
*
gqxz
[
9
]
+
qyzk
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyk
*
gqxy
9
+
qxzk
*
gqxz
9
+
qyzk
*
gqyz
9
))
+
uxk
*
(
qxxi
*
gux
[
12
]
+
qyyi
*
gux
[
17
]
+
qzzi
*
gux
[
19
]
+
uxk
*
(
qxxi
*
gux12
+
qyyi
*
gux17
+
qzzi
*
gux19
+
2.0
f
*
(
qxyi
*
gux
[
14
]
+
qxzi
*
gux
[
15
]
+
qyzi
*
gux
[
18
]
))
+
2.0
f
*
(
qxyi
*
gux14
+
qxzi
*
gux15
+
qyzi
*
gux18
))
+
uyk
*
(
qxxi
*
guy
[
12
]
+
qyyi
*
guy
[
17
]
+
qzzi
*
guy
[
19
]
+
uyk
*
(
qxxi
*
guy12
+
qyyi
*
guy17
+
qzzi
*
guy19
+
2.0
f
*
(
qxyi
*
guy
[
14
]
+
qxzi
*
guy
[
15
]
+
qyzi
*
guy
[
18
]
))
+
2.0
f
*
(
qxyi
*
guy14
+
qxzi
*
guy15
+
qyzi
*
guy18
))
+
uzk
*
(
qxxi
*
guz
[
12
]
+
qyyi
*
guz
[
17
]
+
qzzi
*
guz
[
19
]
+
uzk
*
(
qxxi
*
guz12
+
qyyi
*
guz17
+
qzzi
*
guz19
+
2.0
f
*
(
qxyi
*
guz
[
14
]
+
qxzi
*
guz
[
15
]
+
qyzi
*
guz
[
18
]
))
+
2.0
f
*
(
qxyi
*
guz14
+
qxzi
*
guz15
+
qyzi
*
guz18
))
+
qxxi
*
(
qxxk
*
gqxx
[
12
]
+
qyyk
*
gqyy
[
12
]
+
qzzk
*
gqzz
[
12
]
+
qxxi
*
(
qxxk
*
gqxx12
+
qyyk
*
gqyy12
+
qzzk
*
gqzz12
+
2.0
f
*
(
qxyk
*
gqxy
[
12
]
+
qxzk
*
gqxz
[
12
]
+
qyzk
*
gqyz
[
12
]
))
+
2.0
f
*
(
qxyk
*
gqxy12
+
qxzk
*
gqxz12
+
qyzk
*
gqyz12
))
+
qyyi
*
(
qxxk
*
gqxx
[
17
]
+
qyyk
*
gqyy
[
17
]
+
qzzk
*
gqzz
[
17
]
+
qyyi
*
(
qxxk
*
gqxx17
+
qyyk
*
gqyy17
+
qzzk
*
gqzz17
+
2.0
f
*
(
qxyk
*
gqxy
[
17
]
+
qxzk
*
gqxz
[
17
]
+
qyzk
*
gqyz
[
17
]
))
+
2.0
f
*
(
qxyk
*
gqxy17
+
qxzk
*
gqxz17
+
qyzk
*
gqyz17
))
+
qzzi
*
(
qxxk
*
gqxx
[
19
]
+
qyyk
*
gqyy
[
19
]
+
qzzk
*
gqzz
[
19
]
+
qzzi
*
(
qxxk
*
gqxx19
+
qyyk
*
gqyy19
+
qzzk
*
gqzz19
+
2.0
f
*
(
qxyk
*
gqxy
[
19
]
+
qxzk
*
gqxz
[
19
]
+
qyzk
*
gqyz
[
19
]
))
+
2.0
f
*
(
qxyk
*
gqxy19
+
qxzk
*
gqxz19
+
qyzk
*
gqyz19
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx
[
14
]
+
qyyk
*
gqyy
[
14
]
+
qzzk
*
gqzz
[
14
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx14
+
qyyk
*
gqyy14
+
qzzk
*
gqzz14
+
2.0
f
*
(
qxyk
*
gqxy
[
14
]
+
qxzk
*
gqxz
[
14
]
+
qyzk
*
gqyz
[
14
]
))
+
2.0
f
*
(
qxyk
*
gqxy14
+
qxzk
*
gqxz14
+
qyzk
*
gqyz14
))
+
qxzi
*
(
qxxk
*
gqxx
[
15
]
+
qyyk
*
gqyy
[
15
]
+
qzzk
*
gqzz
[
15
]
+
qxzi
*
(
qxxk
*
gqxx15
+
qyyk
*
gqyy15
+
qzzk
*
gqzz15
+
2.0
f
*
(
qxyk
*
gqxy
[
15
]
+
qxzk
*
gqxz
[
15
]
+
qyzk
*
gqyz
[
15
]
))
+
2.0
f
*
(
qxyk
*
gqxy15
+
qxzk
*
gqxz15
+
qyzk
*
gqyz15
))
+
qyzi
*
(
qxxk
*
gqxx
[
18
]
+
qyyk
*
gqyy
[
18
]
+
qzzk
*
gqzz
[
18
]
+
qyzi
*
(
qxxk
*
gqxx18
+
qyyk
*
gqyy18
+
qzzk
*
gqzz18
+
2.0
f
*
(
qxyk
*
gqxy
[
18
]
+
qxzk
*
gqxz
[
18
]
+
qyzk
*
gqyz
[
18
]
)));
+
2.0
f
*
(
qxyk
*
gqxy18
+
qxzk
*
gqxz18
+
qyzk
*
gqyz18
)));
dedy
=
desymdy
+
0.5
f
*
(
dewidy
+
dewkdy
);
dedy
=
desymdy
+
0.5
f
*
(
dewidy
+
dewkdy
);
desymdz
=
ci
*
ck
*
gc
[
4
]
desymdz
=
ci
*
ck
*
gc
4
-
(
uxi
*
(
uxk
*
gux
[
7
]
+
uyk
*
guy
[
7
]
+
uzk
*
guz
[
7
]
)
-
(
uxi
*
(
uxk
*
gux
7
+
uyk
*
guy
7
+
uzk
*
guz
7
)
+
uyi
*
(
uxk
*
gux
[
9
]
+
uyk
*
guy
[
9
]
+
uzk
*
guz
[
9
]
)
+
uyi
*
(
uxk
*
gux
9
+
uyk
*
guy
9
+
uzk
*
guz
9
)
+
uzi
*
(
uxk
*
gux
[
10
]
+
uyk
*
guy
[
10
]
+
uzk
*
guz
[
10
]
));
+
uzi
*
(
uxk
*
gux10
+
uyk
*
guy10
+
uzk
*
guz10
));
dewidz
=
ci
*
(
uxk
*
gc
[
7
]
+
uyk
*
gc
[
9
]
+
uzk
*
gc
[
10
]
)
dewidz
=
ci
*
(
uxk
*
gc
7
+
uyk
*
gc
9
+
uzk
*
gc10
)
-
ck
*
(
uxi
*
gux
[
4
]
+
uyi
*
guy
[
4
]
+
uzi
*
guz
[
4
]
)
-
ck
*
(
uxi
*
gux
4
+
uyi
*
guy
4
+
uzi
*
guz
4
)
+
ci
*
(
qxxk
*
gc
[
13
]
+
qyyk
*
gc
[
18
]
+
qzzk
*
gc
[
20
]
+
ci
*
(
qxxk
*
gc13
+
qyyk
*
gc18
+
qzzk
*
gc20
+
2.0
f
*
(
qxyk
*
gc
[
15
]
+
qxzk
*
gc
[
16
]
+
qyzk
*
gc
[
19
]
))
+
2.0
f
*
(
qxyk
*
gc15
+
qxzk
*
gc16
+
qyzk
*
gc19
))
+
ck
*
(
qxxi
*
gqxx
[
4
]
+
qyyi
*
gqyy
[
4
]
+
qzzi
*
gqzz
[
4
]
+
ck
*
(
qxxi
*
gqxx
4
+
qyyi
*
gqyy
4
+
qzzi
*
gqzz
4
+
2.0
f
*
(
qxyi
*
gqxy
[
4
]
+
qxzi
*
gqxz
[
4
]
+
qyzi
*
gqyz
[
4
]
))
+
2.0
f
*
(
qxyi
*
gqxy
4
+
qxzi
*
gqxz
4
+
qyzi
*
gqyz
4
))
-
uxi
*
(
qxxk
*
gux
[
13
]
+
qyyk
*
gux
[
18
]
+
qzzk
*
gux
[
20
]
-
uxi
*
(
qxxk
*
gux13
+
qyyk
*
gux18
+
qzzk
*
gux20
+
2.0
f
*
(
qxyk
*
gux
[
15
]
+
qxzk
*
gux
[
16
]
+
qyzk
*
gux
[
19
]
))
+
2.0
f
*
(
qxyk
*
gux15
+
qxzk
*
gux16
+
qyzk
*
gux19
))
-
uyi
*
(
qxxk
*
guy
[
13
]
+
qyyk
*
guy
[
18
]
+
qzzk
*
guy
[
20
]
-
uyi
*
(
qxxk
*
guy13
+
qyyk
*
guy18
+
qzzk
*
guy20
+
2.0
f
*
(
qxyk
*
guy
[
15
]
+
qxzk
*
guy
[
16
]
+
qyzk
*
guy
[
19
]
))
+
2.0
f
*
(
qxyk
*
guy15
+
qxzk
*
guy16
+
qyzk
*
guy19
))
-
uzi
*
(
qxxk
*
guz
[
13
]
+
qyyk
*
guz
[
18
]
+
qzzk
*
guz
[
20
]
-
uzi
*
(
qxxk
*
guz13
+
qyyk
*
guz18
+
qzzk
*
guz20
+
2.0
f
*
(
qxyk
*
guz
[
15
]
+
qxzk
*
guz
[
16
]
+
qyzk
*
guz
[
19
]
))
+
2.0
f
*
(
qxyk
*
guz15
+
qxzk
*
guz16
+
qyzk
*
guz19
))
+
uxk
*
(
qxxi
*
gqxx
[
7
]
+
qyyi
*
gqyy
[
7
]
+
qzzi
*
gqzz
[
7
]
+
uxk
*
(
qxxi
*
gqxx
7
+
qyyi
*
gqyy
7
+
qzzi
*
gqzz
7
+
2.0
f
*
(
qxyi
*
gqxy
[
7
]
+
qxzi
*
gqxz
[
7
]
+
qyzi
*
gqyz
[
7
]
))
+
2.0
f
*
(
qxyi
*
gqxy
7
+
qxzi
*
gqxz
7
+
qyzi
*
gqyz
7
))
+
uyk
*
(
qxxi
*
gqxx
[
9
]
+
qyyi
*
gqyy
[
9
]
+
qzzi
*
gqzz
[
9
]
+
uyk
*
(
qxxi
*
gqxx
9
+
qyyi
*
gqyy
9
+
qzzi
*
gqzz
9
+
2.0
f
*
(
qxyi
*
gqxy
[
9
]
+
qxzi
*
gqxz
[
9
]
+
qyzi
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyi
*
gqxy
9
+
qxzi
*
gqxz
9
+
qyzi
*
gqyz
9
))
+
uzk
*
(
qxxi
*
gqxx
[
10
]
+
qyyi
*
gqyy
[
10
]
+
qzzi
*
gqzz
[
10
]
+
uzk
*
(
qxxi
*
gqxx10
+
qyyi
*
gqyy10
+
qzzi
*
gqzz10
+
2.0
f
*
(
qxyi
*
gqxy
[
10
]
+
qxzi
*
gqxz
[
10
]
+
qyzi
*
gqyz
[
10
]
))
+
2.0
f
*
(
qxyi
*
gqxy10
+
qxzi
*
gqxz10
+
qyzi
*
gqyz10
))
+
qxxi
*
(
qxxk
*
gqxx
[
13
]
+
qyyk
*
gqxx
[
18
]
+
qzzk
*
gqxx
[
20
]
+
qxxi
*
(
qxxk
*
gqxx13
+
qyyk
*
gqxx18
+
qzzk
*
gqxx20
+
2.0
f
*
(
qxyk
*
gqxx
[
15
]
+
qxzk
*
gqxx
[
16
]
+
qyzk
*
gqxx
[
19
]
))
+
2.0
f
*
(
qxyk
*
gqxx15
+
qxzk
*
gqxx16
+
qyzk
*
gqxx19
))
+
qyyi
*
(
qxxk
*
gqyy
[
13
]
+
qyyk
*
gqyy
[
18
]
+
qzzk
*
gqyy
[
20
]
+
qyyi
*
(
qxxk
*
gqyy13
+
qyyk
*
gqyy18
+
qzzk
*
gqyy20
+
2.0
f
*
(
qxyk
*
gqyy
[
15
]
+
qxzk
*
gqyy
[
16
]
+
qyzk
*
gqyy
[
19
]
))
+
2.0
f
*
(
qxyk
*
gqyy15
+
qxzk
*
gqyy16
+
qyzk
*
gqyy19
))
+
qzzi
*
(
qxxk
*
gqzz
[
13
]
+
qyyk
*
gqzz
[
18
]
+
qzzk
*
gqzz
[
20
]
+
qzzi
*
(
qxxk
*
gqzz13
+
qyyk
*
gqzz18
+
qzzk
*
gqzz20
+
2.0
f
*
(
qxyk
*
gqzz
[
15
]
+
qxzk
*
gqzz
[
16
]
+
qyzk
*
gqzz
[
19
]
))
+
2.0
f
*
(
qxyk
*
gqzz15
+
qxzk
*
gqzz16
+
qyzk
*
gqzz19
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy
[
13
]
+
qyyk
*
gqxy
[
18
]
+
qzzk
*
gqxy
[
20
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy13
+
qyyk
*
gqxy18
+
qzzk
*
gqxy20
+
2.0
f
*
(
qxyk
*
gqxy
[
15
]
+
qxzk
*
gqxy
[
16
]
+
qyzk
*
gqxy
[
19
]
))
+
2.0
f
*
(
qxyk
*
gqxy15
+
qxzk
*
gqxy16
+
qyzk
*
gqxy19
))
+
qxzi
*
(
qxxk
*
gqxz
[
13
]
+
qyyk
*
gqxz
[
18
]
+
qzzk
*
gqxz
[
20
]
+
qxzi
*
(
qxxk
*
gqxz13
+
qyyk
*
gqxz18
+
qzzk
*
gqxz20
+
2.0
f
*
(
qxyk
*
gqxz
[
15
]
+
qxzk
*
gqxz
[
16
]
+
qyzk
*
gqxz
[
19
]
))
+
2.0
f
*
(
qxyk
*
gqxz15
+
qxzk
*
gqxz16
+
qyzk
*
gqxz19
))
+
qyzi
*
(
qxxk
*
gqyz
[
13
]
+
qyyk
*
gqyz
[
18
]
+
qzzk
*
gqyz
[
20
]
+
qyzi
*
(
qxxk
*
gqyz13
+
qyyk
*
gqyz18
+
qzzk
*
gqyz20
+
2.0
f
*
(
qxyk
*
gqyz
[
15
]
+
qxzk
*
gqyz
[
16
]
+
qyzk
*
gqyz
[
19
]
)));
+
2.0
f
*
(
qxyk
*
gqyz15
+
qxzk
*
gqyz16
+
qyzk
*
gqyz19
)));
dewkdz
=
ci
*
(
uxk
*
gux
[
4
]
+
uyk
*
guy
[
4
]
+
uzk
*
guz
[
4
]
)
dewkdz
=
ci
*
(
uxk
*
gux
4
+
uyk
*
guy
4
+
uzk
*
guz
4
)
-
ck
*
(
uxi
*
gc
[
7
]
+
uyi
*
gc
[
9
]
+
uzi
*
gc
[
10
]
)
-
ck
*
(
uxi
*
gc
7
+
uyi
*
gc
9
+
uzi
*
gc10
)
+
ci
*
(
qxxk
*
gqxx
[
4
]
+
qyyk
*
gqyy
[
4
]
+
qzzk
*
gqzz
[
4
]
+
ci
*
(
qxxk
*
gqxx
4
+
qyyk
*
gqyy
4
+
qzzk
*
gqzz
4
+
2.0
f
*
(
qxyk
*
gqxy
[
4
]
+
qxzk
*
gqxz
[
4
]
+
qyzk
*
gqyz
[
4
]
))
+
2.0
f
*
(
qxyk
*
gqxy
4
+
qxzk
*
gqxz
4
+
qyzk
*
gqyz
4
))
+
ck
*
(
qxxi
*
gc
[
13
]
+
qyyi
*
gc
[
18
]
+
qzzi
*
gc
[
20
]
+
ck
*
(
qxxi
*
gc13
+
qyyi
*
gc18
+
qzzi
*
gc20
+
2.0
f
*
(
qxyi
*
gc
[
15
]
+
qxzi
*
gc
[
16
]
+
qyzi
*
gc
[
19
]
))
+
2.0
f
*
(
qxyi
*
gc15
+
qxzi
*
gc16
+
qyzi
*
gc19
))
-
uxi
*
(
qxxk
*
gqxx
[
7
]
+
qyyk
*
gqyy
[
7
]
+
qzzk
*
gqzz
[
7
]
-
uxi
*
(
qxxk
*
gqxx
7
+
qyyk
*
gqyy
7
+
qzzk
*
gqzz
7
+
2.0
f
*
(
qxyk
*
gqxy
[
7
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqyz
[
7
]
))
+
2.0
f
*
(
qxyk
*
gqxy
7
+
qxzk
*
gqxz
7
+
qyzk
*
gqyz
7
))
-
uyi
*
(
qxxk
*
gqxx
[
9
]
+
qyyk
*
gqyy
[
9
]
+
qzzk
*
gqzz
[
9
]
-
uyi
*
(
qxxk
*
gqxx
9
+
qyyk
*
gqyy
9
+
qzzk
*
gqzz
9
+
2.0
f
*
(
qxyk
*
gqxy
[
9
]
+
qxzk
*
gqxz
[
9
]
+
qyzk
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyk
*
gqxy
9
+
qxzk
*
gqxz
9
+
qyzk
*
gqyz
9
))
-
uzi
*
(
qxxk
*
gqxx
[
10
]
+
qyyk
*
gqyy
[
10
]
+
qzzk
*
gqzz
[
10
]
-
uzi
*
(
qxxk
*
gqxx10
+
qyyk
*
gqyy10
+
qzzk
*
gqzz10
+
2.0
f
*
(
qxyk
*
gqxy
[
10
]
+
qxzk
*
gqxz
[
10
]
+
qyzk
*
gqyz
[
10
]
))
+
2.0
f
*
(
qxyk
*
gqxy10
+
qxzk
*
gqxz10
+
qyzk
*
gqyz10
))
+
uxk
*
(
qxxi
*
gux
[
13
]
+
qyyi
*
gux
[
18
]
+
qzzi
*
gux
[
20
]
+
uxk
*
(
qxxi
*
gux13
+
qyyi
*
gux18
+
qzzi
*
gux20
+
2.0
f
*
(
qxyi
*
gux
[
15
]
+
qxzi
*
gux
[
16
]
+
qyzi
*
gux
[
19
]
))
+
2.0
f
*
(
qxyi
*
gux15
+
qxzi
*
gux16
+
qyzi
*
gux19
))
+
uyk
*
(
qxxi
*
guy
[
13
]
+
qyyi
*
guy
[
18
]
+
qzzi
*
guy
[
20
]
+
uyk
*
(
qxxi
*
guy13
+
qyyi
*
guy18
+
qzzi
*
guy20
+
2.0
f
*
(
qxyi
*
guy
[
15
]
+
qxzi
*
guy
[
16
]
+
qyzi
*
guy
[
19
]
))
+
2.0
f
*
(
qxyi
*
guy15
+
qxzi
*
guy16
+
qyzi
*
guy19
))
+
uzk
*
(
qxxi
*
guz
[
13
]
+
qyyi
*
guz
[
18
]
+
qzzi
*
guz
[
20
]
+
uzk
*
(
qxxi
*
guz13
+
qyyi
*
guz18
+
qzzi
*
guz20
+
2.0
f
*
(
qxyi
*
guz
[
15
]
+
qxzi
*
guz
[
16
]
+
qyzi
*
guz
[
19
]
))
+
2.0
f
*
(
qxyi
*
guz15
+
qxzi
*
guz16
+
qyzi
*
guz19
))
+
qxxi
*
(
qxxk
*
gqxx
[
13
]
+
qyyk
*
gqyy
[
13
]
+
qzzk
*
gqzz
[
13
]
+
qxxi
*
(
qxxk
*
gqxx13
+
qyyk
*
gqyy13
+
qzzk
*
gqzz13
+
2.0
f
*
(
qxyk
*
gqxy
[
13
]
+
qxzk
*
gqxz
[
13
]
+
qyzk
*
gqyz
[
13
]
))
+
2.0
f
*
(
qxyk
*
gqxy13
+
qxzk
*
gqxz13
+
qyzk
*
gqyz13
))
+
qyyi
*
(
qxxk
*
gqxx
[
18
]
+
qyyk
*
gqyy
[
18
]
+
qzzk
*
gqzz
[
18
]
+
qyyi
*
(
qxxk
*
gqxx18
+
qyyk
*
gqyy18
+
qzzk
*
gqzz18
+
2.0
f
*
(
qxyk
*
gqxy
[
18
]
+
qxzk
*
gqxz
[
18
]
+
qyzk
*
gqyz
[
18
]
))
+
2.0
f
*
(
qxyk
*
gqxy18
+
qxzk
*
gqxz18
+
qyzk
*
gqyz18
))
+
qzzi
*
(
qxxk
*
gqxx
[
20
]
+
qyyk
*
gqyy
[
20
]
+
qzzk
*
gqzz
[
20
]
+
qzzi
*
(
qxxk
*
gqxx20
+
qyyk
*
gqyy20
+
qzzk
*
gqzz20
+
2.0
f
*
(
qxyk
*
gqxy
[
20
]
+
qxzk
*
gqxz
[
20
]
+
qyzk
*
gqyz
[
20
]
))
+
2.0
f
*
(
qxyk
*
gqxy20
+
qxzk
*
gqxz20
+
qyzk
*
gqyz20
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx
[
15
]
+
qyyk
*
gqyy
[
15
]
+
qzzk
*
gqzz
[
15
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx15
+
qyyk
*
gqyy15
+
qzzk
*
gqzz15
+
2.0
f
*
(
qxyk
*
gqxy
[
15
]
+
qxzk
*
gqxz
[
15
]
+
qyzk
*
gqyz
[
15
]
))
+
2.0
f
*
(
qxyk
*
gqxy15
+
qxzk
*
gqxz15
+
qyzk
*
gqyz15
))
+
qxzi
*
(
qxxk
*
gqxx
[
16
]
+
qyyk
*
gqyy
[
16
]
+
qzzk
*
gqzz
[
16
]
+
qxzi
*
(
qxxk
*
gqxx16
+
qyyk
*
gqyy16
+
qzzk
*
gqzz16
+
2.0
f
*
(
qxyk
*
gqxy
[
16
]
+
qxzk
*
gqxz
[
16
]
+
qyzk
*
gqyz
[
16
]
))
+
2.0
f
*
(
qxyk
*
gqxy16
+
qxzk
*
gqxz16
+
qyzk
*
gqyz16
))
+
qyzi
*
(
qxxk
*
gqxx
[
19
]
+
qyyk
*
gqyy
[
19
]
+
qzzk
*
gqzz
[
19
]
+
qyzi
*
(
qxxk
*
gqxx19
+
qyyk
*
gqyy19
+
qzzk
*
gqzz19
+
2.0
f
*
(
qxyk
*
gqxy
[
19
]
+
qxzk
*
gqxz
[
19
]
+
qyzk
*
gqyz
[
19
]
)));
+
2.0
f
*
(
qxyk
*
gqxy19
+
qxzk
*
gqxz19
+
qyzk
*
gqyz19
)));
dedz
=
desymdz
+
0.5
f
*
(
dewidz
+
dewkdz
);
dedz
=
desymdz
+
0.5
f
*
(
dewidz
+
dewkdz
);
desymdr
=
ci
*
ck
*
gc
[
21
]
desymdr
=
ci
*
ck
*
gc21
-
(
uxi
*
(
uxk
*
gux
[
22
]
+
uyk
*
guy
[
22
]
+
uzk
*
guz
[
22
]
)
-
(
uxi
*
(
uxk
*
gux22
+
uyk
*
guy22
+
uzk
*
guz22
)
+
uyi
*
(
uxk
*
gux
[
23
]
+
uyk
*
guy
[
23
]
+
uzk
*
guz
[
23
]
)
+
uyi
*
(
uxk
*
gux23
+
uyk
*
guy23
+
uzk
*
guz23
)
+
uzi
*
(
uxk
*
gux
[
24
]
+
uyk
*
guy
[
24
]
+
uzk
*
guz
[
24
]
));
+
uzi
*
(
uxk
*
gux24
+
uyk
*
guy24
+
uzk
*
guz24
));
dewidr
=
ci
*
(
uxk
*
gc
[
22
]
+
uyk
*
gc
[
23
]
+
uzk
*
gc
[
24
]
)
dewidr
=
ci
*
(
uxk
*
gc22
+
uyk
*
gc23
+
uzk
*
gc24
)
-
ck
*
(
uxi
*
gux
[
21
]
+
uyi
*
guy
[
21
]
+
uzi
*
guz
[
21
]
)
-
ck
*
(
uxi
*
gux21
+
uyi
*
guy21
+
uzi
*
guz21
)
+
ci
*
(
qxxk
*
gc
[
25
]
+
qyyk
*
gc
[
28
]
+
qzzk
*
gc
[
30
]
+
ci
*
(
qxxk
*
gc25
+
qyyk
*
gc28
+
qzzk
*
gc30
+
2.0
f
*
(
qxyk
*
gc
[
26
]
+
qxzk
*
gc
[
27
]
+
qyzk
*
gc
[
29
]
))
+
2.0
f
*
(
qxyk
*
gc26
+
qxzk
*
gc27
+
qyzk
*
gc29
))
+
ck
*
(
qxxi
*
gqxx
[
21
]
+
qyyi
*
gqyy
[
21
]
+
qzzi
*
gqzz
[
21
]
+
ck
*
(
qxxi
*
gqxx21
+
qyyi
*
gqyy21
+
qzzi
*
gqzz21
+
2.0
f
*
(
qxyi
*
gqxy
[
21
]
+
qxzi
*
gqxz
[
21
]
+
qyzi
*
gqyz
[
21
]
))
+
2.0
f
*
(
qxyi
*
gqxy21
+
qxzi
*
gqxz21
+
qyzi
*
gqyz21
))
-
uxi
*
(
qxxk
*
gux
[
25
]
+
qyyk
*
gux
[
28
]
+
qzzk
*
gux
[
30
]
-
uxi
*
(
qxxk
*
gux25
+
qyyk
*
gux28
+
qzzk
*
gux30
+
2.0
f
*
(
qxyk
*
gux
[
26
]
+
qxzk
*
gux
[
27
]
+
qyzk
*
gux
[
29
]
))
+
2.0
f
*
(
qxyk
*
gux26
+
qxzk
*
gux27
+
qyzk
*
gux29
))
-
uyi
*
(
qxxk
*
guy
[
25
]
+
qyyk
*
guy
[
28
]
+
qzzk
*
guy
[
30
]
-
uyi
*
(
qxxk
*
guy25
+
qyyk
*
guy28
+
qzzk
*
guy30
+
2.0
f
*
(
qxyk
*
guy
[
26
]
+
qxzk
*
guy
[
27
]
+
qyzk
*
guy
[
29
]
))
+
2.0
f
*
(
qxyk
*
guy26
+
qxzk
*
guy27
+
qyzk
*
guy29
))
-
uzi
*
(
qxxk
*
guz
[
25
]
+
qyyk
*
guz
[
28
]
+
qzzk
*
guz
[
30
]
-
uzi
*
(
qxxk
*
guz25
+
qyyk
*
guz28
+
qzzk
*
guz30
+
2.0
f
*
(
qxyk
*
guz
[
26
]
+
qxzk
*
guz
[
27
]
+
qyzk
*
guz
[
29
]
))
+
2.0
f
*
(
qxyk
*
guz26
+
qxzk
*
guz27
+
qyzk
*
guz29
))
+
uxk
*
(
qxxi
*
gqxx
[
22
]
+
qyyi
*
gqyy
[
22
]
+
qzzi
*
gqzz
[
22
]
+
uxk
*
(
qxxi
*
gqxx22
+
qyyi
*
gqyy22
+
qzzi
*
gqzz22
+
2.0
f
*
(
qxyi
*
gqxy
[
22
]
+
qxzi
*
gqxz
[
22
]
+
qyzi
*
gqyz
[
22
]
))
+
2.0
f
*
(
qxyi
*
gqxy22
+
qxzi
*
gqxz22
+
qyzi
*
gqyz22
))
+
uyk
*
(
qxxi
*
gqxx
[
23
]
+
qyyi
*
gqyy
[
23
]
+
qzzi
*
gqzz
[
23
]
+
uyk
*
(
qxxi
*
gqxx23
+
qyyi
*
gqyy23
+
qzzi
*
gqzz23
+
2.0
f
*
(
qxyi
*
gqxy
[
23
]
+
qxzi
*
gqxz
[
23
]
+
qyzi
*
gqyz
[
23
]
))
+
2.0
f
*
(
qxyi
*
gqxy23
+
qxzi
*
gqxz23
+
qyzi
*
gqyz23
))
+
uzk
*
(
qxxi
*
gqxx
[
24
]
+
qyyi
*
gqyy
[
24
]
+
qzzi
*
gqzz
[
24
]
+
uzk
*
(
qxxi
*
gqxx24
+
qyyi
*
gqyy24
+
qzzi
*
gqzz24
+
2.0
f
*
(
qxyi
*
gqxy
[
24
]
+
qxzi
*
gqxz
[
24
]
+
qyzi
*
gqyz
[
24
]
))
+
2.0
f
*
(
qxyi
*
gqxy24
+
qxzi
*
gqxz24
+
qyzi
*
gqyz24
))
+
qxxi
*
(
qxxk
*
gqxx
[
25
]
+
qyyk
*
gqxx
[
28
]
+
qzzk
*
gqxx
[
30
]
+
qxxi
*
(
qxxk
*
gqxx25
+
qyyk
*
gqxx28
+
qzzk
*
gqxx30
+
2.0
f
*
(
qxyk
*
gqxx
[
26
]
+
qxzk
*
gqxx
[
27
]
+
qyzk
*
gqxx
[
29
]
))
+
2.0
f
*
(
qxyk
*
gqxx26
+
qxzk
*
gqxx27
+
qyzk
*
gqxx29
))
+
qyyi
*
(
qxxk
*
gqyy
[
25
]
+
qyyk
*
gqyy
[
28
]
+
qzzk
*
gqyy
[
30
]
+
qyyi
*
(
qxxk
*
gqyy25
+
qyyk
*
gqyy28
+
qzzk
*
gqyy30
+
2.0
f
*
(
qxyk
*
gqyy
[
26
]
+
qxzk
*
gqyy
[
27
]
+
qyzk
*
gqyy
[
29
]
))
+
2.0
f
*
(
qxyk
*
gqyy26
+
qxzk
*
gqyy27
+
qyzk
*
gqyy29
))
+
qzzi
*
(
qxxk
*
gqzz
[
25
]
+
qyyk
*
gqzz
[
28
]
+
qzzk
*
gqzz
[
30
]
+
qzzi
*
(
qxxk
*
gqzz25
+
qyyk
*
gqzz28
+
qzzk
*
gqzz30
+
2.0
f
*
(
qxyk
*
gqzz
[
26
]
+
qxzk
*
gqzz
[
27
]
+
qyzk
*
gqzz
[
29
]
))
+
2.0
f
*
(
qxyk
*
gqzz26
+
qxzk
*
gqzz27
+
qyzk
*
gqzz29
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy
[
25
]
+
qyyk
*
gqxy
[
28
]
+
qzzk
*
gqxy
[
30
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxy25
+
qyyk
*
gqxy28
+
qzzk
*
gqxy30
+
2.0
f
*
(
qxyk
*
gqxy
[
26
]
+
qxzk
*
gqxy
[
27
]
+
qyzk
*
gqxy
[
29
]
))
+
2.0
f
*
(
qxyk
*
gqxy26
+
qxzk
*
gqxy27
+
qyzk
*
gqxy29
))
+
qxzi
*
(
qxxk
*
gqxz
[
25
]
+
qyyk
*
gqxz
[
28
]
+
qzzk
*
gqxz
[
30
]
+
qxzi
*
(
qxxk
*
gqxz25
+
qyyk
*
gqxz28
+
qzzk
*
gqxz30
+
2.0
f
*
(
qxyk
*
gqxz
[
26
]
+
qxzk
*
gqxz
[
27
]
+
qyzk
*
gqxz
[
29
]
))
+
2.0
f
*
(
qxyk
*
gqxz26
+
qxzk
*
gqxz27
+
qyzk
*
gqxz29
))
+
qyzi
*
(
qxxk
*
gqyz
[
25
]
+
qyyk
*
gqyz
[
28
]
+
qzzk
*
gqyz
[
30
]
+
qyzi
*
(
qxxk
*
gqyz25
+
qyyk
*
gqyz28
+
qzzk
*
gqyz30
+
2.0
f
*
(
qxyk
*
gqyz
[
26
]
+
qxzk
*
gqyz
[
27
]
+
qyzk
*
gqyz
[
29
]
)));
+
2.0
f
*
(
qxyk
*
gqyz26
+
qxzk
*
gqyz27
+
qyzk
*
gqyz29
)));
dewkdr
=
ci
*
(
uxk
*
gux
[
21
]
+
uyk
*
guy
[
21
]
+
uzk
*
guz
[
21
]
)
dewkdr
=
ci
*
(
uxk
*
gux21
+
uyk
*
guy21
+
uzk
*
guz21
)
-
ck
*
(
uxi
*
gc
[
22
]
+
uyi
*
gc
[
23
]
+
uzi
*
gc
[
24
]
)
-
ck
*
(
uxi
*
gc22
+
uyi
*
gc23
+
uzi
*
gc24
)
+
ci
*
(
qxxk
*
gqxx
[
21
]
+
qyyk
*
gqyy
[
21
]
+
qzzk
*
gqzz
[
21
]
+
ci
*
(
qxxk
*
gqxx21
+
qyyk
*
gqyy21
+
qzzk
*
gqzz21
+
2.0
f
*
(
qxyk
*
gqxy
[
21
]
+
qxzk
*
gqxz
[
21
]
+
qyzk
*
gqyz
[
21
]
))
+
2.0
f
*
(
qxyk
*
gqxy21
+
qxzk
*
gqxz21
+
qyzk
*
gqyz21
))
+
ck
*
(
qxxi
*
gc
[
25
]
+
qyyi
*
gc
[
28
]
+
qzzi
*
gc
[
30
]
+
ck
*
(
qxxi
*
gc25
+
qyyi
*
gc28
+
qzzi
*
gc30
+
2.0
f
*
(
qxyi
*
gc
[
26
]
+
qxzi
*
gc
[
27
]
+
qyzi
*
gc
[
29
]
))
+
2.0
f
*
(
qxyi
*
gc26
+
qxzi
*
gc27
+
qyzi
*
gc29
))
-
uxi
*
(
qxxk
*
gqxx
[
22
]
+
qyyk
*
gqyy
[
22
]
+
qzzk
*
gqzz
[
22
]
-
uxi
*
(
qxxk
*
gqxx22
+
qyyk
*
gqyy22
+
qzzk
*
gqzz22
+
2.0
f
*
(
qxyk
*
gqxy
[
22
]
+
qxzk
*
gqxz
[
22
]
+
qyzk
*
gqyz
[
22
]
))
+
2.0
f
*
(
qxyk
*
gqxy22
+
qxzk
*
gqxz22
+
qyzk
*
gqyz22
))
-
uyi
*
(
qxxk
*
gqxx
[
23
]
+
qyyk
*
gqyy
[
23
]
+
qzzk
*
gqzz
[
23
]
-
uyi
*
(
qxxk
*
gqxx23
+
qyyk
*
gqyy23
+
qzzk
*
gqzz23
+
2.0
f
*
(
qxyk
*
gqxy
[
23
]
+
qxzk
*
gqxz
[
23
]
+
qyzk
*
gqyz
[
23
]
))
+
2.0
f
*
(
qxyk
*
gqxy23
+
qxzk
*
gqxz23
+
qyzk
*
gqyz23
))
-
uzi
*
(
qxxk
*
gqxx
[
24
]
+
qyyk
*
gqyy
[
24
]
+
qzzk
*
gqzz
[
24
]
-
uzi
*
(
qxxk
*
gqxx24
+
qyyk
*
gqyy24
+
qzzk
*
gqzz24
+
2.0
f
*
(
qxyk
*
gqxy
[
24
]
+
qxzk
*
gqxz
[
24
]
+
qyzk
*
gqyz
[
24
]
))
+
2.0
f
*
(
qxyk
*
gqxy24
+
qxzk
*
gqxz24
+
qyzk
*
gqyz24
))
+
uxk
*
(
qxxi
*
gux
[
25
]
+
qyyi
*
gux
[
28
]
+
qzzi
*
gux
[
30
]
+
uxk
*
(
qxxi
*
gux25
+
qyyi
*
gux28
+
qzzi
*
gux30
+
2.0
f
*
(
qxyi
*
gux
[
26
]
+
qxzi
*
gux
[
27
]
+
qyzi
*
gux
[
29
]
))
+
2.0
f
*
(
qxyi
*
gux26
+
qxzi
*
gux27
+
qyzi
*
gux29
))
+
uyk
*
(
qxxi
*
guy
[
25
]
+
qyyi
*
guy
[
28
]
+
qzzi
*
guy
[
30
]
+
uyk
*
(
qxxi
*
guy25
+
qyyi
*
guy28
+
qzzi
*
guy30
+
2.0
f
*
(
qxyi
*
guy
[
26
]
+
qxzi
*
guy
[
27
]
+
qyzi
*
guy
[
29
]
))
+
2.0
f
*
(
qxyi
*
guy26
+
qxzi
*
guy27
+
qyzi
*
guy29
))
+
uzk
*
(
qxxi
*
guz
[
25
]
+
qyyi
*
guz
[
28
]
+
qzzi
*
guz
[
30
]
+
uzk
*
(
qxxi
*
guz25
+
qyyi
*
guz28
+
qzzi
*
guz30
+
2.0
f
*
(
qxyi
*
guz
[
26
]
+
qxzi
*
guz
[
27
]
+
qyzi
*
guz
[
29
]
))
+
2.0
f
*
(
qxyi
*
guz26
+
qxzi
*
guz27
+
qyzi
*
guz29
))
+
qxxi
*
(
qxxk
*
gqxx
[
25
]
+
qyyk
*
gqyy
[
25
]
+
qzzk
*
gqzz
[
25
]
+
qxxi
*
(
qxxk
*
gqxx25
+
qyyk
*
gqyy25
+
qzzk
*
gqzz25
+
2.0
f
*
(
qxyk
*
gqxy
[
25
]
+
qxzk
*
gqxz
[
25
]
+
qyzk
*
gqyz
[
25
]
))
+
2.0
f
*
(
qxyk
*
gqxy25
+
qxzk
*
gqxz25
+
qyzk
*
gqyz25
))
+
qyyi
*
(
qxxk
*
gqxx
[
28
]
+
qyyk
*
gqyy
[
28
]
+
qzzk
*
gqzz
[
28
]
+
qyyi
*
(
qxxk
*
gqxx28
+
qyyk
*
gqyy28
+
qzzk
*
gqzz28
+
2.0
f
*
(
qxyk
*
gqxy
[
28
]
+
qxzk
*
gqxz
[
28
]
+
qyzk
*
gqyz
[
28
]
))
+
2.0
f
*
(
qxyk
*
gqxy28
+
qxzk
*
gqxz28
+
qyzk
*
gqyz28
))
+
qzzi
*
(
qxxk
*
gqxx
[
30
]
+
qyyk
*
gqyy
[
30
]
+
qzzk
*
gqzz
[
30
]
+
qzzi
*
(
qxxk
*
gqxx30
+
qyyk
*
gqyy30
+
qzzk
*
gqzz30
+
2.0
f
*
(
qxyk
*
gqxy
[
30
]
+
qxzk
*
gqxz
[
30
]
+
qyzk
*
gqyz
[
30
]
))
+
2.0
f
*
(
qxyk
*
gqxy30
+
qxzk
*
gqxz30
+
qyzk
*
gqyz30
))
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx
[
26
]
+
qyyk
*
gqyy
[
26
]
+
qzzk
*
gqzz
[
26
]
+
2.0
f
*
(
qxyi
*
(
qxxk
*
gqxx26
+
qyyk
*
gqyy26
+
qzzk
*
gqzz26
+
2.0
f
*
(
qxyk
*
gqxy
[
26
]
+
qxzk
*
gqxz
[
26
]
+
qyzk
*
gqyz
[
26
]
))
+
2.0
f
*
(
qxyk
*
gqxy26
+
qxzk
*
gqxz26
+
qyzk
*
gqyz26
))
+
qxzi
*
(
qxxk
*
gqxx
[
27
]
+
qyyk
*
gqyy
[
27
]
+
qzzk
*
gqzz
[
27
]
+
qxzi
*
(
qxxk
*
gqxx27
+
qyyk
*
gqyy27
+
qzzk
*
gqzz27
+
2.0
f
*
(
qxyk
*
gqxy
[
27
]
+
qxzk
*
gqxz
[
27
]
+
qyzk
*
gqyz
[
27
]
))
+
2.0
f
*
(
qxyk
*
gqxy27
+
qxzk
*
gqxz27
+
qyzk
*
gqyz27
))
+
qyzi
*
(
qxxk
*
gqxx
[
29
]
+
qyyk
*
gqyy
[
29
]
+
qzzk
*
gqzz
[
29
]
+
qyzi
*
(
qxxk
*
gqxx29
+
qyyk
*
gqyy29
+
qzzk
*
gqzz29
+
2.0
f
*
(
qxyk
*
gqxy
[
29
]
+
qxzk
*
gqxz
[
29
]
+
qyzk
*
gqyz
[
29
]
)));
+
2.0
f
*
(
qxyk
*
gqxy29
+
qxzk
*
gqxz29
+
qyzk
*
gqyz29
)));
dsumdr
=
desymdr
+
0.5
f
*
(
dewidr
+
dewkdr
);
dsumdr
=
desymdr
+
0.5
f
*
(
dewidr
+
dewkdr
);
drbi
=
rbk
*
dsumdr
;
drbi
=
rbk
*
dsumdr
;
...
@@ -1305,345 +1036,345 @@ int debugIndex = atomJ;
...
@@ -1305,345 +1036,345 @@ int debugIndex = atomJ;
// torque on permanent dipoles due to permanent reaction field
// torque on permanent dipoles due to permanent reaction field
trq
[
1
]
=
0.0
f
;
float
trq1
=
0.0
f
;
trq
[
2
]
=
0.0
f
;
float
trq2
=
0.0
f
;
trq
[
3
]
=
0.0
f
;
float
trq3
=
0.0
f
;
trq_k
[
1
]
=
0.0
f
;
float
trq_k
1
=
0.0
f
;
trq_k
[
2
]
=
0.0
f
;
float
trq_k
2
=
0.0
f
;
trq_k
[
3
]
=
0.0
f
;
float
trq_k
3
=
0.0
f
;
if
(
sameAtom
==
0
)
if
(
sameAtom
==
0
)
{
{
f
id
[
1
]
=
uxk
*
gux
[
2
]
+
uyk
*
gux
[
3
]
+
uzk
*
gux
[
4
]
f
loat
fid1
=
uxk
*
gux
2
+
uyk
*
gux
3
+
uzk
*
gux
4
+
0.5
f
*
(
ck
*
gux
[
1
]
+
qxxk
*
gux
[
5
]
+
qyyk
*
gux
[
8
]
+
qzzk
*
gux
[
10
]
+
0.5
f
*
(
ck
*
gux
1
+
qxxk
*
gux
5
+
qyyk
*
gux
8
+
qzzk
*
gux10
+
2.0
f
*
(
qxyk
*
gux
[
6
]
+
qxzk
*
gux
[
7
]
+
qyzk
*
gux
[
9
]
)
+
2.0
f
*
(
qxyk
*
gux
6
+
qxzk
*
gux
7
+
qyzk
*
gux
9
)
+
ck
*
gc
[
2
]
+
qxxk
*
gqxx
[
2
]
+
qyyk
*
gqyy
[
2
]
+
qzzk
*
gqzz
[
2
]
+
ck
*
gc
2
+
qxxk
*
gqxx
2
+
qyyk
*
gqyy
2
+
qzzk
*
gqzz
2
+
2.0
f
*
(
qxyk
*
gqxy
[
2
]
+
qxzk
*
gqxz
[
2
]
+
qyzk
*
gqyz
[
2
]
));
+
2.0
f
*
(
qxyk
*
gqxy
2
+
qxzk
*
gqxz
2
+
qyzk
*
gqyz
2
));
f
id
[
2
]
=
uxk
*
guy
[
2
]
+
uyk
*
guy
[
3
]
+
uzk
*
guy
[
4
]
f
loat
fid2
=
uxk
*
guy
2
+
uyk
*
guy
3
+
uzk
*
guy
4
+
0.5
f
*
(
ck
*
guy
[
1
]
+
qxxk
*
guy
[
5
]
+
qyyk
*
guy
[
8
]
+
qzzk
*
guy
[
10
]
+
0.5
f
*
(
ck
*
guy
1
+
qxxk
*
guy
5
+
qyyk
*
guy
8
+
qzzk
*
guy10
+
2.0
f
*
(
qxyk
*
guy
[
6
]
+
qxzk
*
guy
[
7
]
+
qyzk
*
guy
[
9
]
)
+
2.0
f
*
(
qxyk
*
guy
6
+
qxzk
*
guy
7
+
qyzk
*
guy
9
)
+
ck
*
gc
[
3
]
+
qxxk
*
gqxx
[
3
]
+
qyyk
*
gqyy
[
3
]
+
qzzk
*
gqzz
[
3
]
+
ck
*
gc
3
+
qxxk
*
gqxx
3
+
qyyk
*
gqyy
3
+
qzzk
*
gqzz
3
+
2.0
f
*
(
qxyk
*
gqxy
[
3
]
+
qxzk
*
gqxz
[
3
]
+
qyzk
*
gqyz
[
3
]
));
+
2.0
f
*
(
qxyk
*
gqxy
3
+
qxzk
*
gqxz
3
+
qyzk
*
gqyz
3
));
f
id
[
3
]
=
uxk
*
guz
[
2
]
+
uyk
*
guz
[
3
]
+
uzk
*
guz
[
4
]
f
loat
fid3
=
uxk
*
guz
2
+
uyk
*
guz
3
+
uzk
*
guz
4
+
0.5
f
*
(
ck
*
guz
[
1
]
+
qxxk
*
guz
[
5
]
+
qyyk
*
guz
[
8
]
+
qzzk
*
guz
[
10
]
+
0.5
f
*
(
ck
*
guz
1
+
qxxk
*
guz
5
+
qyyk
*
guz
8
+
qzzk
*
guz10
+
2.0
f
*
(
qxyk
*
guz
[
6
]
+
qxzk
*
guz
[
7
]
+
qyzk
*
guz
[
9
]
)
+
2.0
f
*
(
qxyk
*
guz
6
+
qxzk
*
guz
7
+
qyzk
*
guz
9
)
+
ck
*
gc
[
4
]
+
qxxk
*
gqxx
[
4
]
+
qyyk
*
gqyy
[
4
]
+
qzzk
*
gqzz
[
4
]
+
ck
*
gc
4
+
qxxk
*
gqxx
4
+
qyyk
*
gqyy
4
+
qzzk
*
gqzz
4
+
2.0
f
*
(
qxyk
*
gqxy
[
4
]
+
qxzk
*
gqxz
[
4
]
+
qyzk
*
gqyz
[
4
]
));
+
2.0
f
*
(
qxyk
*
gqxy
4
+
qxzk
*
gqxz
4
+
qyzk
*
gqyz
4
));
f
kd
[
1
]
=
uxi
*
gux
[
2
]
+
uyi
*
gux
[
3
]
+
uzi
*
gux
[
4
]
f
loat
fkd1
=
uxi
*
gux
2
+
uyi
*
gux
3
+
uzi
*
gux
4
-
0.5
f
*
(
ci
*
gux
[
1
]
+
qxxi
*
gux
[
5
]
+
qyyi
*
gux
[
8
]
+
qzzi
*
gux
[
10
]
-
0.5
f
*
(
ci
*
gux
1
+
qxxi
*
gux
5
+
qyyi
*
gux
8
+
qzzi
*
gux10
+
2.0
f
*
(
qxyi
*
gux
[
6
]
+
qxzi
*
gux
[
7
]
+
qyzi
*
gux
[
9
]
)
+
2.0
f
*
(
qxyi
*
gux
6
+
qxzi
*
gux
7
+
qyzi
*
gux
9
)
+
ci
*
gc
[
2
]
+
qxxi
*
gqxx
[
2
]
+
qyyi
*
gqyy
[
2
]
+
qzzi
*
gqzz
[
2
]
+
ci
*
gc
2
+
qxxi
*
gqxx
2
+
qyyi
*
gqyy
2
+
qzzi
*
gqzz
2
+
2.0
f
*
(
qxyi
*
gqxy
[
2
]
+
qxzi
*
gqxz
[
2
]
+
qyzi
*
gqyz
[
2
]
));
+
2.0
f
*
(
qxyi
*
gqxy
2
+
qxzi
*
gqxz
2
+
qyzi
*
gqyz
2
));
f
kd
[
2
]
=
uxi
*
guy
[
2
]
+
uyi
*
guy
[
3
]
+
uzi
*
guy
[
4
]
f
loat
fkd2
=
uxi
*
guy
2
+
uyi
*
guy
3
+
uzi
*
guy
4
-
0.5
f
*
(
ci
*
guy
[
1
]
+
qxxi
*
guy
[
5
]
+
qyyi
*
guy
[
8
]
+
qzzi
*
guy
[
10
]
-
0.5
f
*
(
ci
*
guy
1
+
qxxi
*
guy
5
+
qyyi
*
guy
8
+
qzzi
*
guy10
+
2.0
f
*
(
qxyi
*
guy
[
6
]
+
qxzi
*
guy
[
7
]
+
qyzi
*
guy
[
9
]
)
+
2.0
f
*
(
qxyi
*
guy
6
+
qxzi
*
guy
7
+
qyzi
*
guy
9
)
+
ci
*
gc
[
3
]
+
qxxi
*
gqxx
[
3
]
+
qyyi
*
gqyy
[
3
]
+
qzzi
*
gqzz
[
3
]
+
ci
*
gc
3
+
qxxi
*
gqxx
3
+
qyyi
*
gqyy
3
+
qzzi
*
gqzz
3
+
2.0
f
*
(
qxyi
*
gqxy
[
3
]
+
qxzi
*
gqxz
[
3
]
+
qyzi
*
gqyz
[
3
]
));
+
2.0
f
*
(
qxyi
*
gqxy
3
+
qxzi
*
gqxz
3
+
qyzi
*
gqyz
3
));
f
kd
[
3
]
=
uxi
*
guz
[
2
]
+
uyi
*
guz
[
3
]
+
uzi
*
guz
[
4
]
f
loat
fkd3
=
uxi
*
guz
2
+
uyi
*
guz
3
+
uzi
*
guz
4
-
0.5
f
*
(
ci
*
guz
[
1
]
+
qxxi
*
guz
[
5
]
+
qyyi
*
guz
[
8
]
+
qzzi
*
guz
[
10
]
-
0.5
f
*
(
ci
*
guz
1
+
qxxi
*
guz
5
+
qyyi
*
guz
8
+
qzzi
*
guz10
+
2.0
f
*
(
qxyi
*
guz
[
6
]
+
qxzi
*
guz
[
7
]
+
qyzi
*
guz
[
9
]
)
+
2.0
f
*
(
qxyi
*
guz
6
+
qxzi
*
guz
7
+
qyzi
*
guz
9
)
+
ci
*
gc
[
4
]
+
qxxi
*
gqxx
[
4
]
+
qyyi
*
gqyy
[
4
]
+
qzzi
*
gqzz
[
4
]
+
ci
*
gc
4
+
qxxi
*
gqxx
4
+
qyyi
*
gqyy
4
+
qzzi
*
gqzz
4
+
2.0
f
*
(
qxyi
*
gqxy
[
4
]
+
qxzi
*
gqxz
[
4
]
+
qyzi
*
gqyz
[
4
]
));
+
2.0
f
*
(
qxyi
*
gqxy
4
+
qxzi
*
gqxz
4
+
qyzi
*
gqyz
4
));
trq
[
1
]
=
uyi
*
fid
[
3
]
-
uzi
*
fid
[
2
]
;
trq
1
=
uyi
*
fid
3
-
uzi
*
fid
2
;
trq
[
2
]
=
uzi
*
fid
[
1
]
-
uxi
*
fid
[
3
]
;
trq
2
=
uzi
*
fid
1
-
uxi
*
fid
3
;
trq
[
3
]
=
uxi
*
fid
[
2
]
-
uyi
*
fid
[
1
]
;
trq
3
=
uxi
*
fid
2
-
uyi
*
fid
1
;
trq_k
[
1
]
=
uyk
*
fkd
[
3
]
-
uzk
*
fkd
[
2
]
;
trq_k
1
=
uyk
*
fkd
3
-
uzk
*
fkd
2
;
trq_k
[
2
]
=
uzk
*
fkd
[
1
]
-
uxk
*
fkd
[
3
]
;
trq_k
2
=
uzk
*
fkd
1
-
uxk
*
fkd
3
;
trq_k
[
3
]
=
uxk
*
fkd
[
2
]
-
uyk
*
fkd
[
1
]
;
trq_k
3
=
uxk
*
fkd
2
-
uyk
*
fkd
1
;
// torque on quadrupoles due to permanent reaction field gradient
// torque on quadrupoles due to permanent reaction field gradient
f
idg
[
1
][
1
]
=
f
loat
fidg11
=
-
0.5
f
*
(
ck
*
gqxx
[
1
]
+
uxk
*
gqxx
[
2
]
+
uyk
*
gqxx
[
3
]
+
uzk
*
gqxx
[
4
]
-
0.5
f
*
(
ck
*
gqxx
1
+
uxk
*
gqxx
2
+
uyk
*
gqxx
3
+
uzk
*
gqxx
4
+
qxxk
*
gqxx
[
5
]
+
qyyk
*
gqxx
[
8
]
+
qzzk
*
gqxx
[
10
]
+
qxxk
*
gqxx
5
+
qyyk
*
gqxx
8
+
qzzk
*
gqxx10
+
2.0
f
*
(
qxyk
*
gqxx
[
6
]
+
qxzk
*
gqxx
[
7
]
+
qyzk
*
gqxx
[
9
]
)
+
2.0
f
*
(
qxyk
*
gqxx
6
+
qxzk
*
gqxx
7
+
qyzk
*
gqxx
9
)
+
ck
*
gc
[
5
]
+
uxk
*
gux
[
5
]
+
uyk
*
guy
[
5
]
+
uzk
*
guz
[
5
]
+
ck
*
gc
5
+
uxk
*
gux
5
+
uyk
*
guy
5
+
uzk
*
guz
5
+
qxxk
*
gqxx
[
5
]
+
qyyk
*
gqyy
[
5
]
+
qzzk
*
gqzz
[
5
]
+
qxxk
*
gqxx
5
+
qyyk
*
gqyy
5
+
qzzk
*
gqzz
5
+
2.0
f
*
(
qxyk
*
gqxy
[
5
]
+
qxzk
*
gqxz
[
5
]
+
qyzk
*
gqyz
[
5
]
));
+
2.0
f
*
(
qxyk
*
gqxy
5
+
qxzk
*
gqxz
5
+
qyzk
*
gqyz
5
));
f
idg
[
1
][
2
]
=
f
loat
fidg12
=
-
0.5
f
*
(
ck
*
gqxy
[
1
]
+
uxk
*
gqxy
[
2
]
+
uyk
*
gqxy
[
3
]
+
uzk
*
gqxy
[
4
]
-
0.5
f
*
(
ck
*
gqxy
1
+
uxk
*
gqxy
2
+
uyk
*
gqxy
3
+
uzk
*
gqxy
4
+
qxxk
*
gqxy
[
5
]
+
qyyk
*
gqxy
[
8
]
+
qzzk
*
gqxy
[
10
]
+
qxxk
*
gqxy
5
+
qyyk
*
gqxy
8
+
qzzk
*
gqxy10
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxy
[
7
]
+
qyzk
*
gqxy
[
9
]
)
+
2.0
f
*
(
qxyk
*
gqxy
6
+
qxzk
*
gqxy
7
+
qyzk
*
gqxy
9
)
+
ck
*
gc
[
6
]
+
uxk
*
gux
[
6
]
+
uyk
*
guy
[
6
]
+
uzk
*
guz
[
6
]
+
ck
*
gc
6
+
uxk
*
gux
6
+
uyk
*
guy
6
+
uzk
*
guz
6
+
qxxk
*
gqxx
[
6
]
+
qyyk
*
gqyy
[
6
]
+
qzzk
*
gqzz
[
6
]
+
qxxk
*
gqxx
6
+
qyyk
*
gqyy
6
+
qzzk
*
gqzz
6
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxz
[
6
]
+
qyzk
*
gqyz
[
6
]
));
+
2.0
f
*
(
qxyk
*
gqxy
6
+
qxzk
*
gqxz
6
+
qyzk
*
gqyz
6
));
f
idg
[
1
][
3
]
=
f
loat
fidg13
=
-
0.5
f
*
(
ck
*
gqxz
[
1
]
+
uxk
*
gqxz
[
2
]
+
uyk
*
gqxz
[
3
]
+
uzk
*
gqxz
[
4
]
-
0.5
f
*
(
ck
*
gqxz
1
+
uxk
*
gqxz
2
+
uyk
*
gqxz
3
+
uzk
*
gqxz
4
+
qxxk
*
gqxz
[
5
]
+
qyyk
*
gqxz
[
8
]
+
qzzk
*
gqxz
[
10
]
+
qxxk
*
gqxz
5
+
qyyk
*
gqxz
8
+
qzzk
*
gqxz10
+
2.0
f
*
(
qxyk
*
gqxz
[
6
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqxz
[
9
]
)
+
2.0
f
*
(
qxyk
*
gqxz
6
+
qxzk
*
gqxz
7
+
qyzk
*
gqxz
9
)
+
ck
*
gc
[
7
]
+
uxk
*
gux
[
7
]
+
uyk
*
guy
[
7
]
+
uzk
*
guz
[
7
]
+
ck
*
gc
7
+
uxk
*
gux
7
+
uyk
*
guy
7
+
uzk
*
guz
7
+
qxxk
*
gqxx
[
7
]
+
qyyk
*
gqyy
[
7
]
+
qzzk
*
gqzz
[
7
]
+
qxxk
*
gqxx
7
+
qyyk
*
gqyy
7
+
qzzk
*
gqzz
7
+
2.0
f
*
(
qxyk
*
gqxy
[
7
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqyz
[
7
]
));
+
2.0
f
*
(
qxyk
*
gqxy
7
+
qxzk
*
gqxz
7
+
qyzk
*
gqyz
7
));
f
idg
[
2
][
2
]
=
f
loat
fidg22
=
-
0.5
f
*
(
ck
*
gqyy
[
1
]
+
uxk
*
gqyy
[
2
]
+
uyk
*
gqyy
[
3
]
+
uzk
*
gqyy
[
4
]
-
0.5
f
*
(
ck
*
gqyy
1
+
uxk
*
gqyy
2
+
uyk
*
gqyy
3
+
uzk
*
gqyy
4
+
qxxk
*
gqyy
[
5
]
+
qyyk
*
gqyy
[
8
]
+
qzzk
*
gqyy
[
10
]
+
qxxk
*
gqyy
5
+
qyyk
*
gqyy
8
+
qzzk
*
gqyy10
+
2.0
f
*
(
qxyk
*
gqyy
[
6
]
+
qxzk
*
gqyy
[
7
]
+
qyzk
*
gqyy
[
9
]
)
+
2.0
f
*
(
qxyk
*
gqyy
6
+
qxzk
*
gqyy
7
+
qyzk
*
gqyy
9
)
+
ck
*
gc
[
8
]
+
uxk
*
gux
[
8
]
+
uyk
*
guy
[
8
]
+
uzk
*
guz
[
8
]
+
ck
*
gc
8
+
uxk
*
gux
8
+
uyk
*
guy
8
+
uzk
*
guz
8
+
qxxk
*
gqxx
[
8
]
+
qyyk
*
gqyy
[
8
]
+
qzzk
*
gqzz
[
8
]
+
qxxk
*
gqxx
8
+
qyyk
*
gqyy
8
+
qzzk
*
gqzz
8
+
2.0
f
*
(
qxyk
*
gqxy
[
8
]
+
qxzk
*
gqxz
[
8
]
+
qyzk
*
gqyz
[
8
]
));
+
2.0
f
*
(
qxyk
*
gqxy
8
+
qxzk
*
gqxz
8
+
qyzk
*
gqyz
8
));
f
idg
[
2
][
3
]
=
f
loat
fidg23
=
-
0.5
f
*
(
ck
*
gqyz
[
1
]
+
uxk
*
gqyz
[
2
]
+
uyk
*
gqyz
[
3
]
+
uzk
*
gqyz
[
4
]
-
0.5
f
*
(
ck
*
gqyz
1
+
uxk
*
gqyz
2
+
uyk
*
gqyz
3
+
uzk
*
gqyz
4
+
qxxk
*
gqyz
[
5
]
+
qyyk
*
gqyz
[
8
]
+
qzzk
*
gqyz
[
10
]
+
qxxk
*
gqyz
5
+
qyyk
*
gqyz
8
+
qzzk
*
gqyz10
+
2.0
f
*
(
qxyk
*
gqyz
[
6
]
+
qxzk
*
gqyz
[
7
]
+
qyzk
*
gqyz
[
9
]
)
+
2.0
f
*
(
qxyk
*
gqyz
6
+
qxzk
*
gqyz
7
+
qyzk
*
gqyz
9
)
+
ck
*
gc
[
9
]
+
uxk
*
gux
[
9
]
+
uyk
*
guy
[
9
]
+
uzk
*
guz
[
9
]
+
ck
*
gc
9
+
uxk
*
gux
9
+
uyk
*
guy
9
+
uzk
*
guz
9
+
qxxk
*
gqxx
[
9
]
+
qyyk
*
gqyy
[
9
]
+
qzzk
*
gqzz
[
9
]
+
qxxk
*
gqxx
9
+
qyyk
*
gqyy
9
+
qzzk
*
gqzz
9
+
2.0
f
*
(
qxyk
*
gqxy
[
9
]
+
qxzk
*
gqxz
[
9
]
+
qyzk
*
gqyz
[
9
]
));
+
2.0
f
*
(
qxyk
*
gqxy
9
+
qxzk
*
gqxz
9
+
qyzk
*
gqyz
9
));
f
idg
[
3
][
3
]
=
f
loat
fidg33
=
-
0.5
f
*
(
ck
*
gqzz
[
1
]
+
uxk
*
gqzz
[
2
]
+
uyk
*
gqzz
[
3
]
+
uzk
*
gqzz
[
4
]
-
0.5
f
*
(
ck
*
gqzz
1
+
uxk
*
gqzz
2
+
uyk
*
gqzz
3
+
uzk
*
gqzz
4
+
qxxk
*
gqzz
[
5
]
+
qyyk
*
gqzz
[
8
]
+
qzzk
*
gqzz
[
10
]
+
qxxk
*
gqzz
5
+
qyyk
*
gqzz
8
+
qzzk
*
gqzz10
+
2.0
f
*
(
qxyk
*
gqzz
[
6
]
+
qxzk
*
gqzz
[
7
]
+
qyzk
*
gqzz
[
9
]
)
+
2.0
f
*
(
qxyk
*
gqzz
6
+
qxzk
*
gqzz
7
+
qyzk
*
gqzz
9
)
+
ck
*
gc
[
10
]
+
uxk
*
gux
[
10
]
+
uyk
*
guy
[
10
]
+
uzk
*
guz
[
10
]
+
ck
*
gc10
+
uxk
*
gux10
+
uyk
*
guy10
+
uzk
*
guz10
+
qxxk
*
gqxx
[
10
]
+
qyyk
*
gqyy
[
10
]
+
qzzk
*
gqzz
[
10
]
+
qxxk
*
gqxx10
+
qyyk
*
gqyy10
+
qzzk
*
gqzz10
+
2.0
f
*
(
qxyk
*
gqxy
[
10
]
+
qxzk
*
gqxz
[
10
]
+
qyzk
*
gqyz
[
10
]
));
+
2.0
f
*
(
qxyk
*
gqxy10
+
qxzk
*
gqxz10
+
qyzk
*
gqyz10
));
f
idg
[
2
][
1
]
=
fidg
[
1
][
2
]
;
f
loat
fidg21
=
fidg
12
;
f
idg
[
3
][
1
]
=
fidg
[
1
][
3
]
;
f
loat
fidg31
=
fidg
13
;
f
idg
[
3
][
2
]
=
fidg
[
2
][
3
]
;
f
loat
fidg32
=
fidg
23
;
f
kdg
[
1
][
1
]
=
f
loat
fkdg11
=
-
0.5
f
*
(
ci
*
gqxx
[
1
]
-
uxi
*
gqxx
[
2
]
-
uyi
*
gqxx
[
3
]
-
uzi
*
gqxx
[
4
]
-
0.5
f
*
(
ci
*
gqxx
1
-
uxi
*
gqxx
2
-
uyi
*
gqxx
3
-
uzi
*
gqxx
4
+
qxxi
*
gqxx
[
5
]
+
qyyi
*
gqxx
[
8
]
+
qzzi
*
gqxx
[
10
]
+
qxxi
*
gqxx
5
+
qyyi
*
gqxx
8
+
qzzi
*
gqxx10
+
2.0
f
*
(
qxyi
*
gqxx
[
6
]
+
qxzi
*
gqxx
[
7
]
+
qyzi
*
gqxx
[
9
]
)
+
2.0
f
*
(
qxyi
*
gqxx
6
+
qxzi
*
gqxx
7
+
qyzi
*
gqxx
9
)
+
ci
*
gc
[
5
]
-
uxi
*
gux
[
5
]
-
uyi
*
guy
[
5
]
-
uzi
*
guz
[
5
]
+
ci
*
gc
5
-
uxi
*
gux
5
-
uyi
*
guy
5
-
uzi
*
guz
5
+
qxxi
*
gqxx
[
5
]
+
qyyi
*
gqyy
[
5
]
+
qzzi
*
gqzz
[
5
]
+
qxxi
*
gqxx
5
+
qyyi
*
gqyy
5
+
qzzi
*
gqzz
5
+
2.0
f
*
(
qxyi
*
gqxy
[
5
]
+
qxzi
*
gqxz
[
5
]
+
qyzi
*
gqyz
[
5
]
));
+
2.0
f
*
(
qxyi
*
gqxy
5
+
qxzi
*
gqxz
5
+
qyzi
*
gqyz
5
));
f
kdg
[
1
][
2
]
=
f
loat
fkdg12
=
-
0.5
f
*
(
ci
*
gqxy
[
1
]
-
uxi
*
gqxy
[
2
]
-
uyi
*
gqxy
[
3
]
-
uzi
*
gqxy
[
4
]
-
0.5
f
*
(
ci
*
gqxy
1
-
uxi
*
gqxy
2
-
uyi
*
gqxy
3
-
uzi
*
gqxy
4
+
qxxi
*
gqxy
[
5
]
+
qyyi
*
gqxy
[
8
]
+
qzzi
*
gqxy
[
10
]
+
qxxi
*
gqxy
5
+
qyyi
*
gqxy
8
+
qzzi
*
gqxy10
+
2.0
f
*
(
qxyi
*
gqxy
[
6
]
+
qxzi
*
gqxy
[
7
]
+
qyzi
*
gqxy
[
9
]
)
+
2.0
f
*
(
qxyi
*
gqxy
6
+
qxzi
*
gqxy
7
+
qyzi
*
gqxy
9
)
+
ci
*
gc
[
6
]
-
uxi
*
gux
[
6
]
-
uyi
*
guy
[
6
]
-
uzi
*
guz
[
6
]
+
ci
*
gc
6
-
uxi
*
gux
6
-
uyi
*
guy
6
-
uzi
*
guz
6
+
qxxi
*
gqxx
[
6
]
+
qyyi
*
gqyy
[
6
]
+
qzzi
*
gqzz
[
6
]
+
qxxi
*
gqxx
6
+
qyyi
*
gqyy
6
+
qzzi
*
gqzz
6
+
2.0
f
*
(
qxyi
*
gqxy
[
6
]
+
qxzi
*
gqxz
[
6
]
+
qyzi
*
gqyz
[
6
]
));
+
2.0
f
*
(
qxyi
*
gqxy
6
+
qxzi
*
gqxz
6
+
qyzi
*
gqyz
6
));
f
kdg
[
1
][
3
]
=
f
loat
fkdg13
=
-
0.5
f
*
(
ci
*
gqxz
[
1
]
-
uxi
*
gqxz
[
2
]
-
uyi
*
gqxz
[
3
]
-
uzi
*
gqxz
[
4
]
-
0.5
f
*
(
ci
*
gqxz
1
-
uxi
*
gqxz
2
-
uyi
*
gqxz
3
-
uzi
*
gqxz
4
+
qxxi
*
gqxz
[
5
]
+
qyyi
*
gqxz
[
8
]
+
qzzi
*
gqxz
[
10
]
+
qxxi
*
gqxz
5
+
qyyi
*
gqxz
8
+
qzzi
*
gqxz10
+
2.0
f
*
(
qxyi
*
gqxz
[
6
]
+
qxzi
*
gqxz
[
7
]
+
qyzi
*
gqxz
[
9
]
)
+
2.0
f
*
(
qxyi
*
gqxz
6
+
qxzi
*
gqxz
7
+
qyzi
*
gqxz
9
)
+
ci
*
gc
[
7
]
-
uxi
*
gux
[
7
]
-
uyi
*
guy
[
7
]
-
uzi
*
guz
[
7
]
+
ci
*
gc
7
-
uxi
*
gux
7
-
uyi
*
guy
7
-
uzi
*
guz
7
+
qxxi
*
gqxx
[
7
]
+
qyyi
*
gqyy
[
7
]
+
qzzi
*
gqzz
[
7
]
+
qxxi
*
gqxx
7
+
qyyi
*
gqyy
7
+
qzzi
*
gqzz
7
+
2.0
f
*
(
qxyi
*
gqxy
[
7
]
+
qxzi
*
gqxz
[
7
]
+
qyzi
*
gqyz
[
7
]
));
+
2.0
f
*
(
qxyi
*
gqxy
7
+
qxzi
*
gqxz
7
+
qyzi
*
gqyz
7
));
f
kdg
[
2
][
2
]
=
f
loat
fkdg22
=
-
0.5
f
*
(
ci
*
gqyy
[
1
]
-
uxi
*
gqyy
[
2
]
-
uyi
*
gqyy
[
3
]
-
uzi
*
gqyy
[
4
]
-
0.5
f
*
(
ci
*
gqyy
1
-
uxi
*
gqyy
2
-
uyi
*
gqyy
3
-
uzi
*
gqyy
4
+
qxxi
*
gqyy
[
5
]
+
qyyi
*
gqyy
[
8
]
+
qzzi
*
gqyy
[
10
]
+
qxxi
*
gqyy
5
+
qyyi
*
gqyy
8
+
qzzi
*
gqyy10
+
2.0
f
*
(
qxyi
*
gqyy
[
6
]
+
qxzi
*
gqyy
[
7
]
+
qyzi
*
gqyy
[
9
]
)
+
2.0
f
*
(
qxyi
*
gqyy
6
+
qxzi
*
gqyy
7
+
qyzi
*
gqyy
9
)
+
ci
*
gc
[
8
]
-
uxi
*
gux
[
8
]
-
uyi
*
guy
[
8
]
-
uzi
*
guz
[
8
]
+
ci
*
gc
8
-
uxi
*
gux
8
-
uyi
*
guy
8
-
uzi
*
guz
8
+
qxxi
*
gqxx
[
8
]
+
qyyi
*
gqyy
[
8
]
+
qzzi
*
gqzz
[
8
]
+
qxxi
*
gqxx
8
+
qyyi
*
gqyy
8
+
qzzi
*
gqzz
8
+
2.0
f
*
(
qxyi
*
gqxy
[
8
]
+
qxzi
*
gqxz
[
8
]
+
qyzi
*
gqyz
[
8
]
));
+
2.0
f
*
(
qxyi
*
gqxy
8
+
qxzi
*
gqxz
8
+
qyzi
*
gqyz
8
));
f
kdg
[
2
][
3
]
=
f
loat
fkdg23
=
-
0.5
f
*
(
ci
*
gqyz
[
1
]
-
uxi
*
gqyz
[
2
]
-
uyi
*
gqyz
[
3
]
-
uzi
*
gqyz
[
4
]
-
0.5
f
*
(
ci
*
gqyz
1
-
uxi
*
gqyz
2
-
uyi
*
gqyz
3
-
uzi
*
gqyz
4
+
qxxi
*
gqyz
[
5
]
+
qyyi
*
gqyz
[
8
]
+
qzzi
*
gqyz
[
10
]
+
qxxi
*
gqyz
5
+
qyyi
*
gqyz
8
+
qzzi
*
gqyz10
+
2.0
f
*
(
qxyi
*
gqyz
[
6
]
+
qxzi
*
gqyz
[
7
]
+
qyzi
*
gqyz
[
9
]
)
+
2.0
f
*
(
qxyi
*
gqyz
6
+
qxzi
*
gqyz
7
+
qyzi
*
gqyz
9
)
+
ci
*
gc
[
9
]
-
uxi
*
gux
[
9
]
-
uyi
*
guy
[
9
]
-
uzi
*
guz
[
9
]
+
ci
*
gc
9
-
uxi
*
gux
9
-
uyi
*
guy
9
-
uzi
*
guz
9
+
qxxi
*
gqxx
[
9
]
+
qyyi
*
gqyy
[
9
]
+
qzzi
*
gqzz
[
9
]
+
qxxi
*
gqxx
9
+
qyyi
*
gqyy
9
+
qzzi
*
gqzz
9
+
2.0
f
*
(
qxyi
*
gqxy
[
9
]
+
qxzi
*
gqxz
[
9
]
+
qyzi
*
gqyz
[
9
]
));
+
2.0
f
*
(
qxyi
*
gqxy
9
+
qxzi
*
gqxz
9
+
qyzi
*
gqyz
9
));
f
kdg
[
3
][
3
]
=
f
loat
fkdg33
=
-
0.5
f
*
(
ci
*
gqzz
[
1
]
-
uxi
*
gqzz
[
2
]
-
uyi
*
gqzz
[
3
]
-
uzi
*
gqzz
[
4
]
-
0.5
f
*
(
ci
*
gqzz
1
-
uxi
*
gqzz
2
-
uyi
*
gqzz
3
-
uzi
*
gqzz
4
+
qxxi
*
gqzz
[
5
]
+
qyyi
*
gqzz
[
8
]
+
qzzi
*
gqzz
[
10
]
+
qxxi
*
gqzz
5
+
qyyi
*
gqzz
8
+
qzzi
*
gqzz10
+
2.0
f
*
(
qxyi
*
gqzz
[
6
]
+
qxzi
*
gqzz
[
7
]
+
qyzi
*
gqzz
[
9
]
)
+
2.0
f
*
(
qxyi
*
gqzz
6
+
qxzi
*
gqzz
7
+
qyzi
*
gqzz
9
)
+
ci
*
gc
[
10
]
-
uxi
*
gux
[
10
]
-
uyi
*
guy
[
10
]
-
uzi
*
guz
[
10
]
+
ci
*
gc10
-
uxi
*
gux10
-
uyi
*
guy10
-
uzi
*
guz10
+
qxxi
*
gqxx
[
10
]
+
qyyi
*
gqyy
[
10
]
+
qzzi
*
gqzz
[
10
]
+
qxxi
*
gqxx10
+
qyyi
*
gqyy10
+
qzzi
*
gqzz10
+
2.0
f
*
(
qxyi
*
gqxy
[
10
]
+
qxzi
*
gqxz
[
10
]
+
qyzi
*
gqyz
[
10
]
));
+
2.0
f
*
(
qxyi
*
gqxy10
+
qxzi
*
gqxz10
+
qyzi
*
gqyz10
));
f
kdg
[
2
][
1
]
=
fkdg
[
1
][
2
]
;
f
loat
fkdg21
=
fkdg
12
;
f
kdg
[
3
][
1
]
=
fkdg
[
1
][
3
]
;
f
loat
fkdg31
=
fkdg
13
;
f
kdg
[
3
][
2
]
=
fkdg
[
2
][
3
]
;
f
loat
fkdg32
=
fkdg
23
;
trq
[
1
]
+=
2.0
f
*
(
qxyi
*
fidg
[
1
][
3
]
+
qyyi
*
fidg
[
2
][
3
]
+
qyzi
*
fidg
[
3
][
3
]
trq
1
+=
2.0
f
*
(
qxyi
*
fidg
13
+
qyyi
*
fidg
23
+
qyzi
*
fidg
33
-
qxzi
*
fidg
[
1
][
2
]
-
qyzi
*
fidg
[
2
][
2
]
-
qzzi
*
fidg
[
3
][
2
]
);
-
qxzi
*
fidg
12
-
qyzi
*
fidg
22
-
qzzi
*
fidg
32
);
trq
[
2
]
+=
2.0
f
*
(
qxzi
*
fidg
[
1
][
1
]
+
qyzi
*
fidg
[
2
][
1
]
+
qzzi
*
fidg
[
3
][
1
]
trq
2
+=
2.0
f
*
(
qxzi
*
fidg
11
+
qyzi
*
fidg
21
+
qzzi
*
fidg
31
-
qxxi
*
fidg
[
1
][
3
]
-
qxyi
*
fidg
[
2
][
3
]
-
qxzi
*
fidg
[
3
][
3
]
);
-
qxxi
*
fidg
13
-
qxyi
*
fidg
23
-
qxzi
*
fidg
33
);
trq
[
3
]
+=
2.0
f
*
(
qxxi
*
fidg
[
1
][
2
]
+
qxyi
*
fidg
[
2
][
2
]
+
qxzi
*
fidg
[
3
][
2
]
trq
3
+=
2.0
f
*
(
qxxi
*
fidg
12
+
qxyi
*
fidg
22
+
qxzi
*
fidg
32
-
qxyi
*
fidg
[
1
][
1
]
-
qyyi
*
fidg
[
2
][
1
]
-
qyzi
*
fidg
[
3
][
1
]
);
-
qxyi
*
fidg
11
-
qyyi
*
fidg
21
-
qyzi
*
fidg
31
);
trq_k
[
1
]
+=
2.0
f
*
trq_k
1
+=
2.0
f
*
(
qxyk
*
fkdg
[
1
][
3
]
+
qyyk
*
fkdg
[
2
][
3
]
+
qyzk
*
fkdg
[
3
][
3
]
(
qxyk
*
fkdg
13
+
qyyk
*
fkdg
23
+
qyzk
*
fkdg
33
-
qxzk
*
fkdg
[
1
][
2
]
-
qyzk
*
fkdg
[
2
][
2
]
-
qzzk
*
fkdg
[
3
][
2
]
);
-
qxzk
*
fkdg
12
-
qyzk
*
fkdg
22
-
qzzk
*
fkdg
32
);
trq_k
[
2
]
+=
2.0
f
*
trq_k
2
+=
2.0
f
*
(
qxzk
*
fkdg
[
1
][
1
]
+
qyzk
*
fkdg
[
2
][
1
]
+
qzzk
*
fkdg
[
3
][
1
]
(
qxzk
*
fkdg
11
+
qyzk
*
fkdg
21
+
qzzk
*
fkdg
31
-
qxxk
*
fkdg
[
1
][
3
]
-
qxyk
*
fkdg
[
2
][
3
]
-
qxzk
*
fkdg
[
3
][
3
]
);
-
qxxk
*
fkdg
13
-
qxyk
*
fkdg
23
-
qxzk
*
fkdg
33
);
trq_k
[
3
]
+=
2.0
f
*
trq_k
3
+=
2.0
f
*
(
qxxk
*
fkdg
[
1
][
2
]
+
qxyk
*
fkdg
[
2
][
2
]
+
qxzk
*
fkdg
[
3
][
2
]
(
qxxk
*
fkdg
12
+
qxyk
*
fkdg
22
+
qxzk
*
fkdg
32
-
qxyk
*
fkdg
[
1
][
1
]
-
qyyk
*
fkdg
[
2
][
1
]
-
qyzk
*
fkdg
[
3
][
1
]
);
-
qxyk
*
fkdg
11
-
qyyk
*
fkdg
21
-
qyzk
*
fkdg
31
);
}
}
// electrostatic solvation energy of the permanent multipoles in
// electrostatic solvation energy of the permanent multipoles in
// the GK reaction potential of the induced dipoles
// the GK reaction potential of the induced dipoles
esymi
=
-
uxi
*
(
dxk
*
gux
[
2
]
+
dyk
*
guy
[
2
]
+
dzk
*
guz
[
2
]
)
esymi
=
-
uxi
*
(
dxk
*
gux
2
+
dyk
*
guy
2
+
dzk
*
guz
2
)
-
uyi
*
(
dxk
*
gux
[
3
]
+
dyk
*
guy
[
3
]
+
dzk
*
guz
[
3
]
)
-
uyi
*
(
dxk
*
gux
3
+
dyk
*
guy
3
+
dzk
*
guz
3
)
-
uzi
*
(
dxk
*
gux
[
4
]
+
dyk
*
guy
[
4
]
+
dzk
*
guz
[
4
]
)
-
uzi
*
(
dxk
*
gux
4
+
dyk
*
guy
4
+
dzk
*
guz
4
)
-
uxk
*
(
dxi
*
gux
[
2
]
+
dyi
*
guy
[
2
]
+
dzi
*
guz
[
2
]
)
-
uxk
*
(
dxi
*
gux
2
+
dyi
*
guy
2
+
dzi
*
guz
2
)
-
uyk
*
(
dxi
*
gux
[
3
]
+
dyi
*
guy
[
3
]
+
dzi
*
guz
[
3
]
)
-
uyk
*
(
dxi
*
gux
3
+
dyi
*
guy
3
+
dzi
*
guz
3
)
-
uzk
*
(
dxi
*
gux
[
4
]
+
dyi
*
guy
[
4
]
+
dzi
*
guz
[
4
]
);
-
uzk
*
(
dxi
*
gux
4
+
dyi
*
guy
4
+
dzi
*
guz
4
);
ewii
=
ci
*
(
dxk
*
gc
[
2
]
+
dyk
*
gc
[
3
]
+
dzk
*
gc
[
4
]
)
ewii
=
ci
*
(
dxk
*
gc
2
+
dyk
*
gc
3
+
dzk
*
gc
4
)
-
ck
*
(
dxi
*
gux
[
1
]
+
dyi
*
guy
[
1
]
+
dzi
*
guz
[
1
]
)
-
ck
*
(
dxi
*
gux
1
+
dyi
*
guy
1
+
dzi
*
guz
1
)
-
dxi
*
(
qxxk
*
gux
[
5
]
+
qyyk
*
gux
[
8
]
+
qzzk
*
gux
[
10
]
-
dxi
*
(
qxxk
*
gux
5
+
qyyk
*
gux
8
+
qzzk
*
gux10
+
2.0
f
*
(
qxyk
*
gux
[
6
]
+
qxzk
*
gux
[
7
]
+
qyzk
*
gux
[
9
]
))
+
2.0
f
*
(
qxyk
*
gux
6
+
qxzk
*
gux
7
+
qyzk
*
gux
9
))
-
dyi
*
(
qxxk
*
guy
[
5
]
+
qyyk
*
guy
[
8
]
+
qzzk
*
guy
[
10
]
-
dyi
*
(
qxxk
*
guy
5
+
qyyk
*
guy
8
+
qzzk
*
guy10
+
2.0
f
*
(
qxyk
*
guy
[
6
]
+
qxzk
*
guy
[
7
]
+
qyzk
*
guy
[
9
]
))
+
2.0
f
*
(
qxyk
*
guy
6
+
qxzk
*
guy
7
+
qyzk
*
guy
9
))
-
dzi
*
(
qxxk
*
guz
[
5
]
+
qyyk
*
guz
[
8
]
+
qzzk
*
guz
[
10
]
-
dzi
*
(
qxxk
*
guz
5
+
qyyk
*
guz
8
+
qzzk
*
guz10
+
2.0
f
*
(
qxyk
*
guz
[
6
]
+
qxzk
*
guz
[
7
]
+
qyzk
*
guz
[
9
]
))
+
2.0
f
*
(
qxyk
*
guz
6
+
qxzk
*
guz
7
+
qyzk
*
guz
9
))
+
dxk
*
(
qxxi
*
gqxx
[
2
]
+
qyyi
*
gqyy
[
2
]
+
qzzi
*
gqzz
[
2
]
+
dxk
*
(
qxxi
*
gqxx
2
+
qyyi
*
gqyy
2
+
qzzi
*
gqzz
2
+
2.0
f
*
(
qxyi
*
gqxy
[
2
]
+
qxzi
*
gqxz
[
2
]
+
qyzi
*
gqyz
[
2
]
))
+
2.0
f
*
(
qxyi
*
gqxy
2
+
qxzi
*
gqxz
2
+
qyzi
*
gqyz
2
))
+
dyk
*
(
qxxi
*
gqxx
[
3
]
+
qyyi
*
gqyy
[
3
]
+
qzzi
*
gqzz
[
3
]
+
dyk
*
(
qxxi
*
gqxx
3
+
qyyi
*
gqyy
3
+
qzzi
*
gqzz
3
+
2.0
f
*
(
qxyi
*
gqxy
[
3
]
+
qxzi
*
gqxz
[
3
]
+
qyzi
*
gqyz
[
3
]
))
+
2.0
f
*
(
qxyi
*
gqxy
3
+
qxzi
*
gqxz
3
+
qyzi
*
gqyz
3
))
+
dzk
*
(
qxxi
*
gqxx
[
4
]
+
qyyi
*
gqyy
[
4
]
+
qzzi
*
gqzz
[
4
]
+
dzk
*
(
qxxi
*
gqxx
4
+
qyyi
*
gqyy
4
+
qzzi
*
gqzz
4
+
2.0
f
*
(
qxyi
*
gqxy
[
4
]
+
qxzi
*
gqxz
[
4
]
+
qyzi
*
gqyz
[
4
]
));
+
2.0
f
*
(
qxyi
*
gqxy
4
+
qxzi
*
gqxz
4
+
qyzi
*
gqyz
4
));
ewki
=
ci
*
(
dxk
*
gux
[
1
]
+
dyk
*
guy
[
1
]
+
dzk
*
guz
[
1
]
)
ewki
=
ci
*
(
dxk
*
gux
1
+
dyk
*
guy
1
+
dzk
*
guz
1
)
-
ck
*
(
dxi
*
gc
[
2
]
+
dyi
*
gc
[
3
]
+
dzi
*
gc
[
4
]
)
-
ck
*
(
dxi
*
gc
2
+
dyi
*
gc
3
+
dzi
*
gc
4
)
-
dxi
*
(
qxxk
*
gqxx
[
2
]
+
qyyk
*
gqyy
[
2
]
+
qzzk
*
gqzz
[
2
]
-
dxi
*
(
qxxk
*
gqxx
2
+
qyyk
*
gqyy
2
+
qzzk
*
gqzz
2
+
2.0
f
*
(
qxyk
*
gqxy
[
2
]
+
qxzk
*
gqxz
[
2
]
+
qyzk
*
gqyz
[
2
]
))
+
2.0
f
*
(
qxyk
*
gqxy
2
+
qxzk
*
gqxz
2
+
qyzk
*
gqyz
2
))
-
dyi
*
(
qxxk
*
gqxx
[
3
]
+
qyyk
*
gqyy
[
3
]
+
qzzk
*
gqzz
[
3
]
-
dyi
*
(
qxxk
*
gqxx
3
+
qyyk
*
gqyy
3
+
qzzk
*
gqzz
3
+
2.0
f
*
(
qxyk
*
gqxy
[
3
]
+
qxzk
*
gqxz
[
3
]
+
qyzk
*
gqyz
[
3
]
))
+
2.0
f
*
(
qxyk
*
gqxy
3
+
qxzk
*
gqxz
3
+
qyzk
*
gqyz
3
))
-
dzi
*
(
qxxk
*
gqxx
[
4
]
+
qyyk
*
gqyy
[
4
]
+
qzzk
*
gqzz
[
4
]
-
dzi
*
(
qxxk
*
gqxx
4
+
qyyk
*
gqyy
4
+
qzzk
*
gqzz
4
+
2.0
f
*
(
qxyk
*
gqxy
[
4
]
+
qxzk
*
gqxz
[
4
]
+
qyzk
*
gqyz
[
4
]
))
+
2.0
f
*
(
qxyk
*
gqxy
4
+
qxzk
*
gqxz
4
+
qyzk
*
gqyz
4
))
+
dxk
*
(
qxxi
*
gux
[
5
]
+
qyyi
*
gux
[
8
]
+
qzzi
*
gux
[
10
]
+
dxk
*
(
qxxi
*
gux
5
+
qyyi
*
gux
8
+
qzzi
*
gux10
+
2.0
f
*
(
qxyi
*
gux
[
6
]
+
qxzi
*
gux
[
7
]
+
qyzi
*
gux
[
9
]
))
+
2.0
f
*
(
qxyi
*
gux
6
+
qxzi
*
gux
7
+
qyzi
*
gux
9
))
+
dyk
*
(
qxxi
*
guy
[
5
]
+
qyyi
*
guy
[
8
]
+
qzzi
*
guy
[
10
]
+
dyk
*
(
qxxi
*
guy
5
+
qyyi
*
guy
8
+
qzzi
*
guy10
+
2.0
f
*
(
qxyi
*
guy
[
6
]
+
qxzi
*
guy
[
7
]
+
qyzi
*
guy
[
9
]
))
+
2.0
f
*
(
qxyi
*
guy
6
+
qxzi
*
guy
7
+
qyzi
*
guy
9
))
+
dzk
*
(
qxxi
*
guz
[
5
]
+
qyyi
*
guz
[
8
]
+
qzzi
*
guz
[
10
]
+
dzk
*
(
qxxi
*
guz
5
+
qyyi
*
guz
8
+
qzzi
*
guz10
+
2.0
f
*
(
qxyi
*
guz
[
6
]
+
qxzi
*
guz
[
7
]
+
qyzi
*
guz
[
9
]
));
+
2.0
f
*
(
qxyi
*
guz
6
+
qxzi
*
guz
7
+
qyzi
*
guz
9
));
// electrostatic solvation free energy gradient of the permanent
// electrostatic solvation free energy gradient of the permanent
// multipoles in the reaction potential of the induced dipoles
// multipoles in the reaction potential of the induced dipoles
dpsymdx
=
-
uxi
*
(
sxk
*
gux
[
5
]
+
syk
*
guy
[
5
]
+
szk
*
guz
[
5
]
)
dpsymdx
=
-
uxi
*
(
sxk
*
gux
5
+
syk
*
guy
5
+
szk
*
guz
5
)
-
uyi
*
(
sxk
*
gux
[
6
]
+
syk
*
guy
[
6
]
+
szk
*
guz
[
6
]
)
-
uyi
*
(
sxk
*
gux
6
+
syk
*
guy
6
+
szk
*
guz
6
)
-
uzi
*
(
sxk
*
gux
[
7
]
+
syk
*
guy
[
7
]
+
szk
*
guz
[
7
]
)
-
uzi
*
(
sxk
*
gux
7
+
syk
*
guy
7
+
szk
*
guz
7
)
-
uxk
*
(
sxi
*
gux
[
5
]
+
syi
*
guy
[
5
]
+
szi
*
guz
[
5
]
)
-
uxk
*
(
sxi
*
gux
5
+
syi
*
guy
5
+
szi
*
guz
5
)
-
uyk
*
(
sxi
*
gux
[
6
]
+
syi
*
guy
[
6
]
+
szi
*
guz
[
6
]
)
-
uyk
*
(
sxi
*
gux
6
+
syi
*
guy
6
+
szi
*
guz
6
)
-
uzk
*
(
sxi
*
gux
[
7
]
+
syi
*
guy
[
7
]
+
szi
*
guz
[
7
]
);
-
uzk
*
(
sxi
*
gux
7
+
syi
*
guy
7
+
szi
*
guz
7
);
dpwidx
=
ci
*
(
sxk
*
gc
[
5
]
+
syk
*
gc
[
6
]
+
szk
*
gc
[
7
]
)
dpwidx
=
ci
*
(
sxk
*
gc
5
+
syk
*
gc
6
+
szk
*
gc
7
)
-
ck
*
(
sxi
*
gux
[
2
]
+
syi
*
guy
[
2
]
+
szi
*
guz
[
2
]
)
-
ck
*
(
sxi
*
gux
2
+
syi
*
guy
2
+
szi
*
guz
2
)
-
sxi
*
(
qxxk
*
gux
[
11
]
+
qyyk
*
gux
[
14
]
+
qzzk
*
gux
[
16
]
-
sxi
*
(
qxxk
*
gux11
+
qyyk
*
gux14
+
qzzk
*
gux16
+
2.0
f
*
(
qxyk
*
gux
[
12
]
+
qxzk
*
gux
[
13
]
+
qyzk
*
gux
[
15
]
))
+
2.0
f
*
(
qxyk
*
gux12
+
qxzk
*
gux13
+
qyzk
*
gux15
))
-
syi
*
(
qxxk
*
guy
[
11
]
+
qyyk
*
guy
[
14
]
+
qzzk
*
guy
[
16
]
-
syi
*
(
qxxk
*
guy11
+
qyyk
*
guy14
+
qzzk
*
guy16
+
2.0
f
*
(
qxyk
*
guy
[
12
]
+
qxzk
*
guy
[
13
]
+
qyzk
*
guy
[
15
]
))
+
2.0
f
*
(
qxyk
*
guy12
+
qxzk
*
guy13
+
qyzk
*
guy15
))
-
szi
*
(
qxxk
*
guz
[
11
]
+
qyyk
*
guz
[
14
]
+
qzzk
*
guz
[
16
]
-
szi
*
(
qxxk
*
guz11
+
qyyk
*
guz14
+
qzzk
*
guz16
+
2.0
f
*
(
qxyk
*
guz
[
12
]
+
qxzk
*
guz
[
13
]
+
qyzk
*
guz
[
15
]
))
+
2.0
f
*
(
qxyk
*
guz12
+
qxzk
*
guz13
+
qyzk
*
guz15
))
+
sxk
*
(
qxxi
*
gqxx
[
5
]
+
qyyi
*
gqyy
[
5
]
+
qzzi
*
gqzz
[
5
]
+
sxk
*
(
qxxi
*
gqxx
5
+
qyyi
*
gqyy
5
+
qzzi
*
gqzz
5
+
2.0
f
*
(
qxyi
*
gqxy
[
5
]
+
qxzi
*
gqxz
[
5
]
+
qyzi
*
gqyz
[
5
]
))
+
2.0
f
*
(
qxyi
*
gqxy
5
+
qxzi
*
gqxz
5
+
qyzi
*
gqyz
5
))
+
syk
*
(
qxxi
*
gqxx
[
6
]
+
qyyi
*
gqyy
[
6
]
+
qzzi
*
gqzz
[
6
]
+
syk
*
(
qxxi
*
gqxx
6
+
qyyi
*
gqyy
6
+
qzzi
*
gqzz
6
+
2.0
f
*
(
qxyi
*
gqxy
[
6
]
+
qxzi
*
gqxz
[
6
]
+
qyzi
*
gqyz
[
6
]
))
+
2.0
f
*
(
qxyi
*
gqxy
6
+
qxzi
*
gqxz
6
+
qyzi
*
gqyz
6
))
+
szk
*
(
qxxi
*
gqxx
[
7
]
+
qyyi
*
gqyy
[
7
]
+
qzzi
*
gqzz
[
7
]
+
szk
*
(
qxxi
*
gqxx
7
+
qyyi
*
gqyy
7
+
qzzi
*
gqzz
7
+
2.0
f
*
(
qxyi
*
gqxy
[
7
]
+
qxzi
*
gqxz
[
7
]
+
qyzi
*
gqyz
[
7
]
));
+
2.0
f
*
(
qxyi
*
gqxy
7
+
qxzi
*
gqxz
7
+
qyzi
*
gqyz
7
));
dpwkdx
=
ci
*
(
sxk
*
gux
[
2
]
+
syk
*
guy
[
2
]
+
szk
*
guz
[
2
]
)
dpwkdx
=
ci
*
(
sxk
*
gux
2
+
syk
*
guy
2
+
szk
*
guz
2
)
-
ck
*
(
sxi
*
gc
[
5
]
+
syi
*
gc
[
6
]
+
szi
*
gc
[
7
]
)
-
ck
*
(
sxi
*
gc
5
+
syi
*
gc
6
+
szi
*
gc
7
)
-
sxi
*
(
qxxk
*
gqxx
[
5
]
+
qyyk
*
gqyy
[
5
]
+
qzzk
*
gqzz
[
5
]
-
sxi
*
(
qxxk
*
gqxx
5
+
qyyk
*
gqyy
5
+
qzzk
*
gqzz
5
+
2.0
f
*
(
qxyk
*
gqxy
[
5
]
+
qxzk
*
gqxz
[
5
]
+
qyzk
*
gqyz
[
5
]
))
+
2.0
f
*
(
qxyk
*
gqxy
5
+
qxzk
*
gqxz
5
+
qyzk
*
gqyz
5
))
-
syi
*
(
qxxk
*
gqxx
[
6
]
+
qyyk
*
gqyy
[
6
]
+
qzzk
*
gqzz
[
6
]
-
syi
*
(
qxxk
*
gqxx
6
+
qyyk
*
gqyy
6
+
qzzk
*
gqzz
6
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxz
[
6
]
+
qyzk
*
gqyz
[
6
]
))
+
2.0
f
*
(
qxyk
*
gqxy
6
+
qxzk
*
gqxz
6
+
qyzk
*
gqyz
6
))
-
szi
*
(
qxxk
*
gqxx
[
7
]
+
qyyk
*
gqyy
[
7
]
+
qzzk
*
gqzz
[
7
]
-
szi
*
(
qxxk
*
gqxx
7
+
qyyk
*
gqyy
7
+
qzzk
*
gqzz
7
+
2.0
f
*
(
qxyk
*
gqxy
[
7
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqyz
[
7
]
))
+
2.0
f
*
(
qxyk
*
gqxy
7
+
qxzk
*
gqxz
7
+
qyzk
*
gqyz
7
))
+
sxk
*
(
qxxi
*
gux
[
11
]
+
qyyi
*
gux
[
14
]
+
qzzi
*
gux
[
16
]
+
sxk
*
(
qxxi
*
gux11
+
qyyi
*
gux14
+
qzzi
*
gux16
+
2.0
f
*
(
qxyi
*
gux
[
12
]
+
qxzi
*
gux
[
13
]
+
qyzi
*
gux
[
15
]
))
+
2.0
f
*
(
qxyi
*
gux12
+
qxzi
*
gux13
+
qyzi
*
gux15
))
+
syk
*
(
qxxi
*
guy
[
11
]
+
qyyi
*
guy
[
14
]
+
qzzi
*
guy
[
16
]
+
syk
*
(
qxxi
*
guy11
+
qyyi
*
guy14
+
qzzi
*
guy16
+
2.0
f
*
(
qxyi
*
guy
[
12
]
+
qxzi
*
guy
[
13
]
+
qyzi
*
guy
[
15
]
))
+
2.0
f
*
(
qxyi
*
guy12
+
qxzi
*
guy13
+
qyzi
*
guy15
))
+
szk
*
(
qxxi
*
guz
[
11
]
+
qyyi
*
guz
[
14
]
+
qzzi
*
guz
[
16
]
+
szk
*
(
qxxi
*
guz11
+
qyyi
*
guz14
+
qzzi
*
guz16
+
2.0
f
*
(
qxyi
*
guz
[
12
]
+
qxzi
*
guz
[
13
]
+
qyzi
*
guz
[
15
]
));
+
2.0
f
*
(
qxyi
*
guz12
+
qxzi
*
guz13
+
qyzi
*
guz15
));
dpdx
=
0.5
f
*
(
dpsymdx
+
0.5
f
*
(
dpwidx
+
dpwkdx
));
dpdx
=
0.5
f
*
(
dpsymdx
+
0.5
f
*
(
dpwidx
+
dpwkdx
));
dpsymdy
=
-
uxi
*
(
sxk
*
gux
[
6
]
+
syk
*
guy
[
6
]
+
szk
*
guz
[
6
]
)
dpsymdy
=
-
uxi
*
(
sxk
*
gux
6
+
syk
*
guy
6
+
szk
*
guz
6
)
-
uyi
*
(
sxk
*
gux
[
8
]
+
syk
*
guy
[
8
]
+
szk
*
guz
[
8
]
)
-
uyi
*
(
sxk
*
gux
8
+
syk
*
guy
8
+
szk
*
guz
8
)
-
uzi
*
(
sxk
*
gux
[
9
]
+
syk
*
guy
[
9
]
+
szk
*
guz
[
9
]
)
-
uzi
*
(
sxk
*
gux
9
+
syk
*
guy
9
+
szk
*
guz
9
)
-
uxk
*
(
sxi
*
gux
[
6
]
+
syi
*
guy
[
6
]
+
szi
*
guz
[
6
]
)
-
uxk
*
(
sxi
*
gux
6
+
syi
*
guy
6
+
szi
*
guz
6
)
-
uyk
*
(
sxi
*
gux
[
8
]
+
syi
*
guy
[
8
]
+
szi
*
guz
[
8
]
)
-
uyk
*
(
sxi
*
gux
8
+
syi
*
guy
8
+
szi
*
guz
8
)
-
uzk
*
(
sxi
*
gux
[
9
]
+
syi
*
guy
[
9
]
+
szi
*
guz
[
9
]
);
-
uzk
*
(
sxi
*
gux
9
+
syi
*
guy
9
+
szi
*
guz
9
);
dpwidy
=
ci
*
(
sxk
*
gc
[
6
]
+
syk
*
gc
[
8
]
+
szk
*
gc
[
9
]
)
dpwidy
=
ci
*
(
sxk
*
gc
6
+
syk
*
gc
8
+
szk
*
gc
9
)
-
ck
*
(
sxi
*
gux
[
3
]
+
syi
*
guy
[
3
]
+
szi
*
guz
[
3
]
)
-
ck
*
(
sxi
*
gux
3
+
syi
*
guy
3
+
szi
*
guz
3
)
-
sxi
*
(
qxxk
*
gux
[
12
]
+
qyyk
*
gux
[
17
]
+
qzzk
*
gux
[
19
]
-
sxi
*
(
qxxk
*
gux12
+
qyyk
*
gux17
+
qzzk
*
gux19
+
2.0
f
*
(
qxyk
*
gux
[
14
]
+
qxzk
*
gux
[
15
]
+
qyzk
*
gux
[
18
]
))
+
2.0
f
*
(
qxyk
*
gux14
+
qxzk
*
gux15
+
qyzk
*
gux18
))
-
syi
*
(
qxxk
*
guy
[
12
]
+
qyyk
*
guy
[
17
]
+
qzzk
*
guy
[
19
]
-
syi
*
(
qxxk
*
guy12
+
qyyk
*
guy17
+
qzzk
*
guy19
+
2.0
f
*
(
qxyk
*
guy
[
14
]
+
qxzk
*
guy
[
15
]
+
qyzk
*
guy
[
18
]
))
+
2.0
f
*
(
qxyk
*
guy14
+
qxzk
*
guy15
+
qyzk
*
guy18
))
-
szi
*
(
qxxk
*
guz
[
12
]
+
qyyk
*
guz
[
17
]
+
qzzk
*
guz
[
19
]
-
szi
*
(
qxxk
*
guz12
+
qyyk
*
guz17
+
qzzk
*
guz19
+
2.0
f
*
(
qxyk
*
guz
[
14
]
+
qxzk
*
guz
[
15
]
+
qyzk
*
guz
[
18
]
))
+
2.0
f
*
(
qxyk
*
guz14
+
qxzk
*
guz15
+
qyzk
*
guz18
))
+
sxk
*
(
qxxi
*
gqxx
[
6
]
+
qyyi
*
gqyy
[
6
]
+
qzzi
*
gqzz
[
6
]
+
sxk
*
(
qxxi
*
gqxx
6
+
qyyi
*
gqyy
6
+
qzzi
*
gqzz
6
+
2.0
f
*
(
qxyi
*
gqxy
[
6
]
+
qxzi
*
gqxz
[
6
]
+
qyzi
*
gqyz
[
6
]
))
+
2.0
f
*
(
qxyi
*
gqxy
6
+
qxzi
*
gqxz
6
+
qyzi
*
gqyz
6
))
+
syk
*
(
qxxi
*
gqxx
[
8
]
+
qyyi
*
gqyy
[
8
]
+
qzzi
*
gqzz
[
8
]
+
syk
*
(
qxxi
*
gqxx
8
+
qyyi
*
gqyy
8
+
qzzi
*
gqzz
8
+
2.0
f
*
(
qxyi
*
gqxy
[
8
]
+
qxzi
*
gqxz
[
8
]
+
qyzi
*
gqyz
[
8
]
))
+
2.0
f
*
(
qxyi
*
gqxy
8
+
qxzi
*
gqxz
8
+
qyzi
*
gqyz
8
))
+
szk
*
(
qxxi
*
gqxx
[
9
]
+
qyyi
*
gqyy
[
9
]
+
qzzi
*
gqzz
[
9
]
+
szk
*
(
qxxi
*
gqxx
9
+
qyyi
*
gqyy
9
+
qzzi
*
gqzz
9
+
2.0
f
*
(
qxyi
*
gqxy
[
9
]
+
qxzi
*
gqxz
[
9
]
+
qyzi
*
gqyz
[
9
]
));
+
2.0
f
*
(
qxyi
*
gqxy
9
+
qxzi
*
gqxz
9
+
qyzi
*
gqyz
9
));
dpwkdy
=
ci
*
(
sxk
*
gux
[
3
]
+
syk
*
guy
[
3
]
+
szk
*
guz
[
3
]
)
dpwkdy
=
ci
*
(
sxk
*
gux
3
+
syk
*
guy
3
+
szk
*
guz
3
)
-
ck
*
(
sxi
*
gc
[
6
]
+
syi
*
gc
[
8
]
+
szi
*
gc
[
9
]
)
-
ck
*
(
sxi
*
gc
6
+
syi
*
gc
8
+
szi
*
gc
9
)
-
sxi
*
(
qxxk
*
gqxx
[
6
]
+
qyyk
*
gqyy
[
6
]
+
qzzk
*
gqzz
[
6
]
-
sxi
*
(
qxxk
*
gqxx
6
+
qyyk
*
gqyy
6
+
qzzk
*
gqzz
6
+
2.0
f
*
(
qxyk
*
gqxy
[
6
]
+
qxzk
*
gqxz
[
6
]
+
qyzk
*
gqyz
[
6
]
))
+
2.0
f
*
(
qxyk
*
gqxy
6
+
qxzk
*
gqxz
6
+
qyzk
*
gqyz
6
))
-
syi
*
(
qxxk
*
gqxx
[
8
]
+
qyyk
*
gqyy
[
8
]
+
qzzk
*
gqzz
[
8
]
-
syi
*
(
qxxk
*
gqxx
8
+
qyyk
*
gqyy
8
+
qzzk
*
gqzz
8
+
2.0
f
*
(
qxyk
*
gqxy
[
8
]
+
qxzk
*
gqxz
[
8
]
+
qyzk
*
gqyz
[
8
]
))
+
2.0
f
*
(
qxyk
*
gqxy
8
+
qxzk
*
gqxz
8
+
qyzk
*
gqyz
8
))
-
szi
*
(
qxxk
*
gqxx
[
9
]
+
qyyk
*
gqyy
[
9
]
+
qzzk
*
gqzz
[
9
]
-
szi
*
(
qxxk
*
gqxx
9
+
qyyk
*
gqyy
9
+
qzzk
*
gqzz
9
+
2.0
f
*
(
qxyk
*
gqxy
[
9
]
+
qxzk
*
gqxz
[
9
]
+
qyzk
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyk
*
gqxy
9
+
qxzk
*
gqxz
9
+
qyzk
*
gqyz
9
))
+
sxk
*
(
qxxi
*
gux
[
12
]
+
qyyi
*
gux
[
17
]
+
qzzi
*
gux
[
19
]
+
sxk
*
(
qxxi
*
gux12
+
qyyi
*
gux17
+
qzzi
*
gux19
+
2.0
f
*
(
qxyi
*
gux
[
14
]
+
qxzi
*
gux
[
15
]
+
qyzi
*
gux
[
18
]
))
+
2.0
f
*
(
qxyi
*
gux14
+
qxzi
*
gux15
+
qyzi
*
gux18
))
+
syk
*
(
qxxi
*
guy
[
12
]
+
qyyi
*
guy
[
17
]
+
qzzi
*
guy
[
19
]
+
syk
*
(
qxxi
*
guy12
+
qyyi
*
guy17
+
qzzi
*
guy19
+
2.0
f
*
(
qxyi
*
guy
[
14
]
+
qxzi
*
guy
[
15
]
+
qyzi
*
guy
[
18
]
))
+
2.0
f
*
(
qxyi
*
guy14
+
qxzi
*
guy15
+
qyzi
*
guy18
))
+
szk
*
(
qxxi
*
guz
[
12
]
+
qyyi
*
guz
[
17
]
+
qzzi
*
guz
[
19
]
+
szk
*
(
qxxi
*
guz12
+
qyyi
*
guz17
+
qzzi
*
guz19
+
2.0
f
*
(
qxyi
*
guz
[
14
]
+
qxzi
*
guz
[
15
]
+
qyzi
*
guz
[
18
]
));
+
2.0
f
*
(
qxyi
*
guz14
+
qxzi
*
guz15
+
qyzi
*
guz18
));
dpdy
=
0.5
f
*
(
dpsymdy
+
0.5
f
*
(
dpwidy
+
dpwkdy
));
dpdy
=
0.5
f
*
(
dpsymdy
+
0.5
f
*
(
dpwidy
+
dpwkdy
));
dpsymdz
=
-
uxi
*
(
sxk
*
gux
[
7
]
+
syk
*
guy
[
7
]
+
szk
*
guz
[
7
]
)
dpsymdz
=
-
uxi
*
(
sxk
*
gux
7
+
syk
*
guy
7
+
szk
*
guz
7
)
-
uyi
*
(
sxk
*
gux
[
9
]
+
syk
*
guy
[
9
]
+
szk
*
guz
[
9
]
)
-
uyi
*
(
sxk
*
gux
9
+
syk
*
guy
9
+
szk
*
guz
9
)
-
uzi
*
(
sxk
*
gux
[
10
]
+
syk
*
guy
[
10
]
+
szk
*
guz
[
10
]
)
-
uzi
*
(
sxk
*
gux10
+
syk
*
guy10
+
szk
*
guz10
)
-
uxk
*
(
sxi
*
gux
[
7
]
+
syi
*
guy
[
7
]
+
szi
*
guz
[
7
]
)
-
uxk
*
(
sxi
*
gux
7
+
syi
*
guy
7
+
szi
*
guz
7
)
-
uyk
*
(
sxi
*
gux
[
9
]
+
syi
*
guy
[
9
]
+
szi
*
guz
[
9
]
)
-
uyk
*
(
sxi
*
gux
9
+
syi
*
guy
9
+
szi
*
guz
9
)
-
uzk
*
(
sxi
*
gux
[
10
]
+
syi
*
guy
[
10
]
+
szi
*
guz
[
10
]
);
-
uzk
*
(
sxi
*
gux10
+
syi
*
guy10
+
szi
*
guz10
);
dpwidz
=
ci
*
(
sxk
*
gc
[
7
]
+
syk
*
gc
[
9
]
+
szk
*
gc
[
10
]
)
dpwidz
=
ci
*
(
sxk
*
gc
7
+
syk
*
gc
9
+
szk
*
gc10
)
-
ck
*
(
sxi
*
gux
[
4
]
+
syi
*
guy
[
4
]
+
szi
*
guz
[
4
]
)
-
ck
*
(
sxi
*
gux
4
+
syi
*
guy
4
+
szi
*
guz
4
)
-
sxi
*
(
qxxk
*
gux
[
13
]
+
qyyk
*
gux
[
18
]
+
qzzk
*
gux
[
20
]
-
sxi
*
(
qxxk
*
gux13
+
qyyk
*
gux18
+
qzzk
*
gux20
+
2.0
f
*
(
qxyk
*
gux
[
15
]
+
qxzk
*
gux
[
16
]
+
qyzk
*
gux
[
19
]
))
+
2.0
f
*
(
qxyk
*
gux15
+
qxzk
*
gux16
+
qyzk
*
gux19
))
-
syi
*
(
qxxk
*
guy
[
13
]
+
qyyk
*
guy
[
18
]
+
qzzk
*
guy
[
20
]
-
syi
*
(
qxxk
*
guy13
+
qyyk
*
guy18
+
qzzk
*
guy20
+
2.0
f
*
(
qxyk
*
guy
[
15
]
+
qxzk
*
guy
[
16
]
+
qyzk
*
guy
[
19
]
))
+
2.0
f
*
(
qxyk
*
guy15
+
qxzk
*
guy16
+
qyzk
*
guy19
))
-
szi
*
(
qxxk
*
guz
[
13
]
+
qyyk
*
guz
[
18
]
+
qzzk
*
guz
[
20
]
-
szi
*
(
qxxk
*
guz13
+
qyyk
*
guz18
+
qzzk
*
guz20
+
2.0
f
*
(
qxyk
*
guz
[
15
]
+
qxzk
*
guz
[
16
]
+
qyzk
*
guz
[
19
]
))
+
2.0
f
*
(
qxyk
*
guz15
+
qxzk
*
guz16
+
qyzk
*
guz19
))
+
sxk
*
(
qxxi
*
gqxx
[
7
]
+
qyyi
*
gqyy
[
7
]
+
qzzi
*
gqzz
[
7
]
+
sxk
*
(
qxxi
*
gqxx
7
+
qyyi
*
gqyy
7
+
qzzi
*
gqzz
7
+
2.0
f
*
(
qxyi
*
gqxy
[
7
]
+
qxzi
*
gqxz
[
7
]
+
qyzi
*
gqyz
[
7
]
))
+
2.0
f
*
(
qxyi
*
gqxy
7
+
qxzi
*
gqxz
7
+
qyzi
*
gqyz
7
))
+
syk
*
(
qxxi
*
gqxx
[
9
]
+
qyyi
*
gqyy
[
9
]
+
qzzi
*
gqzz
[
9
]
+
syk
*
(
qxxi
*
gqxx
9
+
qyyi
*
gqyy
9
+
qzzi
*
gqzz
9
+
2.0
f
*
(
qxyi
*
gqxy
[
9
]
+
qxzi
*
gqxz
[
9
]
+
qyzi
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyi
*
gqxy
9
+
qxzi
*
gqxz
9
+
qyzi
*
gqyz
9
))
+
szk
*
(
qxxi
*
gqxx
[
10
]
+
qyyi
*
gqyy
[
10
]
+
qzzi
*
gqzz
[
10
]
+
szk
*
(
qxxi
*
gqxx10
+
qyyi
*
gqyy10
+
qzzi
*
gqzz10
+
2.0
f
*
(
qxyi
*
gqxy
[
10
]
+
qxzi
*
gqxz
[
10
]
+
qyzi
*
gqyz
[
10
]
));
+
2.0
f
*
(
qxyi
*
gqxy10
+
qxzi
*
gqxz10
+
qyzi
*
gqyz10
));
dpwkdz
=
ci
*
(
sxk
*
gux
[
4
]
+
syk
*
guy
[
4
]
+
szk
*
guz
[
4
]
)
dpwkdz
=
ci
*
(
sxk
*
gux
4
+
syk
*
guy
4
+
szk
*
guz
4
)
-
ck
*
(
sxi
*
gc
[
7
]
+
syi
*
gc
[
9
]
+
szi
*
gc
[
10
]
)
-
ck
*
(
sxi
*
gc
7
+
syi
*
gc
9
+
szi
*
gc10
)
-
sxi
*
(
qxxk
*
gqxx
[
7
]
+
qyyk
*
gqyy
[
7
]
+
qzzk
*
gqzz
[
7
]
-
sxi
*
(
qxxk
*
gqxx
7
+
qyyk
*
gqyy
7
+
qzzk
*
gqzz
7
+
2.0
f
*
(
qxyk
*
gqxy
[
7
]
+
qxzk
*
gqxz
[
7
]
+
qyzk
*
gqyz
[
7
]
))
+
2.0
f
*
(
qxyk
*
gqxy
7
+
qxzk
*
gqxz
7
+
qyzk
*
gqyz
7
))
-
syi
*
(
qxxk
*
gqxx
[
9
]
+
qyyk
*
gqyy
[
9
]
+
qzzk
*
gqzz
[
9
]
-
syi
*
(
qxxk
*
gqxx
9
+
qyyk
*
gqyy
9
+
qzzk
*
gqzz
9
+
2.0
f
*
(
qxyk
*
gqxy
[
9
]
+
qxzk
*
gqxz
[
9
]
+
qyzk
*
gqyz
[
9
]
))
+
2.0
f
*
(
qxyk
*
gqxy
9
+
qxzk
*
gqxz
9
+
qyzk
*
gqyz
9
))
-
szi
*
(
qxxk
*
gqxx
[
10
]
+
qyyk
*
gqyy
[
10
]
+
qzzk
*
gqzz
[
10
]
-
szi
*
(
qxxk
*
gqxx10
+
qyyk
*
gqyy10
+
qzzk
*
gqzz10
+
2.0
f
*
(
qxyk
*
gqxy
[
10
]
+
qxzk
*
gqxz
[
10
]
+
qyzk
*
gqyz
[
10
]
))
+
2.0
f
*
(
qxyk
*
gqxy10
+
qxzk
*
gqxz10
+
qyzk
*
gqyz10
))
+
sxk
*
(
qxxi
*
gux
[
13
]
+
qyyi
*
gux
[
18
]
+
qzzi
*
gux
[
20
]
+
sxk
*
(
qxxi
*
gux13
+
qyyi
*
gux18
+
qzzi
*
gux20
+
2.0
f
*
(
qxyi
*
gux
[
15
]
+
qxzi
*
gux
[
16
]
+
qyzi
*
gux
[
19
]
))
+
2.0
f
*
(
qxyi
*
gux15
+
qxzi
*
gux16
+
qyzi
*
gux19
))
+
syk
*
(
qxxi
*
guy
[
13
]
+
qyyi
*
guy
[
18
]
+
qzzi
*
guy
[
20
]
+
syk
*
(
qxxi
*
guy13
+
qyyi
*
guy18
+
qzzi
*
guy20
+
2.0
f
*
(
qxyi
*
guy
[
15
]
+
qxzi
*
guy
[
16
]
+
qyzi
*
guy
[
19
]
))
+
2.0
f
*
(
qxyi
*
guy15
+
qxzi
*
guy16
+
qyzi
*
guy19
))
+
szk
*
(
qxxi
*
guz
[
13
]
+
qyyi
*
guz
[
18
]
+
qzzi
*
guz
[
20
]
+
szk
*
(
qxxi
*
guz13
+
qyyi
*
guz18
+
qzzi
*
guz20
+
2.0
f
*
(
qxyi
*
guz
[
15
]
+
qxzi
*
guz
[
16
]
+
qyzi
*
guz
[
19
]
));
+
2.0
f
*
(
qxyi
*
guz15
+
qxzi
*
guz16
+
qyzi
*
guz19
));
dpdz
=
0.5
f
*
(
dpsymdz
+
0.5
f
*
(
dpwidz
+
dpwkdz
));
dpdz
=
0.5
f
*
(
dpsymdz
+
0.5
f
*
(
dpwidz
+
dpwkdz
));
...
@@ -1651,42 +1382,42 @@ int debugIndex = atomJ;
...
@@ -1651,42 +1382,42 @@ int debugIndex = atomJ;
// electrostatic solvation free energy gradient of the permanent;
// electrostatic solvation free energy gradient of the permanent;
// multipoles in the reaction potential of the induced dipoles;
// multipoles in the reaction potential of the induced dipoles;
dsymdr
=
-
uxi
*
(
sxk
*
gux
[
22
]
+
syk
*
guy
[
22
]
+
szk
*
guz
[
22
]
)
dsymdr
=
-
uxi
*
(
sxk
*
gux22
+
syk
*
guy22
+
szk
*
guz22
)
-
uyi
*
(
sxk
*
gux
[
23
]
+
syk
*
guy
[
23
]
+
szk
*
guz
[
23
]
)
-
uyi
*
(
sxk
*
gux23
+
syk
*
guy23
+
szk
*
guz23
)
-
uzi
*
(
sxk
*
gux
[
24
]
+
syk
*
guy
[
24
]
+
szk
*
guz
[
24
]
)
-
uzi
*
(
sxk
*
gux24
+
syk
*
guy24
+
szk
*
guz24
)
-
uxk
*
(
sxi
*
gux
[
22
]
+
syi
*
guy
[
22
]
+
szi
*
guz
[
22
]
)
-
uxk
*
(
sxi
*
gux22
+
syi
*
guy22
+
szi
*
guz22
)
-
uyk
*
(
sxi
*
gux
[
23
]
+
syi
*
guy
[
23
]
+
szi
*
guz
[
23
]
)
-
uyk
*
(
sxi
*
gux23
+
syi
*
guy23
+
szi
*
guz23
)
-
uzk
*
(
sxi
*
gux
[
24
]
+
syi
*
guy
[
24
]
+
szi
*
guz
[
24
]
);
-
uzk
*
(
sxi
*
gux24
+
syi
*
guy24
+
szi
*
guz24
);
dwipdr
=
ci
*
(
sxk
*
gc
[
22
]
+
syk
*
gc
[
23
]
+
szk
*
gc
[
24
]
)
dwipdr
=
ci
*
(
sxk
*
gc22
+
syk
*
gc23
+
szk
*
gc24
)
-
ck
*
(
sxi
*
gux
[
21
]
+
syi
*
guy
[
21
]
+
szi
*
guz
[
21
]
)
-
ck
*
(
sxi
*
gux21
+
syi
*
guy21
+
szi
*
guz21
)
-
sxi
*
(
qxxk
*
gux
[
25
]
+
qyyk
*
gux
[
28
]
+
qzzk
*
gux
[
30
]
-
sxi
*
(
qxxk
*
gux25
+
qyyk
*
gux28
+
qzzk
*
gux30
+
2.0
f
*
(
qxyk
*
gux
[
26
]
+
qxzk
*
gux
[
27
]
+
qyzk
*
gux
[
29
]
))
+
2.0
f
*
(
qxyk
*
gux26
+
qxzk
*
gux27
+
qyzk
*
gux29
))
-
syi
*
(
qxxk
*
guy
[
25
]
+
qyyk
*
guy
[
28
]
+
qzzk
*
guy
[
30
]
-
syi
*
(
qxxk
*
guy25
+
qyyk
*
guy28
+
qzzk
*
guy30
+
2.0
f
*
(
qxyk
*
guy
[
26
]
+
qxzk
*
guy
[
27
]
+
qyzk
*
guy
[
29
]
))
+
2.0
f
*
(
qxyk
*
guy26
+
qxzk
*
guy27
+
qyzk
*
guy29
))
-
szi
*
(
qxxk
*
guz
[
25
]
+
qyyk
*
guz
[
28
]
+
qzzk
*
guz
[
30
]
-
szi
*
(
qxxk
*
guz25
+
qyyk
*
guz28
+
qzzk
*
guz30
+
2.0
f
*
(
qxyk
*
guz
[
26
]
+
qxzk
*
guz
[
27
]
+
qyzk
*
guz
[
29
]
))
+
2.0
f
*
(
qxyk
*
guz26
+
qxzk
*
guz27
+
qyzk
*
guz29
))
+
sxk
*
(
qxxi
*
gqxx
[
22
]
+
qyyi
*
gqyy
[
22
]
+
qzzi
*
gqzz
[
22
]
+
sxk
*
(
qxxi
*
gqxx22
+
qyyi
*
gqyy22
+
qzzi
*
gqzz22
+
2.0
f
*
(
qxyi
*
gqxy
[
22
]
+
qxzi
*
gqxz
[
22
]
+
qyzi
*
gqyz
[
22
]
))
+
2.0
f
*
(
qxyi
*
gqxy22
+
qxzi
*
gqxz22
+
qyzi
*
gqyz22
))
+
syk
*
(
qxxi
*
gqxx
[
23
]
+
qyyi
*
gqyy
[
23
]
+
qzzi
*
gqzz
[
23
]
+
syk
*
(
qxxi
*
gqxx23
+
qyyi
*
gqyy23
+
qzzi
*
gqzz23
+
2.0
f
*
(
qxyi
*
gqxy
[
23
]
+
qxzi
*
gqxz
[
23
]
+
qyzi
*
gqyz
[
23
]
))
+
2.0
f
*
(
qxyi
*
gqxy23
+
qxzi
*
gqxz23
+
qyzi
*
gqyz23
))
+
szk
*
(
qxxi
*
gqxx
[
24
]
+
qyyi
*
gqyy
[
24
]
+
qzzi
*
gqzz
[
24
]
+
szk
*
(
qxxi
*
gqxx24
+
qyyi
*
gqyy24
+
qzzi
*
gqzz24
+
2.0
f
*
(
qxyi
*
gqxy
[
24
]
+
qxzi
*
gqxz
[
24
]
+
qyzi
*
gqyz
[
24
]
));
+
2.0
f
*
(
qxyi
*
gqxy24
+
qxzi
*
gqxz24
+
qyzi
*
gqyz24
));
dwkpdr
=
ci
*
(
sxk
*
gux
[
21
]
+
syk
*
guy
[
21
]
+
szk
*
guz
[
21
]
)
dwkpdr
=
ci
*
(
sxk
*
gux21
+
syk
*
guy21
+
szk
*
guz21
)
-
ck
*
(
sxi
*
gc
[
22
]
+
syi
*
gc
[
23
]
+
szi
*
gc
[
24
]
)
-
ck
*
(
sxi
*
gc22
+
syi
*
gc23
+
szi
*
gc24
)
-
sxi
*
(
qxxk
*
gqxx
[
22
]
+
qyyk
*
gqyy
[
22
]
+
qzzk
*
gqzz
[
22
]
-
sxi
*
(
qxxk
*
gqxx22
+
qyyk
*
gqyy22
+
qzzk
*
gqzz22
+
2.0
f
*
(
qxyk
*
gqxy
[
22
]
+
qxzk
*
gqxz
[
22
]
+
qyzk
*
gqyz
[
22
]
))
+
2.0
f
*
(
qxyk
*
gqxy22
+
qxzk
*
gqxz22
+
qyzk
*
gqyz22
))
-
syi
*
(
qxxk
*
gqxx
[
23
]
+
qyyk
*
gqyy
[
23
]
+
qzzk
*
gqzz
[
23
]
-
syi
*
(
qxxk
*
gqxx23
+
qyyk
*
gqyy23
+
qzzk
*
gqzz23
+
2.0
f
*
(
qxyk
*
gqxy
[
23
]
+
qxzk
*
gqxz
[
23
]
+
qyzk
*
gqyz
[
23
]
))
+
2.0
f
*
(
qxyk
*
gqxy23
+
qxzk
*
gqxz23
+
qyzk
*
gqyz23
))
-
szi
*
(
qxxk
*
gqxx
[
24
]
+
qyyk
*
gqyy
[
24
]
+
qzzk
*
gqzz
[
24
]
-
szi
*
(
qxxk
*
gqxx24
+
qyyk
*
gqyy24
+
qzzk
*
gqzz24
+
2.0
f
*
(
qxyk
*
gqxy
[
24
]
+
qxzk
*
gqxz
[
24
]
+
qyzk
*
gqyz
[
24
]
))
+
2.0
f
*
(
qxyk
*
gqxy24
+
qxzk
*
gqxz24
+
qyzk
*
gqyz24
))
+
sxk
*
(
qxxi
*
gux
[
25
]
+
qyyi
*
gux
[
28
]
+
qzzi
*
gux
[
30
]
+
sxk
*
(
qxxi
*
gux25
+
qyyi
*
gux28
+
qzzi
*
gux30
+
2.0
f
*
(
qxyi
*
gux
[
26
]
+
qxzi
*
gux
[
27
]
+
qyzi
*
gux
[
29
]
))
+
2.0
f
*
(
qxyi
*
gux26
+
qxzi
*
gux27
+
qyzi
*
gux29
))
+
syk
*
(
qxxi
*
guy
[
25
]
+
qyyi
*
guy
[
28
]
+
qzzi
*
guy
[
30
]
+
syk
*
(
qxxi
*
guy25
+
qyyi
*
guy28
+
qzzi
*
guy30
+
2.0
f
*
(
qxyi
*
guy
[
26
]
+
qxzi
*
guy
[
27
]
+
qyzi
*
guy
[
29
]
))
+
2.0
f
*
(
qxyi
*
guy26
+
qxzi
*
guy27
+
qyzi
*
guy29
))
+
szk
*
(
qxxi
*
guz
[
25
]
+
qyyi
*
guz
[
28
]
+
qzzi
*
guz
[
30
]
+
szk
*
(
qxxi
*
guz25
+
qyyi
*
guz28
+
qzzi
*
guz30
+
2.0
f
*
(
qxyi
*
guz
[
26
]
+
qxzi
*
guz
[
27
]
+
qyzi
*
guz
[
29
]
));
+
2.0
f
*
(
qxyi
*
guz26
+
qxzi
*
guz27
+
qyzi
*
guz29
));
dsumdr
=
dsymdr
+
0.5
f
*
(
dwipdr
+
dwkpdr
);
dsumdr
=
dsymdr
+
0.5
f
*
(
dwipdr
+
dwkpdr
);
dpbi
=
0.5
f
*
rbk
*
dsumdr
;
dpbi
=
0.5
f
*
rbk
*
dsumdr
;
...
@@ -1697,278 +1428,168 @@ int debugIndex = atomJ;
...
@@ -1697,278 +1428,168 @@ int debugIndex = atomJ;
// if (poltyp .eq. 'MUTUAL'){
// if (poltyp .eq. 'MUTUAL'){
dpdx
=
dpdx
-
0.5
f
*
dpdx
=
dpdx
-
0.5
f
*
(
dxi
*
(
pxk
*
gux
[
5
]
+
pyk
*
gux
[
6
]
+
pzk
*
gux
[
7
]
)
(
dxi
*
(
pxk
*
gux
5
+
pyk
*
gux
6
+
pzk
*
gux
7
)
+
dyi
*
(
pxk
*
guy
[
5
]
+
pyk
*
guy
[
6
]
+
pzk
*
guy
[
7
]
)
+
dyi
*
(
pxk
*
guy
5
+
pyk
*
guy
6
+
pzk
*
guy
7
)
+
dzi
*
(
pxk
*
guz
[
5
]
+
pyk
*
guz
[
6
]
+
pzk
*
guz
[
7
]
)
+
dzi
*
(
pxk
*
guz
5
+
pyk
*
guz
6
+
pzk
*
guz
7
)
+
dxk
*
(
pxi
*
gux
[
5
]
+
pyi
*
gux
[
6
]
+
pzi
*
gux
[
7
]
)
+
dxk
*
(
pxi
*
gux
5
+
pyi
*
gux
6
+
pzi
*
gux
7
)
+
dyk
*
(
pxi
*
guy
[
5
]
+
pyi
*
guy
[
6
]
+
pzi
*
guy
[
7
]
)
+
dyk
*
(
pxi
*
guy
5
+
pyi
*
guy
6
+
pzi
*
guy
7
)
+
dzk
*
(
pxi
*
guz
[
5
]
+
pyi
*
guz
[
6
]
+
pzi
*
guz
[
7
]
));
+
dzk
*
(
pxi
*
guz
5
+
pyi
*
guz
6
+
pzi
*
guz
7
));
dpdy
=
dpdy
-
0.5
f
*
dpdy
=
dpdy
-
0.5
f
*
(
dxi
*
(
pxk
*
gux
[
6
]
+
pyk
*
gux
[
8
]
+
pzk
*
gux
[
9
]
)
(
dxi
*
(
pxk
*
gux
6
+
pyk
*
gux
8
+
pzk
*
gux
9
)
+
dyi
*
(
pxk
*
guy
[
6
]
+
pyk
*
guy
[
8
]
+
pzk
*
guy
[
9
]
)
+
dyi
*
(
pxk
*
guy
6
+
pyk
*
guy
8
+
pzk
*
guy
9
)
+
dzi
*
(
pxk
*
guz
[
6
]
+
pyk
*
guz
[
8
]
+
pzk
*
guz
[
9
]
)
+
dzi
*
(
pxk
*
guz
6
+
pyk
*
guz
8
+
pzk
*
guz
9
)
+
dxk
*
(
pxi
*
gux
[
6
]
+
pyi
*
gux
[
8
]
+
pzi
*
gux
[
9
]
)
+
dxk
*
(
pxi
*
gux
6
+
pyi
*
gux
8
+
pzi
*
gux
9
)
+
dyk
*
(
pxi
*
guy
[
6
]
+
pyi
*
guy
[
8
]
+
pzi
*
guy
[
9
]
)
+
dyk
*
(
pxi
*
guy
6
+
pyi
*
guy
8
+
pzi
*
guy
9
)
+
dzk
*
(
pxi
*
guz
[
6
]
+
pyi
*
guz
[
8
]
+
pzi
*
guz
[
9
]
));
+
dzk
*
(
pxi
*
guz
6
+
pyi
*
guz
8
+
pzi
*
guz
9
));
dpdz
=
dpdz
-
0.5
f
*
dpdz
=
dpdz
-
0.5
f
*
(
dxi
*
(
pxk
*
gux
[
7
]
+
pyk
*
gux
[
9
]
+
pzk
*
gux
[
10
]
)
(
dxi
*
(
pxk
*
gux
7
+
pyk
*
gux
9
+
pzk
*
gux10
)
+
dyi
*
(
pxk
*
guy
[
7
]
+
pyk
*
guy
[
9
]
+
pzk
*
guy
[
10
]
)
+
dyi
*
(
pxk
*
guy
7
+
pyk
*
guy
9
+
pzk
*
guy10
)
+
dzi
*
(
pxk
*
guz
[
7
]
+
pyk
*
guz
[
9
]
+
pzk
*
guz
[
10
]
)
+
dzi
*
(
pxk
*
guz
7
+
pyk
*
guz
9
+
pzk
*
guz10
)
+
dxk
*
(
pxi
*
gux
[
7
]
+
pyi
*
gux
[
9
]
+
pzi
*
gux
[
10
]
)
+
dxk
*
(
pxi
*
gux
7
+
pyi
*
gux
9
+
pzi
*
gux10
)
+
dyk
*
(
pxi
*
guy
[
7
]
+
pyi
*
guy
[
9
]
+
pzi
*
guy
[
10
]
)
+
dyk
*
(
pxi
*
guy
7
+
pyi
*
guy
9
+
pzi
*
guy10
)
+
dzk
*
(
pxi
*
guz
[
7
]
+
pyi
*
guz
[
9
]
+
pzi
*
guz
[
10
]
));
+
dzk
*
(
pxi
*
guz
7
+
pyi
*
guz
9
+
pzi
*
guz10
));
duvdr
=
dxi
*
(
pxk
*
gux
[
22
]
+
pyk
*
gux
[
23
]
+
pzk
*
gux
[
24
]
)
duvdr
=
dxi
*
(
pxk
*
gux22
+
pyk
*
gux23
+
pzk
*
gux24
)
+
dyi
*
(
pxk
*
guy
[
22
]
+
pyk
*
guy
[
23
]
+
pzk
*
guy
[
24
]
)
+
dyi
*
(
pxk
*
guy22
+
pyk
*
guy23
+
pzk
*
guy24
)
+
dzi
*
(
pxk
*
guz
[
22
]
+
pyk
*
guz
[
23
]
+
pzk
*
guz
[
24
]
)
+
dzi
*
(
pxk
*
guz22
+
pyk
*
guz23
+
pzk
*
guz24
)
+
dxk
*
(
pxi
*
gux
[
22
]
+
pyi
*
gux
[
23
]
+
pzi
*
gux
[
24
]
)
+
dxk
*
(
pxi
*
gux22
+
pyi
*
gux23
+
pzi
*
gux24
)
+
dyk
*
(
pxi
*
guy
[
22
]
+
pyi
*
guy
[
23
]
+
pzi
*
guy
[
24
]
)
+
dyk
*
(
pxi
*
guy22
+
pyi
*
guy23
+
pzi
*
guy24
)
+
dzk
*
(
pxi
*
guz
[
22
]
+
pyi
*
guz
[
23
]
+
pzi
*
guz
[
24
]
);
+
dzk
*
(
pxi
*
guz22
+
pyi
*
guz23
+
pzi
*
guz24
);
dpbi
=
dpbi
-
0.5
f
*
rbk
*
duvdr
;
dpbi
=
dpbi
-
0.5
f
*
rbk
*
duvdr
;
dpbk
=
dpbk
-
0.5
f
*
rbi
*
duvdr
;
dpbk
=
dpbk
-
0.5
f
*
rbi
*
duvdr
;
// }
// }
// torque due to induced reaction field on permanent dipoles
// torque due to induced reaction field on permanent dipoles
f
id
[
1
]
=
0.5
f
*
(
sxk
*
gux
[
2
]
+
syk
*
guy
[
2
]
+
szk
*
guz
[
2
]
);
f
loat
fid1
=
0.5
f
*
(
sxk
*
gux
2
+
syk
*
guy
2
+
szk
*
guz
2
);
f
id
[
2
]
=
0.5
f
*
(
sxk
*
gux
[
3
]
+
syk
*
guy
[
3
]
+
szk
*
guz
[
3
]
);
f
loat
fid2
=
0.5
f
*
(
sxk
*
gux
3
+
syk
*
guy
3
+
szk
*
guz
3
);
f
id
[
3
]
=
0.5
f
*
(
sxk
*
gux
[
4
]
+
syk
*
guy
[
4
]
+
szk
*
guz
[
4
]
);
f
loat
fid3
=
0.5
f
*
(
sxk
*
gux
4
+
syk
*
guy
4
+
szk
*
guz
4
);
f
kd
[
1
]
=
0.5
f
*
(
sxi
*
gux
[
2
]
+
syi
*
guy
[
2
]
+
szi
*
guz
[
2
]
);
f
loat
fkd1
=
0.5
f
*
(
sxi
*
gux
2
+
syi
*
guy
2
+
szi
*
guz
2
);
f
kd
[
2
]
=
0.5
f
*
(
sxi
*
gux
[
3
]
+
syi
*
guy
[
3
]
+
szi
*
guz
[
3
]
);
f
loat
fkd2
=
0.5
f
*
(
sxi
*
gux
3
+
syi
*
guy
3
+
szi
*
guz
3
);
f
kd
[
3
]
=
0.5
f
*
(
sxi
*
gux
[
4
]
+
syi
*
guy
[
4
]
+
szi
*
guz
[
4
]
);
f
loat
fkd3
=
0.5
f
*
(
sxi
*
gux
4
+
syi
*
guy
4
+
szi
*
guz
4
);
// the factor 0.5 appears to be included since trqi
[1]
[i] & trqi
[1]
[k]
// the factor 0.5 appears to be included since trqi
1
[i] & trqi
1
[k]
// are identical in the Tinker code (inner loop starts at k = i
// are identical in the Tinker code (inner loop starts at k = i
// factor not needed here since
// factor not needed here since
/*
/*
if ( sameAtom )
if ( sameAtom )
{
{
fid
[1]
= 0.5f * fid
[1]
;
fid
1
= 0.5f * fid
1
;
fid
[2]
= 0.5f * fid
[2]
;
fid
2
= 0.5f * fid
2
;
fid
[3]
= 0.5f * fid
[3]
;
fid
3
= 0.5f * fid
3
;
fkd
[1]
= 0.5f * fkd
[1]
;
fkd
1
= 0.5f * fkd
1
;
fkd
[2]
= 0.5f * fkd
[2]
;
fkd
2
= 0.5f * fkd
2
;
fkd
[3]
= 0.5f * fkd
[3]
;
fkd
3
= 0.5f * fkd
3
;
}
}
*/
*/
trqi
[
1
]
=
uyi
*
fid
[
3
]
-
uzi
*
fid
[
2
]
;
float
trqi
1
=
uyi
*
fid
3
-
uzi
*
fid
2
;
trqi
[
2
]
=
uzi
*
fid
[
1
]
-
uxi
*
fid
[
3
]
;
float
trqi
2
=
uzi
*
fid
1
-
uxi
*
fid
3
;
trqi
[
3
]
=
uxi
*
fid
[
2
]
-
uyi
*
fid
[
1
]
;
float
trqi
3
=
uxi
*
fid
2
-
uyi
*
fid
1
;
trqi_k
[
1
]
=
uyk
*
fkd
[
3
]
-
uzk
*
fkd
[
2
]
;
float
trqi_k
1
=
uyk
*
fkd
3
-
uzk
*
fkd
2
;
trqi_k
[
2
]
=
uzk
*
fkd
[
1
]
-
uxk
*
fkd
[
3
]
;
float
trqi_k
2
=
uzk
*
fkd
1
-
uxk
*
fkd
3
;
trqi_k
[
3
]
=
uxk
*
fkd
[
2
]
-
uyk
*
fkd
[
1
]
;
float
trqi_k
3
=
uxk
*
fkd
2
-
uyk
*
fkd
1
;
// torque due to induced reaction field gradient on quadrupoles;
// torque due to induced reaction field gradient on quadrupoles;
f
idg
[
1
][
1
]
=
-
0.25
f
*
f
loat
fidg11
=
-
0.25
f
*
(
(
sxk
*
gqxx
[
2
]
+
syk
*
gqxx
[
3
]
+
szk
*
gqxx
[
4
]
)
(
(
sxk
*
gqxx
2
+
syk
*
gqxx
3
+
szk
*
gqxx
4
)
+
(
sxk
*
gux
[
5
]
+
syk
*
guy
[
5
]
+
szk
*
guz
[
5
]
));
+
(
sxk
*
gux
5
+
syk
*
guy
5
+
szk
*
guz
5
));
f
idg
[
1
][
2
]
=
-
0.25
f
*
f
loat
fidg12
=
-
0.25
f
*
(
(
sxk
*
gqxy
[
2
]
+
syk
*
gqxy
[
3
]
+
szk
*
gqxy
[
4
]
)
(
(
sxk
*
gqxy
2
+
syk
*
gqxy
3
+
szk
*
gqxy
4
)
+
(
sxk
*
gux
[
6
]
+
syk
*
guy
[
6
]
+
szk
*
guz
[
6
]
));
+
(
sxk
*
gux
6
+
syk
*
guy
6
+
szk
*
guz
6
));
f
idg
[
1
][
3
]
=
-
0.25
f
*
f
loat
fidg13
=
-
0.25
f
*
(
(
sxk
*
gqxz
[
2
]
+
syk
*
gqxz
[
3
]
+
szk
*
gqxz
[
4
]
)
(
(
sxk
*
gqxz
2
+
syk
*
gqxz
3
+
szk
*
gqxz
4
)
+
(
sxk
*
gux
[
7
]
+
syk
*
guy
[
7
]
+
szk
*
guz
[
7
]
));
+
(
sxk
*
gux
7
+
syk
*
guy
7
+
szk
*
guz
7
));
f
idg
[
2
][
2
]
=
-
0.25
f
*
f
loat
fidg22
=
-
0.25
f
*
(
(
sxk
*
gqyy
[
2
]
+
syk
*
gqyy
[
3
]
+
szk
*
gqyy
[
4
]
)
(
(
sxk
*
gqyy
2
+
syk
*
gqyy
3
+
szk
*
gqyy
4
)
+
(
sxk
*
gux
[
8
]
+
syk
*
guy
[
8
]
+
szk
*
guz
[
8
]
));
+
(
sxk
*
gux
8
+
syk
*
guy
8
+
szk
*
guz
8
));
f
idg
[
2
][
3
]
=
-
0.25
f
*
f
loat
fidg23
=
-
0.25
f
*
(
(
sxk
*
gqyz
[
2
]
+
syk
*
gqyz
[
3
]
+
szk
*
gqyz
[
4
]
)
(
(
sxk
*
gqyz
2
+
syk
*
gqyz
3
+
szk
*
gqyz
4
)
+
(
sxk
*
gux
[
9
]
+
syk
*
guy
[
9
]
+
szk
*
guz
[
9
]
));
+
(
sxk
*
gux
9
+
syk
*
guy
9
+
szk
*
guz
9
));
f
idg
[
3
][
3
]
=
-
0.25
f
*
f
loat
fidg33
=
-
0.25
f
*
(
(
sxk
*
gqzz
[
2
]
+
syk
*
gqzz
[
3
]
+
szk
*
gqzz
[
4
]
)
(
(
sxk
*
gqzz
2
+
syk
*
gqzz
3
+
szk
*
gqzz
4
)
+
(
sxk
*
gux
[
10
]
+
syk
*
guy
[
10
]
+
szk
*
guz
[
10
]
));
+
(
sxk
*
gux10
+
syk
*
guy10
+
szk
*
guz10
));
f
idg
[
2
][
1
]
=
fidg
[
1
][
2
]
;
f
loat
fidg21
=
fidg
12
;
f
idg
[
3
][
1
]
=
fidg
[
1
][
3
]
;
f
loat
fidg31
=
fidg
13
;
f
idg
[
3
][
2
]
=
fidg
[
2
][
3
]
;
f
loat
fidg32
=
fidg
23
;
f
kdg
[
1
][
1
]
=
0.25
f
*
f
loat
fkdg11
=
0.25
f
*
(
(
sxi
*
gqxx
[
2
]
+
syi
*
gqxx
[
3
]
+
szi
*
gqxx
[
4
]
)
(
(
sxi
*
gqxx
2
+
syi
*
gqxx
3
+
szi
*
gqxx
4
)
+
(
sxi
*
gux
[
5
]
+
syi
*
guy
[
5
]
+
szi
*
guz
[
5
]
));
+
(
sxi
*
gux
5
+
syi
*
guy
5
+
szi
*
guz
5
));
f
kdg
[
1
][
2
]
=
0.25
f
*
f
loat
fkdg12
=
0.25
f
*
(
(
sxi
*
gqxy
[
2
]
+
syi
*
gqxy
[
3
]
+
szi
*
gqxy
[
4
]
)
(
(
sxi
*
gqxy
2
+
syi
*
gqxy
3
+
szi
*
gqxy
4
)
+
(
sxi
*
gux
[
6
]
+
syi
*
guy
[
6
]
+
szi
*
guz
[
6
]
));
+
(
sxi
*
gux
6
+
syi
*
guy
6
+
szi
*
guz
6
));
f
kdg
[
1
][
3
]
=
0.25
f
*
f
loat
fkdg13
=
0.25
f
*
(
(
sxi
*
gqxz
[
2
]
+
syi
*
gqxz
[
3
]
+
szi
*
gqxz
[
4
]
)
(
(
sxi
*
gqxz
2
+
syi
*
gqxz
3
+
szi
*
gqxz
4
)
+
(
sxi
*
gux
[
7
]
+
syi
*
guy
[
7
]
+
szi
*
guz
[
7
]
));
+
(
sxi
*
gux
7
+
syi
*
guy
7
+
szi
*
guz
7
));
f
kdg
[
2
][
2
]
=
0.25
f
*
f
loat
fkdg22
=
0.25
f
*
(
(
sxi
*
gqyy
[
2
]
+
syi
*
gqyy
[
3
]
+
szi
*
gqyy
[
4
]
)
(
(
sxi
*
gqyy
2
+
syi
*
gqyy
3
+
szi
*
gqyy
4
)
+
(
sxi
*
gux
[
8
]
+
syi
*
guy
[
8
]
+
szi
*
guz
[
8
]
));
+
(
sxi
*
gux
8
+
syi
*
guy
8
+
szi
*
guz
8
));
f
kdg
[
2
][
3
]
=
0.25
f
*
f
loat
fkdg23
=
0.25
f
*
(
(
sxi
*
gqyz
[
2
]
+
syi
*
gqyz
[
3
]
+
szi
*
gqyz
[
4
]
)
(
(
sxi
*
gqyz
2
+
syi
*
gqyz
3
+
szi
*
gqyz
4
)
+
(
sxi
*
gux
[
9
]
+
syi
*
guy
[
9
]
+
szi
*
guz
[
9
]
));
+
(
sxi
*
gux
9
+
syi
*
guy
9
+
szi
*
guz
9
));
f
kdg
[
3
][
3
]
=
0.25
f
*
f
loat
fkdg33
=
0.25
f
*
(
(
sxi
*
gqzz
[
2
]
+
syi
*
gqzz
[
3
]
+
szi
*
gqzz
[
4
]
)
(
(
sxi
*
gqzz
2
+
syi
*
gqzz
3
+
szi
*
gqzz
4
)
+
(
sxi
*
gux
[
10
]
+
syi
*
guy
[
10
]
+
szi
*
guz
[
10
]
));
+
(
sxi
*
gux10
+
syi
*
guy10
+
szi
*
guz10
));
f
kdg
[
2
][
1
]
=
fkdg
[
1
][
2
]
;
f
loat
fkdg21
=
fkdg
12
;
f
kdg
[
3
][
1
]
=
fkdg
[
1
][
3
]
;
f
loat
fkdg31
=
fkdg
13
;
f
kdg
[
3
][
2
]
=
fkdg
[
2
][
3
]
;
f
loat
fkdg32
=
fkdg
23
;
/*
/*
if ( sameAtom )
if ( sameAtom )
{
{
fidg
[1][1]
= 0.5f * fidg
[1][1]
;
fidg
11
= 0.5f * fidg
11
;
fidg
[1][2]
= 0.5f * fidg
[1][2]
;
fidg
12
= 0.5f * fidg
12
;
fidg
[1][3]
= 0.5f * fidg
[1][3]
;
fidg
13
= 0.5f * fidg
13
;
fidg
[2][1]
= 0.5f * fidg
[2][1]
;
fidg
21
= 0.5f * fidg
21
;
fidg
[2][2]
= 0.5f * fidg
[2][2]
;
fidg
22
= 0.5f * fidg
22
;
fidg
[2][3]
= 0.5f * fidg
[2][3]
;
fidg
23
= 0.5f * fidg
23
;
fidg
[3][1]
= 0.5f * fidg
[3][1]
;
fidg
31
= 0.5f * fidg
31
;
fidg
[3][2]
= 0.5f * fidg
[3][2]
;
fidg
32
= 0.5f * fidg
32
;
fidg
[3][3]
= 0.5f * fidg
[3][3]
;
fidg
33
= 0.5f * fidg
33
;
fkdg
[1][1]
= 0.5f * fkdg
[1][1]
;
fkdg
11
= 0.5f * fkdg
11
;
fkdg
[1][2]
= 0.5f * fkdg
[1][2]
;
fkdg
12
= 0.5f * fkdg
12
;
fkdg
[1][3]
= 0.5f * fkdg
[1][3]
;
fkdg
13
= 0.5f * fkdg
13
;
fkdg
[2][1]
= 0.5f * fkdg
[2][1]
;
fkdg
21
= 0.5f * fkdg
21
;
fkdg
[2][2]
= 0.5f * fkdg
[2][2]
;
fkdg
22
= 0.5f * fkdg
22
;
fkdg
[2][3]
= 0.5f * fkdg
[2][3]
;
fkdg
23
= 0.5f * fkdg
23
;
fkdg
[3][1]
= 0.5f * fkdg
[3][1]
;
fkdg
31
= 0.5f * fkdg
31
;
fkdg
[3][2]
= 0.5f * fkdg
[3][2]
;
fkdg
32
= 0.5f * fkdg
32
;
fkdg
[3][3]
= 0.5f * fkdg
[3][3]
;
fkdg
33
= 0.5f * fkdg
33
;
}
}
*/
*/
trqi
[
1
]
+=
2.0
f
*
(
qxyi
*
fidg
[
1
][
3
]
+
qyyi
*
fidg
[
2
][
3
]
+
qyzi
*
fidg
[
3
][
3
]
trqi1
+=
2.0
f
*
(
qxyi
*
fidg13
+
qyyi
*
fidg23
+
qyzi
*
fidg33
-
qxzi
*
fidg
[
1
][
2
]
-
qyzi
*
fidg
[
2
][
2
]
-
qzzi
*
fidg
[
3
][
2
]);
-
qxzi
*
fidg12
-
qyzi
*
fidg22
-
qzzi
*
fidg32
);
trqi
[
2
]
+=
2.0
f
*
(
qxzi
*
fidg
[
1
][
1
]
+
qyzi
*
fidg
[
2
][
1
]
+
qzzi
*
fidg
[
3
][
1
]
trqi2
+=
2.0
f
*
(
qxzi
*
fidg11
+
qyzi
*
fidg21
+
qzzi
*
fidg31
-
qxxi
*
fidg
[
1
][
3
]
-
qxyi
*
fidg
[
2
][
3
]
-
qxzi
*
fidg
[
3
][
3
]);
-
qxxi
*
fidg13
-
qxyi
*
fidg23
-
qxzi
*
fidg33
);
trqi
[
3
]
+=
2.0
f
*
(
qxxi
*
fidg
[
1
][
2
]
+
qxyi
*
fidg
[
2
][
2
]
+
qxzi
*
fidg
[
3
][
2
]
-
qxyi
*
fidg
[
1
][
1
]
-
qyyi
*
fidg
[
2
][
1
]
-
qyzi
*
fidg
[
3
][
1
]);
trqi_k
[
1
]
+=
2.0
f
*
(
qxyk
*
fkdg
[
1
][
3
]
+
qyyk
*
fkdg
[
2
][
3
]
+
qyzk
*
fkdg
[
3
][
3
]
-
qxzk
*
fkdg
[
1
][
2
]
-
qyzk
*
fkdg
[
2
][
2
]
-
qzzk
*
fkdg
[
3
][
2
]);
trqi_k
[
2
]
+=
2.0
f
*
(
qxzk
*
fkdg
[
1
][
1
]
+
qyzk
*
fkdg
[
2
][
1
]
+
qzzk
*
fkdg
[
3
][
1
]
-
qxxk
*
fkdg
[
1
][
3
]
-
qxyk
*
fkdg
[
2
][
3
]
-
qxzk
*
fkdg
[
3
][
3
]);
trqi_k
[
3
]
+=
2.0
f
*
(
qxxk
*
fkdg
[
1
][
2
]
+
qxyk
*
fkdg
[
2
][
2
]
+
qxzk
*
fkdg
[
3
][
2
]
-
qxyk
*
fkdg
[
1
][
1
]
-
qyyk
*
fkdg
[
2
][
1
]
-
qyzk
*
fkdg
[
3
][
1
]);
#if 1
#ifdef AMOEBA_DEBUG
if
(
1
){
/*
int debugIndex = atomJ;
debugArray[debugIndex].x = rbi;
debugArray[debugIndex].y = rbk;
debugArray[debugIndex].z = esym;
debugArray[debugIndex].w = ewi;
*/
debugArray
[
0
].
x
=
dedx
;
debugArray
[
0
].
y
=
dedy
;
debugArray
[
0
].
z
=
dedz
;
/*
dewidx = ci*(uxk*gc[5]+uyk*gc[6]+uzk*gc[7])
-ck*(uxi*gux[2]+uyi*guy[2]+uzi*guz[2])
+ci*(qxxk*gc[11]+qyyk*gc[14]+qzzk*gc[16]
+2.0f*(qxyk*gc[12]+qxzk*gc[13]+qyzk*gc[15]))
xr * yr * zr * a[0][3];
*/
debugArray
[
1
].
x
=
5.0
f
;
debugArray
[
1
].
y
=
expc
*
powf
(
dexpc
,
2.0
f
);
debugArray
[
1
].
z
=
powf
(
dexpc
,
2.0
f
);
debugArray
[
1
].
w
=
dexpc
*
dexpc
;
//a[0][3] = expc1*a[1][2] + expcdexpc*a[1][1];
//expcdexpc = -expc * dexpc;
debugArray
[
2
].
x
=
expc
;
debugArray
[
2
].
y
=
dexpc
;
debugArray
[
2
].
z
=
expcdexpc
;
debugArray
[
2
].
w
=
a
[
1
][
1
];
/*
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = trq[1] + trqi[1];
debugArray[debugIndex].y = trq[2] + trqi[2];
debugArray[debugIndex].z = trq[3] + trqi[3];
debugIndex += numberOfAtoms;
trqi3
+=
2.0
f
*
(
qxxi
*
fidg12
+
qxyi
*
fidg22
+
qxzi
*
fidg32
debugArray[debugIndex].x = drbi;
-
qxyi
*
fidg11
-
qyyi
*
fidg21
-
qyzi
*
fidg31
);
debugArray[debugIndex].y = dpbi;
*/
trqi_k1
+=
2.0
f
*
/*
(
qxyk
*
fkdg13
+
qyyk
*
fkdg23
+
qyzk
*
fkdg33
debugIndex += numberOfAtoms;
-
qxzk
*
fkdg12
-
qyzk
*
fkdg22
-
qzzk
*
fkdg32
);
debugArray[debugIndex].x = dedx;
debugArray[debugIndex].y = dedy;
debugArray[debugIndex].z = dedz;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = dpdx;
debugArray[debugIndex].y = dpdy;
debugArray[debugIndex].z = dpdz;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = trq[1];
debugArray[debugIndex].y = trq[2];
debugArray[debugIndex].z = trq[3];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = trqi[1];
debugArray[debugIndex].y = trqi[2];
debugArray[debugIndex].z = trqi[3];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = dpsymdx;
debugArray[debugIndex].y = dpwidx;
debugArray[debugIndex].z = dpwkdx;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = dpsymdy;
debugArray[debugIndex].y = dpwidy;
debugArray[debugIndex].z = dpwkdy;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = dxi;
debugArray[debugIndex].y = dyi;
debugArray[debugIndex].z = dzi;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = dxk;
debugArray[debugIndex].y = dyk;
debugArray[debugIndex].z = dzk;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = pxi;
debugArray[debugIndex].y = pyi;
debugArray[debugIndex].z = pzi;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = pxk;
debugArray[debugIndex].y = pyk;
debugArray[debugIndex].z = pzk;
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = fid[1];
debugArray[debugIndex].y = fid[2];
debugArray[debugIndex].z = fid[3];
debugIndex += numberOfAtoms;
debugArray[debugIndex].x = fidg[1][3];
debugArray[debugIndex].y = fidg[2][3];
debugArray[debugIndex].z = fidg[3][3];
*/
trqi_k2
+=
2.0
f
*
(
qxzk
*
fkdg11
+
qyzk
*
fkdg21
+
qzzk
*
fkdg31
-
qxxk
*
fkdg13
-
qxyk
*
fkdg23
-
qxzk
*
fkdg33
);
}
trqi_k3
+=
2.0
f
*
#endif
(
qxxk
*
fkdg12
+
qxyk
*
fkdg22
+
qxzk
*
fkdg32
#endif
-
qxyk
*
fkdg11
-
qyyk
*
fkdg21
-
qyzk
*
fkdg31
);
// total permanent and induced energies for this interaction;
// total permanent and induced energies for this interaction;
...
@@ -1979,13 +1600,13 @@ int debugIndex = atomJ;
...
@@ -1979,13 +1600,13 @@ int debugIndex = atomJ;
outputForce
[
1
]
=
(
dedy
+
dpdy
);
outputForce
[
1
]
=
(
dedy
+
dpdy
);
outputForce
[
2
]
=
(
dedz
+
dpdz
);
outputForce
[
2
]
=
(
dedz
+
dpdz
);
outputTorque
[
0
][
0
]
=
(
trq
[
1
]
+
trqi
[
1
]
);
outputTorque
[
0
][
0
]
=
(
trq
1
+
trqi
1
);
outputTorque
[
0
][
1
]
=
(
trq
[
2
]
+
trqi
[
2
]
);
outputTorque
[
0
][
1
]
=
(
trq
2
+
trqi
2
);
outputTorque
[
0
][
2
]
=
(
trq
[
3
]
+
trqi
[
3
]
);
outputTorque
[
0
][
2
]
=
(
trq
3
+
trqi
3
);
outputTorque
[
1
][
0
]
=
(
trq_k
[
1
]
+
trqi_k
[
1
]
);
outputTorque
[
1
][
0
]
=
(
trq_k
1
+
trqi_k
1
);
outputTorque
[
1
][
1
]
=
(
trq_k
[
2
]
+
trqi_k
[
2
]
);
outputTorque
[
1
][
1
]
=
(
trq_k
2
+
trqi_k
2
);
outputTorque
[
1
][
2
]
=
(
trq_k
[
3
]
+
trqi_k
[
3
]
);
outputTorque
[
1
][
2
]
=
(
trq_k
3
+
trqi_k
3
);
outputBorn
[
0
]
=
drbi
;
outputBorn
[
0
]
=
drbi
;
outputBorn
[
1
]
=
drbk
;
outputBorn
[
1
]
=
drbk
;
...
@@ -1997,17 +1618,6 @@ int debugIndex = atomJ;
...
@@ -1997,17 +1618,6 @@ int debugIndex = atomJ;
}
}
__device__
static
int
debugAccumulate
(
int
index
,
float4
*
debugArray
,
float
*
field
,
unsigned
int
addMask
,
float
idLabel
)
{
index
+=
cAmoebaSim
.
paddedNumberOfAtoms
;
debugArray
[
index
].
x
=
addMask
?
field
[
0
]
:
0.0
f
;
debugArray
[
index
].
y
=
addMask
?
field
[
1
]
:
0.0
f
;
debugArray
[
index
].
z
=
addMask
?
field
[
2
]
:
0.0
f
;
debugArray
[
index
].
w
=
idLabel
;
return
index
;
}
__device__
void
zeroKirkwoodParticleSharedField
(
struct
KirkwoodParticle
*
sA
)
__device__
void
zeroKirkwoodParticleSharedField
(
struct
KirkwoodParticle
*
sA
)
{
{
// zero shared fields
// zero shared fields
...
@@ -2348,20 +1958,18 @@ void kCalculateAmoebaKirkwood( amoebaGpuContext amoebaGpu )
...
@@ -2348,20 +1958,18 @@ void kCalculateAmoebaKirkwood( amoebaGpuContext amoebaGpu )
// on first pass, set threads/block and based on that setting the energy buffer array
// on first pass, set threads/block and based on that setting the energy buffer array
if
(
threadsPerBlock
==
0
){
if
(
threadsPerBlock
==
0
){
threadsPerBlock
=
getThreadsPerBlock
(
amoebaGpu
,
sizeof
(
KirkwoodParticle
));
threadsPerBlock
=
32
;
//unsigned int eDiffhreadsPerBlock = getThreadsPerBlock( amoebaGpu, sizeof(KirkwoodEDiffParticle));
//unsigned int maxThreadsPerBlock = threadsPerBlock> eDiffhreadsPerBlock ? threadsPerBlock : eDiffhreadsPerBlock;
if
(
amoebaGpu
->
log
){
#if (__CUDA_ARCH__ >= 200)
#if (__CUDA_ARCH__ >= 200)
unsigned
int
maxThreads
=
GF1XX_NONBOND_THREADS_PER_BLOCK
;
unsigned
int
maxThreads
=
256
;
#elif (__CUDA_ARCH__ >= 130)
#elif (__CUDA_ARCH__ >= 130)
unsigned
int
maxThreads
=
GT2XX_NONBOND_THREADS_PER_BLOCK
;
unsigned
int
maxThreads
=
128
;
#else
#else
unsigned
int
maxThreads
=
G8X_NONBOND_THREADS_PER_BLOCK
;
unsigned
int
maxThreads
=
64
;
#endif
#endif
threadsPerBlock
=
std
::
max
(
getThreadsPerBlock
(
amoebaGpu
,
sizeof
(
KirkwoodParticle
)),
maxThreads
);
//unsigned int eDiffhreadsPerBlock = getThreadsPerBlock( amoebaGpu, sizeof(KirkwoodEDiffParticle));
//unsigned int maxThreadsPerBlock = threadsPerBlock> eDiffhreadsPerBlock ? threadsPerBlock : eDiffhreadsPerBlock;
if
(
amoebaGpu
->
log
){
(
void
)
fprintf
(
amoebaGpu
->
log
,
"kCalculateAmoebaCudaKirkwood: blcks=%u tds=%u %u bPrWrp=%u atm=%u shrd=%u Ebuf=%u ixnCt=%u workUnits=%u
\n
"
,
(
void
)
fprintf
(
amoebaGpu
->
log
,
"kCalculateAmoebaCudaKirkwood: blcks=%u tds=%u %u bPrWrp=%u atm=%u shrd=%u Ebuf=%u ixnCt=%u workUnits=%u
\n
"
,
amoebaGpu
->
nonbondBlocks
,
threadsPerBlock
,
maxThreads
,
amoebaGpu
->
bOutputBufferPerWarp
,
amoebaGpu
->
nonbondBlocks
,
threadsPerBlock
,
maxThreads
,
amoebaGpu
->
bOutputBufferPerWarp
,
...
...
plugins/amoeba/platforms/cuda/src/kernels/kCalculateAmoebaCudaKirkwood.h
View file @
2af97193
...
@@ -29,11 +29,11 @@
...
@@ -29,11 +29,11 @@
__global__
__global__
/*
/*
#if (__CUDA_ARCH__ >= 200)
#if (__CUDA_ARCH__ >= 200)
__launch_bounds__(
GF1XX_NONBOND_THREADS_PER_BLOCK
, 1)
__launch_bounds__(
256
, 1)
#elif (__CUDA_ARCH__ >= 130)
#elif (__CUDA_ARCH__ >= 130)
__launch_bounds__(
GT2XX_NONBOND_THREADS_PER_BLOCK
, 1)
__launch_bounds__(
128
, 1)
#else
#else
__launch_bounds__(
G8X_NONBOND_THREADS_PER_BLOCK
, 1)
__launch_bounds__(
64
, 1)
#endif
#endif
*/
*/
void
METHOD_NAME
(
kCalculateAmoebaCudaKirkwood
,
Forces_kernel
)(
void
METHOD_NAME
(
kCalculateAmoebaCudaKirkwood
,
Forces_kernel
)(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment