Start a new C implementation of finite symmetric scattering systems.
Former-commit-id: 14e2cd0568e9b65aaceff2b8cf31be544664eab3
This commit is contained in:
parent
a5b6f5ce34
commit
6da03c6591
|
@ -0,0 +1,34 @@
|
||||||
|
/*! \file scatsystem.h
|
||||||
|
* \brief Modern interface for finite lattice calculations, including symmetries.
|
||||||
|
*/
|
||||||
|
#ifndef QPMS_SCATSYSTEM_H
|
||||||
|
#define QPMS_SCATSYSTEM_H
|
||||||
|
|
||||||
|
/// A T-matrix.
|
||||||
|
/** In the future, I might rather use a more abstract approach in which T-matrix
|
||||||
|
* is a mapping (function) of the field expansion coefficients.
|
||||||
|
* So the interface might change.
|
||||||
|
* For now, let me stick to the square dense matrix representation.
|
||||||
|
*/
|
||||||
|
typedef struct qpms_tmatrix_t {
|
||||||
|
const qpms_vswf_set_spec_t *spec; ///< NOT owned by qpms_tmatrix_t by default.
|
||||||
|
complex double *m; ///< Matrix elements
|
||||||
|
} qpms_tmatrix_t;
|
||||||
|
/// Returns a pointer to the beginning of the T-matrix row \a rowno.
|
||||||
|
static inline complex double *qpms_tmatrix_row(qpms_tmatrix_t *t, size_t rowno){
|
||||||
|
return t->m + (t->spec->n * rowno);
|
||||||
|
}
|
||||||
|
/// NOT IMPLEMENTED Initialises a zero T-matrix.
|
||||||
|
qpms_tmatrix_t *qpms_tmatrix_init(const qpms_vswf_set_spec_t *bspec);
|
||||||
|
/// NOT IMPLEMENTED Destroys a T-matrix.
|
||||||
|
void qpms_tmatrix_free(qpms_tmatrix_t *t);
|
||||||
|
|
||||||
|
|
||||||
|
/// A particle, defined by its T-matrix and position.
|
||||||
|
typedef struct qpms_particle_t {
|
||||||
|
// Does it make sense to ever use other than cartesian coords for this?
|
||||||
|
cart3_t pos; ///< Particle position in cartesian coordinates.
|
||||||
|
const qpms_tmatrix_t *tmatrix; ///< T-matrix; not owned by qpms_particle_t.
|
||||||
|
} qpms_particle_t;
|
||||||
|
|
||||||
|
#endif //QPMS_SCATSYSTEM_H
|
Loading…
Reference in New Issue