Skip to content

Commit 4453568

Browse files
author
tianhongzhen
committed
add mlmd and movement unittests
1 parent 881bfbd commit 4453568

File tree

7 files changed

+117
-1
lines changed

7 files changed

+117
-1
lines changed

tests/pwmat/MOVEMENT

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27773,4 +27773,4 @@
2777327773
1 0.016276663619545 -0.039188937369747 0.029776680953390
2777427774
1 -0.029401768666789 0.032462876629626 -0.045549859920826
2777527775
6 0.020318810209631 0.011977994409105 0.020009968091177
27776-
-------------------------------------------------
27776+
-------------------------------------------------END

tests/pwmat/OUT.MLMD

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
5 atoms,Iteration (fs) = -0.1000000000E+01, Etot,Ep,Ek (eV) = -0.2197270691E+03 -0.2197270691E+03 0.0000000000E+00, SCF = 25
2+
Lattice vector (Angstrom)
3+
0.1000000000E+02 0.0000000000E+00 0.0000000000E+00
4+
0.0000000000E+00 0.1000000000E+02 0.0000000000E+00
5+
0.0000000000E+00 0.0000000000E+00 0.1000000000E+02
6+
Position (normalized), move_x, move_y, move_z
7+
1 0.538154340000000 0.406860800000000 0.360573010000000 1 1 1
8+
1 0.394539660000000 0.480320570000000 0.438468840000000 1 1 1
9+
1 0.552092430000000 0.565450290000000 0.442708740000000 1 1 1
10+
1 0.528185300000000 0.416414760000000 0.539182660000000 1 1 1
11+
6 0.503250590000000 0.467255160000000 0.445232340000000 1 1 1
12+
Force (eV/Angstrom)
13+
1 0.000000000000000 0.000000000000000 0.000000000000000
14+
1 0.000000000000000 0.000000000000000 0.000000000000000
15+
1 0.000000000000000 0.000000000000000 0.000000000000000
16+
1 0.000000000000000 0.000000000000000 0.000000000000000
17+
6 0.000000000000000 0.000000000000000 0.000000000000000
18+
----------------------------------------------END

tests/pwmat/ref_cell

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
0.1000000000E+02 0.0000000000E+00 0.0000000000E+00
2+
0.0000000000E+00 0.1000000000E+02 0.0000000000E+00
3+
0.0000000000E+00 0.0000000000E+00 0.1000000000E+02

tests/pwmat/ref_coord

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
0.536749759840487 0.405485827183722 0.359205635300584
2+
0.393813839436438 0.479556155646082 0.437710855906835
3+
0.554700132552910 0.568042246336302 0.445332381997283
4+
0.527004617781641 0.415257678557643 0.537980454922025
5+
0.504333249513370 0.468337991259214 0.446315171722767

tests/pwmat/ref_force

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
0.046108800185045 -0.541030624050995 -0.582488361151274
2+
-0.557355742114270 -0.117761039586375 -0.114745145937041
3+
0.336673769321572 0.649100915564952 0.057748752039102
4+
-0.123335960183960 0.122383035499940 -0.332495374793973
5+
0.301171890086218 -0.108713996525315 0.974385263713461

tests/test_pwmat_mlmd.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import os
2+
import numpy as np
3+
import unittest
4+
import dpdata
5+
6+
7+
class TestSingleStep(unittest.TestCase):
8+
9+
def setUp(self):
10+
self.LabeledSystem1 = dpdata.LabeledSystem(os.path.join('pwmat', 'OUT.MLMD'),\
11+
fmt='movement' )
12+
13+
def test_mlmd(self) :
14+
15+
self.assertEqual(self.LabeledSystem1['energies'], -0.2197270691E+03)
16+
self.assertEqual(self.LabeledSystem1.get_nframes(), 1)
17+
self.assertEqual(self.LabeledSystem1.get_natoms(), 5)
18+
19+
20+
21+
if __name__ == '__main__':
22+
unittest.main()

tests/test_pwmat_movement.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import os
2+
import numpy as np
3+
import unittest
4+
import dpdata
5+
6+
class TestpwmatSinglePointEnergy:
7+
def test_atom_names(self) :
8+
self.assertEqual(self.system.data['atom_names'], ['H','C'])
9+
def test_atom_numbs(self) :
10+
self.assertEqual(self.system.data['atom_numbs'], [4,1])
11+
def test_atom_types(self) :
12+
ref_type = [0,0,0,0,1]
13+
ref_type = np.array(ref_type)
14+
for ii in range(ref_type.shape[0]) :
15+
self.assertEqual(self.system.data['atom_types'][ii], ref_type[ii])
16+
def test_cell(self) :
17+
fp = open('pwmat/ref_cell')
18+
cell = []
19+
for ii in fp :
20+
cell.append([float(jj) for jj in ii.split()])
21+
cell = np.array(cell)
22+
for ii in range(cell.shape[0]) :
23+
for jj in range(cell.shape[1]) :
24+
self.assertEqual(self.system.data['cells'][0][ii][jj], cell[ii][jj])
25+
fp.close()
26+
27+
28+
def test_coord(self) :
29+
fp = open('pwmat/ref_coord')
30+
coord = []
31+
for ii in fp :
32+
coord.append([float(jj) for jj in ii.split()])
33+
coord = np.array(coord)
34+
for ii in range(coord.shape[0]) :
35+
for jj in range(coord.shape[1]) :
36+
self.assertEqual(self.system.data['coords'][0][ii][jj], coord[ii][jj]*10.0)
37+
fp.close()
38+
39+
def test_force(self) :
40+
fp = open('pwmat/ref_force')
41+
force = []
42+
for ii in fp :
43+
force.append([float(jj) for jj in ii.split()])
44+
force = np.array(force)
45+
for ii in range(force.shape[0]) :
46+
for jj in range(force.shape[1]) :
47+
self.assertEqual(self.system.data['forces'][0][ii][jj], force[ii][jj])
48+
fp.close()
49+
50+
def test_energy(self) :
51+
ref_energy = -0.2193369388E+03
52+
self.assertEqual(self.system.data['energies'][0], ref_energy)
53+
54+
55+
56+
class TestpwmatLabeledOutput(unittest.TestCase, TestpwmatSinglePointEnergy):
57+
58+
def setUp(self):
59+
self.system = dpdata.LabeledSystem('pwmat/MOVEMENT', fmt = 'pwmat/MOVEMENT')
60+
61+
if __name__ == '__main__':
62+
unittest.main()
63+

0 commit comments

Comments
 (0)