Hi,
I'm quite puzzled at the moment.
using this code:
if __name__ == '__main__':
quartz_structure = xray.structure(
special_position_settings=crystal.special_position_settings(
crystal_symmetry=crystal.symmetry(
unit_cell=(5.01,5.01,5.47,90,90,120),
space_group_symbol="P6222")),
scatterers=flex.xray_scatterer([
xray.scatterer(
label="Si",
site=(1/2.,1/2.,1/3.),
u=0.2),
xray.scatterer(
label="O",
site=(0.197,-0.197,0.83333),
u=0)]))
ref_structure = quartz_structure.expand_to_p1(
append_number_to_labels=True)
print(ref_structure.as_py_code())
I get this result:
xray.structure(
crystal_symmetry=crystal.symmetry(
unit_cell=(5.01, 5.01, 5.47, 90, 90, 120),
space_group_symbol="P 1"),
scatterers=flex.xray_scatterer([
xray.scatterer( #0
label="Si_0",
site=(0.500000, 0.500000, 0.333333),
u=0.200000),
xray.scatterer( #1
label="Si_1",
site=(0.000000, 0.500000, 0.666667),
u=0.200000),
xray.scatterer( #2
label="Si_2",
site=(0.500000, 0.000000, 1.000000),
u=0.200000),
xray.scatterer( #3
label="O_0",
site=(0.197000, -0.197000, 0.833333),
u=0.000000),
xray.scatterer( #4
label="O_1",
site=(0.394000, 0.197000, 1.166667),
u=0.000000),
xray.scatterer( #5
label="O_2",
site=(-0.197000, -0.394000, 1.500000),
u=0.000000),
xray.scatterer( #6
label="O_3",
site=(0.197000, 0.394000, 1.500000),
u=0.000000),
xray.scatterer( #7
label="O_4",
site=(-0.394000, -0.197000, 1.166667),
u=0.000000),
xray.scatterer( #8
label="O_5",
site=(-0.197000, 0.197000, 0.833333),
u=0.000000)]))
It bothers me that there are x,y,z not in [0, 1[. Shouldn't the newly expanded
cell only contain atoms within the unit cell? I realize, that the quarz
structure (from the sample code from the website) also violates this with Oy
beeing negative, but still I think expand_to_p1 should return a regular
structure.
Also is there a method already implemented to change a structure from a non-
conventional description into a conventional one (with all atoms within its
unit cell)?
With regards,
Dipl. Phys.
Jan M. Simons
Institute of Crystallography
RWTH Aachen University