QPMS
Electromagnetic multiple scattering library and toolkit.

Common "class" for system of scatterers, both periodic and nonperiodic. More...
#include <scatsystem.h>
Data Fields  
int  lattice_dimension 
Number of dimensions in which the system is periodic from the range 0–3.  
struct qpms_epsmu_generator_t  medium 
Optical properties of the background medium.  
qpms_tmatrix_function_t *  tmg 
(Template) Tmatrix functions in the system. More...  
qpms_ss_tmgi_t  tmg_count 
Number of all different original Tmatrix generators in the system.  
qpms_ss_derived_tmatrix_t *  tm 
All the different Tmatrix functions in the system, including those derived from tmg elements by symmetries.  
qpms_ss_tmi_t  tm_count 
Number of all different Tmatrices in the system (length of tm[]).  
qpms_ss_tmi_t  tm_capacity 
Capacity of tm[].  
qpms_particle_tid_t *  p 
Particles.  
qpms_ss_pi_t  p_count 
Size of particles array.  
qpms_ss_pi_t  p_capacity 
Capacity of p[].  
const struct qpms_finite_group_t *  sym 
Symmetry group of the array.  
qpms_ss_pi_t *  p_sym_map 
p_sym_map[idi + pi * sym>order] gives the index of pith particle under the idi'th sym op. More...  
qpms_ss_tmi_t *  tm_sym_map 
Which tmatrices map onto which by the symmetry ops. Lookup by tm_sum_map[idi + tmi * sym>order].  
qpms_ss_oti_t  orbit_type_count 
qpms_ss_orbit_type_t *  orbit_types 
(Array length is orbit_type_count.)  
qpms_ss_particle_orbitinfo_t *  p_orbitinfo 
Orbit type identification of each particle. (Array length is p_count.)  
size_t  fecv_size 
Number of elements of a full excitation coefficient vector size.  
size_t *  saecv_sizes 
Number of elements of symmetryadjusted coefficient vector sizes (order as in sym>irreps).  
size_t *  fecv_pstarts 
Indices of where pi'th particle's excitation coeffs start in a full excitation coefficient vector.  
size_t *  saecv_ot_offsets 
TODO DOC. In the packed vector, saecv_ot_offsets[iri * orbit_type_count + oti] indicates start of ot. More...  
size_t  max_bspecn 
**< First index is irrep index as in sym>irreps, second index is particle index. */ More...  
qpms_ss_pi_t *  p_by_orbit 
Particles grouped by orbit (in the order corresponding to the packed memory layout).  
char *  otspace 
char *  otspace_end 
double  lenscale 
struct qpms_trans_calculator *  c 
qpms_scatsys_periodic_info_t  per 
Periodic lattice metadata.  
Common "class" for system of scatterers, both periodic and nonperiodic.
Infinite periodic structures (those with lattice_dimension > 0) have the per filled. These are ignored for finite systems (lattice_dimension == 0).
size_t qpms_scatsys_t::max_bspecn 
**< First index is irrep index as in sym>irreps, second index is particle index. */
Maximum tm[...]>spec>n. Mainly for workspace allocation.
qpms_ss_pi_t* qpms_scatsys_t::p_sym_map 
p_sym_map[idi + pi * sym>order] gives the index of pith particle under the idi'th sym op.
Which particles map onto which by the symmetry ops.
size_t* qpms_scatsys_t::saecv_ot_offsets 
TODO DOC. In the packed vector, saecv_ot_offsets[iri * orbit_type_count + oti] indicates start of ot.
TODO maybe move it to qpms_ss_orbit_type_t, ffs.
qpms_tmatrix_function_t* qpms_scatsys_t::tmg 
(Template) Tmatrix functions in the system.
The qpms_abstract_tmatrix_t objects (onto which this array member point) are NOT owned by this and must be kept alive for the whole lifetime of all qpms_scatsys_t objects that are built upon them.