-
Notifications
You must be signed in to change notification settings - Fork 103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ferroelectric Workflow #196
Conversation
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## main #196 +/- ##
==========================================
+ Coverage 65.90% 72.40% +6.49%
==========================================
Files 73 55 -18
Lines 7048 4870 -2178
Branches 901 707 -194
==========================================
- Hits 4645 3526 -1119
+ Misses 2137 1158 -979
+ Partials 266 186 -80
|
Added some initial test mostly. |
Hi @fraricci, thanks for this, it looks great! Are you able to install and run the pre-commit hook?
This will then get run automatically any time you commit anything to github. |
Sure, I'll give it a try soon. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @fraricci, thanks very much for this. Its looking very nice and will be a great feature to have in atomate2.
I've added some detailed comments that move the workflow more in line with atomate2 vs atomate1.
Happy to answer any questions if things aren't clear.
Thanks again!
outputs = {} | ||
|
||
for i, interp_structure in enumerate(interp_structures[1:]): | ||
interpolation = PolarizationMaker().make(interp_structure) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See previous comments:
- You should pass
prev_vasp_dir
- You should pass the polarisation maker into this function to allow customisation.
Can you also add some metadata about the transformations. E.g. a dict of the initial structure, final structure, and interpolation index? As this will allow the reconstruction of the interpolation later on in a builder. E.g., see what we did in the elastic workflow:
atomate2/src/atomate2/vasp/jobs/elastic.py
Line 207 in 98f3ed5
elastic_relax_maker.write_additional_data["transformations:json"] = ts |
Note, this uses transformations.json but you could write any json file you'd like. E.g., the electron-phonon workflow writes a custom file:
atomate2/src/atomate2/vasp/jobs/elph.py
Lines 171 to 178 in 98f3ed5
info = { | |
"temperature": temp, | |
"original_structure": original_structure, | |
"supercell_structure": supercell_structure, | |
} | |
elph_job.update_maker_kwargs( | |
{"_set": {"write_additional_data->elph_info:json": info}}, dict_mod=True | |
) |
tests/test_data/vasp/KNbO3_ferroelectric/polarization_interpolation_0/inputs/INCAR
Outdated
Show resolved
Hide resolved
Glad you like it! Thanks a lot for revising the whole thing. I had quick look at your comments and suggestions. |
Hi @fraricci, please can you merge main into this branch? Something seems to have happened to it and now there are 621 files changed. |
Hey! Yeah, I think I messed this branch up trying to sync it to the upstream with git rebase. I'll check what I can do. |
This branch got broken in some way. New and cleaner pull request opened #1012. This one can be closed. |
This is a first version of the Ferroelectric wf and represents a porting of the the same wf from atomate.
It works properly with a known ferroelectric material (KNbO3), but several things are still missing.
Here a partial list:
It is my first atomate2/jobflow wf therefore any feedback is welcome.
I took inspiration from other wf in core.py and elastic.py.