From 5d009be7057c63d1b7adae723a90026ab59a2e02 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Fri, 2 May 2025 15:50:08 +0000 Subject: [PATCH 1/7] add units --- atomistics/calculators/lammps/libcalculator.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/atomistics/calculators/lammps/libcalculator.py b/atomistics/calculators/lammps/libcalculator.py index 5578dad3..0c5174b0 100644 --- a/atomistics/calculators/lammps/libcalculator.py +++ b/atomistics/calculators/lammps/libcalculator.py @@ -6,6 +6,8 @@ import pandas from jinja2 import Template from pylammpsmpi import LammpsASELibrary +from semantikon.typing import u +from semantikon.converter import unit from atomistics.calculators.interface import get_quantities_from_tasks from atomistics.calculators.lammps.commands import ( @@ -312,12 +314,13 @@ def calc_molecular_dynamics_nph_with_lammpslib( return result_dict +@units def calc_molecular_dynamics_langevin_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, run: int = 100, thermo: int = 100, - timestep: float = 0.001, + timestep: u(float, units="eV/angstrom") = 0.001, Tstart: float = 100.0, Tstop: float = 100, Tdamp: float = 0.1, @@ -327,6 +330,7 @@ def calc_molecular_dynamics_langevin_with_lammpslib( output_keys=OutputMolecularDynamics.keys(), **kwargs, ): + print("Force", timestep) init_str = ( LAMMPS_THERMO_STYLE + "\n" From e073bdcaa80df343fa5e7b3a7ca9a3d97db9e2da Mon Sep 17 00:00:00 2001 From: samwaseda Date: Tue, 6 May 2025 06:45:13 +0000 Subject: [PATCH 2/7] Use units for optimizer --- atomistics/calculators/lammps/libcalculator.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/atomistics/calculators/lammps/libcalculator.py b/atomistics/calculators/lammps/libcalculator.py index 0c5174b0..34689fc2 100644 --- a/atomistics/calculators/lammps/libcalculator.py +++ b/atomistics/calculators/lammps/libcalculator.py @@ -7,7 +7,7 @@ from jinja2 import Template from pylammpsmpi import LammpsASELibrary from semantikon.typing import u -from semantikon.converter import unit +from semantikon.converter import units from atomistics.calculators.interface import get_quantities_from_tasks from atomistics.calculators.lammps.commands import ( @@ -89,13 +89,14 @@ def optimize_positions_with_lammpslib( potential_dataframe: DataFrame, min_style: str = "cg", etol: float = 0.0, - ftol: float = 0.0001, + ftol: u(float, units="eV/angstrom") = 0.0001, maxiter: int = 100000, maxeval: int = 10000000, thermo: int = 10, lmp=None, **kwargs, ) -> Atoms: + print("Force", ftol) template_str = LAMMPS_THERMO_STYLE + "\n" + LAMMPS_THERMO + "\n" + LAMMPS_MINIMIZE lmp_instance = lammps_run( structure=structure, @@ -314,13 +315,12 @@ def calc_molecular_dynamics_nph_with_lammpslib( return result_dict -@units def calc_molecular_dynamics_langevin_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, run: int = 100, thermo: int = 100, - timestep: u(float, units="eV/angstrom") = 0.001, + timestep: float = 0.001, Tstart: float = 100.0, Tstop: float = 100, Tdamp: float = 0.1, From 3093ba0d193e8cae312c1158a6a7fc73f4213154 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Tue, 6 May 2025 07:48:55 +0000 Subject: [PATCH 3/7] Add units everywhere --- .../calculators/lammps/libcalculator.py | 63 ++++++++++--------- atomistics/workflows/phonons/helper.py | 6 +- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/atomistics/calculators/lammps/libcalculator.py b/atomistics/calculators/lammps/libcalculator.py index 34689fc2..0a4a0892 100644 --- a/atomistics/calculators/lammps/libcalculator.py +++ b/atomistics/calculators/lammps/libcalculator.py @@ -42,12 +42,13 @@ from atomistics.calculators.interface import TaskName +@units def optimize_positions_and_volume_with_lammpslib( structure: Atoms, potential_dataframe: DataFrame, min_style: str = "cg", etol: float = 0.0, - ftol: float = 0.0001, + ftol: u(float, units="eV/angstrom") = 0.0001, maxiter: int = 100000, maxeval: int = 10000000, thermo: int = 10, @@ -84,6 +85,7 @@ def optimize_positions_and_volume_with_lammpslib( return structure_copy +@units def optimize_positions_with_lammpslib( structure: Atoms, potential_dataframe: DataFrame, @@ -96,7 +98,6 @@ def optimize_positions_with_lammpslib( lmp=None, **kwargs, ) -> Atoms: - print("Force", ftol) template_str = LAMMPS_THERMO_STYLE + "\n" + LAMMPS_THERMO + "\n" + LAMMPS_MINIMIZE lmp_instance = lammps_run( structure=structure, @@ -145,16 +146,16 @@ def calc_static_with_lammpslib( lammps_shutdown(lmp_instance=lmp_instance, close_instance=lmp is None) return result_dict - +@units def calc_molecular_dynamics_nvt_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, - Tstart: float = 100.0, - Tstop: float = 100.0, - Tdamp: float = 0.1, + Tstart: u(float, units="kelvin") = 100.0, + Tstop: u(float, units="kelvin") = 100.0, + Tdamp: u(float, units="picosecond") = 0.1, run: int = 100, thermo: int = 10, - timestep: float = 0.001, + timestep: u(float, units="picosecond") = 0.001, seed: int = 4928459, dist: str = "gaussian", lmp=None, @@ -199,19 +200,19 @@ def calc_molecular_dynamics_nvt_with_lammpslib( lammps_shutdown(lmp_instance=lmp_instance, close_instance=lmp is None) return result_dict - +@units def calc_molecular_dynamics_npt_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, - Tstart: float = 100.0, - Tstop: float = 100.0, - Tdamp: float = 0.1, + Tstart: u(float, units="kelvin") = 100.0, + Tstop: u(float, units="kelvin") = 100.0, + Tdamp: u(float, units="picosecond") = 0.1, run: int = 100, thermo: int = 100, - timestep: float = 0.001, - Pstart: float = 0.0, - Pstop: float = 0.0, - Pdamp: float = 1.0, + timestep: u(float, units="picosecond") = 0.001, + Pstart: u(float, units="bar") = 0.0, + Pstop: u(float, units="bar") = 0.0, + Pdamp: u(float, units="picosecond") = 1.0, seed: int = 4928459, dist: str = "gaussian", lmp=None, @@ -259,17 +260,17 @@ def calc_molecular_dynamics_npt_with_lammpslib( lammps_shutdown(lmp_instance=lmp_instance, close_instance=lmp is None) return result_dict - +@units def calc_molecular_dynamics_nph_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, run: int = 100, thermo: int = 100, timestep: float = 0.001, - Tstart: float = 100.0, - Pstart: float = 0.0, - Pstop: float = 0.0, - Pdamp: float = 1.0, + Tstart: u(float, units="kelvin") = 100.0, + Pstart: u(float, units="bar") = 0.0, + Pstop: u(float, units="bar") = 0.0, + Pdamp: u(float, units="picosecond") = 1.0, seed: int = 4928459, dist: str = "gaussian", lmp=None, @@ -315,15 +316,16 @@ def calc_molecular_dynamics_nph_with_lammpslib( return result_dict +@units def calc_molecular_dynamics_langevin_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, run: int = 100, thermo: int = 100, - timestep: float = 0.001, - Tstart: float = 100.0, - Tstop: float = 100, - Tdamp: float = 0.1, + timestep: u(float, units="picosecond") = 0.001, + Tstart: u(float, units="kelvin") = 100.0, + Tstop: u(float, units="kelvin") = 100.0, + Tdamp: u(float, units="picosecond") = 0.1, seed: int = 4928459, dist: str = "gaussian", lmp=None, @@ -372,19 +374,20 @@ def calc_molecular_dynamics_langevin_with_lammpslib( return result_dict +@units def calc_molecular_dynamics_thermal_expansion_with_lammpslib( structure: Atoms, potential_dataframe: pandas.DataFrame, - Tstart: float = 15.0, - Tstop: float = 1500.0, + Tstart: u(float, units="kelvin") = 15.0, + Tstop: u(float, units="kelvin") = 1500.0, Tstep: int = 5, - Tdamp: float = 0.1, + Tdamp: u(float, units="picosecond") = 0.1, run: int = 100, thermo: int = 100, timestep: float = 0.001, - Pstart: float = 0.0, - Pstop: float = 0.0, - Pdamp: float = 1.0, + Pstart: u(float, units="bar") = 0.0, + Pstop: u(float, units="bar") = 0.0, + Pdamp: u(float, units="picosecond") = 1.0, seed: int = 4928459, dist: str = "gaussian", lmp=None, diff --git a/atomistics/workflows/phonons/helper.py b/atomistics/workflows/phonons/helper.py index 3fd5297c..468fef15 100644 --- a/atomistics/workflows/phonons/helper.py +++ b/atomistics/workflows/phonons/helper.py @@ -9,6 +9,9 @@ from atomistics.shared.output import OutputPhonons, OutputThermodynamic from atomistics.workflows.phonons.units import VaspToTHz, kJ_mol_to_eV +from semantikon.typing import u +from semantikon.converter import units + class PhonopyProperties: def __init__( @@ -260,10 +263,11 @@ def restore_magmoms( return structure +@units def generate_structures_helper( structure: Atoms, primitive_matrix: Optional[np.ndarray] = None, - displacement: float = 0.01, + displacement: u(float, units="angstrom") = 0.01, number_of_snapshots: Optional[int] = None, interaction_range: float = 10.0, factor: float = VaspToTHz, From 32cadf86c7d2204d7a35f190b27110ddd5d65b24 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Tue, 6 May 2025 18:09:06 +0000 Subject: [PATCH 4/7] Add semantikon to environment --- .ci_support/environment.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci_support/environment.yml b/.ci_support/environment.yml index 6ccec235..9ae1635c 100644 --- a/.ci_support/environment.yml +++ b/.ci_support/environment.yml @@ -16,3 +16,4 @@ dependencies: - sphinx_parser =0.0.1 - tqdm =4.67.1 - pyiron_vasp =0.2.5 +- semantikon =0.0.16 From dfacb2656779da71aea55152cbd7ca9ea0a155ee Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 18:11:16 +0000 Subject: [PATCH 5/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- atomistics/calculators/lammps/libcalculator.py | 5 ++++- atomistics/workflows/phonons/helper.py | 5 ++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/atomistics/calculators/lammps/libcalculator.py b/atomistics/calculators/lammps/libcalculator.py index 0a4a0892..acc024f8 100644 --- a/atomistics/calculators/lammps/libcalculator.py +++ b/atomistics/calculators/lammps/libcalculator.py @@ -6,8 +6,8 @@ import pandas from jinja2 import Template from pylammpsmpi import LammpsASELibrary -from semantikon.typing import u from semantikon.converter import units +from semantikon.typing import u from atomistics.calculators.interface import get_quantities_from_tasks from atomistics.calculators.lammps.commands import ( @@ -146,6 +146,7 @@ def calc_static_with_lammpslib( lammps_shutdown(lmp_instance=lmp_instance, close_instance=lmp is None) return result_dict + @units def calc_molecular_dynamics_nvt_with_lammpslib( structure: Atoms, @@ -200,6 +201,7 @@ def calc_molecular_dynamics_nvt_with_lammpslib( lammps_shutdown(lmp_instance=lmp_instance, close_instance=lmp is None) return result_dict + @units def calc_molecular_dynamics_npt_with_lammpslib( structure: Atoms, @@ -260,6 +262,7 @@ def calc_molecular_dynamics_npt_with_lammpslib( lammps_shutdown(lmp_instance=lmp_instance, close_instance=lmp is None) return result_dict + @units def calc_molecular_dynamics_nph_with_lammpslib( structure: Atoms, diff --git a/atomistics/workflows/phonons/helper.py b/atomistics/workflows/phonons/helper.py index 468fef15..5b635a87 100644 --- a/atomistics/workflows/phonons/helper.py +++ b/atomistics/workflows/phonons/helper.py @@ -5,13 +5,12 @@ import structuretoolkit from ase.atoms import Atoms from phonopy import Phonopy +from semantikon.converter import units +from semantikon.typing import u from atomistics.shared.output import OutputPhonons, OutputThermodynamic from atomistics.workflows.phonons.units import VaspToTHz, kJ_mol_to_eV -from semantikon.typing import u -from semantikon.converter import units - class PhonopyProperties: def __init__( From 9d3b0fff6da3a495b3a6ef0b05b3a03c5e165752 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 7 May 2025 06:31:50 +0000 Subject: [PATCH 6/7] Add semantikon to environment-old --- .ci_support/environment-old.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci_support/environment-old.yml b/.ci_support/environment-old.yml index 06c549d9..1a65b2a7 100644 --- a/.ci_support/environment-old.yml +++ b/.ci_support/environment-old.yml @@ -22,3 +22,4 @@ dependencies: - pyiron_lammps =0.3.2 - pyiron_vasp =0.2.4 - sphinx_parser =0.0.1 +- semantikon =0.0.16 From 278634e86d85557bbe4d50173e6417668296b89b Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 7 May 2025 06:34:15 +0000 Subject: [PATCH 7/7] Forgot to remove print statement --- atomistics/calculators/lammps/libcalculator.py | 1 - 1 file changed, 1 deletion(-) diff --git a/atomistics/calculators/lammps/libcalculator.py b/atomistics/calculators/lammps/libcalculator.py index acc024f8..634afadd 100644 --- a/atomistics/calculators/lammps/libcalculator.py +++ b/atomistics/calculators/lammps/libcalculator.py @@ -335,7 +335,6 @@ def calc_molecular_dynamics_langevin_with_lammpslib( output_keys=OutputMolecularDynamics.keys(), **kwargs, ): - print("Force", timestep) init_str = ( LAMMPS_THERMO_STYLE + "\n"