Skip to content

Commit 714f587

Browse files
committed
fix tf model for virial and update UT results.
1 parent 33ff63d commit 714f587

File tree

9 files changed

+39995
-5367
lines changed

9 files changed

+39995
-5367
lines changed

source/api_cc/tests/test_deeppot_tf_spin.cc

Lines changed: 104 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,28 @@ class TestInferDeepSpin : public ::testing::Test {
3434
-0.0041979452385972, 0.0025775020220167, 0.0316295420619988,
3535
0.0000000000000000, 0.00000000000000000, 0.00000000000000000,
3636
0.0000000000000000, 0.00000000000000000, 0.00000000000000000};
37+
std::vector<VALUETYPE> expected_v = {
38+
0.0070639867264982, -0.0005923577001662, -0.0015491268442953,
39+
-0.0005741900039506, 0.0004072991754844, 0.0005919446476345,
40+
-0.0013659665914274, 0.0005245686552392, 0.0011288634277803,
41+
0.0074611996305919, -0.0015158254500315, -0.0030704181444311,
42+
-0.0015503527871207, 0.0006417155838534, 0.0010901024672963,
43+
-0.0032762727340245, 0.0011481000769186, 0.0022122852076016,
44+
-0.0049637269273085, -0.0033079530214069, 0.0048850199723435,
45+
-0.0032277537906931, -0.0030526361938397, 0.0044721003136312,
46+
0.0053457625015160, 0.0044600355962439, -0.0065441506206723,
47+
-0.0044231868209291, -0.0033953486551904, 0.0050014995082810,
48+
-0.0035584060948890, -0.0032308004485022, 0.0047399657455500,
49+
0.0056902937417672, 0.0047696802946761, -0.0070004831270587,
50+
0.0034978220789713, -0.0044217265408896, -0.0075771507215158,
51+
-0.0043265981217727, 0.0016344211766637, 0.0031438764476946,
52+
-0.0069613658908443, 0.0032277030414985, 0.0055466693735168,
53+
-0.0182670501038624, -0.0030197903610554, 0.0012333318415169,
54+
-0.0030157009303137, 0.0006787737562374, 0.0017594542103399,
55+
0.0025814653441594, 0.0020137939338955, 0.0014966802677115};
3756
int natoms;
3857
double expected_tot_e;
39-
// std::vector<VALUETYPE> expected_tot_v;
58+
std::vector<VALUETYPE> expected_tot_v;
4059

4160
deepmd::DeepSpin dp;
4261

@@ -53,18 +72,18 @@ class TestInferDeepSpin : public ::testing::Test {
5372
natoms = expected_e.size();
5473
EXPECT_EQ(natoms * 3, expected_f.size());
5574
EXPECT_EQ(natoms * 3, expected_fm.size());
56-
// EXPECT_EQ(natoms * 9, expected_v.size());
75+
EXPECT_EQ((natoms + 2) * 9, expected_v.size());
5776
expected_tot_e = 0.;
58-
// expected_tot_v.resize(9);
59-
// std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.);
77+
expected_tot_v.resize(9);
78+
std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.);
6079
for (int ii = 0; ii < natoms; ++ii) {
6180
expected_tot_e += expected_e[ii];
6281
}
63-
// for (int ii = 0; ii < natoms; ++ii) {
64-
// for (int dd = 0; dd < 9; ++dd) {
65-
// expected_tot_v[dd] += expected_v[ii * 9 + dd];
66-
// }
67-
// }
82+
for (int ii = 0; ii < (natoms + 2); ++ii) {
83+
for (int dd = 0; dd < 9; ++dd) {
84+
expected_tot_v[dd] += expected_v[ii * 9 + dd];
85+
}
86+
}
6887
};
6988

