-
Notifications
You must be signed in to change notification settings - Fork 50
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
Faber-Ziman Partial Structure Factors Normalization #1313
Faber-Ziman Partial Structure Factors Normalization #1313
Comments
Thanks for the thorough description of the behavior and clearly describing the root cause. Do you think our users would benefit from an option to use the Faber-Ziman normalization scheme? Or do you think this is something we only need to clarify in the documentation? |
The normalization itself is pretty straightforward once you know what to look for. Therefore, I would argue that a clarification in the documentation should suffice. I can share the Jupyter notebook used to create the comparison plot between both methods if you're interested. |
Yeh, this analysis is spot on. We don't comment on this issue directly anywhere in docs, but mention that the implementation here supports calculation of total structure factor from its partials via a formula given in the docs. This indirectly implies that S(k) converges to mole fraction value of that species at high k values, otherwise you can't sum them properly to obtain total S(k). We could add a note that states this explicitly in the docstring. Perhaps we could also add a formula in the docs that shows how one can convert between the two normalization schemes? |
At least for me this implication was not clear until I really started going through different papers and comparing plots and equations. Maybe this time could be saved for the next person trying to compare their results to references. I would probably extend the example to show how to re-normalize the partial structure factors to the other convention.
I spend some more time thinking about this question and came to the conclusion that this is what we're going to do with the OVITO implementation. Mostly because we have a GUI which comes with different constraints compared to a library / module like Freud. |
In the Freud documentation, the following image is presented for the Faber-Ziman decomposition of partial structure factors:
Source
From this image, we can clearly see that the like partial structure factors (e.g., Sαα) converge to their respective concentrations at large k, while the unlike partial structure factors converge to zero.
Comparing this with other references, we observe that Faber-Ziman partial structure factors typically converge to 1 in the large k or Q regime. This behavior is evident in the following examples:
This discrepancy is quite interesting; however, it can be explained by the work of:
In their paper, the authors state: "The like partial structure factors, Sαα(q), converge to the mole fraction of the α species at infinite q, while the unlike ones converge to zero."
This is exactly in line with the structure factors computed by Freud. Therefore, I would assume that the Faber-Ziman partial structure factors calculated in Freud correspond to the quantity labeled as the partial structure factor (Sαβ) in this paper.
Later in the paper, the authors show how their structure factors (Sαβ) can be transformed into Faber-Ziman partial structure factors (Aαβ):
Applying the inverse transformation to the Freud partial structure factors yields the expected behavior, where the Faber-Ziman partial structure factors converge to 1:
I'm not sure whether this requires any modifications on your end, but I mainly wanted to highlight the discrepancy and hear your thoughts on the matter.
Disclaimer: I work for OVITO GmbH and work on implementing our own structure factor analysis, which explains my interest in this topic.
The text was updated successfully, but these errors were encountered: