orex / supercell

The program allows you to create regular structure supercell from cif file with partial occupancy and/or substitutions.
GNU General Public License v2.0
91 stars 56 forks source link

symmetry operations _space_group_symop_operation_xyz #53

Closed kedark19 closed 2 years ago

kedark19 commented 2 years ago

Dear Orex,

Thanks for this amazing code to get the structures with partial occupancies.

I have to generate the cation distribution in a supercell which is transformed from the primitive unit cell (space group 91). I have to use conventional unit cell of space group which is transformed according to the operation given below.

_space_group_transform_Pp_abc 'a-b,a+b,c;0,0,0'

Due to this transformation, the symmetry operations are also changed. As I found that supercell code does not uses the symmetry operations which are given in cif file (correct me if I am wrong). Please let me know how to solve this problem.

Here is my cif file.

======================================================================

CRYSTAL DATA

----------------------------------------------------------------------

data_VESTA_phase_1

_chemical_name_common 'CoFe2O4' _cell_length_a 8.485281 _cell_length_b 8.485281 _cell_length_c 8.325200 _cell_angle_alpha 90.000000 _cell_angle_beta 90.000000 _cell_angle_gamma 90.000000 _cell_volume 599.414352 _space_group_name_H-M_alt 'P 41 2 2'

_space_group_IT_number 91 _space_group_transform_Pp_abc 'a-b,a+b,c;0,0,0'

loop_ _space_group_symop_operation_xyz 'x, y, z' '-x, -y, z+1/2' '-y, x, z+1/4' 'y, -x, z+3/4' '-y, -x, -z' 'y, x, -z+1/2' '-x, y, -z+3/4' 'x, -y, -z+1/4' 'x+1/2, y+1/2, z' '-x+1/2, -y+1/2, z+1/2' '-y+1/2, x+1/2, z+1/4' 'y+1/2, -x+1/2, z+3/4' '-y+1/2, -x+1/2, -z' 'y+1/2, x+1/2, -z+1/2' '-x+1/2, y+1/2, -z+3/4' 'x+1/2, -y+1/2, -z+1/4'

loop_ _atom_site_label _atom_site_occupancy _atom_site_fract_x _atom_site_fract_y _atom_site_fract_z _atom_site_adp_type _atom_site_B_iso_or_equiv _atom_site_type_symbol Co1 1.0 0.875000 0.625000 0.000000 Biso 1.000000 Co Fe1 1.0 0.625000 0.375000 0.000000 Biso 1.000000 Fe Fe5 1.0 0.250000 0.500000 0.125000 Biso 1.000000 Fe O1 1.0 0.375000 0.375000 0.000000 Biso 1.000000 O O9 1.0 0.125000 0.625000 0.000000 Biso 1.000000 O

orex commented 2 years ago

Hello kedark19! Thank you for using my program. The best way to solve the problem is to convert the cell to primitive one (use VESTA for this). And supercell will find all symmetry operation by itself.

I don't use symmetry operations because, surprisingly, many cif files in SOD have wrong symmetry operation by symmetry.

Best, Kirill.

kedark19 commented 2 years ago

Thanks, Kiril for your reply. Using the primitive cell works well for the cation ordering, as it uses the space group symmetries already defined by this code.

I am still curious about any possibility in this code (any slight modifications) which could allow using the custom supercell symmetries (other than those already defined in the supercell code).

Kind regards, Kedar

orex commented 2 years ago

Hi, Kedar!

I think I was not precise in my answer. You should apply all the symmetries by yourself (that what I meant by convert to primitive cell) more precise you should convert to P1 cell. In this case supercell will find itself all symmetry operations from the cell without explicit symmetries.

As for you second question. It is possible to do slight modification to use symmetry information. There is commented code, which can do this https://github.com/orex/supercell/blob/0704babbd9ee1072a4552266640dcdab8deb7849/src/core/cif_io.cpp#L163 Uncomment it and play around. thing with minor changes you can get the result, If you have basic programming skills.

Best, Kirill

kedark19 commented 2 years ago

Dear Kiril,

Thanks a lot for your answer regarding the use of supercell symmetries other than already defined by the code. After uncommenting the mentioned code lines, it is working well for my desired cation ordering.

Cheers Kedar