Skip to content

Commit 117f4c9

Browse files
committed
add ut for lammps atomic energy
1 parent e6bfebe commit 117f4c9

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

source/lmp/tests/test_lammps_spin.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,46 @@ def test_pair_deepmd(lammps):
150150
lammps.run(1)
151151

152152

153+
def test_pair_deepmd_virial(lammps):
154+
lammps.pair_style(f"deepspin {pb_file.resolve()}")
155+
lammps.pair_coeff("* *")
156+
lammps.compute("peatom all pe/atom pair")
157+
lammps.compute("pressure all pressure NULL pair")
158+
lammps.compute("virial all centroid/stress/atom NULL pair")
159+
lammps.variable("eatom atom c_peatom")
160+
# for ii in range(9):
161+
# jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii]
162+
# lammps.variable(f"pressure{jj} equal c_pressure[{ii+1}]")
163+
# for ii in range(9):
164+
# jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii]
165+
# lammps.variable(f"virial{jj} atom c_virial[{ii+1}]")
166+
# lammps.dump(
167+
# "1 all custom 1 dump id " + " ".join([f"v_virial{ii}" for ii in range(9)])
168+
# )
169+
lammps.run(0)
170+
assert lammps.eval("pe") == pytest.approx(expected_e)
171+
for ii in range(4):
172+
assert lammps.atoms[ii].force == pytest.approx(
173+
expected_f[lammps.atoms[ii].id - 1]
174+
)
175+
idx_map = lammps.lmp.numpy.extract_atom("id") - 1
176+
assert np.array(lammps.variables["eatom"].value) == pytest.approx(
177+
expected_ae[idx_map]
178+
)
179+
# vol = box[1] * box[3] * box[5]
180+
# for ii in range(6):
181+
# jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii]
182+
# assert np.array(
183+
# lammps.variables[f"pressure{jj}"].value
184+
# ) / constants.nktv2p == pytest.approx(
185+
# -expected_v[idx_map, jj].sum(axis=0) / vol
186+
# )
187+
# for ii in range(9):
188+
# assert np.array(
189+
# lammps.variables[f"virial{ii}"].value
190+
# ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii])
191+
192+
153193
def test_pair_deepmd_model_devi(lammps):
154194
lammps.pair_style(
155195
f"deepspin {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1"

source/lmp/tests/test_lammps_spin_pt.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,46 @@ def test_pair_deepmd(lammps):
146146
lammps.run(1)
147147

148148

149+
def test_pair_deepmd_virial(lammps):
150+
lammps.pair_style(f"deepspin {pb_file.resolve()}")
151+
lammps.pair_coeff("* *")
152+
lammps.compute("peatom all pe/atom pair")
153+
lammps.compute("pressure all pressure NULL pair")
154+
lammps.compute("virial all centroid/stress/atom NULL pair")
155+
lammps.variable("eatom atom c_peatom")
156+
# for ii in range(9):
157+
# jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii]
158+
# lammps.variable(f"pressure{jj} equal c_pressure[{ii+1}]")
159+
# for ii in range(9):
160+
# jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii]
161+
# lammps.variable(f"virial{jj} atom c_virial[{ii+1}]")
162+
# lammps.dump(
163+
# "1 all custom 1 dump id " + " ".join([f"v_virial{ii}" for ii in range(9)])
164+
# )
165+
lammps.run(0)
166+
assert lammps.eval("pe") == pytest.approx(expected_e)
167+
for ii in range(4):
168+
assert lammps.atoms[ii].force == pytest.approx(
169+
expected_f[lammps.atoms[ii].id - 1]
170+
)
171+
idx_map = lammps.lmp.numpy.extract_atom("id") - 1
172+
assert np.array(lammps.variables["eatom"].value) == pytest.approx(
173+
expected_ae[idx_map]
174+
)
175+
# vol = box[1] * box[3] * box[5]
176+
# for ii in range(6):
177+
# jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii]
178+
# assert np.array(
179+
# lammps.variables[f"pressure{jj}"].value
180+
# ) / constants.nktv2p == pytest.approx(
181+
# -expected_v[idx_map, jj].sum(axis=0) / vol
182+
# )
183+
# for ii in range(9):
184+
# assert np.array(
185+
# lammps.variables[f"virial{ii}"].value
186+
# ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii])
187+
188+
149189
def test_pair_deepmd_model_devi(lammps):
150190
lammps.pair_style(
151191
f"deepspin {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1"

0 commit comments

Comments
 (0)