@@ -2,61 +2,73 @@ template <typename HESSIAN>
22struct Anchor {
33 static constexpr size_t PositionSize = 3 ;
44 static std ::string description () { return "mathkernel-anchor" ; };
5- void energy (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec ) {
6- /* !BASE */
5+ double energy (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec ) {
76 double dx ;
87 double dy ;
98 double dz ;
109 double energy ;
10+ double energy_added ;
1111 double r2 ;
12- DOUBLE x1 = position [i3x1 + 0 ];
13- DOUBLE y1 = position [i3x1 + 1 ];
14- DOUBLE z1 = position [i3x1 + 2 ];
12+ energy_added = 0.0000000000000000 ;
1513 {
1614 /* !BASE */
17- dx = (x1 + (- (xa )));
18- dy = (y1 + (- (ya )));
19- dz = (z1 + (- (za )));
20- r2 = ((dx * dx ) + (dy * dy ) + (dz * dz ));
21- energy = (ka * r2 );
22- * energy_accumulate += energy ;
15+ DOUBLE x1 = position [i3x1 + 0 ];
16+ DOUBLE y1 = position [i3x1 + 1 ];
17+ DOUBLE z1 = position [i3x1 + 2 ];
18+ {
19+ /* !BASE */
20+ dx = (x1 + (- (xa )));
21+ dy = (y1 + (- (ya )));
22+ dz = (z1 + (- (za )));
23+ r2 = ((dx * dx ) + (dy * dy ) + (dz * dz ));
24+ energy = (ka * r2 );
25+ energy_added += energy ;
26+ * energy_accumulate += energy ;
27+ }
2328 }
29+ return energy_added ;
2430}
2531void energy_fd (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec )
2632{
2733 energy (ka , xa , ya , za , i3x1 , position , energy_accumulate , force , hessian , dvec , hdvec );
2834}
2935
30- void gradient (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec ) {
31- /* !BASE */
32- double cse_p1_t1_g16996 ;
36+ double gradient (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec ) {
37+ double cse_p1_t1_g51360 ;
3338 double dx ;
3439 double dy ;
3540 double dz ;
3641 double energy ;
42+ double energy_added ;
3743 double g_x1 ;
3844 double g_y1 ;
3945 double g_z1 ;
4046 double r2 ;
41- DOUBLE x1 = position [i3x1 + 0 ];
42- DOUBLE y1 = position [i3x1 + 1 ];
43- DOUBLE z1 = position [i3x1 + 2 ];
47+ energy_added = 0.0000000000000000 ;
4448 {
4549 /* !BASE */
46- dx = (x1 + (- (xa )));
47- dy = (y1 + (- (ya )));
48- dz = (z1 + (- (za )));
49- r2 = ((dx * dx ) + (dy * dy ) + (dz * dz ));
50- energy = (ka * r2 );
51- * energy_accumulate += energy ;
52- cse_p1_t1_g16996 = (2.0000000000000000 * ka );
53- g_x1 = (cse_p1_t1_g16996 * dx );
54- KernelGradientAcc (i3x1 , 0 , g_x1 );
55- g_y1 = (cse_p1_t1_g16996 * dy );
56- KernelGradientAcc (i3x1 , 1 , g_y1 );
57- g_z1 = (cse_p1_t1_g16996 * dz );
58- KernelGradientAcc (i3x1 , 2 , g_z1 );
50+ DOUBLE x1 = position [i3x1 + 0 ];
51+ DOUBLE y1 = position [i3x1 + 1 ];
52+ DOUBLE z1 = position [i3x1 + 2 ];
53+ {
54+ /* !BASE */
55+ dx = (x1 + (- (xa )));
56+ dy = (y1 + (- (ya )));
57+ dz = (z1 + (- (za )));
58+ r2 = ((dx * dx ) + (dy * dy ) + (dz * dz ));
59+ energy = (ka * r2 );
60+ energy_added += energy ;
61+ * energy_accumulate += energy ;
62+ cse_p1_t1_g51360 = (2.0000000000000000 * ka );
63+ g_x1 = (cse_p1_t1_g51360 * dx );
64+ KernelGradientAcc (i3x1 , 0 , g_x1 );
65+ g_y1 = (cse_p1_t1_g51360 * dy );
66+ KernelGradientAcc (i3x1 , 1 , g_y1 );
67+ g_z1 = (cse_p1_t1_g51360 * dz );
68+ KernelGradientAcc (i3x1 , 2 , g_z1 );
69+ }
5970 }
71+ return energy_added ;
6072}
6173void gradient_fd (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec )
6274{
@@ -104,36 +116,42 @@ void gradient_fd(double ka, double xa, double ya, double za, size_t i3x1, double
104116 }
105117}
106118
107- void hessian (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec ) {
108- /* !BASE */
109- double cse_p1_t1_g16997 ;
119+ double hessian (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec ) {
120+ double cse_p1_t1_g51361 ;
110121 double dx ;
111122 double dy ;
112123 double dz ;
113124 double energy ;
125+ double energy_added ;
114126 double g_x1 ;
115127 double g_y1 ;
116128 double g_z1 ;
117129 double r2 ;
118- DOUBLE x1 = position [i3x1 + 0 ];
119- DOUBLE y1 = position [i3x1 + 1 ];
120- DOUBLE z1 = position [i3x1 + 2 ];
130+ energy_added = 0.0000000000000000 ;
121131 {
122132 /* !BASE */
123- dx = (x1 + (- (xa )));
124- dy = (y1 + (- (ya )));
125- dz = (z1 + (- (za )));
126- r2 = ((dx * dx ) + (dy * dy ) + (dz * dz ));
127- energy = (ka * r2 );
128- * energy_accumulate += energy ;
129- cse_p1_t1_g16997 = (2.0000000000000000 * ka );
130- g_x1 = (cse_p1_t1_g16997 * dx );
131- KernelGradientAcc (i3x1 , 0 , g_x1 );
132- g_y1 = (cse_p1_t1_g16997 * dy );
133- KernelGradientAcc (i3x1 , 1 , g_y1 );
134- g_z1 = (cse_p1_t1_g16997 * dz );
135- KernelGradientAcc (i3x1 , 2 , g_z1 );
133+ DOUBLE x1 = position [i3x1 + 0 ];
134+ DOUBLE y1 = position [i3x1 + 1 ];
135+ DOUBLE z1 = position [i3x1 + 2 ];
136+ {
137+ /* !BASE */
138+ dx = (x1 + (- (xa )));
139+ dy = (y1 + (- (ya )));
140+ dz = (z1 + (- (za )));
141+ r2 = ((dx * dx ) + (dy * dy ) + (dz * dz ));
142+ energy = (ka * r2 );
143+ energy_added += energy ;
144+ * energy_accumulate += energy ;
145+ cse_p1_t1_g51361 = (2.0000000000000000 * ka );
146+ g_x1 = (cse_p1_t1_g51361 * dx );
147+ KernelGradientAcc (i3x1 , 0 , g_x1 );
148+ g_y1 = (cse_p1_t1_g51361 * dy );
149+ KernelGradientAcc (i3x1 , 1 , g_y1 );
150+ g_z1 = (cse_p1_t1_g51361 * dz );
151+ KernelGradientAcc (i3x1 , 2 , g_z1 );
152+ }
136153 }
154+ return energy_added ;
137155}
138156void hessian_fd (double ka , double xa , double ya , double za , size_t i3x1 , double * position , double * energy_accumulate , double * force , HESSIAN hessian , double * dvec , double * hdvec )
139157{
0 commit comments