Skip to content
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

Idea for rotational mode detection #96

Open
ExpHP opened this issue May 15, 2019 · 0 comments
Open

Idea for rotational mode detection #96

ExpHP opened this issue May 15, 2019 · 0 comments

Comments

@ExpHP
Copy link
Owner

ExpHP commented May 15, 2019

1. Translate

First, the coords must be translated to place any vacuum separation at the cell borders, and then mapped into the unit cell, because the concept of rotational modes only exists in aperiodic systems.

2. Find a best fit rotation axis

Now imagine, if you will, that the atomic displacements of a phonon are linear velocities. If a mode is perfectly rotational, then there exists a point P and a vector omega such that

v_n = omega ⨯ (x_n - P)

for all site indices n. Of course, this does not uniquely determine P; for that, we simply choose the point on the axis of rotation that is closest to the origin:

P ∙ omega = 0

Altogether this gives you 3n + 1 residuals you can stick into any nonlinear least squares solver to solve for 6 independent variables. (P and omega)

A good initial guess for P is probably the cell center. Choose a random initial omega.

3. Construct the eigenmode and project

Determine the quality of the fit by constructing the pure rotational mode (use v_n as defined above, then mass reduce and normalize) and computing the overlap with the eigenvector.

If the overlap is close to the norm of the eigenvector, it's a good fit and the mode is rotational!

(If it's not close, then I wouldn't place too much stock in the precise value found for the overlap, because the other stuff in the eigenvector may have influenced the fit)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant