spglib-users Mailing List for spglib
Brought to you by:
atztogo
You can subscribe to this list here.
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2013 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2014 |
Jan
|
Feb
|
Mar
(5) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(2) |
Dec
(3) |
2015 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
(1) |
Jul
(4) |
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
(3) |
Feb
|
Mar
|
Apr
(9) |
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
(2) |
Oct
(15) |
Nov
(4) |
Dec
(8) |
2017 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
|
May
(3) |
Jun
|
Jul
(4) |
Aug
(13) |
Sep
(10) |
Oct
(14) |
Nov
(5) |
Dec
(10) |
2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(4) |
Dec
(1) |
2019 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
(6) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
(3) |
Apr
(2) |
May
(1) |
Jun
(4) |
Jul
(8) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(11) |
2021 |
Jan
|
Feb
(3) |
Mar
(5) |
Apr
|
May
|
Jun
(5) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(2) |
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Atsushi T. <atz...@gm...> - 2025-02-27 05:07:20
|
Hi, I am sorry for being late to reply. stabilized means stabilizer which is the k-point. This means that symmetry operations are restribed by Rk = k + G where R is a rotation operation in reciprocal space and G is the reciprocal lattice vector. Note that functions for reciprocal space will be obsolete. Togo On Sat, Feb 8, 2025 at 6:19 PM Keith Refson <kr...@gm...> wrote: > > Hello. > > Exactly what does > > spg_get_stabilized_reciprocal_mesh > > compute? Could someone please point me at a formal definition of the "stabilized" mesh computed by this function. > > Keith Refson > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: Keith R. <kr...@gm...> - 2025-02-08 09:18:53
|
Hello. Exactly what does |spg_get_stabilized_reciprocal_mesh| compute? Could someone please point me at a formal definition of the "stabilized" mesh computed by this function. Keith Refson |
From: Atsushi T. <atz...@gm...> - 2025-01-10 01:16:20
|
Hi, Unfortunately, the layer group functionality is not supported at this time. The layer group is a normalizer of the space group if I understand it correctly. If you are interested in it and haven't studied it, you can find good information in International Tables for Crystallography. Togo On Thu, Jan 9, 2025 at 10:09 PM zhouchao via Spglib-users <spg...@li...> wrote: > > Dear spglib Developers, > > I hope this email finds you well. My name is chao zhou, and I am currently studying the symmetry of two-dimensional (2D) materials. I am new to using spglib and wanted to ask for your advice. > > Could you please guide me on how to determine the layer group of a 2D material using spglib? If there is some examples? > > Thank you very much for your time and assistance. > > Best regards, > Chao Zhou > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: <994...@qq...> - 2025-01-09 13:08:59
|
Dear spglib Developers, I hope this email finds you well. My name is chao zhou, and I am currently studying the symmetry of two-dimensional (2D) materials. I am new to using spglib and wanted to ask for your advice. Could you please guide me on how to determine the layer group of a 2D material using spglib? If there is some examples? Thank you very much for your time and assistance. Best regards, Chao Zhou |
From: VeiWANG <wa...@ic...> - 2023-06-15 08:31:34
|
I got it. Thanks again. > > Yes, almost. A slight change may exist in spg_get_symmetry_with_collinear_spin. > > Togo > > On Thu, Jun 15, 2023 at 3:31 PM VeiWANG via Spglib-users > <spg...@li...> wrote: >> Hi Togo sensei, >> Thank for your valuable advice. I have got the equivalent_atoms list by via spg_get_dataset function. By the way, I still use spglig.1.x. Is the spglig.2.x fully compatible with spglig.1.x for fortran interface? >> Best, >> Wang >> 下面是被转发的邮件: >> 发件人: Atsushi Togo <atz...@gm...> >> 主题: 回复:[Spglib-users] How to get equivalent_atoms using fortran code >> 日期: 2023年6月15日 GMT+8 09:14:30 >> 收件人: spg...@li... >> 回复给: spg...@li... >> Hi Wang, >> Without spin, spg_get_dataset, and with spin, spg_get_magnetic_dataset >> is recommended to use. However for the latter, the fortran interface >> has not been written yet. A possible route is using >> spg_get_symmetry_with_site_tensors. The interface is >> function spg_get_symmetry_with_site_tensors(rotation, translation, & >> & equivalent_atoms, primitive_lattice, spin_flips, max_size, lattice, & >> & position, types, tensors, tensor_rank, num_atom, with_time_reversal, & >> & is_axial, symprec) bind(c) >> import c_int, c_double >> integer(c_int), intent(out) :: rotation(3, 3, *) >> real(c_double), intent(out) :: translation(3, *) >> integer(c_int), intent(out) :: equivalent_atoms(*) >> real(c_double), intent(out) :: primitive_lattice(3, 3) >> integer(c_int), intent(out) :: spin_flips(*) >> integer(c_int), intent(in), value :: max_size >> real(c_double), intent(in) :: lattice(3, 3), position(3, *) >> integer(c_int), intent(in) :: types(*) >> real(c_double), intent(in) :: tensors(*) >> integer(c_int), intent(in), value :: tensor_rank >> integer(c_int), intent(in), value :: num_atom >> integer(c_int), intent(in), value :: with_time_reversal >> integer(c_int), intent(in), value :: is_axial >> real(c_double), intent(in), value :: symprec >> integer(c_int) :: spg_get_symmetry_with_site_tensors >> end function spg_get_symmetry_with_site_tensors >> Unfortunately, I haven't wrote any example of it, but I hope it can be >> guessed from C-api doc. >> https://spglib.readthedocs.io/en/latest/api.html#spg-get-symmetry-with-site-tensors >> https://spglib.readthedocs.io/en/latest/development/magnetic_symmetry_flags.html#magnetic-action-flags >> If you want to specify collinear spin, the array length is the number >> of atoms, tensor_rank=0, is_axial=0, and with_time_reversal =1. For >> the non-collinear case, the array length is the number-of-atoms x 3, >> tensor_rank=1, is_axial=1, and with_time_reversal =1. These are the >> typical choices. >> The spin_flips array stores if the spin is flipped or not by the found >> symmety operations. Therefore the length is the number of symmetry >> operations. The number of symmetry operations is unknown before >> running this function, so you have to prepare large enough symmetry >> operations related arrays, whose length is considered to inform to >> spglib by max_size. >> Togo >> On Tue, Jun 13, 2023 at 8:29 PM VeiWANG via Spglib-users >> <spg...@li...> wrote: >> Dear all, >> I am currently trying to use Fortran code to obtain the equivalent_atoms using spglib, with input variables of lattice vectors and atom positions. Could anyone provide guidance on how to implement this? >> If I understand correctly, to obtain the equivalent_atoms, I first simply call the spg_get_symmetry function, which requires input variables of max_size, lattice, position, types, num_atom, and optional parameter symprec. And then I use the spg_get_symmetry_with_collinear_spin function, which takes an additional input variable of spins and outputs equivalent_atoms directly from the function. I was wondering if anyone has experience using spin information with spglib and if so, how to incorporate it into the function. Thank you for your assistance. >> Best, >> Wang >> _______________________________________________ >> Spglib-users mailing list >> Spg...@li... >> https://lists.sourceforge.net/lists/listinfo/spglib-users >> -- >> Atsushi Togo >> _______________________________________________ >> Spglib-users mailing list >> Spg...@li... >> https://lists.sourceforge.net/lists/listinfo/spglib-users >> _______________________________________________ >> Spglib-users mailing list >> Spg...@li... >> https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > -- > Atsushi Togo > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users |
From: Atsushi T. <atz...@gm...> - 2023-06-15 06:37:01
|
Yes, almost. A slight change may exist in spg_get_symmetry_with_collinear_spin. Togo On Thu, Jun 15, 2023 at 3:31 PM VeiWANG via Spglib-users <spg...@li...> wrote: > > Hi Togo sensei, > > Thank for your valuable advice. I have got the equivalent_atoms list by via spg_get_dataset function. By the way, I still use spglig.1.x. Is the spglig.2.x fully compatible with spglig.1.x for fortran interface? > > Best, > Wang > > > 下面是被转发的邮件: > > 发件人: Atsushi Togo <atz...@gm...> > 主题: 回复:[Spglib-users] How to get equivalent_atoms using fortran code > 日期: 2023年6月15日 GMT+8 09:14:30 > 收件人: spg...@li... > 回复给: spg...@li... > > Hi Wang, > > Without spin, spg_get_dataset, and with spin, spg_get_magnetic_dataset > is recommended to use. However for the latter, the fortran interface > has not been written yet. A possible route is using > spg_get_symmetry_with_site_tensors. The interface is > > function spg_get_symmetry_with_site_tensors(rotation, translation, & > & equivalent_atoms, primitive_lattice, spin_flips, max_size, lattice, & > & position, types, tensors, tensor_rank, num_atom, with_time_reversal, & > & is_axial, symprec) bind(c) > import c_int, c_double > integer(c_int), intent(out) :: rotation(3, 3, *) > real(c_double), intent(out) :: translation(3, *) > integer(c_int), intent(out) :: equivalent_atoms(*) > real(c_double), intent(out) :: primitive_lattice(3, 3) > integer(c_int), intent(out) :: spin_flips(*) > integer(c_int), intent(in), value :: max_size > real(c_double), intent(in) :: lattice(3, 3), position(3, *) > integer(c_int), intent(in) :: types(*) > real(c_double), intent(in) :: tensors(*) > integer(c_int), intent(in), value :: tensor_rank > integer(c_int), intent(in), value :: num_atom > integer(c_int), intent(in), value :: with_time_reversal > integer(c_int), intent(in), value :: is_axial > real(c_double), intent(in), value :: symprec > integer(c_int) :: spg_get_symmetry_with_site_tensors > end function spg_get_symmetry_with_site_tensors > > Unfortunately, I haven't wrote any example of it, but I hope it can be > guessed from C-api doc. > https://spglib.readthedocs.io/en/latest/api.html#spg-get-symmetry-with-site-tensors > https://spglib.readthedocs.io/en/latest/development/magnetic_symmetry_flags.html#magnetic-action-flags > > If you want to specify collinear spin, the array length is the number > of atoms, tensor_rank=0, is_axial=0, and with_time_reversal =1. For > the non-collinear case, the array length is the number-of-atoms x 3, > tensor_rank=1, is_axial=1, and with_time_reversal =1. These are the > typical choices. > The spin_flips array stores if the spin is flipped or not by the found > symmety operations. Therefore the length is the number of symmetry > operations. The number of symmetry operations is unknown before > running this function, so you have to prepare large enough symmetry > operations related arrays, whose length is considered to inform to > spglib by max_size. > > Togo > > On Tue, Jun 13, 2023 at 8:29 PM VeiWANG via Spglib-users > <spg...@li...> wrote: > > > Dear all, > > I am currently trying to use Fortran code to obtain the equivalent_atoms using spglib, with input variables of lattice vectors and atom positions. Could anyone provide guidance on how to implement this? > > If I understand correctly, to obtain the equivalent_atoms, I first simply call the spg_get_symmetry function, which requires input variables of max_size, lattice, position, types, num_atom, and optional parameter symprec. And then I use the spg_get_symmetry_with_collinear_spin function, which takes an additional input variable of spins and outputs equivalent_atoms directly from the function. I was wondering if anyone has experience using spin information with spglib and if so, how to incorporate it into the function. Thank you for your assistance. > > Best, > Wang > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > > -- > Atsushi Togo > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: VeiWANG <wa...@ic...> - 2023-06-15 06:30:53
|
Hi Togo sensei, Thank for your valuable advice. I have got the equivalent_atoms list by via spg_get_dataset function. By the way, I still use spglig.1.x. Is the spglig.2.x fully compatible with spglig.1.x for fortran interface? Best, Wang > 下面是被转发的邮件: > > 发件人: Atsushi Togo <atz...@gm...> > 主题: 回复:[Spglib-users] How to get equivalent_atoms using fortran code > 日期: 2023年6月15日 GMT+8 09:14:30 > 收件人: spg...@li... > 回复给: spg...@li... > > Hi Wang, > > Without spin, spg_get_dataset, and with spin, spg_get_magnetic_dataset > is recommended to use. However for the latter, the fortran interface > has not been written yet. A possible route is using > spg_get_symmetry_with_site_tensors. The interface is > > function spg_get_symmetry_with_site_tensors(rotation, translation, & > & equivalent_atoms, primitive_lattice, spin_flips, max_size, lattice, & > & position, types, tensors, tensor_rank, num_atom, with_time_reversal, & > & is_axial, symprec) bind(c) > import c_int, c_double > integer(c_int), intent(out) :: rotation(3, 3, *) > real(c_double), intent(out) :: translation(3, *) > integer(c_int), intent(out) :: equivalent_atoms(*) > real(c_double), intent(out) :: primitive_lattice(3, 3) > integer(c_int), intent(out) :: spin_flips(*) > integer(c_int), intent(in), value :: max_size > real(c_double), intent(in) :: lattice(3, 3), position(3, *) > integer(c_int), intent(in) :: types(*) > real(c_double), intent(in) :: tensors(*) > integer(c_int), intent(in), value :: tensor_rank > integer(c_int), intent(in), value :: num_atom > integer(c_int), intent(in), value :: with_time_reversal > integer(c_int), intent(in), value :: is_axial > real(c_double), intent(in), value :: symprec > integer(c_int) :: spg_get_symmetry_with_site_tensors > end function spg_get_symmetry_with_site_tensors > > Unfortunately, I haven't wrote any example of it, but I hope it can be > guessed from C-api doc. > https://spglib.readthedocs.io/en/latest/api.html#spg-get-symmetry-with-site-tensors > https://spglib.readthedocs.io/en/latest/development/magnetic_symmetry_flags.html#magnetic-action-flags > > If you want to specify collinear spin, the array length is the number > of atoms, tensor_rank=0, is_axial=0, and with_time_reversal =1. For > the non-collinear case, the array length is the number-of-atoms x 3, > tensor_rank=1, is_axial=1, and with_time_reversal =1. These are the > typical choices. > The spin_flips array stores if the spin is flipped or not by the found > symmety operations. Therefore the length is the number of symmetry > operations. The number of symmetry operations is unknown before > running this function, so you have to prepare large enough symmetry > operations related arrays, whose length is considered to inform to > spglib by max_size. > > Togo > > On Tue, Jun 13, 2023 at 8:29 PM VeiWANG via Spglib-users > <spg...@li...> wrote: >> >> Dear all, >> >> I am currently trying to use Fortran code to obtain the equivalent_atoms using spglib, with input variables of lattice vectors and atom positions. Could anyone provide guidance on how to implement this? >> >> If I understand correctly, to obtain the equivalent_atoms, I first simply call the spg_get_symmetry function, which requires input variables of max_size, lattice, position, types, num_atom, and optional parameter symprec. And then I use the spg_get_symmetry_with_collinear_spin function, which takes an additional input variable of spins and outputs equivalent_atoms directly from the function. I was wondering if anyone has experience using spin information with spglib and if so, how to incorporate it into the function. Thank you for your assistance. >> >> Best, >> Wang >> _______________________________________________ >> Spglib-users mailing list >> Spg...@li... >> https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > -- > Atsushi Togo > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users |
From: Atsushi T. <atz...@gm...> - 2023-06-15 01:14:49
|
Hi Wang, Without spin, spg_get_dataset, and with spin, spg_get_magnetic_dataset is recommended to use. However for the latter, the fortran interface has not been written yet. A possible route is using spg_get_symmetry_with_site_tensors. The interface is function spg_get_symmetry_with_site_tensors(rotation, translation, & & equivalent_atoms, primitive_lattice, spin_flips, max_size, lattice, & & position, types, tensors, tensor_rank, num_atom, with_time_reversal, & & is_axial, symprec) bind(c) import c_int, c_double integer(c_int), intent(out) :: rotation(3, 3, *) real(c_double), intent(out) :: translation(3, *) integer(c_int), intent(out) :: equivalent_atoms(*) real(c_double), intent(out) :: primitive_lattice(3, 3) integer(c_int), intent(out) :: spin_flips(*) integer(c_int), intent(in), value :: max_size real(c_double), intent(in) :: lattice(3, 3), position(3, *) integer(c_int), intent(in) :: types(*) real(c_double), intent(in) :: tensors(*) integer(c_int), intent(in), value :: tensor_rank integer(c_int), intent(in), value :: num_atom integer(c_int), intent(in), value :: with_time_reversal integer(c_int), intent(in), value :: is_axial real(c_double), intent(in), value :: symprec integer(c_int) :: spg_get_symmetry_with_site_tensors end function spg_get_symmetry_with_site_tensors Unfortunately, I haven't wrote any example of it, but I hope it can be guessed from C-api doc. https://spglib.readthedocs.io/en/latest/api.html#spg-get-symmetry-with-site-tensors https://spglib.readthedocs.io/en/latest/development/magnetic_symmetry_flags.html#magnetic-action-flags If you want to specify collinear spin, the array length is the number of atoms, tensor_rank=0, is_axial=0, and with_time_reversal =1. For the non-collinear case, the array length is the number-of-atoms x 3, tensor_rank=1, is_axial=1, and with_time_reversal =1. These are the typical choices. The spin_flips array stores if the spin is flipped or not by the found symmety operations. Therefore the length is the number of symmetry operations. The number of symmetry operations is unknown before running this function, so you have to prepare large enough symmetry operations related arrays, whose length is considered to inform to spglib by max_size. Togo On Tue, Jun 13, 2023 at 8:29 PM VeiWANG via Spglib-users <spg...@li...> wrote: > > Dear all, > > I am currently trying to use Fortran code to obtain the equivalent_atoms using spglib, with input variables of lattice vectors and atom positions. Could anyone provide guidance on how to implement this? > > If I understand correctly, to obtain the equivalent_atoms, I first simply call the spg_get_symmetry function, which requires input variables of max_size, lattice, position, types, num_atom, and optional parameter symprec. And then I use the spg_get_symmetry_with_collinear_spin function, which takes an additional input variable of spins and outputs equivalent_atoms directly from the function. I was wondering if anyone has experience using spin information with spglib and if so, how to incorporate it into the function. Thank you for your assistance. > > Best, > Wang > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: VeiWANG <wa...@ic...> - 2023-06-13 11:29:14
|
Dear all, I am currently trying to use Fortran code to obtain the equivalent_atoms using spglib, with input variables of lattice vectors and atom positions. Could anyone provide guidance on how to implement this? If I understand correctly, to obtain the equivalent_atoms, I first simply call the spg_get_symmetry function, which requires input variables of max_size, lattice, position, types, num_atom, and optional parameter symprec. And then I use the spg_get_symmetry_with_collinear_spin function, which takes an additional input variable of spins and outputs equivalent_atoms directly from the function. I was wondering if anyone has experience using spin information with spglib and if so, how to incorporate it into the function. Thank you for your assistance. Best, Wang |
From: Atsushi T. <atz...@gm...> - 2023-03-01 07:44:49
|
Hi, Spglib doesn't provide it. It is expected to be done by users. Because a user knows what the data is, it is easy to work on the data, but given unknown data, it is difficult to design those functions. Togo On Wed, Mar 1, 2023 at 3:35 PM Ryan Hall <rya...@un...> wrote: > > To whom it may concern, > > > > A useful function in the spglib python wrapper is the get_ir_reciprocal_mesh and associated map function. As I understand, these methods operate on a structure to determine the set of irreducible mesh points from a Monkhorst-pack style mesh given by a tuple of ints. > > I wondered whether spglib provides similar functionality for determining the irreducible set of kpoints from a non-structured set of kpoints. > > E.g. instead of a mesh, the input would be be an Nx3 numpy array or array_like where each row corresponds to a kpoint in fractional coordinates. The function would then return the subset and/or mapping from this set to the irreducible set. > > > > > > Cheers, > > > > Ryan Hall. > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: Ryan H. <rya...@un...> - 2023-03-01 06:35:07
|
To whom it may concern, A useful function in the spglib python wrapper is the get_ir_reciprocal_mesh and associated map function. As I understand, these methods operate on a structure to determine the set of irreducible mesh points from a Monkhorst-pack style mesh given by a tuple of ints. I wondered whether spglib provides similar functionality for determining the irreducible set of kpoints from a non-structured set of kpoints. E.g. instead of a mesh, the input would be be an Nx3 numpy array or array_like where each row corresponds to a kpoint in fractional coordinates. The function would then return the subset and/or mapping from this set to the irreducible set. Cheers, Ryan Hall. |
From: Atsushi T. <atz...@gm...> - 2022-08-19 02:59:25
|
Dear spglib users, We have released spglib v2.0. This is a major update. The summary of the updates is presented at https://spglib.github.io/spglib/releases.html. We are under preparation for its conda-forge package, but it may take some time. -- Atsushi Togo |
From: Atsushi T. <atz...@gm...> - 2022-08-09 03:47:28
|
Dear spglib users, We are going to release spglib v2.0 in a few days. This is a major update of spglib, so there may be bugs. So please do not update spglib to v2.0 before you test it carefully. If your code (especially in python) depends on spglib, but not fixed to a specific version of spglib, to avoid automatic update of spglib, it is probably better to set-up dependency as spglib<2.0. Atsushi Togo |
From: Atsushi T. <atz...@gm...> - 2022-05-06 01:47:45
|
Hi, You can get it at https://github.com/spglib/spglib. Togo On Fri, May 6, 2022 at 10:44 AM Safikul Islam <saf...@gm...> wrote: > > Dear Sir, > > I am trying to install spglib for the software thirdorder py. For this software spglib/spglib.h header file is needed. But when I am installing spglib then no spglib.h is generated. Could you please help me regarding this? > > Best Regards, > Safikul, > PhD Research Scholar. > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: Safikul I. <saf...@gm...> - 2022-05-06 01:44:14
|
Dear Sir, I am trying to install spglib for the software thirdorder py. For this software spglib/spglib.h header file is needed. But when I am installing spglib then no spglib.h is generated. Could you please help me regarding this? Best Regards, Safikul, PhD Research Scholar. |
From: Đorđe D. <dan...@ho...> - 2022-03-29 07:22:12
|
Hello, Yeah it does. Thank you very much. Kind regards, Đorđe From: Atsushi Togo<mailto:atz...@gm...> Sent: Tuesday 29 March 2022 09:10 To: spglib-users<mailto:spg...@li...> Subject: Re: [Spglib-users] Can not find atoms related by space group symmetry Hi, I haven't tested your script, but > Part of the code that does that should be: > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] Following your definition, rotation has to be transposed: new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot].T) + translations[irot] Does this fix your problem? Togo On Tue, Mar 29, 2022 at 3:44 PM Đorđe Dangić <dan...@ho...> wrote: > > Hello again, > > > > I apologize I accidently hit send. > > > > I apologize for the confusion. I was copy/paste-ing part from a larger code and I have not checked the script. I am attaching the script with the email. Test contains the python code. > > > > Let’s say the position of an atom in the primitive cell in crystal coordinates is x1, and it is a component of the vector of all atomic positions inside primitive cell X. If I act with the space group symmetry on x1 I would get, as you said x’: > > > > x' = (R|t) x1 = Rx1 + t > > > > Part of the code that does that should be: > > > > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] > > > > Now, I would expect that x’ is also a position of some atom in the primitive cell, maybe translated by the lattice vector. If I compare x’ with each component of X I should get a match for some x2. That would mean that my original x1 that I transformed transforms to some other atomic position x2 (which could be the same). Now I could say that space group symmetry (R|t) maps atom x1 to atom x2. Am I correct in saying this? Matching of transformed and original atomic positions should be done with this part of the code: > > > > for iat in range(natom): > > found = False > > for jat in range(natom): > > pos = new_pos[iat] - scaled_positions[jat] > > pos -= np.rint(pos) > > if(check_if_R(pos)): > > atom_image[irot, iat] = jat > > found = True > > break > > > > I hope now you can run the code and see that I do not match all of the transformed atoms. Can you help me fix this? > > > > Kind regards, > > > > Đorđe > > > > From: Atsushi Togo > Sent: Tuesday 29 March 2022 03:04 > To: spglib-users > Subject: Re: [Spglib-users] Can not find atoms related by space group symmetry > > > > Hi, > > Please define what you want to do more clearly. For example, > > Given a space group operation (R|t), and a point x in crystallographic > coordinates > > x' = (R|t) x = Rx + t > > Then what do you want to do? > > In addition, your script doesn't work as it is. > > Togo > > On Mon, Mar 28, 2022 at 4:26 PM Dorde Dangic <Dan...@ho...> wrote: > > > > Dear all, > > > > I am having trouble finding atoms related by a spacegroup symmetry. I am not sure what I am doing wrong. I am sending a script that I am using to find symmetry-related atoms. > > > > POSCAR: > > > > H > > 1.00000000 > > 0.59175841 -0.59175841 1.52600353 > > 0.59175841 0.59175841 1.52600353 > > -0.59175841 -0.59175841 1.52600353 > > H > > 2 > > Direct > > 0.00000000 0.00000000 0.00000000 > > 0.50000000 -0.25000000 0.25000000 > > > > test.py: > > > > import numpy as np > > import spglib > > from phonopy.interface.calculator import read_crystal_structure > > > > # Function to check if the vector is the translational lattice vector > > def check_if_R(vec): > > rvec = False > > for i in range(-1,2): > > if not rvec: > > for j in range(-1,2): > > if not rvec: > > for k in range(-1,2): > > vec1 = vec + np.array([float(i), float(j), float(k)]) > > if(np.linalg.norm(vec1) < 1.0e-5): > > rvec = True > > break > > return rvec > > > > unitcell, _ = read_crystal_structure("POSCAR", interface_mode='vasp') # read in structure > > cell = (unitcell.cell, unitcell.scaled_positions, unitcell.numbers) > > > > dataset = spglib.get_symmetry_dataset(cell, symprec=1e-5, angle_tolerance=-1.0, hall_number=0) # get datasets > > rotations = dataset['rotations'].copy() > > translations = dataset['translations'].copy() > > > > print(scaled_positions) > > > > atom_image = np.zeros((len(rotations), len(numbers))) + len(numbers) # array to store to which atom we go with symmetry > > for irot in range(len(rotations)): > > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] # symmetry operation on the scaled positions > > for iat in range(natom): # Try to match rotated atom with the original set > > found = False > > for jat in range(natom): > > pos = new_pos[iat] - scaled_positions[jat] > > pos -= np.rint(pos) > > if(check_if_R(pos)): > > atom_image[irot, iat] = jat > > found = True > > break > > if(not found): # Print rotated atom if could not match > > print(irot, iat) > > print(new_pos[iat]) > > # Print atom images > > print(atom_image) > > > > Could you please tell me what am I missing? > > > > Thank you for your help. > > _______________________________________________ > > Spglib-users mailing list > > Spg...@li... > > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > -- > Atsushi Togo > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo _______________________________________________ Spglib-users mailing list Spg...@li... https://lists.sourceforge.net/lists/listinfo/spglib-users |
From: Atsushi T. <atz...@gm...> - 2022-03-29 07:10:03
|
Hi, I haven't tested your script, but > Part of the code that does that should be: > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] Following your definition, rotation has to be transposed: new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot].T) + translations[irot] Does this fix your problem? Togo On Tue, Mar 29, 2022 at 3:44 PM Đorđe Dangić <dan...@ho...> wrote: > > Hello again, > > > > I apologize I accidently hit send. > > > > I apologize for the confusion. I was copy/paste-ing part from a larger code and I have not checked the script. I am attaching the script with the email. Test contains the python code. > > > > Let’s say the position of an atom in the primitive cell in crystal coordinates is x1, and it is a component of the vector of all atomic positions inside primitive cell X. If I act with the space group symmetry on x1 I would get, as you said x’: > > > > x' = (R|t) x1 = Rx1 + t > > > > Part of the code that does that should be: > > > > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] > > > > Now, I would expect that x’ is also a position of some atom in the primitive cell, maybe translated by the lattice vector. If I compare x’ with each component of X I should get a match for some x2. That would mean that my original x1 that I transformed transforms to some other atomic position x2 (which could be the same). Now I could say that space group symmetry (R|t) maps atom x1 to atom x2. Am I correct in saying this? Matching of transformed and original atomic positions should be done with this part of the code: > > > > for iat in range(natom): > > found = False > > for jat in range(natom): > > pos = new_pos[iat] - scaled_positions[jat] > > pos -= np.rint(pos) > > if(check_if_R(pos)): > > atom_image[irot, iat] = jat > > found = True > > break > > > > I hope now you can run the code and see that I do not match all of the transformed atoms. Can you help me fix this? > > > > Kind regards, > > > > Đorđe > > > > From: Atsushi Togo > Sent: Tuesday 29 March 2022 03:04 > To: spglib-users > Subject: Re: [Spglib-users] Can not find atoms related by space group symmetry > > > > Hi, > > Please define what you want to do more clearly. For example, > > Given a space group operation (R|t), and a point x in crystallographic > coordinates > > x' = (R|t) x = Rx + t > > Then what do you want to do? > > In addition, your script doesn't work as it is. > > Togo > > On Mon, Mar 28, 2022 at 4:26 PM Dorde Dangic <Dan...@ho...> wrote: > > > > Dear all, > > > > I am having trouble finding atoms related by a spacegroup symmetry. I am not sure what I am doing wrong. I am sending a script that I am using to find symmetry-related atoms. > > > > POSCAR: > > > > H > > 1.00000000 > > 0.59175841 -0.59175841 1.52600353 > > 0.59175841 0.59175841 1.52600353 > > -0.59175841 -0.59175841 1.52600353 > > H > > 2 > > Direct > > 0.00000000 0.00000000 0.00000000 > > 0.50000000 -0.25000000 0.25000000 > > > > test.py: > > > > import numpy as np > > import spglib > > from phonopy.interface.calculator import read_crystal_structure > > > > # Function to check if the vector is the translational lattice vector > > def check_if_R(vec): > > rvec = False > > for i in range(-1,2): > > if not rvec: > > for j in range(-1,2): > > if not rvec: > > for k in range(-1,2): > > vec1 = vec + np.array([float(i), float(j), float(k)]) > > if(np.linalg.norm(vec1) < 1.0e-5): > > rvec = True > > break > > return rvec > > > > unitcell, _ = read_crystal_structure("POSCAR", interface_mode='vasp') # read in structure > > cell = (unitcell.cell, unitcell.scaled_positions, unitcell.numbers) > > > > dataset = spglib.get_symmetry_dataset(cell, symprec=1e-5, angle_tolerance=-1.0, hall_number=0) # get datasets > > rotations = dataset['rotations'].copy() > > translations = dataset['translations'].copy() > > > > print(scaled_positions) > > > > atom_image = np.zeros((len(rotations), len(numbers))) + len(numbers) # array to store to which atom we go with symmetry > > for irot in range(len(rotations)): > > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] # symmetry operation on the scaled positions > > for iat in range(natom): # Try to match rotated atom with the original set > > found = False > > for jat in range(natom): > > pos = new_pos[iat] - scaled_positions[jat] > > pos -= np.rint(pos) > > if(check_if_R(pos)): > > atom_image[irot, iat] = jat > > found = True > > break > > if(not found): # Print rotated atom if could not match > > print(irot, iat) > > print(new_pos[iat]) > > # Print atom images > > print(atom_image) > > > > Could you please tell me what am I missing? > > > > Thank you for your help. > > _______________________________________________ > > Spglib-users mailing list > > Spg...@li... > > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > -- > Atsushi Togo > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: Đorđe D. <dan...@ho...> - 2022-03-29 06:44:17
|
Hello again, I apologize I accidently hit send. I apologize for the confusion. I was copy/paste-ing part from a larger code and I have not checked the script. I am attaching the script with the email. Test contains the python code. Let’s say the position of an atom in the primitive cell in crystal coordinates is x1, and it is a component of the vector of all atomic positions inside primitive cell X. If I act with the space group symmetry on x1 I would get, as you said x’: x' = (R|t) x1 = Rx1 + t Part of the code that does that should be: new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] Now, I would expect that x’ is also a position of some atom in the primitive cell, maybe translated by the lattice vector. If I compare x’ with each component of X I should get a match for some x2. That would mean that my original x1 that I transformed transforms to some other atomic position x2 (which could be the same). Now I could say that space group symmetry (R|t) maps atom x1 to atom x2. Am I correct in saying this? Matching of transformed and original atomic positions should be done with this part of the code: for iat in range(natom): found = False for jat in range(natom): pos = new_pos[iat] - scaled_positions[jat] pos -= np.rint(pos) if(check_if_R(pos)): atom_image[irot, iat] = jat found = True break I hope now you can run the code and see that I do not match all of the transformed atoms. Can you help me fix this? Kind regards, Đorđe From: Atsushi Togo<mailto:atz...@gm...> Sent: Tuesday 29 March 2022 03:04 To: spglib-users<mailto:spg...@li...> Subject: Re: [Spglib-users] Can not find atoms related by space group symmetry Hi, Please define what you want to do more clearly. For example, Given a space group operation (R|t), and a point x in crystallographic coordinates x' = (R|t) x = Rx + t Then what do you want to do? In addition, your script doesn't work as it is. Togo On Mon, Mar 28, 2022 at 4:26 PM Dorde Dangic <Dan...@ho...> wrote: > > Dear all, > > I am having trouble finding atoms related by a spacegroup symmetry. I am not sure what I am doing wrong. I am sending a script that I am using to find symmetry-related atoms. > > POSCAR: > > H > 1.00000000 > 0.59175841 -0.59175841 1.52600353 > 0.59175841 0.59175841 1.52600353 > -0.59175841 -0.59175841 1.52600353 > H > 2 > Direct > 0.00000000 0.00000000 0.00000000 > 0.50000000 -0.25000000 0.25000000 > > test.py: > > import numpy as np > import spglib > from phonopy.interface.calculator import read_crystal_structure > > # Function to check if the vector is the translational lattice vector > def check_if_R(vec): > rvec = False > for i in range(-1,2): > if not rvec: > for j in range(-1,2): > if not rvec: > for k in range(-1,2): > vec1 = vec + np.array([float(i), float(j), float(k)]) > if(np.linalg.norm(vec1) < 1.0e-5): > rvec = True > break > return rvec > > unitcell, _ = read_crystal_structure("POSCAR", interface_mode='vasp') # read in structure > cell = (unitcell.cell, unitcell.scaled_positions, unitcell.numbers) > > dataset = spglib.get_symmetry_dataset(cell, symprec=1e-5, angle_tolerance=-1.0, hall_number=0) # get datasets > rotations = dataset['rotations'].copy() > translations = dataset['translations'].copy() > > print(scaled_positions) > > atom_image = np.zeros((len(rotations), len(numbers))) + len(numbers) # array to store to which atom we go with symmetry > for irot in range(len(rotations)): > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] # symmetry operation on the scaled positions > for iat in range(natom): # Try to match rotated atom with the original set > found = False > for jat in range(natom): > pos = new_pos[iat] - scaled_positions[jat] > pos -= np.rint(pos) > if(check_if_R(pos)): > atom_image[irot, iat] = jat > found = True > break > if(not found): # Print rotated atom if could not match > print(irot, iat) > print(new_pos[iat]) > # Print atom images > print(atom_image) > > Could you please tell me what am I missing? > > Thank you for your help. > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo _______________________________________________ Spglib-users mailing list Spg...@li... https://lists.sourceforge.net/lists/listinfo/spglib-users |
From: Đorđe D. <dan...@ho...> - 2022-03-29 06:36:02
|
Hello, I apologize for the confusion. I was copy/paste-ing part from a larger code and I have not checked the script. I am attaching the script with the email. Let’s say the position of an atom in the primitive cell in crystal coordinates is x1, and it is a component of the vector of all atomic positions inside primitive cell X. If I act with the space group symmetry on x1 I would get, as you said x’: x' = (R|t) x1 = Rx1 + t Part of the code that does that should be: new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] Now, I would expect that x’ is also a position of some atom in the primitive cell, maybe translated by the lattice vector. If I compare x’ with each component of X I should get a match for some x2. That would mean that my original x1 that I transformed transforms to some other atomic position x2 (which could be the same). Now I could say that space group symmetry (R|t) maps atom x1 to atom x2. Am I correct in saying this. Matching of transformed and original atomic positions should be done with this part of the code: Kind regards, Đorđe From: Atsushi Togo<mailto:atz...@gm...> Sent: Tuesday 29 March 2022 03:04 To: spglib-users<mailto:spg...@li...> Subject: Re: [Spglib-users] Can not find atoms related by space group symmetry Hi, Please define what you want to do more clearly. For example, Given a space group operation (R|t), and a point x in crystallographic coordinates x' = (R|t) x = Rx + t Then what do you want to do? In addition, your script doesn't work as it is. Togo On Mon, Mar 28, 2022 at 4:26 PM Dorde Dangic <Dan...@ho...> wrote: > > Dear all, > > I am having trouble finding atoms related by a spacegroup symmetry. I am not sure what I am doing wrong. I am sending a script that I am using to find symmetry-related atoms. > > POSCAR: > > H > 1.00000000 > 0.59175841 -0.59175841 1.52600353 > 0.59175841 0.59175841 1.52600353 > -0.59175841 -0.59175841 1.52600353 > H > 2 > Direct > 0.00000000 0.00000000 0.00000000 > 0.50000000 -0.25000000 0.25000000 > > test.py: > > import numpy as np > import spglib > from phonopy.interface.calculator import read_crystal_structure > > # Function to check if the vector is the translational lattice vector > def check_if_R(vec): > rvec = False > for i in range(-1,2): > if not rvec: > for j in range(-1,2): > if not rvec: > for k in range(-1,2): > vec1 = vec + np.array([float(i), float(j), float(k)]) > if(np.linalg.norm(vec1) < 1.0e-5): > rvec = True > break > return rvec > > unitcell, _ = read_crystal_structure("POSCAR", interface_mode='vasp') # read in structure > cell = (unitcell.cell, unitcell.scaled_positions, unitcell.numbers) > > dataset = spglib.get_symmetry_dataset(cell, symprec=1e-5, angle_tolerance=-1.0, hall_number=0) # get datasets > rotations = dataset['rotations'].copy() > translations = dataset['translations'].copy() > > print(scaled_positions) > > atom_image = np.zeros((len(rotations), len(numbers))) + len(numbers) # array to store to which atom we go with symmetry > for irot in range(len(rotations)): > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] # symmetry operation on the scaled positions > for iat in range(natom): # Try to match rotated atom with the original set > found = False > for jat in range(natom): > pos = new_pos[iat] - scaled_positions[jat] > pos -= np.rint(pos) > if(check_if_R(pos)): > atom_image[irot, iat] = jat > found = True > break > if(not found): # Print rotated atom if could not match > print(irot, iat) > print(new_pos[iat]) > # Print atom images > print(atom_image) > > Could you please tell me what am I missing? > > Thank you for your help. > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo _______________________________________________ Spglib-users mailing list Spg...@li... https://lists.sourceforge.net/lists/listinfo/spglib-users |
From: Atsushi T. <atz...@gm...> - 2022-03-29 01:04:36
|
Hi, Please define what you want to do more clearly. For example, Given a space group operation (R|t), and a point x in crystallographic coordinates x' = (R|t) x = Rx + t Then what do you want to do? In addition, your script doesn't work as it is. Togo On Mon, Mar 28, 2022 at 4:26 PM Dorde Dangic <Dan...@ho...> wrote: > > Dear all, > > I am having trouble finding atoms related by a spacegroup symmetry. I am not sure what I am doing wrong. I am sending a script that I am using to find symmetry-related atoms. > > POSCAR: > > H > 1.00000000 > 0.59175841 -0.59175841 1.52600353 > 0.59175841 0.59175841 1.52600353 > -0.59175841 -0.59175841 1.52600353 > H > 2 > Direct > 0.00000000 0.00000000 0.00000000 > 0.50000000 -0.25000000 0.25000000 > > test.py: > > import numpy as np > import spglib > from phonopy.interface.calculator import read_crystal_structure > > # Function to check if the vector is the translational lattice vector > def check_if_R(vec): > rvec = False > for i in range(-1,2): > if not rvec: > for j in range(-1,2): > if not rvec: > for k in range(-1,2): > vec1 = vec + np.array([float(i), float(j), float(k)]) > if(np.linalg.norm(vec1) < 1.0e-5): > rvec = True > break > return rvec > > unitcell, _ = read_crystal_structure("POSCAR", interface_mode='vasp') # read in structure > cell = (unitcell.cell, unitcell.scaled_positions, unitcell.numbers) > > dataset = spglib.get_symmetry_dataset(cell, symprec=1e-5, angle_tolerance=-1.0, hall_number=0) # get datasets > rotations = dataset['rotations'].copy() > translations = dataset['translations'].copy() > > print(scaled_positions) > > atom_image = np.zeros((len(rotations), len(numbers))) + len(numbers) # array to store to which atom we go with symmetry > for irot in range(len(rotations)): > new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] # symmetry operation on the scaled positions > for iat in range(natom): # Try to match rotated atom with the original set > found = False > for jat in range(natom): > pos = new_pos[iat] - scaled_positions[jat] > pos -= np.rint(pos) > if(check_if_R(pos)): > atom_image[irot, iat] = jat > found = True > break > if(not found): # Print rotated atom if could not match > print(irot, iat) > print(new_pos[iat]) > # Print atom images > print(atom_image) > > Could you please tell me what am I missing? > > Thank you for your help. > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: Dorde D. <Dan...@ho...> - 2022-03-28 07:26:09
|
Dear all, I am having trouble finding atoms related by a spacegroup symmetry. I am not sure what I am doing wrong. I am sending a script that I am using to find symmetry-related atoms. POSCAR: H 1.00000000 0.59175841 -0.59175841 1.52600353 0.59175841 0.59175841 1.52600353 -0.59175841 -0.59175841 1.52600353 H 2 Direct 0.00000000 0.00000000 0.00000000 0.50000000 -0.25000000 0.25000000 test.py: import numpy as np import spglib from phonopy.interface.calculator import read_crystal_structure # Function to check if the vector is the translational lattice vector def check_if_R(vec): rvec = False for i in range(-1,2): if not rvec: for j in range(-1,2): if not rvec: for k in range(-1,2): vec1 = vec + np.array([float(i), float(j), float(k)]) if(np.linalg.norm(vec1) < 1.0e-5): rvec = True break return rvec unitcell, _ = read_crystal_structure("POSCAR", interface_mode='vasp') # read in structure cell = (unitcell.cell, unitcell.scaled_positions, unitcell.numbers) dataset = spglib.get_symmetry_dataset(cell, symprec=1e-5, angle_tolerance=-1.0, hall_number=0) # get datasets rotations = dataset['rotations'].copy() translations = dataset['translations'].copy() print(scaled_positions) atom_image = np.zeros((len(rotations), len(numbers))) + len(numbers) # array to store to which atom we go with symmetry for irot in range(len(rotations)): new_pos = np.einsum('ij,jk->ik', scaled_positions, rotations[irot]) + translations[irot] # symmetry operation on the scaled positions for iat in range(natom): # Try to match rotated atom with the original set found = False for jat in range(natom): pos = new_pos[iat] - scaled_positions[jat] pos -= np.rint(pos) if(check_if_R(pos)): atom_image[irot, iat] = jat found = True break if(not found): # Print rotated atom if could not match print(irot, iat) print(new_pos[iat]) # Print atom images print(atom_image) Could you please tell me what am I missing? Thank you for your help. |
From: Atsushi T. <atz...@gm...> - 2021-07-23 02:37:34
|
Hi, Yes, I think so. But spglib is a library, so you need some other software to 1) parse cif file 2) give the crystal structure data to spglib Spglib is imported from other codes like pymatgen, etc. You may be able to use web app such as https://www.materialscloud.org/work/tools/seekpath. Togo On Thu, Jul 22, 2021 at 7:39 PM Saeed Pourasad <sae...@gm...> wrote: > > Dear spglib users, > > Hi. > I have a crystal structure (cif file) and I want to find its primitive cell, I was wondering If I can use "spglib" for this purpose? > I am trying to get familiar with this package and I would be grateful if you can give me some tutorials or examples! > > Thanks for your attention in advance. > Best, > Saeed. > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |
From: Saeed P. <sae...@gm...> - 2021-07-22 10:39:22
|
Dear spglib users, Hi. I have a crystal structure (cif file) and I want to find its primitive cell, I was wondering If I can use "spglib" for this purpose? I am trying to get familiar with this package and I would be grateful if you can give me some tutorials or examples! Thanks for your attention in advance. Best, Saeed. |
From: cheng s. <sha...@gm...> - 2021-06-21 02:08:18
|
Dear Prof. Togo, Got it! Thanks for sharing the book. Best, Cheng On Mon, Jun 21, 2021 at 10:23 AM Atsushi Togo <atz...@gm...> wrote: > Hi, > > Your questions are not about spglib. I can probably answer them, but > I'm afraid that my answers will invite more questions. Then coding it > by myself for you will be much easier for me than answering. I want to > save my time. > You can also find the information not from me, but from your > supervisors or colleagues. In case that you can unfortunately not find > people around you, I can recommend reading this book, > > https://www.cambridge.org/core/books/symmetry-and-condensed-matter-physics/218B3D7B149076E63A618D4584E3379B > . > > Togo > > On Mon, Jun 21, 2021 at 1:59 AM cheng shao <sha...@gm...> wrote: > > > > Dear Prof. Togo, > > > > Thanks for your reply. I was thinking about using the rotation symmetry > operator to find the irreducible k points from the k point list. > > > > For example, I want to apply the symmetry operator to find all the > duplicates of the current k_point and check if any of them is in the > irreducible k point list. > > > > However, I am a bit confused about how the rotation symmetry operator > should be used. > > > > In the get_symmetry section, it says > > new_vector[3x1] = rotation[3x3] * vector[3x1] + translation[3x1] > > > > While in the definitions and conventions section, there is an equation: > > (𝐚̃ ,𝐛̃ ,𝐜̃ )=(𝐚,𝐛,𝐜)𝑊 > > > > Should I use the rotation * k_point, or using k_point * rotation? > > Do I need to apply some modifications like inversion and transpose to > the rotation matrix before applying it to the k points? > > > > Sorry for bothering you again, and I am appreciated if you could help me > out here. > > > > Best, > > Cheng > > > > > > > > On Sun, Jun 20, 2021 at 5:42 PM Atsushi Togo <atz...@gm...> wrote: > >> > >> Hi, > >> > >> No. It's not possible. > >> But it is trivial to implement. > >> > >> Togo > >> > >> On Sun, Jun 20, 2021 at 4:13 PM cheng shao <sha...@gm...> > wrote: > >> > > >> > Dear Prof. Togo, > >> > > >> > I am a new user of the spglib, and thanks for your efforts in > developing and maintain it. > >> > > >> > I have a quick question: is it possible to find the irreducible k > points from the custom-defined k mesh? > >> > > >> > Say I have a uniform k mesh points (in a different order as the > auto-generated one from spglib), > >> > Is it possible to identify the irreducible k points and the weight > factor from it. > >> > > >> > In the example, there is a function `grid = > get_ir_reciprocal_mesh(mesh, cell, is_shift=[0, 0, 0])`, > >> > can we replace the integer number mesh to a vector of k points? > >> > > >> > Best, > >> > Cheng > >> > ---- > >> > Dr. Cheng Shao > >> > Post-Doctoral Researcher > >> > Dept. of Mechanical Engineering > >> > The University of Tokyo > >> > > >> > > >> > > >> > _______________________________________________ > >> > Spglib-users mailing list > >> > Spg...@li... > >> > https://lists.sourceforge.net/lists/listinfo/spglib-users > >> > >> > >> > >> -- > >> Atsushi Togo > >> > >> > >> _______________________________________________ > >> Spglib-users mailing list > >> Spg...@li... > >> https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > _______________________________________________ > > Spglib-users mailing list > > Spg...@li... > > https://lists.sourceforge.net/lists/listinfo/spglib-users > > > > -- > Atsushi Togo > > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users > |
From: Atsushi T. <atz...@gm...> - 2021-06-21 01:23:21
|
Hi, Your questions are not about spglib. I can probably answer them, but I'm afraid that my answers will invite more questions. Then coding it by myself for you will be much easier for me than answering. I want to save my time. You can also find the information not from me, but from your supervisors or colleagues. In case that you can unfortunately not find people around you, I can recommend reading this book, https://www.cambridge.org/core/books/symmetry-and-condensed-matter-physics/218B3D7B149076E63A618D4584E3379B. Togo On Mon, Jun 21, 2021 at 1:59 AM cheng shao <sha...@gm...> wrote: > > Dear Prof. Togo, > > Thanks for your reply. I was thinking about using the rotation symmetry operator to find the irreducible k points from the k point list. > > For example, I want to apply the symmetry operator to find all the duplicates of the current k_point and check if any of them is in the irreducible k point list. > > However, I am a bit confused about how the rotation symmetry operator should be used. > > In the get_symmetry section, it says > new_vector[3x1] = rotation[3x3] * vector[3x1] + translation[3x1] > > While in the definitions and conventions section, there is an equation: > (𝐚̃ ,𝐛̃ ,𝐜̃ )=(𝐚,𝐛,𝐜)𝑊 > > Should I use the rotation * k_point, or using k_point * rotation? > Do I need to apply some modifications like inversion and transpose to the rotation matrix before applying it to the k points? > > Sorry for bothering you again, and I am appreciated if you could help me out here. > > Best, > Cheng > > > > On Sun, Jun 20, 2021 at 5:42 PM Atsushi Togo <atz...@gm...> wrote: >> >> Hi, >> >> No. It's not possible. >> But it is trivial to implement. >> >> Togo >> >> On Sun, Jun 20, 2021 at 4:13 PM cheng shao <sha...@gm...> wrote: >> > >> > Dear Prof. Togo, >> > >> > I am a new user of the spglib, and thanks for your efforts in developing and maintain it. >> > >> > I have a quick question: is it possible to find the irreducible k points from the custom-defined k mesh? >> > >> > Say I have a uniform k mesh points (in a different order as the auto-generated one from spglib), >> > Is it possible to identify the irreducible k points and the weight factor from it. >> > >> > In the example, there is a function `grid = get_ir_reciprocal_mesh(mesh, cell, is_shift=[0, 0, 0])`, >> > can we replace the integer number mesh to a vector of k points? >> > >> > Best, >> > Cheng >> > ---- >> > Dr. Cheng Shao >> > Post-Doctoral Researcher >> > Dept. of Mechanical Engineering >> > The University of Tokyo >> > >> > >> > >> > _______________________________________________ >> > Spglib-users mailing list >> > Spg...@li... >> > https://lists.sourceforge.net/lists/listinfo/spglib-users >> >> >> >> -- >> Atsushi Togo >> >> >> _______________________________________________ >> Spglib-users mailing list >> Spg...@li... >> https://lists.sourceforge.net/lists/listinfo/spglib-users > > _______________________________________________ > Spglib-users mailing list > Spg...@li... > https://lists.sourceforge.net/lists/listinfo/spglib-users -- Atsushi Togo |