ttadano / alamode

Ab initio simulator for thermal transport and lattice anharmonicity
http://sourceforge.net/projects/alamode
MIT License
132 stars 53 forks source link

Displacing specific atoms #42

Closed tawe141 closed 2 years ago

tawe141 commented 2 years ago

For my use-case, it's sufficient to only displace specific atoms when finding vibrational frequencies. Is there a clean way to do this with this library?

ttadano commented 2 years ago

If you know which atom to displace, you can do that by making a file containing entries like

Basis : C
    1:    1
      1              1              0              0

The first row should be Basis : C. The second row is i: n where i is the index of displacement pattern and n is the number of atoms to be displaced simultaneously. If you only have one displacement pattern, where only one atom moves, you can simply write 1: 1. The third row specifies iat vec_x vec_y vec_z where iat is the index of the atom to displace, and vec_{x,y,z} is the direction of displacement in Cartesian coordinate.

After making the above file and save as, for example, tmp.pattern, please issue

displace.py --VASP SPOSCAR -pf tmp.pattern --mag 0.03 --prefix disp0.03

In the above example, disp0.03.POSCAR contains the supercell structure where atom 1 is displaced along +x direction by 0.03 Angstrom.

ttadano commented 2 years ago

I assume your question has been answered and close this issue. If you have follow-up questions, please reopen this issue.