-
Notifications
You must be signed in to change notification settings - Fork 21
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
Issue of the charge neutrality check function #55
Comments
Would you be able to provide examples for the samples for which the charge neutrality function appears to fail so that we can reproduce the issue? Edit: |
Here are some example compositions from MP database that shows non-charge-neutral by your code. Ac3Cr1 can u check? |
Hi @usccolumbia, all of those examples are intermetallics so, as @AntObi says, would not be identified as charge neutral in SMACT. You'll get the same result for anything where the formal oxidation state of each constituent element is 0, e.g. covalent compounds like Si, C, SiC etc. |
Any recommendations on alternatives to check the validity of chemical formulas for intermetallics and other non-ionic compounds? Maybe https://github.com/txie-93/cdvae/blob/main/scripts/eval_utils.py#L121 for example |
Hi @sgbaird - yes that check to see whether everything is a metal is exactly what I had in mind. We don't have anything like this in smact already is because we were primarily interested in finding combinations of elements, up to a certain stoichiometry threshold, to satisfy valency so weren't really interested in intermetallics. In general, as soon as Perhaps we could think about splitting these two ways of working out within the code:
|
We did a simple statistics over non-chargeneutral entries in Materials Project database. Why your charge-neutrality check routine fail for so many oxides? BaErFe4O7 Mg3Cu9Si16O48 is any possible fix for this? |
Hi @usccolumbia, a few points on this, but overall this is not something that need to be "fixed": Code exampleWhat procedure are you actually carrying out to check these compounds? It would be very useful if you could provide a code snippet and ideally the output. Non-charge neutral compoundsWhen you say you did analysis "over non-charge neutral entries" - do you mean that you selected compounds somehow that are not charge neutral? Or these are the ones you found to be non-charge neutral with smact? Many formulas are actually unlikelyUltimately, if there are no known oxidation states for the elements involved that satisfy charge neutrality for the stoichiometry of a given formula, then the compound will fail the charge neutrality test. In many cases, this means the formula is unlikely to lead to a stable compound. Taking just one of your examples at random, Na4CuTe2O29, there are two entries in the Materials Project for this here and here, both of which are extremely high in energy above the convex hull and would spontaneously decompose. There is no ICSD entry associated with either of these structures so they probably have never been made. The lesson here is that in this case the smact charge neutrality check is doing its job, and telling you that a compound is unlikely to exist with this formula. The Materials Project does not just contain stable, or even sensible, compounds. To be honest I think most of your examples fall into this category. Mixed valenceMany of the examples you give with transition metals may be mixed valence compounds and smact (or any algorithm that just looks at formula, not structure) cannot deal with that. For example, BaErFe4O7 can only be charge neutral (assuming Ba2+, Er3+ and O2-) if Fe is Fe2+/Fe3+ at a ratio of 3:1. This may not be the actual answer for this compound, I haven't looked at the structure, but it illustrates the point. In order to try and determine the oxidation states in those compounds you need to analyse the structure, try using the pymatgen bond valence analysis. |
@dandavies99 gave quite a comprehensive answer. I would only add that this is a conventional ionic filter, so failing it tells me that something interesting may be happening chemically. For example, in Ba3NaSi2O8 the sum of the cations is 15+, while (assuming an oxide) the sum of the anions is 16-. So an oxygen hole or O-O bonding could be present. See a related discussion for superconductors here. |
our goal is to get a complete formula validity checker with smact. (fixing maybe not a good term -:)
Ba4SmCu3O9 has ehull 0.004 eV. but it is assigned as not charge-neutral. just wonder if it is possible to assign the label of charge-neutral correctly for this case. |
I am closing this as partially addressed with smact_validity() and ongoing work for mixed valence and intermetallic systems |
When we apply the charge neutrality check function of smact to the compositions of the materials project database, we find that up to 25% samples does not have charge neutrality as calculated by your function. These samples should be charge neutral.
Can you explain this discrepancy? Is this caused by the assumed oxidation states of elements as used in your code for charge neutrality calculation?
The text was updated successfully, but these errors were encountered: