From 472c56b648021876ca22aba9633150ea6a8467ae Mon Sep 17 00:00:00 2001 From: GardevoirX Date: Wed, 4 Feb 2026 15:13:04 +0100 Subject: [PATCH 1/2] Fix the default velocity unit of `ase` --- metatomic-torch/src/model.cpp | 1 + python/metatomic_torch/metatomic/torch/ase_calculator.py | 2 +- python/metatomic_torch/tests/ase_calculator.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/metatomic-torch/src/model.cpp b/metatomic-torch/src/model.cpp index 7bc7e347..dac2b65a 100644 --- a/metatomic-torch/src/model.cpp +++ b/metatomic-torch/src/model.cpp @@ -1141,6 +1141,7 @@ static std::map KNOWN_QUANTITIES = { {"A/fs", 1e1}, {"m/s", 1e6}, {"nm/ps", 1e3}, + {"(eV/u)^(1/2)", 101.80506}, }, { // alternative names }}}, diff --git a/python/metatomic_torch/metatomic/torch/ase_calculator.py b/python/metatomic_torch/metatomic/torch/ase_calculator.py index 84e5d4d9..76964aaa 100644 --- a/python/metatomic_torch/metatomic/torch/ase_calculator.py +++ b/python/metatomic_torch/metatomic/torch/ase_calculator.py @@ -65,7 +65,7 @@ def _get_charges(atoms: ase.Atoms) -> np.ndarray: "velocities": { "quantity": "velocity", "getter": ase.Atoms.get_velocities, - "unit": "nm/fs", + "unit": "(eV/u)^(1/2)", }, "charges": { "quantity": "charge", diff --git a/python/metatomic_torch/tests/ase_calculator.py b/python/metatomic_torch/tests/ase_calculator.py index f0ae7be7..a0048c62 100644 --- a/python/metatomic_torch/tests/ase_calculator.py +++ b/python/metatomic_torch/tests/ase_calculator.py @@ -866,6 +866,6 @@ def test_additional_input(atoms): expected = ARRAY_QUANTITIES[name]["getter"](atoms).reshape(values.shape) if name == "velocities": - expected *= 10.0 # ase velocity is in nm/fs + expected *= 0.098226948 # ase velocity is in (eV/u)^(1/2) assert np.allclose(values, expected) From de11e07661d95daa01819d876e2b3e6c68105ba3 Mon Sep 17 00:00:00 2001 From: GardevoirX Date: Wed, 4 Feb 2026 17:19:30 +0100 Subject: [PATCH 2/2] Use `ase.units` in unit conversion tests --- python/metatomic_torch/tests/ase_calculator.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/metatomic_torch/tests/ase_calculator.py b/python/metatomic_torch/tests/ase_calculator.py index a0048c62..a1d1e57f 100644 --- a/python/metatomic_torch/tests/ase_calculator.py +++ b/python/metatomic_torch/tests/ase_calculator.py @@ -866,6 +866,8 @@ def test_additional_input(atoms): expected = ARRAY_QUANTITIES[name]["getter"](atoms).reshape(values.shape) if name == "velocities": - expected *= 0.098226948 # ase velocity is in (eV/u)^(1/2) + expected /= ( + ase.units.Angstrom / ase.units.fs + ) # ase velocity is in (eV/u)^(1/2) and we want A/fs assert np.allclose(values, expected)