7089
void TearDown() override { remove("deepspin_nlist.pb"); };
@@ -81,26 +100,26 @@ TYPED_TEST(TestInferDeepSpin, cpu_build_nlist) {
81100
std::vector<VALUETYPE>& expected_e = this->expected_e;
82101
std::vector<VALUETYPE>& expected_f = this->expected_f;
83102
std::vector<VALUETYPE>& expected_fm = this->expected_fm;
84-
// std::vector<VALUETYPE>& expected_v = this->expected_v;
103+
std::vector<VALUETYPE>& expected_v = this->expected_v;
85104
int& natoms = this->natoms;
86105
double& expected_tot_e = this->expected_tot_e;
87-
// std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
106+
std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
88107
deepmd::DeepSpin& dp = this->dp;
89108
double ener;
90109
std::vector<VALUETYPE> force, force_mag, virial;
91110
dp.compute(ener, force, force_mag, virial, coord, spin, atype, box);
92111
EXPECT_EQ(force.size(), natoms * 3);
93112
EXPECT_EQ(force_mag.size(), natoms * 3);
94-
// EXPECT_EQ(virial.size(), 9);
113+
EXPECT_EQ(virial.size(), 9);
95114

96115
EXPECT_LT(fabs(ener - expected_tot_e), EPSILON);
97116
for (int ii = 0; ii < natoms * 3; ++ii) {
98117
EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON);
99118
EXPECT_LT(fabs(force_mag[ii] - expected_fm[ii]), EPSILON);
100119
}
101-
// for (int ii = 0; ii < 3 * 3; ++ii) {
102-
// EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
103-
// }
120+
for (int ii = 0; ii < 3 * 3; ++ii) {
121+
EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
122+
}
104123
}
105124

106125
TYPED_TEST(TestInferDeepSpin, cpu_build_nlist_atomic) {
@@ -112,34 +131,34 @@ TYPED_TEST(TestInferDeepSpin, cpu_build_nlist_atomic) {
112131
std::vector<VALUETYPE>& expected_e = this->expected_e;
113132
std::vector<VALUETYPE>& expected_f = this->expected_f;
114133
std::vector<VALUETYPE>& expected_fm = this->expected_fm;
115-
// std::vector<VALUETYPE>& expected_v = this->expected_v;
134+
std::vector<VALUETYPE>& expected_v = this->expected_v;
116135
int& natoms = this->natoms;
117136
double& expected_tot_e = this->expected_tot_e;
118-
// std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
137+
std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
119138
deepmd::DeepSpin& dp = this->dp;
120139
double ener;
121140
std::vector<VALUETYPE> force, force_mag, virial, atom_ener, atom_vir;
122141
dp.compute(ener, force, force_mag, virial, atom_ener, atom_vir, coord, spin,
123142
atype, box);
124143
EXPECT_EQ(force.size(), natoms * 3);
125144
EXPECT_EQ(force_mag.size(), natoms * 3);
126-
// EXPECT_EQ(virial.size(), 9);
145+
EXPECT_EQ(virial.size(), 9);
127146
// EXPECT_EQ(atom_ener.size(), natoms);
128-
// EXPECT_EQ(atom_vir.size(), natoms * 9);
147+
EXPECT_EQ(atom_vir.size(), (natoms + 2) * 9);
129148
EXPECT_LT(fabs(ener - expected_tot_e), EPSILON);
130149
for (int ii = 0; ii < natoms * 3; ++ii) {
131150
EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON);
132151
EXPECT_LT(fabs(force_mag[ii] - expected_fm[ii]), EPSILON);
133152
}
134-
// for (int ii = 0; ii < 3 * 3; ++ii) {
135-
// EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
136-
// }
153+
for (int ii = 0; ii < 3 * 3; ++ii) {
154+
EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
155+
}
137156
for (int ii = 0; ii < natoms; ++ii) {
138157
EXPECT_LT(fabs(atom_ener[ii] - expected_e[ii]), EPSILON);
139158
}
140-
// for (int ii = 0; ii < natoms * 9; ++ii) {
141-
// EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON);
142-
// }
159+
for (int ii = 0; ii < (natoms + 2) * 9; ++ii) {
160+
EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON);
161+
}
143162
}
144163

