Skip to content

Commit 49cf7b8

Browse files
authored
Merge branch 'main' into dependabot/pip/ase-3.26.0
2 parents 30c7e77 + b2d1574 commit 49cf7b8

File tree

8 files changed

+239
-28
lines changed

8 files changed

+239
-28
lines changed

.ci_support/environment-docs.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,27 @@ dependencies:
77
- myst-parser
88
- aimsgb =1.1.0
99
- ase =3.26.0
10-
- atomistics =0.2.5
10+
- atomistics =0.3.0
1111
- defusedxml =0.7.1
1212
- h5py =3.13.0
1313
- matplotlib-base =3.10.1
1414
- mendeleev =0.19.0
15-
- mp-api =0.45.8
15+
- mp-api =0.45.9
1616
- numpy =1.26.4
1717
- pandas =2.3.2
1818
- phonopy =2.43.2
1919
- pint =0.24.4
20-
- pyiron_base =0.14.2
20+
- pyiron_base =0.15.1
2121
- pyiron_lammps =0.4.6
2222
- pyiron_snippets =0.2.0
2323
- pyiron_vasp =0.2.12
24-
- pylammpsmpi =0.2.39
25-
- pyscal3 =3.2.7
24+
- pylammpsmpi =0.3.2
25+
- pyscal3 =3.3.0
2626
- scikit-learn =1.6.1
2727
- scipy =1.15.2
2828
- seekpath =2.1.0
2929
- spglib =2.6.0
30-
- structuretoolkit =0.0.34
30+
- structuretoolkit =0.0.35
3131
- pyxtal =0.6.2
3232
- jupyter-book =1.0.0
3333
- sphinx_parser =0.1.0

.ci_support/environment-notebooks.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ channels:
22
- conda-forge
33
dependencies:
44
- gpaw =24.1.0
5+
- gpaw-data <1
56
- jupyter
67
- lammps =2024.06.27=*_openmpi_*
78
- nglview

.ci_support/environment.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,28 @@ channels:
33
dependencies:
44
- aimsgb =1.1.0
55
- ase =3.26.0
6-
- atomistics =0.2.5
6+
- atomistics =0.3.0
77
- coverage
88
- defusedxml =0.7.1
99
- h5py =3.13.0
1010
- matplotlib-base =3.10.1
1111
- mendeleev =0.19.0
12-
- mp-api =0.45.8
12+
- mp-api =0.45.9
1313
- numpy =1.26.4
1414
- pandas =2.3.2
1515
- phonopy =2.43.2
1616
- pint =0.24.4
17-
- pyiron_base =0.14.2
17+
- pyiron_base =0.15.1
1818
- pyiron_lammps =0.4.6
1919
- pyiron_vasp =0.2.12
2020
- pyiron_snippets =0.2.0
21-
- pylammpsmpi =0.2.39
22-
- pyscal3 =3.2.7
21+
- pylammpsmpi =0.3.2
22+
- pyscal3 =3.3.0
2323
- scikit-learn =1.6.1
2424
- scipy =1.15.2
2525
- seekpath =2.1.0
2626
- spglib =2.6.0
27-
- structuretoolkit =0.0.34
27+
- structuretoolkit =0.0.35
2828
- sphinx_parser =0.1.0
2929
- pyxtal =0.6.2
3030
- hatchling =1.27.0

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.12.11
3+
rev: v0.13.1
44
hooks:
55
- id: ruff
66
name: ruff lint

binder/environment.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,27 @@ channels:
33
dependencies:
44
- aimsgb =1.1.0
55
- ase =3.26.0
6-
- atomistics =0.2.5
6+
- atomistics =0.3.0
77
- defusedxml =0.7.1
88
- h5py =3.13.0
99
- matplotlib-base =3.10.1
1010
- mendeleev =0.19.0
11-
- mp-api =0.45.8
11+
- mp-api =0.45.9
1212
- numpy =1.26.4
1313
- pandas =2.3.2
1414
- phonopy =2.43.2
1515
- pint =0.24.4
16-
- pyiron_base =0.14.2
16+
- pyiron_base =0.15.1
1717
- pyiron_lammps =0.4.6
1818
- pyiron_snippets =0.2.0
1919
- pyiron_vasp =0.2.12
20-
- pylammpsmpi =0.2.39
21-
- pyscal3 =3.2.7
20+
- pylammpsmpi =0.3.2
21+
- pyscal3 =3.3.0
2222
- scikit-learn =1.6.1
2323
- scipy =1.15.2
2424
- seekpath =2.1.0
2525
- spglib =2.6.0
26-
- structuretoolkit =0.0.34
26+
- structuretoolkit =0.0.35
2727
- pyxtal =0.6.2
2828
- pyiron-data =0.0.30
2929
- sqsgenerator =0.3

