QPMS
Electromagnetic multiple scattering library and toolkit.
pointgroups.h
Go to the documentation of this file.
1 
4 #ifndef POINTGROUPS_H
5 #define POINTGROUPS_H
6 
7 #include "qpms_error.h"
8 #include "quaternions.h"
9 
10 
13  switch(cls) {
14  case QPMS_PGS_CN:
15  case QPMS_PGS_S2N:
16  case QPMS_PGS_CNH:
17  case QPMS_PGS_CNV:
18  case QPMS_PGS_DN:
19  case QPMS_PGS_DND:
20  case QPMS_PGS_DNH:
21  return true;
22  default:
23  return false;
24  }
25 }
26 
28 
34 extern double qpms_pg_quat_cmp_atol;
35 
38  double atol
39  );
41 
43 int qpms_pg_irot3_approx_cmp_v(const void *, const void *);
44 
46 
48  qpms_gmi_t n
49  );
50 
52 
54  qpms_irot3_t *target,
56  qpms_gmi_t
57  );
58 
60 
62  qpms_gmi_t n
63  );
64 
66 
68  qpms_gmi_t n,
69  qpms_irot3_t gen[]
70  );
71 
73 
77  );
78 
81 
82 
83 
84 #endif //POINTGROUPS_H
qpms_irot3_t * qpms_pg_elems(qpms_irot3_t *target, qpms_pointgroup_t g)
Generates all elements of a given point group.
Definition: pointgroups.c:92
_Bool qpms_pg_is_subgroup(qpms_pointgroup_t a, qpms_pointgroup_t b)
Checks whether a is subgroup of b (in a dirty general way).
Definition: pointgroups.c:102
qpms_irot3_t * qpms_pg_canonical_elems(qpms_irot3_t *target, qpms_pointgroup_class cls, qpms_gmi_t)
Generates the canonical elements of a given 3D point group type.
Definition: pointgroups.c:38
qpms_gmi_t qpms_pg_genset(qpms_pointgroup_class cls, qpms_gmi_t n, qpms_irot3_t gen[])
Fills an array of canonical generators of a given 3D point group type.
Definition: pointgroups.c:233
double qpms_pg_quat_cmp_atol
Absolute tolerance threshold used internally to consider two different qpms_irot3_t instances equal.
Definition: pointgroups.c:6
int qpms_pg_irot3_approx_cmp(const qpms_irot3_t *, const qpms_irot3_t *, double atol)
An ordering of qpms_irot3_t that considers close enough elements equal.
Definition: pointgroups.c:18
int qpms_pg_irot3_approx_cmp_v(const void *, const void *)
A search.h compatible ordering of qpms_irot3_t that considers close enough elements equal.
Definition: pointgroups.c:31
static _Bool qpms_pg_is_finite_axial(qpms_pointgroup_class cls)
Returns true if the point group class belongs to one of the seven "axial" group series.
Definition: pointgroups.h:12
qpms_gmi_t qpms_pg_order(qpms_pointgroup_class cls, qpms_gmi_t n)
Returns the order of a given 3D point group type.
Definition: pointgroups.c:126
qpms_gmi_t qpms_pg_genset_size(qpms_pointgroup_class cls, qpms_gmi_t n)
Returns the number of canonical generators of a given 3D point group type.
Definition: pointgroups.c:177
QPMS miscellanous internal error handling functions and macros.
int qpms_gmi_t
Finite group member index. See also groups.h.
Definition: qpms_types.h:320
qpms_pointgroup_class
Classification of a 3D point group.
Definition: qpms_types.h:353
@ QPMS_PGS_DND
Antiprismatic symmetry .
Definition: qpms_types.h:361
@ QPMS_PGS_DN
Dihedral symmetry .
Definition: qpms_types.h:360
@ QPMS_PGS_CN
Rotational symmetry .
Definition: qpms_types.h:356
@ QPMS_PGS_S2N
Rotoreflectional symmetry .
Definition: qpms_types.h:357
@ QPMS_PGS_CNV
Pyramidal symmetry .
Definition: qpms_types.h:359
@ QPMS_PGS_DNH
Prismatic symmetry .
Definition: qpms_types.h:362
@ QPMS_PGS_CNH
Rotational symmetry with horizontal reflection .
Definition: qpms_types.h:358
Quaternions and Wigner matrices.
3D improper rotations represented as a quaternion and a sign of the determinant.
Definition: qpms_types.h:275
Full characterisation of a 3D point group.
Definition: qpms_types.h:386