Move periodic lattice-related stuff into a separate structure
Former-commit-id: f2f49245a808a592d8f7c6bc7d795ae293d5ae62
This commit is contained in:
parent
2499c739c8
commit
379dc3117e
|
@ -131,26 +131,7 @@ typedef struct qpms_ss_derived_tmatrix_t {
|
||||||
struct qpms_tmatrix_operation_t op; ///< Operation to derive this particular T-matrix.
|
struct qpms_tmatrix_operation_t op; ///< Operation to derive this particular T-matrix.
|
||||||
} qpms_ss_derived_tmatrix_t;
|
} qpms_ss_derived_tmatrix_t;
|
||||||
|
|
||||||
|
typedef struct qpms_scatsys_periodic_info_t {
|
||||||
struct qpms_trans_calculator;
|
|
||||||
struct qpms_epsmu_generator_t;
|
|
||||||
|
|
||||||
/// Common "class" for system of scatterers, both periodic and non-periodic.
|
|
||||||
/**
|
|
||||||
* Infinite periodic structures (those with \a lattice_dimension > 0)
|
|
||||||
* have the following additional members filled:
|
|
||||||
* - lattice_basis_csystem
|
|
||||||
* - lattice_basis
|
|
||||||
* - reciprocal_basis_csystem
|
|
||||||
* - reciprocal_basis
|
|
||||||
* - unitcell_volume
|
|
||||||
* These are ignored for finite systems (lattice_dimension == 0).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct qpms_scatsys_t {
|
|
||||||
/// Number of dimensions in which the system is periodic from the range 0–3.
|
|
||||||
int lattice_dimension;
|
|
||||||
|
|
||||||
/// Coordinate system for \a lattice_basis.
|
/// Coordinate system for \a lattice_basis.
|
||||||
/** This is mandatory for \a lattice_dimension != 0 */
|
/** This is mandatory for \a lattice_dimension != 0 */
|
||||||
qpms_coord_system_t lattice_basis_csystem;
|
qpms_coord_system_t lattice_basis_csystem;
|
||||||
|
@ -170,7 +151,27 @@ typedef struct qpms_scatsys_t {
|
||||||
* lattice_dimension == 2, a 2D area.
|
* lattice_dimension == 2, a 2D area.
|
||||||
*/
|
*/
|
||||||
double unitcell_volume;
|
double unitcell_volume;
|
||||||
|
} qpms_scatsys_pediodic_info_t;
|
||||||
|
|
||||||
|
|
||||||
|
struct qpms_trans_calculator;
|
||||||
|
struct qpms_epsmu_generator_t;
|
||||||
|
|
||||||
|
/// Common "class" for system of scatterers, both periodic and non-periodic.
|
||||||
|
/**
|
||||||
|
* Infinite periodic structures (those with \a lattice_dimension > 0)
|
||||||
|
* have the following additional members filled:
|
||||||
|
* - lattice_basis_csystem
|
||||||
|
* - lattice_basis
|
||||||
|
* - reciprocal_basis_csystem
|
||||||
|
* - reciprocal_basis
|
||||||
|
* - unitcell_volume
|
||||||
|
* These are ignored for finite systems (lattice_dimension == 0).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
typedef struct qpms_scatsys_t {
|
||||||
|
/// Number of dimensions in which the system is periodic from the range 0–3.
|
||||||
|
int lattice_dimension;
|
||||||
struct qpms_epsmu_generator_t medium; ///< Optical properties of the background medium.
|
struct qpms_epsmu_generator_t medium; ///< Optical properties of the background medium.
|
||||||
|
|
||||||
/// (Template) T-matrix functions in the system.
|
/// (Template) T-matrix functions in the system.
|
||||||
|
@ -223,6 +224,9 @@ typedef struct qpms_scatsys_t {
|
||||||
char *otspace_end;
|
char *otspace_end;
|
||||||
double lenscale; // radius of the array, used as a relative tolerance measure
|
double lenscale; // radius of the array, used as a relative tolerance measure
|
||||||
struct qpms_trans_calculator *c;
|
struct qpms_trans_calculator *c;
|
||||||
|
|
||||||
|
/// Periodic lattice metadata. Only allocated/used when lattice_dimension != 0.
|
||||||
|
qpms_scatsys_periodic_info_t per[];
|
||||||
} qpms_scatsys_t;
|
} qpms_scatsys_t;
|
||||||
|
|
||||||
/// Retrieve the bspec of \a tmi'th element of \a ss->tm.
|
/// Retrieve the bspec of \a tmi'th element of \a ss->tm.
|
||||||
|
|
Loading…
Reference in New Issue