From 7c4d470b785263155412de0d2eda665daeb17490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Fri, 9 Jan 2026 12:20:29 +0100 Subject: [PATCH] LAMMPS: Allow user to change the velocity rescaling - default remains 2 --- src/atomistics/calculators/lammps/commands.py | 2 +- src/atomistics/calculators/lammps/helpers.py | 2 ++ .../calculators/lammps/libcalculator.py | 22 +++++++++++-------- tests/test_lammpslib_md.py | 4 ++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/atomistics/calculators/lammps/commands.py b/src/atomistics/calculators/lammps/commands.py index 4f16146e..bf2b0eb3 100644 --- a/src/atomistics/calculators/lammps/commands.py +++ b/src/atomistics/calculators/lammps/commands.py @@ -20,7 +20,7 @@ LAMMPS_TIMESTEP = "timestep {{timestep}}" -LAMMPS_VELOCITY = "velocity all create $(2 * {{ temp }}) {{seed}} dist {{dist}}" +LAMMPS_VELOCITY = "velocity all create $({{velocity_rescale_factor}} * {{ temp }}) {{seed}} dist {{dist}}" LAMMPS_ENSEMBLE_NPT = "fix ensemble all npt temp {{Tstart}} {{Tstop}} {{Tdamp}} iso {{Pstart}} {{Pstop}} {{Pdamp}}" diff --git a/src/atomistics/calculators/lammps/helpers.py b/src/atomistics/calculators/lammps/helpers.py index 1b4328c9..e2bad6b4 100644 --- a/src/atomistics/calculators/lammps/helpers.py +++ b/src/atomistics/calculators/lammps/helpers.py @@ -102,6 +102,7 @@ def lammps_thermal_expansion_loop( Pdamp: float = 1.0, seed: int = 4928459, dist: str = "gaussian", + velocity_rescale_factor: float = 2.0, lmp=None, output_keys=OutputThermalExpansion.keys(), **kwargs, @@ -115,6 +116,7 @@ def lammps_thermal_expansion_loop( timestep=timestep, seed=seed, dist=dist, + velocity_rescale_factor=velocity_rescale_factor, ), lmp=lmp, **kwargs, diff --git a/src/atomistics/calculators/lammps/libcalculator.py b/src/atomistics/calculators/lammps/libcalculator.py index 42b2e81f..29bec163 100644 --- a/src/atomistics/calculators/lammps/libcalculator.py +++ b/src/atomistics/calculators/lammps/libcalculator.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional import numpy as np import pandas @@ -154,12 +154,12 @@ def calc_molecular_dynamics_nvt_with_lammpslib( timestep: float = 0.001, seed: int = 4928459, dist: str = "gaussian", - disable_initial_velocity: bool = False, + velocity_rescale_factor: Optional[float] = 2.0, lmp=None, output_keys=OutputMolecularDynamics.keys(), **kwargs, ) -> dict: - if not disable_initial_velocity: + if velocity_rescale_factor is not None: init_str = ( LAMMPS_THERMO_STYLE + "\n" @@ -180,6 +180,7 @@ def calc_molecular_dynamics_nvt_with_lammpslib( timestep=timestep, seed=seed, dist=dist, + velocity_rescale_factor=velocity_rescale_factor, ) else: init_str = ( @@ -232,12 +233,12 @@ def calc_molecular_dynamics_npt_with_lammpslib( Pdamp: float = 1.0, seed: int = 4928459, dist: str = "gaussian", - disable_initial_velocity: bool = False, + velocity_rescale_factor: Optional[float] = 2.0, lmp=None, output_keys=OutputMolecularDynamics.keys(), **kwargs, ) -> dict: - if not disable_initial_velocity: + if velocity_rescale_factor is not None: init_str = ( LAMMPS_THERMO_STYLE + "\n" @@ -261,6 +262,7 @@ def calc_molecular_dynamics_npt_with_lammpslib( timestep=timestep, seed=seed, dist=dist, + velocity_rescale_factor=velocity_rescale_factor, ) else: init_str = ( @@ -314,12 +316,12 @@ def calc_molecular_dynamics_nph_with_lammpslib( Pdamp: float = 1.0, seed: int = 4928459, dist: str = "gaussian", - disable_initial_velocity: bool = False, + velocity_rescale_factor: Optional[float] = 2.0, lmp=None, output_keys=OutputMolecularDynamics.keys(), **kwargs, ) -> dict: - if not disable_initial_velocity: + if velocity_rescale_factor is not None: init_str = ( LAMMPS_THERMO_STYLE + "\n" @@ -340,6 +342,7 @@ def calc_molecular_dynamics_nph_with_lammpslib( timestep=timestep, seed=seed, dist=dist, + velocity_rescale_factor=velocity_rescale_factor, ) else: init_str = ( @@ -389,12 +392,12 @@ def calc_molecular_dynamics_langevin_with_lammpslib( Tdamp: float = 0.1, seed: int = 4928459, dist: str = "gaussian", - disable_initial_velocity: bool = False, + velocity_rescale_factor: Optional[float] = 2.0, lmp=None, output_keys=OutputMolecularDynamics.keys(), **kwargs, ): - if not disable_initial_velocity: + if velocity_rescale_factor is not None: init_str = ( LAMMPS_THERMO_STYLE + "\n" @@ -417,6 +420,7 @@ def calc_molecular_dynamics_langevin_with_lammpslib( timestep=timestep, seed=seed, dist=dist, + velocity_rescale_factor=velocity_rescale_factor, ) else: init_str = ( diff --git a/tests/test_lammpslib_md.py b/tests/test_lammpslib_md.py index 94041dd1..0fabe2c4 100644 --- a/tests/test_lammpslib_md.py +++ b/tests/test_lammpslib_md.py @@ -71,7 +71,7 @@ def test_lammps_md_nvt_all_no_velocity(self): seed=4928459, dist="gaussian", lmp=None, - disable_initial_velocity=True, + velocity_rescale_factor=None, ) self.assertEqual(result_dict["positions"].shape, (10, 32, 3)) self.assertEqual(result_dict["velocities"].shape, (10, 32, 3)) @@ -163,7 +163,7 @@ def test_lammps_md_npt_all_no_velocity(self): seed=4928459, dist="gaussian", lmp=None, - disable_initial_velocity=True, + velocity_rescale_factor=None, ) self.assertEqual(result_dict["positions"].shape, (10, 32, 3)) self.assertEqual(result_dict["velocities"].shape, (10, 32, 3))