diff options
Diffstat (limited to 'doc/symmetry.txt')
-rw-r--r-- | doc/symmetry.txt | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/doc/symmetry.txt b/doc/symmetry.txt deleted file mode 100644 index c190f8ee..00000000 --- a/doc/symmetry.txt +++ /dev/null @@ -1,56 +0,0 @@ -How CrystFEL handles symmetry ------------------------------ - -Most programs in CrystFEL understand point group symmetry. The exception is -"get_hkl", which you can read about below. You give the point group following -the "-y" option to the programs. - -Please read doc/process_hkl for important information on how symmetry is used -during the indexing and merging procedures. It's important to understand how -this works before, for example, trying to merge a dataset. - -Symmetry definitions are included in src/symmetry.c. Point group definitions -are required for merging and the display of merged results, but space groups are -not taken into account since merging does not care about systematic absences - -as far as CrystFEL is concerned, systematic absences are just measurements -which happen to have values of zero. Each space group belongs to exactly one -point group, which you can look up in the International Tables for X-Ray -Crystallography. Alternatively, "twin-calculator.pdf" in the same directory as -this file lists all the space groups according to point group, Laue class and -holohedry. - - -Adding a new point group ------------------------- - -Point groups are being added here as they are required, so it's likely that the -exact one you want hasn't been added yet. Here's how to add a new one by -editing src/symmetry.c. - -First, expand the check_cond() function to include a description of the -asymmetric reciprocal unit cell for the point group. Every reflection in the -whole of reciprocal space must map onto exactly one reflection in the asymmetric -unit cell so defined. The asymmetric cell is usually defined with positive h, k -and l, but it doesn't really matter. Working out the required condition means -visualising the cell and taking care to properly handle situations such as the -(000) reflection. Get this right, otherwise you'll go crazy when it breaks in -weird ways. - -Next, expand the num_general_equivs() function. Given a point group, this -function must return the number of equivalent reflections for a general -reflection, including the input reflection. High-symmetry reflections (usually -ones with zeroes in their indices) have fewer equivalents, but the num_equivs() -function will work this out for you. - -Finally, add the new point group to the get_general_equiv() function. This -function takes a set of Miller indices, a point group and an index "n", and -returns (by reference) the indices of the "n"th equivalent reflection. You just -have to worry about the general position, because get_equiv() will work out the -special positions for you. get_general_equiv() must return the original indices -when idx=0. - -If you want the new point group to be used for simulation on the GPU, you will -also need to modify src/diffraction-gpu.c and data/diffraction.cl. Choose a -simple capitalised name for the point group and add it to the list of OpenCL -preprocessor definitions in setup_gpu(). Then add a corresponding list of -equivalents following the established pattern in molecule_factor(). That's it. |