Move periodic lattice-related stuff into a separate structure

Former-commit-id: f2f49245a808a592d8f7c6bc7d795ae293d5ae62
This commit is contained in:
Marek Nečada 2020-02-14 08:25:34 +02:00
parent 2499c739c8
commit 379dc3117e
1 changed files with 24 additions and 20 deletions

View File

@ -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 03.
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 03.
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.