pyiron_atomistics/lammps/lammps.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ def lammps_function(
6060
structure: Atoms,
6161
potential: str,
6262
calc_mode: str = "static",
63-
calc_kwargs: dict = {},
63+
calc_kwargs: Optional[dict] = None,
6464
cutoff_radius: Optional[float] = None,
6565
units: str = "metal",
66-
bonds_kwargs: dict = {},
67-
server_kwargs: dict = {},
66+
bonds_kwargs: Optional[dict] = None,
67+
server_kwargs: Optional[dict] = None,
6868
enable_h5md: bool = False,
6969
write_restart_file: bool = False,
7070
read_restart_file: bool = False,
@@ -130,6 +130,13 @@ def lammps_function(
130130
str, dict, bool: Tuple consisting of the shell output (str), the parsed output (dict) and a boolean flag if
131131
the execution raised an accepted error.
132132
"""
133+
if calc_kwargs is None:
134+
calc_kwargs = {}
135+
if bonds_kwargs is None:
136+
bonds_kwargs = {}
137+
if server_kwargs is None:
138+
server_kwargs = {}
139+
133140
os.makedirs(working_directory, exist_ok=True)
134141
job = Lammps(
135142
project=ProjectHDFio(

pyiron_atomistics/vasp/vasp.py

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
# coding: utf-8
22
# Copyright (c) Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department
33
# Distributed under the terms of "New BSD License", see the LICENSE file.
4+
import os
5+
from typing import Optional, Union
46

7+
from ase.atoms import Atoms
8+
from pyiron_base import Project, ProjectHDFio
9+
10+
from pyiron_atomistics.atomistics.structure.atoms import ase_to_pyiron
511
from pyiron_atomistics.vasp.interactive import VaspInteractive
612

713
__author__ = "Sudarsan Surendralal"
@@ -54,3 +60,200 @@ def __init__(self, project, job_name):
5460
None # Reset the version number to the executable is set automatically
5561
)
5662
self._executable_activate(enforce=True)
63+
64+
65+
def vasp_function(
66+
working_directory: str,
67+
structure: Atoms,
68+
plane_wave_cutoff: Optional[Union[float, int]] = None,
69+
exchange_correlation_functional: Optional[str] = None,
70+
spin_constraints: Optional[str] = None,
71+
write_electrostatic_potential: Optional[bool] = None,
72+
write_charge_density: Optional[bool] = None,
73+
write_wave_funct: Optional[bool] = None,
74+
write_resolved_dos: Optional[bool] = None,
75+
sorted_indices: Optional[list] = None,
76+
fix_spin_constraint: Optional[bool] = None,
77+
fix_symmetry: Optional[bool] = None,
78+
eddrmm_handling: str = "ignore",
79+
coulomb_interactions_kwargs: Optional[dict] = None,
80+
algorithm_kwargs: Optional[dict] = None,
81+
calc_mode: str = "static",
82+
calc_kwargs: Optional[dict] = None,
83+
band_structure_calc_kwargs: Optional[dict] = None,
84+
convergence_precision_kwargs: Optional[dict] = None,
85+
dipole_correction_kwargs: Optional[dict] = None,
86+
electric_field_kwargs: Optional[dict] = None,
87+
occupancy_smearing_kwargs: Optional[dict] = None,
88+
fft_mesh_kwargs: Optional[dict] = None,
89+
mixing_parameters_kwargs: Optional[dict] = None,
90+
n_empty_states: Optional[int] = None,
91+
rwigs_kwargs: Optional[dict] = None,
92+
spin_constraint_kwargs: Optional[dict] = None,
93+
kpoints_kwargs: Optional[dict] = None,
94+
server_kwargs: Optional[dict] = None,
95+
executable_version: Optional[str] = None,
96+
executable_path: Optional[str] = None,
97+
incar_file: Optional[Union[str, list, dict]] = None,
98+
kpoints_file: Optional[Union[str, list, dict]] = None,
99+
):
100+
"""
101+
102+
Args:
103+
working_directory:
104+
structure:
105+
plane_wave_cutoff:
106+
exchange_correlation_functional:
107+
spin_constraints:
108+
write_electrostatic_potential:
109+
write_charge_density:
110+
write_wave_funct:
111+
write_resolved_dos:
112+
sorted_indices:
113+
fix_spin_constraint:
114+
fix_symmetry:
115+
eddrmm_handling:
116+
coulomb_interactions_kwargs:
117+
algorithm_kwargs:
118+
calc_mode:
119+
calc_kwargs:
120+
band_structure_calc_kwargs:
121+
convergence_precision_kwargs:
122+
dipole_correction_kwargs:
123+
electric_field_kwargs:
124+
occupancy_smearing_kwargs:
125+
fft_mesh_kwargs:
126+
mixing_parameters_kwargs:
127+
n_empty_states:
128+
rwigs_kwargs:
129+
spin_constraint_kwargs:
130+
kpoints_kwargs:
131+
server_kwargs:
132+
executable_version:
133+
executable_path:
134+
incar_file:
135+
kpoints_file:
136+
137+
Returns:
138+
str, dict, bool: Tuple consisting of the shell output (str), the parsed output (dict) and a boolean flag if
139+
the execution raised an accepted error.
140+
"""
141+
if coulomb_interactions_kwargs is None:
142+
coulomb_interactions_kwargs = {}
143+
if algorithm_kwargs is None:
144+
algorithm_kwargs = {}
145+
if calc_kwargs is None:
146+
calc_kwargs = {}
147+
if band_structure_calc_kwargs is None:
148+
band_structure_calc_kwargs = {}
149+
if convergence_precision_kwargs is None:
150+
convergence_precision_kwargs = {}
151+
if dipole_correction_kwargs is None:
152+
dipole_correction_kwargs = {}
153+
if electric_field_kwargs is None:
154+
electric_field_kwargs = {}
155+
if occupancy_smearing_kwargs is None:
156+
occupancy_smearing_kwargs = {}
157+
if fft_mesh_kwargs is None:
158+
fft_mesh_kwargs = {}
159+
if mixing_parameters_kwargs is None:
160+
mixing_parameters_kwargs = {}
161+
if rwigs_kwargs is None:
162+
rwigs_kwargs = {}
163+
if spin_constraint_kwargs is None:
164+
spin_constraint_kwargs = {}
165+
if kpoints_kwargs is None:
166+
kpoints_kwargs = {}
167+
if server_kwargs is None:
168+
server_kwargs = {}
169+
170+
os.makedirs(working_directory, exist_ok=True)
171+
job = Vasp(
172+
project=ProjectHDFio(
173+
project=Project(working_directory),
174+
file_name="lmp_funct_job",
175+
h5_path=None,
176+
mode=None,
177+
),
178+
job_name="lmp_funct_job",
179+
)
180+
job.structure = ase_to_pyiron(structure)
181+
if plane_wave_cutoff is not None:
182+
job.plane_wave_cutoff = plane_wave_cutoff
183+
if exchange_correlation_functional is not None:
184+
job.exchange_correlation_functional = exchange_correlation_functional
185+
if spin_constraints is not None:
186+
job.spin_constraints = spin_constraints
187+
if write_electrostatic_potential is not None:
188+
job.write_electrostatic_potential = write_electrostatic_potential
189+
if write_charge_density is not None:
190+
job.write_charge_density = write_charge_density
191+
if write_wave_funct is not None:
192+
job.write_wave_funct = write_wave_funct
193+
if write_resolved_dos is not None:
194+
job.write_resolved_dos = write_resolved_dos
195+
if sorted_indices is not None:
196+
job.sorted_indices = sorted_indices
197+
if fix_spin_constraint is not None:
198+
job.fix_spin_constraint = fix_spin_constraint
199+
if fix_symmetry is not None:
200+
job.fix_symmetry = fix_symmetry
201+
job.set_eddrmm_handling(status=eddrmm_handling)
202+
if len(coulomb_interactions_kwargs) > 0:
203+
job.set_coulomb_interactions(**coulomb_interactions_kwargs)
204+
if len(algorithm_kwargs) > 0:
205+
job.set_algorithm(**algorithm_kwargs)
206+
if len(band_structure_calc_kwargs) > 0:
207+
job.set_for_band_structure_calc(**band_structure_calc_kwargs)
208+
if len(convergence_precision_kwargs) > 0:
209+
job.set_convergence_precision(**convergence_precision_kwargs)
210+
if len(dipole_correction_kwargs) > 0:
211+
job.set_dipole_correction(**dipole_correction_kwargs)
212+
if len(electric_field_kwargs) > 0:
213+
job.set_electric_field(**electric_field_kwargs)
214+
if len(occupancy_smearing_kwargs) > 0:
215+
job.set_occupancy_smearing(**occupancy_smearing_kwargs)
216+
if len(fft_mesh_kwargs) > 0:
217+
job.set_fft_mesh(**fft_mesh_kwargs)
218+
if len(mixing_parameters_kwargs) > 0:
219+
job.set_mixing_parameters(**mixing_parameters_kwargs)
220+
job.set_empty_states(n_empty_states=n_empty_states)
221+
if len(rwigs_kwargs) > 0:
222+
job.set_rwigs(rwigs_dict=rwigs_kwargs)
223+
if len(spin_constraint_kwargs) > 0:
224+
job.set_spin_constraint(**spin_constraint_kwargs)
225+
if len(kpoints_kwargs) > 0:
226+
job.set_kpoints(**kpoints_kwargs)
227+
server_dict = job.server.to_dict()
228+
server_dict.update(server_kwargs)
229+
job.server.from_dict(server_dict=server_dict)
230+
if calc_mode == "static":
231+
job.calc_static()
232+
elif calc_mode == "md":
233+
job.calc_md(**calc_kwargs)
234+
elif calc_mode == "minimize":
235+
job.calc_minimize(**calc_kwargs)
236+
else:
237+
raise ValueError()
238+
if incar_file is not None and isinstance(incar_file, dict):
239+
for k, v in incar_file.items():
240+
job.input.incar[k] = v
241+
elif incar_file is not None and (
242+
isinstance(incar_file, str) or isinstance(incar_file, list)
243+
):
244+
job.input.incar.load_string(input_str=incar_file)
245+
if kpoints_file is not None and isinstance(kpoints_file, dict):
246+
for k, v in kpoints_file.items():
247+
job.input.kpoints[k] = v
248+
elif kpoints_file is not None and (
249+
isinstance(kpoints_file, str) or isinstance(kpoints_file, list)
250+
):
251+
job.input.kpoints.load_string(input_str=kpoints_file)
252+
if executable_path is not None:
253+
job.executable = executable_path
254+
if executable_version is not None:
255+
job.version = executable_version
256+
257+
calculate_kwargs = job.calculate_kwargs
258+
calculate_kwargs["working_directory"] = working_directory
259+
return job.get_calculate_function()(**calculate_kwargs)

pyproject.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,27 @@ classifiers = [
2525
]
2626
dependencies = [
2727
"ase==3.26.0",
28-
"atomistics==0.2.5",
28+
"atomistics==0.3.0",
2929
"defusedxml==0.7.1",
3030
"h5py==3.13.0",
3131
"matplotlib==3.10.1",
3232
"mendeleev==0.19.0",
33-
"mp-api==0.45.8",
33+
"mp-api==0.45.9",
3434
"numpy==1.26.4",
3535
"pandas==2.3.2",
3636
"phonopy==2.43.2",
3737
"pint==0.24.4",
38-
"pyiron_base==0.14.2",
38+
"pyiron_base==0.15.1",
3939
"pyiron_lammps==0.4.6",
4040
"pyiron_snippets==0.2.0",
4141
"pyiron_vasp==0.2.12",
42-
"pylammpsmpi==0.2.39",
43-
"pyscal3==3.2.7",
42+
"pylammpsmpi==0.3.2",
43+
"pyscal3==3.3.0",
4444
"scipy==1.15.2",
4545
"scikit-learn==1.6.1",
4646
"seekpath==2.1.0",
4747
"spglib==2.6.0",
48-
"structuretoolkit==0.0.34",
48+
"structuretoolkit==0.0.35",
4949
"sphinx-parser==0.1.0",
5050
]
5151
dynamic = ["version"]

0 commit comments

Comments
 (0)