ajjackson / ascii-phonons

Blender extensions for illustrations of phonons
GNU General Public License v3.0
60 stars 22 forks source link

feature request: multiple modes animated simultaneously #27

Open lucydot opened 7 years ago

lucydot commented 7 years ago

It would be nice if multiple modes could be animated simultaneously, like this example. There is a primitive implementation (which reads from the phonopy mesh.yaml and vasp POSCAR) in Julia here.

ajjackson commented 7 years ago

You're not the first to ask about this!

In principle this is not difficult to implement; the modes are applied as a "difference" to the previous position at each frame, and can be superimposed easily enough.

The problem is that it's a bit of a departure in interface and experience. At the moment ascii-phonons is typically used to generate animated GIF files which loop over less than fifty frames. The time basis for the oscillation is related to the frame-rate. Please give some suggestions for

How should off-gamma modes be treated? They are just as real as the gamma-point modes, it seems arbitrary to exclude them.

jarvist commented 7 years ago

'primitive implementation'?! 😱

lucydot commented 7 years ago

Ha - i'm actually quoting your commit message there Jarv...

ajjackson commented 7 years ago

It isn't more difficult from my end to overlay lots of different wavevectors, but it will require the user to run a lot more Phonopy and the output will become less and less orderly. The problematic part is answering the question: "why only include q-point Y?" if you are trying to understand something about the general movements of the system.

Overlaying just two or three modes could be quite useful if you have a particular intuition and want to study their composite effect. The only problem there is that the GIF won't loop nicely any more, otherwise it seems like a nice thing to have.

jarvist commented 7 years ago

More importantly, how are you going to improve on the Dalek-esque soundtrack? https://www.youtube.com/watch?v=7UoPgFJcRoI

lucydot commented 7 years ago

You make a good point. Ok, so say that user runs phonopy anime.conf multiple times for the q-points wanted. This will generate an ascii_file for each q-point called, say q1.ascii, q2.ascii, q3.ascii. Say that the user wants to superimpose eigenmodes 12 and 6 from the wavevector specified in q1.ascii and eigenmode 7 from wavevector specified in q3.ascii. The user could pass ascii-phonons -m q1.ascii 12 6 q3.ascii 7.

It's a clunky workflow, having to work with seperate files but I don't think phonopy has an output which contains all the necessary information in one place?

jarvist commented 7 years ago

Multiple q-points: I'm not sure if there's much point to combining them within one visual, as it all averages out (due to the random phases) once you start combining different phonon motion. So you'll very quickly get to a 'disordered mess' like a genuine MD simulation, rather than this which is presenting all of the relative harmonies of the dynamics. Looking at e.g. multiple Brillouin Zone boundary modes in a 2x2x2 supercell might be interesting.

With the Julia Phonons code you just need to add an exp(q-point) phase factor to the eigenvectors. Phonopy constructs + resolves the dynamic matrix for explicit q-points across the BZ, but this can be considered a perturbation in terms of the resulting eigenvectors. So you just need a 1-shot Phonopy calculation --> 'Gamma' set of eigenvectors, which you use everywhere.

I've never used the 'ascii' v-sim output of Phonopy, do you explicitly get the eigenvectors, or is it already pre-projected for you? As the eigenvectors themselves make up an orthogonal basis for small motion (the normal modes), you can just sum them together to get the 'conflation'.

BTW; not sure if this method has ever been used to visualise phonons (I've never seen it), though it is very similar to what is done to efficiently initialise molecular dynamics simulations with a per- normal-mode equilibrated thermal motion (constructed in normal modes), rather than randomly kicking each atom with a Maxwell-Boltzmann distribution (which can take AGES to then properly equilibriate).

jarvist commented 7 years ago

Sorry Lucy, our comments crossed in the aether.

I guess my perspective is that it's easier to directly use the eigenvectors/eigenvalues, and that these contain all the information that there possibly is, rather than starting with the ASCII v-sim output of Phonopy.

ajjackson commented 7 years ago

v-sim .ascii files contain eigenvectors with mass weighting already applied, so yes it's easy to manipulate the rate and phase. That's also why ascii-phonons is able to use arbitrary supercells.

ajjackson commented 7 years ago

Aron asked me about audio representations of phonons before :smile: Seems like a good rainy weekend project!

lucydot commented 7 years ago

Feature request! Listen to the phonons sing

jarvist commented 7 years ago

Did some more work on my codes, implementing arbitrary phase factors within the BZ, and visualising the MAPI conflation above, but now also with a BZ acoustic tilt mode.

https://www.youtube.com/watch?v=bzPqlh0ui8k&feature=youtu.be