Re: [Spglib-users] symmetrizing positions/cell vectors without altering cell?
Brought to you by:
atztogo
From: Atsushi T. <atz...@gm...> - 2017-12-15 00:31:19
|
No. Cell vectors follow the crystallographic point group (multiplied with translation group). But if I remember correctly, simple application of these symmetry operations similarly to the points of atoms didn't work well. So my strategy is that using the constraints of Bravais lattice for angles and equivalent basis vector lengths to symmetrize the basis vectors. For distorted basis vectors, it's not uniquely defined the directions of basis vectors in Cartesian coordinates, I employed a strategy to align those basis vectors to the Cartesian axes as shown in the spglib documentation. If you want to rotate basis vectors to be along some directions, you can do rotate back afterwards using the rotation matrix calculated from the initial and final basis vectors and the transformation matrix given from spglib. In summary, to symmetrize basis vectors, there is large freedom to make it, and it can be dependent on users' will, so I don't want to provide a function that does too much. Togo On Fri, Dec 15, 2017 at 5:15 AM, Noam Bernstein <noa...@nr...> wrote: > On Sep 25, 2017, at 9:54 AM, Atsushi Togo <atz...@gm...> wrote: > > Good! > > > Togo > > On Mon, Sep 25, 2017 at 10:49 PM, Noam Bernstein > <noa...@nr...> wrote: > > On Sep 25, 2017, at 9:15 AM, Atsushi Togo <atz...@gm...> wrote: > > If the distortion is not that much, then the approach by > Grosse-Kunstleve and Adams should work. If you write a python script, > I think I can comment to it. The C-code is about here, > https://github.com/atztogo/spglib/blob/master/src/site_symmetry.c#L244 > > > > Hmm. I tried something like this initially, and it wasn't working at all, > but I must have had a bug, since I redid it cleanly (so I could show the > code), and the new version's apparently working. Maybe because I was coding > for an audience I was more careful. In any case, while I think it would be > useful to have a version of standardize_cell() that only moved atoms, > without touching the cell vectors, I think my problem is solved for now > (especially if I can recode it without a tight loop in python). It should > probably be redone without so many tight loops in explicit python, but here > it is, in case it’s useful for anyone else: > > > > Hi Togo - hopefully you remember this discussion. Thanks to your help, I > was able to code up in pure python the symmetrization of the atomic > positions, based on your C code in site_symmetry.c. Now I’m wondering if > there is an equivalent algorithm for the symmetrized cell vectors. Can you > just apply the same algorithm to fake atoms placed at the cell vector > endpoints? > > thanks, > Noam > > ____________ > | > | > | > U.S. NAVAL > | > | > _RESEARCH_ > | > LABORATORY > > Noam Bernstein, Ph.D. > Center for Materials Physics and Technology > U.S. Naval Research Laboratory > T +1 202 404 8628 F +1 202 404 7546 > https://www.nrl.navy.mil > -- Atsushi Togo Elements Strategy Initiative for Structural Materials, Kyoto university E-mail: atz...@gm... |