From f230ad02cf101f3009cfe90e3281cd4552e4fd3b Mon Sep 17 00:00:00 2001 From: njzjz-bot Date: Mon, 24 Aug 2026 04:26:29 +0800 Subject: [PATCH] fix: reset LAMMPS minimization timesteps Coding-Agent: Codex Codex-Version: codex-cli 0.149.0 Model: gpt-5.6-sol Reasoning-Effort: xhigh --- dpgen/auto_test/lib/lammps.py | 3 +++ tests/auto_test/test_lammps.py | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/dpgen/auto_test/lib/lammps.py b/dpgen/auto_test/lib/lammps.py index 26c95bcca..2623ddfcf 100644 --- a/dpgen/auto_test/lib/lammps.py +++ b/dpgen/auto_test/lib/lammps.py @@ -252,8 +252,11 @@ def make_lammps_equi( if change_box: ret += "fix 1 all box/relax iso 0.0 \n" ret += "minimize %e %e %d %d\n" % (etol, ftol, maxiter, maxeval) # noqa: UP031 + # Align dump and thermo output at the start of each minimization stage. + ret += "reset_timestep 0\n" ret += "fix 1 all box/relax aniso 0.0 \n" ret += "minimize %e %e %d %d\n" % (etol, ftol, maxiter, maxeval) # noqa: UP031 + ret += "reset_timestep 0\n" ret += "fix 1 all box/relax tri 0.0 \n" ret += "minimize %e %e %d %d\n" % (etol, ftol, maxiter, maxeval) # noqa: UP031 ret += "variable N equal count(all)\n" diff --git a/tests/auto_test/test_lammps.py b/tests/auto_test/test_lammps.py index 39a38dee5..6ec53994b 100644 --- a/tests/auto_test/test_lammps.py +++ b/tests/auto_test/test_lammps.py @@ -11,7 +11,7 @@ from dpgen.auto_test.common_equi import make_equi, run_equi from dpgen.auto_test.Lammps import Lammps -from dpgen.auto_test.lib.lammps import inter_deepmd +from dpgen.auto_test.lib.lammps import inter_deepmd, make_lammps_equi from .context import setUpModule # noqa: F401 @@ -94,6 +94,31 @@ def test_make_input_file(self): self.assertTrue(os.path.islink(os.path.join(abs_equi_path, "in.lammps"))) self.assertTrue(os.path.isfile(os.path.join(abs_equi_path, "task.json"))) + def test_make_lammps_equi_resets_successive_minimizations(self): + """Successive box relaxations should share aligned output timesteps.""" + input_text = make_lammps_equi( + "conf.lmp", + {"Al": 0}, + inter_deepmd, + { + "model_name": ["frozen_model.pb"], + "param_type": {"Al": 0}, + "deepmd_version": "1.1.0", + }, + ) + lines = input_text.splitlines() + minimize_lines = [ + index for index, line in enumerate(lines) if line.startswith("minimize") + ] + reset_lines = [ + index + for index, line in enumerate(lines) + if line.startswith("reset_timestep") + ] + + self.assertEqual(3, len(minimize_lines)) + self.assertEqual([minimize_lines[0] + 1, minimize_lines[1] + 1], reset_lines) + def test_forward_common_files(self): fc_files = ["in.lammps", "frozen_model.pb"] self.assertEqual(self.Lammps.forward_common_files(), fc_files)