QPMS
Electromagnetic multiple scattering library and toolkit.
Functions
symmetries.h File Reference

Functions providing point group operations operating on translation operators and T-matrices. More...

#include "qpms_types.h"
#include <cblas.h>
Include dependency graph for symmetries.h:

Go to the source code of this file.

Functions

complex double * qpms_zflip_uvswi_dense (complex double *target, const qpms_vswf_set_spec_t *bspec)
 Dense matrix representation of the z coordinate sign flip operation (xy-plane mirroring). More...
 
complex double * qpms_yflip_uvswi_dense (complex double *target, const qpms_vswf_set_spec_t *bspec)
 Dense matrix representation of the y coordinate sign flip operation (xz-plane mirroring). More...
 
complex double * qpms_xflip_uvswi_dense (complex double *target, const qpms_vswf_set_spec_t *bspec)
 Dense matrix representation of the x coordinate sign flip operation (yz-plane mirroring). More...
 
complex double * qpms_zrot_uvswi_dense (complex double *target, const qpms_vswf_set_spec_t *bspec, double phi)
 Dense matrix representation of a rotation around the z-axis. More...
 
complex double * qpms_zrot_rational_uvswi_dense (complex double *target, const qpms_vswf_set_spec_t *bspec, int N, int w)
 Dense matrix representation of a "rational" rotation around the z-axis. More...
 
complex double * qpms_irot3_uvswfi_dense (complex double *target, const qpms_vswf_set_spec_t *bspec, const qpms_irot3_t transf)
 Dense matrix (uvswi-indexed) representation of any O(3) transformation. More...
 
size_t qpms_zero_roundoff_clean (double *arr, size_t nmemb, double atol)
 Cleans the roundoff error of an array. More...
 
size_t qpms_czero_roundoff_clean (complex double *arr, size_t nmemb, double atol)
 Cleans the roundoff error of an array. More...
 

Detailed Description

Functions providing point group operations operating on translation operators and T-matrices.

Here will be functions providing point group operations operating on translation operators and T-matrices similar to tmatrices.py.

At least I want:

Maybe (much later) also point and space group irrep functionality as in symmetries.py. However, I think that the group structures can be simply hard-coded/generated by a python script, then there is no need to check the group consistency etc. at runtime.

Function Documentation

◆ qpms_czero_roundoff_clean()

size_t qpms_czero_roundoff_clean ( complex double *  arr,
size_t  nmemb,
double  atol 
)

Cleans the roundoff error of an array.

Works on real and imaginary parts separately. TODO doc.

◆ qpms_irot3_uvswfi_dense()

complex double* qpms_irot3_uvswfi_dense ( complex double *  target,
const qpms_vswf_set_spec_t bspec,
const qpms_irot3_t  transf 
)

Dense matrix (uvswi-indexed) representation of any O(3) transformation.

Parameters
targetIf NULL, a new array is allocated.

◆ qpms_xflip_uvswi_dense()

complex double* qpms_xflip_uvswi_dense ( complex double *  target,
const qpms_vswf_set_spec_t bspec 
)

Dense matrix representation of the x coordinate sign flip operation (yz-plane mirroring).

Parameters
targetIf NULL, a new array is allocated.

◆ qpms_yflip_uvswi_dense()

complex double* qpms_yflip_uvswi_dense ( complex double *  target,
const qpms_vswf_set_spec_t bspec 
)

Dense matrix representation of the y coordinate sign flip operation (xz-plane mirroring).

Parameters
targetIf NULL, a new array is allocated.

◆ qpms_zero_roundoff_clean()

size_t qpms_zero_roundoff_clean ( double *  arr,
size_t  nmemb,
double  atol 
)

Cleans the roundoff error of an array.

Replaces all the array members x for which |x| <= atol with exact zeros.

Returns the count of modified array members.

◆ qpms_zflip_uvswi_dense()

complex double* qpms_zflip_uvswi_dense ( complex double *  target,
const qpms_vswf_set_spec_t bspec 
)

Dense matrix representation of the z coordinate sign flip operation (xy-plane mirroring).

Parameters
targetIf NULL, a new array is allocated.

◆ qpms_zrot_rational_uvswi_dense()

complex double* qpms_zrot_rational_uvswi_dense ( complex double *  target,
const qpms_vswf_set_spec_t bspec,
int  N,
int  w 
)

Dense matrix representation of a "rational" rotation around the z-axis.

Just for convenience. Corresponds to the angle \( \phi = 2\piw/N \).

Parameters
targetIf NULL, a new array is allocated.

◆ qpms_zrot_uvswi_dense()

complex double* qpms_zrot_uvswi_dense ( complex double *  target,
const qpms_vswf_set_spec_t bspec,
double  phi 
)

Dense matrix representation of a rotation around the z-axis.

Parameters
targetIf NULL, a new array is allocated.
phiRotation angle