@@ -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+
153193def 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"
0 commit comments