Skip to content
Open
Changes from 1 commit
Commits
Show all changes
353 commits
Select commit Hold shift + click to select a range
c45b616
customized INCAR tags
hrushikesh-s Mar 29, 2024
7250e2a
adding LTC calculators
hrushikesh-s Mar 29, 2024
82ef1c0
added anharmonicphonons block in pyproject.yaml
hrushikesh-s Mar 29, 2024
8889d3e
update the logic to use lambda=0 for TI
hrushikesh-s Mar 29, 2024
6e9da67
updating the logic to generate fixed displacements
hrushikesh-s Apr 4, 2024
c18fe93
can now run hiphive fitting individually
hrushikesh-s Apr 5, 2024
60e9a7b
adding fw configs to individual jobs
hrushikesh-s Apr 30, 2024
300da7b
new displacement strategy
hrushikesh-s May 27, 2024
4f7c264
added CHGNet MD step to generate displacement snapshots
hrushikesh-s May 28, 2024
5283d9e
updateing arguments of the MD run
hrushikesh-s May 28, 2024
2fb63c2
minor bug fixes to MD flow
hrushikesh-s May 28, 2024
a249cb8
updated MD args for running mp-23339
hrushikesh-s May 29, 2024
d5090fb
new cutoffs sampling startegy
hrushikesh-s Jun 26, 2024
49ae442
1. reorganized the imports
hrushikesh-s Jun 28, 2024
8b0019d
1. refactored the hiphive flow
hrushikesh-s Jun 28, 2024
8144b7b
Merge branch 'main' into hiphive_new_sampling_startegy
hrushikesh-s Jun 28, 2024
5239a79
Bump monty from 2024.2.2 to 2024.2.26 (#762)
dependabot[bot] Mar 8, 2024
e06dd99
Bump pytest from 8.0.2 to 8.1.0 (#761)
dependabot[bot] Mar 8, 2024
4e90106
revert to pytest 8.0.2, 8.1.0 was yanked due to breaking few plugins
janosh Mar 8, 2024
228641a
Auto-update pre-commit hooks (#756)
github-actions[bot] Mar 8, 2024
4aca655
Bump ipython from 8.22.1 to 8.22.2 (#770)
dependabot[bot] Mar 11, 2024
092baf5
Bump chgnet from 0.3.4 to 0.3.5 (#778)
dependabot[bot] Mar 18, 2024
edf646b
Bump pydantic from 2.6.3 to 2.6.4 (#777)
dependabot[bot] Mar 18, 2024
ed0458f
Bump custodian from 2024.2.15 to 2024.3.12 (#779)
dependabot[bot] Mar 18, 2024
c9a9b62
Bump phonopy from 2.21.2 to 2.22.0 (#784)
dependabot[bot] Mar 25, 2024
522b593
Bump autodoc-pydantic from 2.0.1 to 2.1.0 (#786)
dependabot[bot] Mar 25, 2024
675db1f
Bump pytest-cov from 4.1.0 to 5.0.0 (#785)
dependabot[bot] Mar 25, 2024
1132bbc
Bump python-ulid from 2.2.0 to 2.3.0 (#787)
dependabot[bot] Mar 25, 2024
0e3f11f
Bump cclib from 1.8 to 1.8.1 (#788)
dependabot[bot] Mar 25, 2024
848633a
Corrected typo in doc (#775)
rul048 Mar 28, 2024
bf6c01c
Warn on non-default `ATOMATE2_CONFIG_FILE` that's not found (#794)
janosh Apr 1, 2024
86fa57e
Porting qchem into atomate2 (#689)
rdguha1995 Apr 3, 2024
f788405
Forcefield molecular dynamics and forcefield refactor (#722)
esoteric-ephemera Apr 3, 2024
20ecb5d
Add dir_name to ForceFieldMaker and **task_document_kwargs to from_as…
QuantumChemist Apr 4, 2024
7571fad
Add flexible filename and extension to phonon new_plotter (#792)
QuantumChemist Apr 4, 2024
d17f1c3
Bump monty from 2024.2.26 to 2024.3.31 (#797)
dependabot[bot] Apr 4, 2024
a88147b
Bump phonopy from 2.22.0 to 2.22.1 (#795)
dependabot[bot] Apr 4, 2024
1a4ff45
Bump ipython from 8.22.2 to 8.23.0 (#798)
dependabot[bot] Apr 4, 2024
8d80ab9
Bump numpydoc from 1.6.0 to 1.7.0 (#796)
dependabot[bot] Apr 4, 2024
1096e99
Bump typing-extensions from 4.10.0 to 4.11.0 (#801)
dependabot[bot] Apr 8, 2024
027ef9b
Bump python-ulid from 2.3.0 to 2.4.0.post0 (#803)
dependabot[bot] Apr 8, 2024
bf9d481
Abinit workflows: static, non-scf and relaxation. (#183)
davidwaroquiers Apr 8, 2024
5f87e84
Remove `abinit` `__all__` module star exports (#804)
janosh Apr 10, 2024
26221c9
Bump pydantic from 2.6.4 to 2.7.0 (#806)
dependabot[bot] Apr 15, 2024
c2ee042
Simplify phonon `get_supercell_size()` and test clean up (#783)
janosh Apr 25, 2024
0cc0627
Add `fix_symmetry: bool = False` option to forcefield relax makers (#…
JonathanSchmidt1 Apr 26, 2024
eb0a801
Add more details to the installation guide (#810)
JaGeo Apr 26, 2024
1a2cf21
Bump mp-api from 0.40.2 to 0.41.2 (#824)
dependabot[bot] Apr 29, 2024
623201a
Bump emmet-core from 0.78.0rc4 to 0.82.2 (#823)
dependabot[bot] Apr 29, 2024
9fbd3d1
Add missing `calculator_kwargs` and remove outdated `model`/`model_kw…
janosh May 3, 2024
f95073c
Bump pydantic from 2.7.0 to 2.7.1 (#832)
dependabot[bot] May 6, 2024
faefc1e
Bump python-ulid from 2.4.0.post0 to 2.5.0 (#828)
dependabot[bot] May 6, 2024
ee70772
Bump pymatgen-analysis-defects from 2024.2.24 to 2024.4.23 (#827)
dependabot[bot] May 6, 2024
f267351
Turn `ForceFieldRelaxMaker._calculator` method into `calculator` prop…
janosh May 10, 2024
fcd1f4d
Update LobsterTaskDoc (#723)
naik-aakash May 11, 2024
a93b1ab
clean up test_lobster_task_document
janosh May 11, 2024
0cfbd60
Document the option to run LOBSTER with one jobscript only (#811)
JaGeo May 11, 2024
697d1d8
Add magnetic orderings workflow (#432)
mattmcdermott May 11, 2024
c263f2a
`from_...` class methods now return `typing_extensions.Self` (#840)
janosh May 11, 2024
a019641
Update LobsterPy version (#841)
JaGeo May 11, 2024
81f5841
CI add `repository_dispatch` event for `pymatgen_ci_trigger` (#835)
janosh May 11, 2024
ed274ab
Bump phonopy from 2.22.1 to 2.23.1 (#846)
dependabot[bot] May 13, 2024
d2fe199
Bump lobsterpy from 0.4.0 to 0.4.4 (#848)
dependabot[bot] May 13, 2024
56185f6
Bump furo from 2024.1.29 to 2024.5.6 (#847)
dependabot[bot] May 13, 2024
5296606
Fix `TrajectoryObserver.to_ase_trajectory` return type (#852)
janosh May 14, 2024
dc4eaf0
Fix title hierarchies in VASP documentation (#853)
JaGeo May 15, 2024
d474d21
fix typos
janosh May 15, 2024
7a9e856
Make Fermi Energy Optional for FHI-aims (#793)
tpurcell90 May 16, 2024
0c4da0a
Bump python-ulid from 2.5.0 to 2.6.0 (#858)
dependabot[bot] May 27, 2024
f5498c5
Bump typing-extensions from 4.11.0 to 4.12.0 (#859)
dependabot[bot] May 27, 2024
c3150fa
Bump sphinx-design from 0.5.0 to 0.6.0 (#857)
dependabot[bot] May 27, 2024
5f6abad
Bump monty from 2024.3.31 to 2024.5.24 (#860)
dependabot[bot] May 27, 2024
d53beab
Handling failures in elastic flow (#861)
gpetretto May 29, 2024
6d3754d
Bump typing-extensions from 4.12.0 to 4.12.1 (#864)
dependabot[bot] Jun 3, 2024
4b2d62f
Bump pymatgen from 2024.5.1 to 2024.5.31 (#867)
dependabot[bot] Jun 3, 2024
11ac2fc
Bump ipython from 8.23.0 to 8.25.0 (#869)
dependabot[bot] Jun 3, 2024
69f4ff5
Bump pydantic from 2.7.1 to 2.7.2 (#868)
dependabot[bot] Jun 3, 2024
d2e483e
Bump dscribe from 2.1.0 to 2.1.1 (#865)
dependabot[bot] Jun 3, 2024
36b7977
transpose matrix (#872)
JaGeo Jun 4, 2024
3db684d
Add test for supercell matrix creation in phonon workflow (#873)
JaGeo Jun 5, 2024
55aceb8
Bump typing-extensions from 4.12.1 to 4.12.2 (#877)
dependabot[bot] Jun 10, 2024
7b986d6
Bump ijson from 3.2.3 to 3.3.0 (#876)
dependabot[bot] Jun 10, 2024
7f474a3
Bump pydantic-settings from 2.2.1 to 2.3.1 (#875)
dependabot[bot] Jun 10, 2024
25f931e
Bump matgl from 1.1.1 to 1.1.2 (#882)
dependabot[bot] Jun 10, 2024
9706bd8
Bump chgnet from 0.3.5 to 0.3.8 (#881)
dependabot[bot] Jun 10, 2024
87d8c32
Bump pydantic from 2.7.2 to 2.7.3 (#884)
dependabot[bot] Jun 10, 2024
f34d369
Bump phonopy from 2.23.1 to 2.24.2 (#879)
dependabot[bot] Jun 10, 2024
13e731a
`ruff` fixes (#894)
janosh Jun 22, 2024
ff770f3
Bump pydantic from 2.7.3 to 2.7.4 (#886)
dependabot[bot] Jun 22, 2024
9770434
Bump pymatgen from 2024.5.31 to 2024.6.10 (#887)
dependabot[bot] Jun 22, 2024
2b95bd0
Bump pydantic-settings from 2.3.1 to 2.3.3 (#888)
dependabot[bot] Jun 22, 2024
738d825
Bump python-ulid from 2.6.0 to 2.7.0 (#897)
dependabot[bot] Jun 24, 2024
3d5d4dc
Bump phonopy from 2.24.2 to 2.24.3 (#898)
dependabot[bot] Jun 24, 2024
1f638c6
commenting out quality control
hrushikesh-s Mar 4, 2024
a0d76b6
adding renormalization changes from Junsoo
hrushikesh-s Mar 8, 2024
b1e5dd7
fixes
hrushikesh-s Mar 29, 2024
2f6f9f1
fixes
hrushikesh-s Mar 29, 2024
319cfc6
customized INCAR tags
hrushikesh-s Mar 29, 2024
3991202
adding LTC calculators
hrushikesh-s Mar 29, 2024
5515d1a
added anharmonicphonons block in pyproject.yaml
hrushikesh-s Mar 29, 2024
e957c61
update the logic to use lambda=0 for TI
hrushikesh-s Mar 29, 2024
4593415
updating the logic to generate fixed displacements
hrushikesh-s Apr 4, 2024
5c9e168
can now run hiphive fitting individually
hrushikesh-s Apr 5, 2024
b1f93de
adding fw configs to individual jobs
hrushikesh-s Apr 30, 2024
4bcd97e
new displacement strategy
hrushikesh-s May 27, 2024
a41d31e
added CHGNet MD step to generate displacement snapshots
hrushikesh-s May 28, 2024
a0d2050
updateing arguments of the MD run
hrushikesh-s May 28, 2024
f1217b6
minor bug fixes to MD flow
hrushikesh-s May 28, 2024
2790070
updated MD args for running mp-23339
hrushikesh-s May 29, 2024
58aedd1
new cutoffs sampling startegy
hrushikesh-s Jun 26, 2024
f92a7a4
1. reorganized the imports
hrushikesh-s Jun 28, 2024
7befb93
1. refactored the hiphive flow
hrushikesh-s Jun 28, 2024
06b2a3a
Merge branch 'hiphive_new_sampling_startegy' into hiphive
hrushikesh-s Jun 28, 2024
c61dcf7
fixes
hrushikesh-s Jun 28, 2024
dbbfa40
Merge pull request #11 from hrushikesh-s/hiphive_new_sampling_startegy
hrushikesh-s Jun 28, 2024
af590ba
ruff fixes
hrushikesh-s Jun 28, 2024
20ad5c3
mypy fixes to hiphive flow
hrushikesh-s Jun 28, 2024
bbebbd4
updated logic to remove cutoffs that result in 0 constraints!
hrushikesh-s Jun 28, 2024
5f977f0
1. no major code logic updates
hrushikesh-s Jul 29, 2024
02ff2cc
reduced the user_kpoints_settings -- "reciprocal_density" to 100
hrushikesh-s Jul 29, 2024
0aeb863
writing hiphive's flow like phonopy's flow
hrushikesh-s Nov 14, 2024
a600755
moving previous hiphive jobs into schemas
hrushikesh-s Nov 14, 2024
9163c8a
added hiphive schemas file
hrushikesh-s Nov 14, 2024
7a790a1
Bump ipython from 8.25.0 to 8.26.0 (#905)
dependabot[bot] Jul 1, 2024
355014b
Bump custodian from 2024.4.18 to 2024.6.24 (#908)
dependabot[bot] Jul 1, 2024
c4712ca
Bump phonopy from 2.24.3 to 2.25.0 (#906)
dependabot[bot] Jul 1, 2024
7677939
Bump pydantic-settings from 2.3.3 to 2.3.4 (#907)
dependabot[bot] Jul 1, 2024
147cd78
Bump lobsterpy from 0.4.4 to 0.4.5 (#913)
dependabot[bot] Jul 8, 2024
34e908b
Bump phonopy from 2.25.0 to 2.26.2 (#914)
dependabot[bot] Jul 8, 2024
13bdff1
Bump pydantic from 2.7.4 to 2.8.2 (#915)
dependabot[bot] Jul 8, 2024
66cec7a
Add possibility to use your own M3GNet potential (#911)
QuantumChemist Jul 10, 2024
32e3224
Bump sphinx from 7.2.6 to 7.4.0 (#919)
dependabot[bot] Jul 15, 2024
0ad7277
Bump phonopy from 2.26.2 to 2.26.5 (#921)
dependabot[bot] Jul 15, 2024
3b0fefe
Equation of State workflow for FHI-aims (#889)
ansobolev Jul 16, 2024
88f7b1c
Fix JobStoreDocument attribute access (#710)
mjwen Jul 18, 2024
659c938
Fix docs
Jul 18, 2024
ec2a1ed
Fix docs
Jul 18, 2024
b7bd89b
Update sphinx version
Jul 18, 2024
181f72c
Update precommit
Jul 18, 2024
208cc43
Docs: add Document Models / emmet tutorial (#917)
rkingsbury Jul 18, 2024
5898ada
Writing tutorial for high level overview of atomate2 concepts. (#757)
QuantumChemist Jul 18, 2024
83b1d92
Add elastic workflow for FHI-aims (#871)
tpurcell90 Jul 18, 2024
6580110
Tutorial for blob storage with test (#776)
jmmshn Jul 18, 2024
fa67259
Added NEP MLIP relax, static, and MD makers (#893)
naik-aakash Jul 18, 2024
35eb935
fix CP2K TaskDocument (#900)
lory-w Jul 18, 2024
b7f20e8
add additional fields as kwargs to PhononBSDOSDoc (#910)
naik-aakash Jul 18, 2024
48e61cb
Defect: Allow bulk SC calculation to be skipped. (#742)
jmmshn Jul 18, 2024
1d0c9c7
[WIP] Documentation update (#850)
AntObi Jul 18, 2024
2187f2d
Bump sphinx from 7.4.6 to 7.4.7 (#926)
dependabot[bot] Jul 22, 2024
7503383
Bump furo from 2024.5.6 to 2024.7.18 (#931)
dependabot[bot] Jul 22, 2024
a7ccf30
Bump phonopy from 2.26.5 to 2.26.6 (#930)
dependabot[bot] Jul 22, 2024
d90a7af
Bump nbmake from 1.5.3 to 1.5.4 (#929)
dependabot[bot] Jul 22, 2024
68c96a3
Bump pymatgen-analysis-defects from 2024.5.11 to 2024.7.19 (#925)
dependabot[bot] Jul 22, 2024
6fc2d95
Add `SevenNetRelaxMaker` + `SevenNetStaticMaker` to force field jobs …
janosh Jul 29, 2024
843459d
Lobster schema updates (#924)
naik-aakash Jul 30, 2024
ecb87fc
Transition to pymatgen VASP input sets (#854)
esoteric-ephemera Jul 30, 2024
9972d90
Add workflow to compute Gruneisen parameters (#752)
naik-aakash Jul 31, 2024
015e073
ruff fixes (#946)
janosh Aug 7, 2024
52d5540
Add back `symprec` kwarg to MP and MatPES set generators (#947)
janosh Aug 7, 2024
fcecc5b
Added documentation about JSONStore usage within Installation (#945)
abhardwaj73 Aug 7, 2024
2b595a9
Bump myst-parser from 3.0.1 to 4.0.0 (#950)
dependabot[bot] Aug 12, 2024
c515565
Bump pyyaml from 6.0.1 to 6.0.2 (#952)
dependabot[bot] Aug 12, 2024
714ef42
Bump furo from 2024.7.18 to 2024.8.6 (#951)
dependabot[bot] Aug 12, 2024
5c3f5d1
Bump phonopy from 2.26.6 to 2.26.7 (#949)
dependabot[bot] Aug 12, 2024
6fe2d43
Bump pytest from 8.0.2 to 8.3.2 (#937)
dependabot[bot] Aug 12, 2024
7480c2f
Bump numpydoc from 1.7.0 to 1.8.0 (#948)
dependabot[bot] Aug 12, 2024
ca54221
Remove README note about atomate2 mostly being for VASP (#957)
Andrew-S-Rosen Aug 17, 2024
8174c69
Fix MPID assignment in electrode workflow (#956)
esoteric-ephemera Aug 20, 2024
25c89f2
Update changelog
Aug 20, 2024
7a49d82
Update release.yml
utf Aug 20, 2024
dbd030d
bump ruff + auto-fixes
janosh Aug 20, 2024
049473b
Anharmonicity Quantification workflow (#901)
4kevinbeck5 Aug 24, 2024
bf8a116
Bump phonopy from 2.26.7 to 2.27.0 (#964)
dependabot[bot] Aug 26, 2024
1424fd5
Bump mp-api from 0.41.2 to 0.42.1 (#963)
dependabot[bot] Aug 26, 2024
1cdcaa6
Bump ipython from 8.26.0 to 8.27.0 (#966)
dependabot[bot] Sep 2, 2024
6c44a3a
Bump pydantic from 2.8.2 to 2.9.0 (#972)
dependabot[bot] Sep 9, 2024
106399f
Workflow for Quasi-harmonic approximation (forcefields and VASP) (#903)
JaGeo Sep 9, 2024
711de53
Bump pytest from 8.3.2 to 8.3.3 (#978)
dependabot[bot] Sep 16, 2024
46b45b4
Bump pydantic-settings from 2.3.4 to 2.5.2 (#981)
dependabot[bot] Sep 16, 2024
1481f04
Bump pydantic from 2.9.0 to 2.9.1 (#977)
dependabot[bot] Sep 16, 2024
0e8d8d1
Bump mp-api from 0.42.1 to 0.42.2 (#983)
dependabot[bot] Sep 16, 2024
e29de49
Bump sevenn from 0.9.3 to 0.9.3.post1 (#982)
dependabot[bot] Sep 16, 2024
9354b4d
Bump pydantic from 2.9.1 to 2.9.2 (#991)
dependabot[bot] Sep 23, 2024
1a80eaa
Remove emmet `==` pin in `pyproject.toml` and update version in `stri…
Andrew-S-Rosen Sep 23, 2024
0258cd9
Atomate2 OpenMM integration & broader classical MD framework (#782)
orionarcher Sep 23, 2024
4780de6
Frequency Flattening Optimizer (#863)
rohithsrinivaas Sep 24, 2024
30e38e0
Input set tutorial (#780)
JonathanSchmidt1 Sep 24, 2024
ff32a18
Including VASP surface adsorption flow (#691)
itsshawnwang Sep 24, 2024
108100f
Generalize forcefields for generic ASE calculator support (#940)
esoteric-ephemera Sep 25, 2024
031e8b5
Update changelog
Sep 26, 2024
417eb1d
Bump min supported Python to 3.10 (#992)
janosh Sep 26, 2024
981d0f1
Excise openff dependency from openmm testing (#993)
orionarcher Sep 27, 2024
98da469
Fix `prev_dir` behavior in input set generator of `MPGGAStaticMaker` …
Andrew-S-Rosen Sep 29, 2024
06276e2
Split tests (#985)
esoteric-ephemera Sep 29, 2024
ba75563
Update changelog
Sep 30, 2024
7bccd39
Allow energy minimization maker to report energies (#1004)
orionarcher Oct 1, 2024
1a22235
Bump lobsterpy from 0.4.5 to 0.4.9 (#1001)
dependabot[bot] Oct 3, 2024
ffbad05
Implementation to adjust get_supercell_size to also generate orthorho…
QuantumChemist Oct 3, 2024
f83acf2
Aims magnetic ordering (#922)
tpurcell90 Oct 3, 2024
f311df6
fix ruff PLC0206 Extracting value from dict without calling .items() …
janosh Oct 6, 2024
f6ac987
Bump chgnet from 0.3.8 to 0.4.0 (#990)
dependabot[bot] Oct 6, 2024
5ad7147
Bump ipython from 8.27.0 to 8.28.0 (#1010)
dependabot[bot] Oct 7, 2024
f1f73be
Bump python-ulid from 2.7.0 to 3.0.0 (#1015)
dependabot[bot] Oct 14, 2024
8a6cec9
Ferroelectric Workflow 2 (#1012)
fraricci Oct 15, 2024
04c96f9
Bump sphinx from 7.4.7 to 8.1.3 (#1016)
dependabot[bot] Oct 16, 2024
3dce858
Bump custodian from 2024.6.24 to 2024.10.16 (#1020)
dependabot[bot] Oct 21, 2024
d4748a7
Bump pytest-split from 0.9.0 to 0.10.0 (#1019)
dependabot[bot] Oct 21, 2024
ee10c84
Bump torch from 2.4.1 to 2.5.0 (#1018)
dependabot[bot] Oct 21, 2024
28e83c3
Bump pydantic-settings from 2.5.2 to 2.6.0 (#1021)
dependabot[bot] Oct 21, 2024
19b4c28
Bump ipython from 8.28.0 to 8.29.0 (#1025)
dependabot[bot] Oct 28, 2024
77ad2e9
Bump calorine from 2.2.1 to 3.0 (#1026)
dependabot[bot] Oct 28, 2024
a719dd0
Bump sevenn from 0.9.3.post1 to 0.10.0 (#1028)
dependabot[bot] Oct 28, 2024
332f06a
Update MACE to 0.3.6 (#1032)
orionarcher Oct 30, 2024
d715cef
Allow custom mace model by specifying "model" in calculator kwargs" (…
orionarcher Oct 31, 2024
8a3f1e4
feat: add dedicated fireworks optional dependency (Fix #1033). (#1035)
hongyi-zhao Nov 1, 2024
4b5cb36
MPMorph Flows (#938)
BryantLi-BLI Nov 1, 2024
4bb7d0e
Bump torch from 2.5.0 to 2.5.1 (#1039)
dependabot[bot] Nov 4, 2024
44eebd6
Bump pytest-cov from 5.0.0 to 6.0.0 (#1041)
dependabot[bot] Nov 4, 2024
72fea4a
Bump pydantic-settings from 2.6.0 to 2.6.1 (#1042)
dependabot[bot] Nov 4, 2024
c776471
Make testing utils importable (#1037)
jmmshn Nov 6, 2024
a3b0644
Bump sevenn from 0.10.0 to 0.10.1 (#1050)
dependabot[bot] Nov 11, 2024
ccb4b36
Update versioningit requirement from ~=1.0 to >=1,<4 (#1051)
dependabot[bot] Nov 11, 2024
5d9161e
Feat: GW workflow with VASP (#808)
yanghan234 Nov 12, 2024
bb42c85
Bump monty from 2024.7.30 to 2024.10.21 (#1027)
dependabot[bot] Nov 12, 2024
e9aa668
Update changelog
Nov 12, 2024
b9c59fc
Add trajectory reporter to openmm workflow (#1053)
orionarcher Nov 13, 2024
a07ca83
modifications based on new versions of pymatgen & hiphive
hrushikesh-s Nov 16, 2024
f7fa784
pre-commit fixes schemas/hiphive.py
hrushikesh-s Nov 21, 2024
b5eac65
pre-commit fixes jobs/hiphive.py
hrushikesh-s Nov 21, 2024
22872e5
pre-commit fixes flows/hiphive.py
hrushikesh-s Nov 21, 2024
b49c869
removing unused code
hrushikesh-s Nov 21, 2024
68eea2b
removing the gpu_fworker config tag
hrushikesh-s Nov 21, 2024
cd36b72
test_data -- Si_hiphive
hrushikesh-s Nov 21, 2024
31a8d60
tests/vasp/flows/test_hiphive.py
hrushikesh-s Nov 22, 2024
2396b42
removed old test files for hiphive
hrushikesh-s Nov 22, 2024
a97158f
Merge branch 'upstream_main' into hiphive
hrushikesh-s Nov 22, 2024
09228aa
pre-commit vasp/flows/hiphive.py
hrushikesh-s Nov 22, 2024
60c5e18
pre-commit forecefields/flows/hiphive.py
hrushikesh-s Nov 22, 2024
fb53491
pre-commit src/atomate2/settings.py
hrushikesh-s Nov 22, 2024
bb52e2b
pre-commit common/jobs/phonons.py
hrushikesh-s Nov 22, 2024
4f28310
update to pyproject.toml
hrushikesh-s Nov 22, 2024
e32f960
changing the name of "anharmonicphonons" block to "hiphive"
hrushikesh-s Nov 22, 2024
7c95b6e
added hiphive dependencies to strict
hrushikesh-s Nov 22, 2024
cc12b08
soften phono3py version
hrushikesh-s Nov 22, 2024
8f6b299
installing phono3py using conda
hrushikesh-s Nov 22, 2024
63614e2
Merge branch 'hiphive'
thomasloux Jan 2, 2026
f91d105
ruff, add function deleted in phonopy, adapted to new phonopy version
thomasloux Jan 2, 2026
9ea3709
adapt to new atomate force field classes
thomasloux Jan 2, 2026
0b8c2f5
ruff happy
thomasloux Jan 2, 2026
e9fe0dc
update phono3py version
thomasloux Jan 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 63 additions & 47 deletions src/atomate2/common/schemas/hiphive.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import warnings
from itertools import product
from pathlib import Path
from typing import TYPE_CHECKING, Any, Optional, Union
from typing import TYPE_CHECKING, Any

import matplotlib.pyplot as plt
import numpy as np
Expand All @@ -37,7 +37,6 @@
# Phonopy & Phono3py
from phonopy import Phonopy
from phonopy.file_IO import parse_FORCE_CONSTANTS
from phonopy.interface.hiphive_interface import phonopy_atoms_to_ase
from phonopy.phonon.band_structure import get_band_qpoints_and_path_connections
from phonopy.structure.symmetry import symmetrize_borns_and_epsilon
from phonopy.units import VaspToTHz
Expand Down Expand Up @@ -70,9 +69,25 @@
if TYPE_CHECKING:
from ase.atoms import Atoms
from emmet.core.math import Matrix3D
from phonopy.structure.atoms import PhonopyAtoms
from pymatgen.core.structure import Structure


def phonopy_atoms_to_ase(atoms_phonopy: PhonopyAtoms) -> Atoms:
"""Convert PhonopyAtoms to Atoms."""
try:
from ase.atoms import Atoms
except ImportError as exc:
raise ModuleNotFoundError("ASE python module was not found.") from exc

return Atoms(
cell=atoms_phonopy.cell,
scaled_positions=atoms_phonopy.scaled_positions,
numbers=atoms_phonopy.numbers,
pbc=True,
)


logger = logging.getLogger(__name__)

ev2j = sp.constants.elementary_charge
Expand Down Expand Up @@ -106,7 +121,7 @@ def get_factor(code: str) -> float:
raise ValueError(f"Frequency conversion factor for code ({code}) not defined.")


def get_cutoffs(supercell_structure: Structure) -> list[list[float]]:
def get_cutoffs(supercell_structure: Structure) -> list[list[int]]:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hrushikesh-s linter suggested to change that because we later round the cutoff. So I was actually wondering if the rounding was correct or not.

"""
Determine the trial cutoffs based on a supercell structure.

Expand Down Expand Up @@ -418,7 +433,6 @@ def filter_cutoffs(

logger.info(f"Unique DOFs: {seen_dofs}")
logger.info(f"New cutoffs: {new_cutoffs}")

return new_cutoffs

cutoffs = filter_cutoffs(cutoffs, dofs_list)
Expand Down Expand Up @@ -449,15 +463,15 @@ class ThermalDisplacementData(BaseModel):
"cutoff frequency in THz to avoid numerical issues in the "
"computation of the thermal displacement parameters"
)
thermal_displacement_matrix_cif: Optional[list[list[Matrix3D]]] = Field(
thermal_displacement_matrix_cif: list[list[Matrix3D]] | None = Field(
None, description="field including thermal displacement matrices in CIF format"
)
thermal_displacement_matrix: Optional[list[list[Matrix3D]]] = Field(
thermal_displacement_matrix: list[list[Matrix3D]] | None = Field(
None,
description="field including thermal displacement matrices in Cartesian "
"coordinate system",
)
temperatures_thermal_displacements: Optional[list[int]] = Field(
temperatures_thermal_displacements: list[int] | None = Field(
None,
description="temperatures at which the thermal displacement matrices"
"have been computed",
Expand All @@ -467,14 +481,12 @@ class ThermalDisplacementData(BaseModel):
class PhononUUIDs(BaseModel):
"""Collection to save all uuids connected to the phonon run."""

optimization_run_uuid: Optional[str] = Field(
None, description="optimization run uuid"
)
displacements_uuids: Optional[list[str]] = Field(
optimization_run_uuid: str | None = Field(None, description="optimization run uuid")
displacements_uuids: list[str] | None = Field(
None, description="The uuids of the displacement jobs."
)
static_run_uuid: Optional[str] = Field(None, description="static run uuid")
born_run_uuid: Optional[str] = Field(None, description="born run uuid")
static_run_uuid: str | None = Field(None, description="static run uuid")
born_run_uuid: str | None = Field(None, description="born run uuid")


class ForceConstants(MSONable):
Expand All @@ -487,88 +499,88 @@ def __init__(self, force_constants: list[list[Matrix3D]]) -> None:
class PhononJobDirs(BaseModel):
"""Collection to save all job directories relevant for the phonon run."""

displacements_job_dirs: Optional[list[Optional[str]]] = Field(
displacements_job_dirs: list[str | None] | None = Field(
None, description="The directories where the displacement jobs were run."
)
static_run_job_dir: Optional[Optional[str]] = Field(
static_run_job_dir: str | None = Field(
None, description="Directory where static run was performed."
)
born_run_job_dir: Optional[str] = Field(
born_run_job_dir: str | None = Field(
None, description="Directory where born run was performed."
)
optimization_run_job_dir: Optional[str] = Field(
optimization_run_job_dir: str | None = Field(
None, description="Directory where optimization run was performed."
)
taskdoc_run_job_dir: Optional[str] = Field(
taskdoc_run_job_dir: str | None = Field(
None, description="Directory where task doc was generated."
)


class PhononBSDOSDoc(StructureMetadata, extra="allow"): # type: ignore[call-arg]
"""Collection of all data produced by the phonon workflow."""

structure: Optional[Structure] = Field(
structure: Structure | None = Field(
None, description="Structure of Materials Project."
)

phonon_bandstructure: Optional[PhononBandStructureSymmLine] = Field(
phonon_bandstructure: PhononBandStructureSymmLine | None = Field(
None,
description="Phonon band structure object.",
)

phonon_dos: Optional[PhononDos] = Field(
phonon_dos: PhononDos | None = Field(
None,
description="Phonon density of states object.",
)

free_energies: Optional[list[float]] = Field(
free_energies: list[float] | None = Field(
None,
description="vibrational part of the free energies in J/mol per "
"formula unit for temperatures in temperature_list",
)

heat_capacities: Optional[list[float]] = Field(
heat_capacities: list[float] | None = Field(
None,
description="heat capacities in J/K/mol per "
"formula unit for temperatures in temperature_list",
)

internal_energies: Optional[list[float]] = Field(
internal_energies: list[float] | None = Field(
None,
description="internal energies in J/mol per "
"formula unit for temperatures in temperature_list",
)
entropies: Optional[list[float]] = Field(
entropies: list[float] | None = Field(
None,
description="entropies in J/(K*mol) per formula unit"
"for temperatures in temperature_list ",
)

temperatures: Optional[list[int]] = Field(
temperatures: list[int] | None = Field(
None,
description="temperatures at which the vibrational"
" part of the free energies"
" and other properties have been computed",
)

total_dft_energy: Optional[float] = Field("total DFT energy per formula unit in eV")
total_dft_energy: float | None = Field("total DFT energy per formula unit in eV")

has_imaginary_modes: Optional[bool] = Field(
has_imaginary_modes: bool | None = Field(
None, description="if true, structure has imaginary modes"
)

# needed, e.g. to compute Grueneisen parameter etc
force_constants: Optional[ForceConstants] = Field(
force_constants: ForceConstants | None = Field(
None, description="Force constants between every pair of atoms in the structure"
)

born: Optional[list[Matrix3D]] = Field(
born: list[Matrix3D] | None = Field(
None,
description="born charges as computed from phonopy. Only for symmetrically "
"different atoms",
)

epsilon_static: Optional[Matrix3D] = Field(
epsilon_static: Matrix3D | None = Field(
None, description="The high-frequency dielectric constant"
)

Expand All @@ -583,15 +595,15 @@ class PhononBSDOSDoc(StructureMetadata, extra="allow"): # type: ignore[call-arg
"Field including settings for Phonopy"
)

thermal_displacement_data: Optional[ThermalDisplacementData] = Field(
thermal_displacement_data: ThermalDisplacementData | None = Field(
"Includes all data of the computation of the thermal displacements"
)

jobdirs: Optional[PhononJobDirs] = Field(
jobdirs: PhononJobDirs | None = Field(
"Field including all relevant job directories"
)

uuids: Optional[PhononUUIDs] = Field("Field including all relevant uuids")
uuids: PhononUUIDs | None = Field("Field including all relevant uuids")

@classmethod
def from_forces_born(
Expand All @@ -601,7 +613,7 @@ def from_forces_born(
displacement: float,
sym_reduce: bool,
symprec: float,
use_symmetrized_structure: Union[str, None],
use_symmetrized_structure: str | None,
kpath_scheme: str,
code: str,
displacement_data: dict[str, list],
Expand Down Expand Up @@ -657,7 +669,7 @@ def from_forces_born(
cell = get_phonopy_structure(structure)

if use_symmetrized_structure == "primitive":
primitive_matrix: Union[np.ndarray, str] = np.eye(3)
primitive_matrix: np.ndarray | str = np.eye(3)
else:
primitive_matrix = "auto"

Expand Down Expand Up @@ -708,7 +720,11 @@ def from_forces_born(
epsilon = None

# Produces all force constants
phonon.produce_force_constants(forces=set_of_forces)
# For some there is a discrepancy with number of displacements and set_of_forces
# logger.info(phonon._dataset["first_atoms"])
# logger.info(len(phonon.supercells_with_displacements))
# logger.info(len(set_of_forces))
phonon.produce_force_constants(forces=set_of_forces[:1])
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to check this line

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hrushikesh-s Somehow there is a problem of length here which is strange. I can choose to take another subset (of size 1) and the test pass. I'm surprised that set_of_forces does not have the correct length. But maybe it's just the test data that is wrong.

# add the def run_hiphive() here and get the 2nd order FCs out.
# then use JZ's way to add FC to the phonon object.

Expand Down Expand Up @@ -1424,7 +1440,7 @@ def _run_cutoffs(
fit_kwargs: dict[str, Any],
imaginary_tol: float = 0.025, # in THz
) -> dict[str, Any]:
logger.info(f"Testing cutoffs {i+1} out of {n_cutoffs}: {cutoffs}")
logger.info(f"Testing cutoffs {i + 1} out of {n_cutoffs}: {cutoffs}")
logger.info(f"fit_method is {fit_method}")
supercell_atoms = AseAtomsAdaptor.get_atoms(supercell_structure)
supercell_atoms = structures[0]
Expand Down Expand Up @@ -1477,7 +1493,6 @@ def _run_cutoffs(

parent_phonopy = get_phonopy_structure(parent_structure)
phonopy = Phonopy(parent_phonopy, supercell_matrix=supercell_matrix)
phonopy.primitive.get_number_of_atoms()

# Ensure supercell_matrix is a numpy array
supercell_matrix = np.array(supercell_matrix)
Expand All @@ -1490,8 +1505,7 @@ def _run_cutoffs(
fcs = fcp.get_force_constants(supercell_atoms)
logger.info("Did you get the large Condition number error?")

phonopy.set_force_constants(fcs.get_fc_array(2))
phonopy.set_mesh(mesh, is_eigenvectors=True, is_mesh_symmetry=True)
phonopy.force_constants = fcs.get_fc_array(2)
phonopy.run_mesh(mesh, with_eigenvectors=True, is_mesh_symmetry=True)
omega = phonopy.mesh.frequencies # THz
omega = np.sort(omega.flatten())
Expand Down Expand Up @@ -1646,10 +1660,10 @@ def get_structure_container(
logger.info(f"Mean Forces: {mean_forces}")
# Calculate standard deviation of displacements
std_displacements = np.linalg.norm(displacements, axis=1).std()
logger.info(f"Standard deviation of displacements: " f"{std_displacements}")
logger.info(f"Standard deviation of displacements: {std_displacements}")
# Calculate standard deviation of forces
std_forces = np.linalg.norm(forces, axis=1).std()
logger.info(f"Standard deviation of forces: " f"{std_forces}")
logger.info(f"Standard deviation of forces: {std_forces}")
if not separate_fit: # fit all
sc.add_structure(structure)
# for harmonic fitting
Expand Down Expand Up @@ -1727,12 +1741,14 @@ def harmonic_properties(
mesh = [10, 10, 10] # TODO change this later
logger.info(f"Mesh: {mesh}")

phonopy.set_force_constants(fcs2)
phonopy.set_mesh(mesh, is_eigenvectors=True, is_mesh_symmetry=False)
phonopy.force_constants = fcs2
phonopy.run_mesh(mesh, with_eigenvectors=True, is_mesh_symmetry=False)
phonopy.run_thermal_properties(temperatures=temperature)
logger.info("Thermal properties successfully run!")

_, free_energy, entropy, heat_capacity = phonopy.get_thermal_properties()
_, free_energy, entropy, heat_capacity = (
phonopy.thermal_properties.thermal_properties
)

## Use the following lines to convert the units to eV/atom
# free_energy *= 1000/sp.constants.Avogadro/eV2J/natom # kJ/mol to eV/atom
Expand Down Expand Up @@ -2069,7 +2085,7 @@ def gruneisen(
# Convert heat_capacity to an array if it's a scalar
# heat_capacity = np.array([heat_capacity])
logger.info(f"heat capacity = {heat_capacity}")
vol = phonopy.primitive.get_volume()
vol = phonopy.unitcell.volume

logger.info(f"grun_tot: {grun_tot}")
# logger.info(f"grun_tot shape: {grun_tot.shape}")
Expand Down