145164
template <class VALUETYPE>
@@ -164,9 +183,28 @@ class TestInferDeepSpinNopbc : public ::testing::Test {
164183
-0.0060028470719556, 0.0025147062058193, 0.0321884178873188,
165184
0.0000000000000000, 0.00000000000000000, 0.00000000000000000,
166185
0.0000000000000000, 0.00000000000000000, 0.00000000000000000};
186+
std::vector<VALUETYPE> expected_v = {
187+
0.0021380771762615, -0.0008956809792447, -0.0016180043496033,
188+
-0.0008956809792447, 0.0003752177075214, 0.0006778126329419,
189+
-0.0014520530654550, 0.0006082925003933, 0.0010988509684524,
190+
0.0034592108484302, -0.0014491288689370, -0.0026177811825959,
191+
-0.0014491288689370, 0.0006070674991493, 0.0010966380629793,
192+
-0.0027640824464858, 0.0011579264302846, 0.0020917380676109,
193+
-0.0037083572971367, -0.0034643864223251, 0.0050745941960818,
194+
-0.0034643864223251, -0.0032364662629616, 0.0047407393147607,
195+
0.0050745941960818, 0.0047407393147607, -0.0069441815314804,
196+
-0.0037083572971367, -0.0034643864223251, 0.0050745941960818,
197+
-0.0034643864223251, -0.0032364662629616, 0.0047407393147607,
198+
0.0050745941960818, 0.0047407393147607, -0.0069441815314804,
199+
0.0103691205704445, -0.0043438207795105, -0.0078469020533093,
200+
-0.0043438207795105, 0.0018197087049301, 0.0032872157250350,
201+
-0.0076002352547860, 0.0031838823364644, 0.0057515293820002,
202+
0.0045390015662654, -0.0019014736291112, -0.0034349201042009,
203+
-0.0019014736291112, 0.0007965632770601, 0.0014389530166247,
204+
-0.0038334654556754, 0.0016059112044046, 0.0029010008853761};
167205
int natoms;
168206
double expected_tot_e;
169-
// std::vector<VALUETYPE> expected_tot_v;
207+
std::vector<VALUETYPE> expected_tot_v;
170208

171209
deepmd::DeepSpin dp;
172210

@@ -183,18 +221,18 @@ class TestInferDeepSpinNopbc : public ::testing::Test {
183221
natoms = expected_e.size();
184222
EXPECT_EQ(natoms * 3, expected_f.size());
185223
EXPECT_EQ(natoms * 3, expected_fm.size());
186-
// EXPECT_EQ(natoms * 9, expected_v.size());
224+
EXPECT_EQ((natoms + 2) * 9, expected_v.size());
187225
expected_tot_e = 0.;
188-
// expected_tot_v.resize(9);
189-
// std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.);
226+
expected_tot_v.resize(9);
227+
std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.);
190228
for (int ii = 0; ii < natoms; ++ii) {
191229
expected_tot_e += expected_e[ii];
192230
}
193-
// for (int ii = 0; ii < natoms; ++ii) {
194-
// for (int dd = 0; dd < 9; ++dd) {
195-
// expected_tot_v[dd] += expected_v[ii * 9 + dd];
196-
// }
197-
// }
231+
for (int ii = 0; ii < natoms + 2; ++ii) {
232+
for (int dd = 0; dd < 9; ++dd) {
233+
expected_tot_v[dd] += expected_v[ii * 9 + dd];
234+
}
235+
}
198236
};
199237

