Skip to content

Commit 49f6709

Browse files
author
Christian Schafmeisterr
committed
Lots of changes to deal with mathkernel code
1 parent 139c395 commit 49f6709

24 files changed

+4848
-4430
lines changed

include/cando/chem/energyFunction.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ namespace chem {
150150
*/
151151
FFNonbondCrossTermTable_sp _NonbondCrossTermTable;
152152
AtomTable_sp _AtomTable;
153+
double _MonomerCorrectionEnergy;
153154
EnergyStretch_sp _Stretch;
154155
EnergyAngle_sp _Angle;
155156
EnergyDihedral_sp _Dihedral;
@@ -183,6 +184,8 @@ namespace chem {
183184
CL_LISPIFY_NAME("atomTable");
184185
CL_DEFMETHOD AtomTable_sp atomTable() const { return this->_AtomTable;};
185186

187+
CL_DEFMETHOD void setMonomerCorrectionEnergy(double en) { this->_MonomerCorrectionEnergy = en; };
188+
186189
core::List_sp allComponents() const;
187190

188191
string energyTermsEnabled() ;
@@ -199,7 +202,7 @@ namespace chem {
199202
bool boundingBoxBoundP() const;
200203
void setBoundingBox(BoundingBox_sp bounding_box);
201204
void makUnboundBoundingBox();
202-
205+
203206
ForceMatchReport_sp checkIfAnalyticalForceMatchesNumericalForce( NVector_sp pos, core::T_sp energyScale, NVector_sp force, core::T_sp activeAtomMask );
204207

205208
CL_LISPIFY_NAME("getMatter");
@@ -233,7 +236,7 @@ namespace chem {
233236
CL_DEFMETHOD EnergyFixedNonbondRestraint_sp getFixedNonbondRestraintComponent() { return this->_FixedNonbondRestraint; };
234237

235238
core::List_sp allEnergyComponents() const;
236-
239+
237240
core::List_sp otherEnergyComponents() const;
238241
void pushOtherEnergyComponent(EnergyComponent_sp component);
239242

@@ -321,6 +324,7 @@ namespace chem {
321324
_Matter(unbound<Matter_O>())
322325
, _NonbondCrossTermTable(unbound<FFNonbondCrossTermTable_O>())
323326
, _AtomTable(unbound<AtomTable_O>())
327+
, _MonomerCorrectionEnergy(0.0)
324328
, _Stretch(unbound<EnergyStretch_O>())
325329
, _Angle(unbound<EnergyAngle_O>())
326330
, _Dihedral(unbound<EnergyDihedral_O>())
@@ -338,6 +342,7 @@ namespace chem {
338342
_Matter(unbound<Matter_O>())
339343
, _NonbondCrossTermTable(unbound<FFNonbondCrossTermTable_O>())
340344
, _AtomTable(unbound<AtomTable_O>())
345+
, _MonomerCorrectionEnergy(0.0)
341346
, _Stretch(unbound<EnergyStretch_O>())
342347
, _Angle(unbound<EnergyAngle_O>())
343348
, _Dihedral(unbound<EnergyDihedral_O>())
@@ -354,6 +359,7 @@ namespace chem {
354359
_Matter(unbound<Matter_O>())
355360
, _NonbondCrossTermTable(unbound<FFNonbondCrossTermTable_O>())
356361
, _AtomTable(unbound<AtomTable_O>())
362+
, _MonomerCorrectionEnergy(0.0)
357363
, _Stretch(unbound<EnergyStretch_O>())
358364
, _Angle(unbound<EnergyAngle_O>())
359365
, _Dihedral(unbound<EnergyDihedral_O>())

include/cando/chem/energyKernels/anchor.c

Lines changed: 67 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,61 +2,73 @@ template <typename HESSIAN>
22
struct 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
}
2531
void 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
}
6173
void 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
}
138156
void 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

Comments
 (0)