-
Notifications
You must be signed in to change notification settings - Fork 31
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
remake dopedxpy-sc-fermi #46
base: develop
Are you sure you want to change the base?
Conversation
Looking good @alexsquires. I like the mix-in/abstract class approach. The Ofc the user could iterate over all possible vertex/limit combinations if they knew what they were doing, which would be a good stab at this and get you most of the way there I imagine (kind of like a 'band structure path' approach), but still is only covering certain 'high-symmetry' paths in chem pot space. So if a grid approach was also possible (where e.g. the user can just set the chempot spacing in eV, or total number of grid points), that would also be v nice I think – should be doable with some of the Sorry to be piling on the requests, but I guess the other main use case I'd imagine for this part of the code would be for the more complex defect thermodynamics analysis that Also just fyi, about your earlier |
Yeah, dw this is all on the list, should be ready to go by the end of the
week, I sort of trashed everything to start again (for about the 6th time
now), and just adding everything back in piecewise to make sure it's all
consistent with the latest thermodynamics object.
…On Thu, 15 Feb 2024 at 04:58, Seán Kavanagh ***@***.***> wrote:
Looking good @alexsquires <https://github.com/alexsquires>. I like the
mix-in/abstract class approach.
The _interpolate_chempots() function is quite nice, and I think will
likely be one of the mostly-used features from these additions. From what
we were discussing before in the #doped Slack, would it be possible to
also integrate a grid-scanning approach too? As in, the current function
linearly interpolates between two points (chem pot limits), which is nice
and v useful in many cases, but if for instance we have a 3D chemical
potential space, our min/max of the property of interest could also lie
somewhere in the middle of this space, rather than along any linear path
between two vertices/limits.
Ofc the user could iterate over all possible vertex/limit combinations if
they knew what they were doing, which would be a good stab at this and get
you most of the way there I imagine (kind of like a 'band structure path'
approach), but still is only covering certain 'high-symmetry' paths in chem
pot space. So if a grid approach was also possible (where e.g. the user can
just set the chempot spacing in eV, or total number of grid points), that
would also be v nice I think – should be doable with some of the scipy
grid space interpolation functions I think? And/or pymatgen chemical
potential diagram methods maybe?
If it was possible to implement relatively painlessly, could we add these
two options? ☝️ 🙏
Sorry to be piling on the requests, but I guess the other main use case
I'd imagine for this part of the code would be for the more complex defect
thermodynamics analysis that py-sc-fermi allows, where you want to fix
certain defect/species etc concentrations and perform some constrained
solutions. Is it possible to integrate this to the fermi_solver code?
Also just fyi, about your earlier _format_defect_name() question, yes it
is actually quite externally useful and I'll make it a public function in
the next (minor) release.
—
Reply to this email directly, view it on GitHub
<#46 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AFMK74XGZEUFF3TPF7MZHH3YTXZ5JAVCNFSM6AAAAABBVDPFSSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBVHE2TIMRVHE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
@adair-nicolson , could you re-parse your Cu2SiSe3 data now that everything is relatively final and I can add the grid searching stuff back in? |
@kavanase proposing this as the full functionality - do you want to take a look at the example ipynb while I finish off the tests before I get to comfortable? |
# Conflicts: # examples/CdTe/CdTe_example_thermo.json
@alexsquires going through now. One question, would it make sense to allow initialisation of |
Such a good idea that I'm embarrassed I didn't think of it before |
Ok cool will implement! Also to check, is there any point keeping if multiplicity_scaling is None:
ms = self.defect_thermodynamics.defect_entries[0].defect.structure.volume / self.volume
# check multiplicity scaling is almost an integer
if not np.isclose(ms, round(ms)):
raise ValueError(
"The multiplicity scaling factor is not almost an integer. "
"Please specify a multiplicity scaling factor."
)
self.multiplicity_scaling = round(ms)
else:
self.multiplicity_scaling = multiplicity_scaling |
Also did you check with the latest code that the tutorial all works fine? |
… out, formatting etc
Yeah, we can get rid of it. I suppose it is a hang over from my very "what if?" approach to py-sc-fermi where most of the fun was just playing around with the defect system and seeing how everthing changed, but if people want that, they can go to py-sc-fermi 🤓 On the thing of having fermisolver with a back-end option, I think the default should just be doped in all cases. This is doped after all, and it is marginally faster for the thing I reckon 90% of users will want, which is the convenience functions with quench+anneal. Everything was working locally when I pushed, but I was in a bit of a frenzy, have you found something that doesn't work? |
Ok! And yeah I guess if it's an advanced enough user that they were playing around with things like that, they could also achieve the same effects other ways (e.g. by just adding an entry to For using the For the last bit about something that doesn't work, it was just that I moved this doped/doped/interface/fermi_solver.py Line 1451 in b8cf015
|
…erty (with setter method), and test – quicker init times for `FermiSolver`
Added some of the changes mentioned above now. I played around with Question: For A benefit of the merge to |
…or `quenching` to `quenched` to match `thermodynamics` terminology
…thermodynamics.py`, and remove a couple redundant functions
# Conflicts: # examples/CompetingPhases/MgO/MgO_EaH_0.0/vasp_std/vasprun.xml # examples/CompetingPhases/MgO/MgO_EaH_0.0/vasp_std/vasprun.xml.gz # examples/CompetingPhases/MgO/Mg_EaH_0.0/vasp_std/vasprun.xml # examples/CompetingPhases/MgO/Mg_EaH_0.0/vasp_std/vasprun.xml.gz # examples/CompetingPhases/MgO/Mg_EaH_0.0061/vasp_std/vasprun.xml # examples/CompetingPhases/MgO/Mg_EaH_0.0061/vasp_std/vasprun.xml.gz # examples/CompetingPhases/MgO/Mg_EaH_0.0099/vasp_std/vasprun.xml # examples/CompetingPhases/MgO/Mg_EaH_0.0099/vasp_std/vasprun.xml.gz # examples/CompetingPhases/MgO/O2_EaH_0.0/vasp_std/vasprun.xml # examples/CompetingPhases/MgO/O2_EaH_0.0/vasp_std/vasprun.xml.gz # pyproject.toml
Ok some notes on the above. I updated the I also (mostly, at least) fixed the From playing around, I realised that and Na2FePO4F: Would you be able to look at this, so that it works for all dimensions? Also for the tests, it would be most efficient to use a decorator (like this for testing both the new and legacy MP APIs in the chemical potentials tests) which tests each analysis function for both the |
@alexsquires something I was also thinking about. Do you think it still makes sense to have this under the separate |
# Conflicts: # docs/Dev_ToDo.md
@alexsquires, I was looking again at the current code in this PR (hopefully nearly ready to go 🤞) as I'm currently trying to use it in some of my work (on selenium defects). I was hoping to use the I checked back and this was mentioned way back at the start of this PR, and the
Just checking I'm not missing something / avoiding redundant work. I can add this to the code if it's not there. |
I think it would be nice to maybe have it accept a dictionary of defects and concentraitons, and optionally a charge state so e.g.
This could fairly easily be an additional kwarg of any of the
I also thinks this makes sense. I will fix everything up at the beginning of next week, then we could consider moving it? |
Sounds good! |
defect_levels argument when annealing becomes a boolean