200238
void TearDown() override { remove("deepspin_nlist.pb"); };
@@ -211,27 +249,27 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_build_nlist) {
211249
std::vector<VALUETYPE>& expected_e = this->expected_e;
212250
std::vector<VALUETYPE>& expected_f = this->expected_f;
213251
std::vector<VALUETYPE>& expected_fm = this->expected_fm;
214-
// std::vector<VALUETYPE>& expected_v = this->expected_v;
252+
std::vector<VALUETYPE>& expected_v = this->expected_v;
215253
int& natoms = this->natoms;
216254
double& expected_tot_e = this->expected_tot_e;
217-
// std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
255+
std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
218256
deepmd::DeepSpin& dp = this->dp;
219257
double ener;
220258
std::vector<VALUETYPE> force, force_mag, virial;
221259
dp.compute(ener, force, force_mag, virial, coord, spin, atype, box);
222260

223261
EXPECT_EQ(force.size(), natoms * 3);
224262
EXPECT_EQ(force_mag.size(), natoms * 3);
225-
// EXPECT_EQ(virial.size(), 9);
263+
EXPECT_EQ(virial.size(), 9);
226264

227265
EXPECT_LT(fabs(ener - expected_tot_e), EPSILON);
228266
for (int ii = 0; ii < natoms * 3; ++ii) {
229267
EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON);
230268
EXPECT_LT(fabs(force_mag[ii] - expected_fm[ii]), EPSILON);
231269
}
232-
// for (int ii = 0; ii < 3 * 3; ++ii) {
233-
// EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
234-
// }
270+
for (int ii = 0; ii < 3 * 3; ++ii) {
271+
EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
272+
}
235273
}
236274

237275
TYPED_TEST(TestInferDeepSpinNopbc, cpu_build_nlist_atomic) {
@@ -243,10 +281,10 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_build_nlist_atomic) {
243281
std::vector<VALUETYPE>& expected_e = this->expected_e;
244282
std::vector<VALUETYPE>& expected_f = this->expected_f;
245283
std::vector<VALUETYPE>& expected_fm = this->expected_fm;
246-
// std::vector<VALUETYPE>& expected_v = this->expected_v;
284+
std::vector<VALUETYPE>& expected_v = this->expected_v;
247285
int& natoms = this->natoms;
248286
double& expected_tot_e = this->expected_tot_e;
249-
// std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
287+
std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
250288
deepmd::DeepSpin& dp = this->dp;
251289
double ener;
252290
std::vector<VALUETYPE> force, force_mag, virial, atom_ener, atom_vir;
@@ -255,24 +293,24 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_build_nlist_atomic) {
255293

256294
EXPECT_EQ(force.size(), natoms * 3);
257295
EXPECT_EQ(force_mag.size(), natoms * 3);
258-
// EXPECT_EQ(virial.size(), 9);
296+
EXPECT_EQ(virial.size(), 9);
259297
// EXPECT_EQ(atom_ener.size(), natoms);
260298
EXPECT_LT(fabs(ener - expected_tot_e), EPSILON);
261-
// EXPECT_EQ(atom_vir.size(), natoms * 9);
299+
EXPECT_EQ(atom_vir.size(), (natoms + 2) * 9);
262300

263301
for (int ii = 0; ii < natoms * 3; ++ii) {
264302
EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON);
265303
EXPECT_LT(fabs(force_mag[ii] - expected_fm[ii]), EPSILON);
266304
}
267-
// for (int ii = 0; ii < 3 * 3; ++ii) {
268-
// EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
269-
// }
305+
for (int ii = 0; ii < 3 * 3; ++ii) {
306+
EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
307+
}
270308
for (int ii = 0; ii < natoms; ++ii) {
271309
EXPECT_LT(fabs(atom_ener[ii] - expected_e[ii]), EPSILON);
272310
}
273-
// for (int ii = 0; ii < natoms * 9; ++ii) {
274-
// EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON);
275-
// }
311+
for (int ii = 0; ii < (natoms + 2) * 9; ++ii) {
312+
EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON);
313+
}
276314
}
277315

