Writing down some plans on abstract t-matrices / particles.
Former-commit-id: 83722142c0b53f995c61f53a3c58320491b27843
This commit is contained in:
parent
ebba5a0ed6
commit
e8c2250e60
|
@ -4,6 +4,22 @@
|
||||||
* Right now, the instances of qpms_finite_group_t are created at compilation time
|
* Right now, the instances of qpms_finite_group_t are created at compilation time
|
||||||
* from source code generated by Python script TODO (output groups.c)
|
* from source code generated by Python script TODO (output groups.c)
|
||||||
* and they are not to be constructed dynamically.
|
* and they are not to be constructed dynamically.
|
||||||
|
*
|
||||||
|
* In the end, I might want to have a special type for 3D point groups
|
||||||
|
* or more specifically, for the closed subgroups of O(3), see
|
||||||
|
* https://en.wikipedia.org/wiki/Point_groups_in_three_dimensions.
|
||||||
|
* They consist of the seven infinite series of axial groups
|
||||||
|
* (characterized by the series index, the axis direction,
|
||||||
|
* and the index \a n of the \a n-fold rotational symmetry)
|
||||||
|
* and the seven remaining point groups + the finite groups.
|
||||||
|
* All off them have a quite limited number of generators
|
||||||
|
* (max. 4?; CHECKME).
|
||||||
|
* The goal is to have some representation that would enable to
|
||||||
|
* 1. fully describe the symmetries of abstract T-matrices/nanoparticles,
|
||||||
|
* 2. quickly determine e.g. whether one is a subgroup of another,
|
||||||
|
* 3. have all the irreps,
|
||||||
|
* 4. have all in C and without excessive external dependencies,
|
||||||
|
* etc.
|
||||||
*/
|
*/
|
||||||
#ifndef QPMS_GROUPS_H
|
#ifndef QPMS_GROUPS_H
|
||||||
#define QPMS_GROUPS_H
|
#define QPMS_GROUPS_H
|
||||||
|
|
|
@ -301,4 +301,41 @@ qpms_errno_t qpms_scatsys_dump(qpms_scatsys_t *ss, char *path);
|
||||||
/// NOT IMPLEMENTED Reads a qpms_scatsys_t structure from a file.
|
/// NOT IMPLEMENTED Reads a qpms_scatsys_t structure from a file.
|
||||||
qpms_scatsys_t *qpms_scatsys_load(char *path);
|
qpms_scatsys_t *qpms_scatsys_load(char *path);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// Abstract types that describe T-matrix/particle/scatsystem symmetries
|
||||||
|
// To be implemented later. See also the thoughts in the beginning of groups.h.
|
||||||
|
|
||||||
|
typedef *char qpms_tmatrix_id_t; ///< Maybe I want some usual integer type instead.
|
||||||
|
|
||||||
|
///Abstract T-matrix type draft.
|
||||||
|
/**
|
||||||
|
* TODO.
|
||||||
|
*/
|
||||||
|
typedef struct qpms_abstract_tmatrix_t{
|
||||||
|
qpms_tmatrix_id_t id;
|
||||||
|
/// Generators of the discrete point group under which T-matrix is invariant.
|
||||||
|
qpms_irot3_t *invar_gens;
|
||||||
|
/// Length of invar_gens.
|
||||||
|
qpms_gmi_t invar_gens_size;
|
||||||
|
|
||||||
|
} qpms_abstract_tmatrix_t;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct qpms_abstract_particle_t{
|
||||||
|
} qpms_abstract_particle_t;
|
||||||
|
|
||||||
|
/// An abstract particle, defined by its position and abstract T-matrix.
|
||||||
|
typedef struct qpms_abstract_particle_t {
|
||||||
|
cart3_t pos; ///< Particle position in cartesian coordinates.
|
||||||
|
const qpms_abstract_tmatrix_t *tmatrix; ///< T-matrix; not owned by this.
|
||||||
|
} qpms_abstract_particle_t;
|
||||||
|
|
||||||
|
|
||||||
|
/** This is just an alias, as the same index can be used for
|
||||||
|
* abstract T-matrices as well.
|
||||||
|
*/
|
||||||
|
typedef qpms_particle_tid_t qpms_abstract_particle_tid_t;
|
||||||
|
#endif // 0
|
||||||
#endif //QPMS_SCATSYSTEM_H
|
#endif //QPMS_SCATSYSTEM_H
|
||||||
|
|
Loading…
Reference in New Issue