|
void | free_symoplist (SymOpList *ops) |
|
SymOpList * | get_pointgroup (const char *sym) |
|
SymOpMask * | new_symopmask (const SymOpList *list) |
|
void | free_symopmask (SymOpMask *m) |
|
void | special_position (const SymOpList *ops, SymOpMask *m, signed int h, signed int k, signed int l) |
|
void | get_asymm (const SymOpList *ops, signed int h, signed int k, signed int l, signed int *hp, signed int *kp, signed int *lp) |
|
int | num_equivs (const SymOpList *ops, const SymOpMask *m) |
|
void | get_equiv (const SymOpList *ops, const SymOpMask *m, int idx, signed int h, signed int k, signed int l, signed int *he, signed int *ke, signed int *le) |
|
IntegerMatrix * | get_symop (const SymOpList *ops, const SymOpMask *m, int idx) |
|
SymOpList * | get_ambiguities (const SymOpList *source, const SymOpList *target) |
|
int | is_subgroup (const SymOpList *source, const SymOpList *target) |
|
int | is_centrosymmetric (const SymOpList *s) |
|
const char * | symmetry_name (const SymOpList *ops) |
|
void | set_symmetry_name (SymOpList *ops, const char *name) |
|
void | describe_symmetry (const SymOpList *s) |
|
char * | name_equiv (const IntegerMatrix *op) |
|
int | is_centric (signed int h, signed int k, signed int l, const SymOpList *ops) |
|
void | pointgroup_warning (const char *sym) |
|
void | add_symop (SymOpList *ops, IntegerMatrix *m) |
|
RationalMatrix * | parse_symmetry_operation (const char *s) |
|
SymOpList * | parse_symmetry_operations (const char *s) |
|
RationalMatrix * | parse_cell_transformation (const char *s) |
|
char * | get_matrix_name (const IntegerMatrix *m, int row) |
|
void get_asymm |
( |
const SymOpList * | ops, |
|
|
signed int | h, |
|
|
signed int | k, |
|
|
signed int | l, |
|
|
signed int * | hp, |
|
|
signed int * | kp, |
|
|
signed int * | lp ) |
|
extern |
- Parameters
-
ops | A SymOpList, usually corresponding to a point group |
h | index of a reflection |
k | index of a reflection |
l | index of a reflection |
hp | location for asymmetric index of reflection |
kp | location for asymmetric index of reflection |
lp | location for asymmetric index of reflection |
This function determines the asymmetric version of the reflection h
, k
, l
in symmetry group ops
, and puts the result in hp
, kp
, lp
.
This is a relatively expensive operation because of its generality. Therefore, if you know you'll need to make repeated use of the asymmetric indices, consider creating a new RefList indexed according to the asymmetric indices themselves with asymmetric_indices. If you do that, you'll still be able to get the original versions of the indices with get_symmetric_indices.
void get_equiv |
( |
const SymOpList * | ops, |
|
|
const SymOpMask * | m, |
|
|
int | idx, |
|
|
signed int | h, |
|
|
signed int | k, |
|
|
signed int | l, |
|
|
signed int * | he, |
|
|
signed int * | ke, |
|
|
signed int * | le ) |
|
extern |
- Parameters
-
ops | A SymOpList |
m | A SymOpMask, which has been shown to special_position |
idx | Index of the operation to use |
h | index of reflection |
k | index of reflection |
l | index of reflection |
he | location to store h index of equivalent reflection |
ke | location to store k index of equivalent reflection |
le | location to store l index of equivalent reflection |
This function applies the idx-th
symmetry operation from ops
to the reflection h
, k
, l
, and stores the result at he
, ke
and le
.
Call this function multiple times with idx=0 .. num_equivs(ops, m) to get all of the equivalent reflections in turn.
If you don't mind that the same equivalent might appear twice, simply let m
= NULL. Otherwise, call new_symopmask and then special_position to set up a SymOpMask appropriately.