278316
TYPED_TEST(TestInferDeepSpinNopbc, cpu_lmp_nlist) {
@@ -284,10 +322,10 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_lmp_nlist) {
284322
std::vector<VALUETYPE>& expected_e = this->expected_e;
285323
std::vector<VALUETYPE>& expected_f = this->expected_f;
286324
std::vector<VALUETYPE>& expected_fm = this->expected_fm;
287-
// std::vector<VALUETYPE>& expected_v = this->expected_v;
325+
std::vector<VALUETYPE>& expected_v = this->expected_v;
288326
int& natoms = this->natoms;
289327
double& expected_tot_e = this->expected_tot_e;
290-
// std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
328+
std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
291329
deepmd::DeepSpin& dp = this->dp;
292330
double ener;
293331
std::vector<VALUETYPE> force, force_mag, virial;
@@ -302,16 +340,16 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_lmp_nlist) {
302340

303341
EXPECT_EQ(force.size(), natoms * 3);
304342
EXPECT_EQ(force_mag.size(), natoms * 3);
305-
// EXPECT_EQ(virial.size(), 9);
343+
EXPECT_EQ(virial.size(), 9);
306344

307345
EXPECT_LT(fabs(ener - expected_tot_e), EPSILON);
308346
for (int ii = 0; ii < natoms * 3; ++ii) {
309347
EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON);
310348
EXPECT_LT(fabs(force_mag[ii] - expected_fm[ii]), EPSILON);
311349
}
312-
// for (int ii = 0; ii < 3 * 3; ++ii) {
313-
// EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
314-
// }
350+
for (int ii = 0; ii < 3 * 3; ++ii) {
351+
EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
352+
}
315353
}
316354

317355
TYPED_TEST(TestInferDeepSpinNopbc, cpu_lmp_nlist_atomic) {
@@ -323,10 +361,10 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_lmp_nlist_atomic) {
323361
std::vector<VALUETYPE>& expected_e = this->expected_e;
324362
std::vector<VALUETYPE>& expected_f = this->expected_f;
325363
std::vector<VALUETYPE>& expected_fm = this->expected_fm;
326-
// std::vector<VALUETYPE>& expected_v = this->expected_v;
364+
std::vector<VALUETYPE>& expected_v = this->expected_v;
327365
int& natoms = this->natoms;
328366
double& expected_tot_e = this->expected_tot_e;
329-
// std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
367+
std::vector<VALUETYPE>& expected_tot_v = this->expected_tot_v;
330368
deepmd::DeepSpin& dp = this->dp;
331369
double ener;
332370
std::vector<VALUETYPE> force, force_mag, virial, atom_ener, atom_vir;
@@ -341,22 +379,22 @@ TYPED_TEST(TestInferDeepSpinNopbc, cpu_lmp_nlist_atomic) {
341379

342380
EXPECT_EQ(force.size(), natoms * 3);
343381
EXPECT_EQ(force_mag.size(), natoms * 3);
344-
// EXPECT_EQ(virial.size(), 9);
382+
EXPECT_EQ(virial.size(), 9);
345383
EXPECT_EQ(atom_ener.size(), natoms);
346-
// EXPECT_EQ(atom_vir.size(), natoms * 9);
384+
EXPECT_EQ(atom_vir.size(), natoms * 9);
347385

348386
EXPECT_LT(fabs(ener - expected_tot_e), EPSILON);
349387
for (int ii = 0; ii < natoms * 3; ++ii) {
350388
EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON);
351389
EXPECT_LT(fabs(force_mag[ii] - expected_fm[ii]), EPSILON);
352390
}
353-
// for (int ii = 0; ii < 3 * 3; ++ii) {
354-
// EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
355-
// }
391+
for (int ii = 0; ii < 3 * 3; ++ii) {
392+
EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON);
393+
}
356394
for (int ii = 0; ii < natoms; ++ii) {
357395
EXPECT_LT(fabs(atom_ener[ii] - expected_e[ii]), EPSILON);
358396
}
359-
// for (int ii = 0; ii < natoms * 9; ++ii) {
360-
// EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON);
361-
// }
397+
for (int ii = 0; ii < natoms * 9; ++ii) {
398+
EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON);
399+
}
362400
}

0 commit comments

Comments
 (0)