Re: [Spglib-users] symmetrizing positions/cell vectors without altering cell?
Brought to you by:
atztogo
From: Atsushi T. <atz...@gm...> - 2017-09-25 12:54:32
|
Hi, > Hi Togo - thanks for the quick response. Since I’m using the python > interface, which I don’t think has direct access to that routine, I’m not > sure, but I don’t think so, at least if I’m reading the documentation > correctly. This for python, https://atztogo.github.io/spglib/python-spglib.html#standardize-cell > From what I can tell, that _will_ transform to the conventional > crystallographic cell (e.g. a diamond structure fcc + 2 atom basis to simple > cubic + 8 atom basis), and that’s exactly what I don’t want. I’ll try to > test it today. > > > Or if you want detailed control, you may use the dataset obtained by > spg_get_dataset with additional some operations by yourself. > https://atztogo.github.io/spglib/api.html#spg-get-dataset-and-spg-get-dataset-with-hall-number > > > So I have tried an approach using the actual symmetry operations, but wasn’t > able to figure out how to use them to symmetrize positions. I tried putting > atoms at the mean of the positions after transformation by each operation, > but that didn’t work. Then I dug into the source, to see how the > symmetrization works, and looked at the Grosse-Kunstleve and Adams paper > that’s referred to. However, that algorithm didn’t make sense to me. As > far as I can tell, for each atom it loops over transformations, then checks > to see if each operation maps an atom to a periodic image of itself to > within some precision. If so, it adds the rotation matrix and translation > vector to a running total, to it can compute mean rotation and mean > translation, which are then used to generate the symmetrize positions. > However, I don’t understand why that’s the right thing to do, and it doesn’t > seem to be working for me. For my 2 atom diamond structure example, If a > particular symmetry operation transforms atom 0 into atom 1, for example, > the transformed atom 0 position is _not_ off by a lattice vector from the > original atom 0 position, so that operation does not figure into the > symmetrization at all. It therefore does nothing. I'm sure that the paper's scheme works for atomic positions, but the paper doesn't mention about symmetrization of basis vectors if I remember correctly. > Let me put together an example based on the underlying C library, to take > the python interface out of the process, and I’ll post a followup. But symmetrization is uneasy since it means the original input structure is distorted. So we have to determine how we want to symmetrize it. This makes me difficult to answer this type of question. Togo > > thanks, > Noam > -- Atsushi Togo Elements Strategy Initiative for Structural Materials, Kyoto university E-mail: atz...@gm... |