From 696e79e6aef92d234647e8780853dbc0a7d435bb Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Fri, 29 Oct 2021 11:25:24 -0700 Subject: [PATCH 01/23] tests passing for tol = 1e-5 --- src/equi_coeffs_dict.jl | 227 +++++++++++++++++++++++++++++++++ src/properties.jl | 68 ++++++++++ test/test_EquivariantMatrix.jl | 130 +++++++++++++++++++ 3 files changed, 425 insertions(+) create mode 100644 src/equi_coeffs_dict.jl create mode 100644 test/test_EquivariantMatrix.jl diff --git a/src/equi_coeffs_dict.jl b/src/equi_coeffs_dict.jl new file mode 100644 index 00000000..00c5b3f8 --- /dev/null +++ b/src/equi_coeffs_dict.jl @@ -0,0 +1,227 @@ +mrmatrices=Dict( +(-2, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(-1, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, -0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(-1, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(0, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0666667+0.0im), +(0, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(1, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(1, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(1, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(2, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+-0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(-1, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), +(0, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im), +(1, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(1, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im), +(2, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(-1, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(-1, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(1, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(1, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(-1, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), +(0, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im), +(1, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(1, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im), +(2, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(-1, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, -0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(-1, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(0, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0666667+0.0im), +(0, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(1, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(1, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(1, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(2, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+-0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(-1, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(-1, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(1, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(1, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(-1, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(-1, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(1, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(1, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(-1, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(-1, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(1, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(1, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816497+0.0im, 0.0+-0.0816497im, 0.0+0.0im, 0.0+-0.0816497im, -0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im, 0.0816497+0.0im, 0.0+-0.0816497im, 0.0+0.0im), +(-1, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-1, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.0666667+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0666667+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.133333+0.0im), +(0, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(0, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im, -0.0816497+0.0im, 0.0+-0.0816497im, 0.0+0.0im), +(1, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(1, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816497+0.0im, 0.0+0.0816497im, 0.0+0.0im, 0.0+0.0816497im, -0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im) +) diff --git a/src/properties.jl b/src/properties.jl index ad4f2b62..9812beea 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -212,6 +212,74 @@ rmatrices = Dict( (1,1) => SMatrix{3, 3, ComplexF64, 9}(1/6, -1im/6, 0, 1im/6, 1/6, 0, 0, 0, 0) ) +#---------------------- Equivariant matrices + +struct EquivariantMatrix{T} <: AbstractProperty where T<:Real + val::SMatrix{3, 3, Complex{T}, 9} +end + + +real(φ::EquivariantMatrix) = EquivariantMatrix(φ.val) +complex(φ::EquivariantMatrix) = EquivariantMatrix(φ.val) +complex(::Type{EquivariantMatrix{T}}) where {T} = EquivariantMatrix{complex(T)} + +isrealB(::EquivariantMatrix) = true +isrealAA(::EquivariantMatrix) = false + + +#fltype(::EquivariantMatrix{T}) where {T} = T + +EquivariantMatrix{T}() where {T <: Real} = EquivariantMatrix{T}(zero(SMatrix{3, 3, ComplexF64, 9})) + +EquivariantMatrix(T::DataType=Float64) = EquivariantMatrix{T}() + + +function filter(φ::EquivariantMatrix, grp::O3, b::Array) + if length(b) <= 1 #MS: Not sure if this should be here + return true + end + suml = sum( getl(grp, bi) for bi in b ) + if haskey(b[1], msym(grp)) # depends on context whether m come along? + summ = sum( getm(grp, bi) for bi in b ) + return iseven(suml) && abs(summ) <= 2 + end + return iseven(suml) +end + +rot3Dcoeffs(::EquivariantMatrix,T=Float64) = Rot3DCoeffsEquiv{T,1}(Dict[], ClebschGordan(T)) + +write_dict(φ::EquivariantMatrix{T}) where {T} = + Dict("__id__" => "ACE_EquivariantMatrix", + "val" => write_dict(Matrix(φ.val)), + "T" => write_dict(T) ) + +function read_dict(::Val{:ACE_EquivariantMatrix}, D::Dict) + T = read_dict(D["T"]) + return EquivariantMatrix{T}(SMatrix{3, 3, Complex{T}, 9}(read_dict(D["val"]))) +end + +# differentiation - cf #27 +# *(φ::EquivariantMatrix, dAA::SVector) = φ.val * dAA' + +coco_init(phi::EquivariantMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( + (l == 2 && abs(m) <= 2 && abs(μ) <= 2) + ? vec([EquivariantMatrix{CT}(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) + : coco_zeros(phi, l, m, μ, T, A) ) + +coco_zeros(φ::EquivariantMatrix, ll, mm, kk, T, A) = EquivariantMatrix.(zeros(SMatrix{3, 3, Complex{T}, 9},9)) + +coco_filter(::EquivariantMatrix, ll, mm) = + iseven(sum(ll)) && (abs(sum(mm)) <= 2) + +coco_filter(::EquivariantMatrix, ll, mm, kk) = + abs(sum(mm)) <= 2 && + abs(sum(kk)) <= 2 && + iseven(sum(ll)) + +coco_dot(u1::EquivariantMatrix, u2::EquivariantMatrix) = sum(transpose(conj.( u1.val)) * u2.val) +#dot(u1.val, u2.val) + +include("equi_coeffs_dict.jl") # --------------------- SphericalVector diff --git a/test/test_EquivariantMatrix.jl b/test/test_EquivariantMatrix.jl new file mode 100644 index 00000000..fd65e62b --- /dev/null +++ b/test/test_EquivariantMatrix.jl @@ -0,0 +1,130 @@ +using ACE, StaticArrays +using Random, Printf, Test, LinearAlgebra, ACE.Testing +using ACE: evaluate, evaluate_d, SymmetricBasis, PIBasis, EquivariantMatrix +using ACE.Random: rand_rot, rand_refl +using ACEbase.Testing: fdtest + +# construct the 1p-basis +maxdeg = 6 +ord = 3 +Bsel = SimpleSparseBasis(ord, maxdeg) + +B1p = ACE.Utils.RnYlm_1pbasis(; maxdeg=maxdeg) + +# generate a configuration +nX = 10 +Xs = rand(PositionState{Float64}, B1p.bases[1], nX) +cfg = ACEConfig(Xs) + +## + +@info("SymmetricBasis construction and evaluation: EuclideanVector") + + +φ = ACE.EquivariantMatrix(Float64) +pibasis = PIBasis(B1p, Bsel; property = φ) +basis = SymmetricBasis(φ, pibasis) +@time SymmetricBasis(φ, pibasis) + +BB = evaluate(basis, cfg) + +Iz = findall(iszero, sum(norm, basis.A2Bmap, dims=1)[:]) +if !isempty(Iz) + @warn("The A2B map for EuclideanVector has $(length(Iz))/$(length(basis.pibasis)) zero-columns!!!!") +end + +## + +@info("Test FIO") +using ACEbase.Testing: test_fio + +println(@test(all(test_fio(basis; warntype = false)))) + +## + +@info("Test equivariance properties for real version") + +tol = 1e-5 + + +## +local Xs, BB +Xs = rand(PositionState{Float64}, B1p.bases[1], nX) +BB = evaluate(basis, ACEConfig(Xs)) +Q = rand([-1,1]) * ACE.Random.rand_rot() +Xs_rot = Ref(Q) .* shuffle(Xs) +BB_rot = evaluate(basis, ACEConfig(Xs_rot)) + +b1 = BB_rot[1] +b2 = BB[1] +diff = Q' * b1 * Q - b2 + +# for (b1, b2) in zip(BB_rot, BB) +#print_tf(@test all([ norm(Q' * b1 * Q - b2) < tol +# for (b1, b2) in zip(BB_rot, BB) ])) +## +@info("check for rotation, permutation and inversion equivariance") +for ntest = 1:30 + local Xs, BB + Xs = rand(PositionState{Float64}, B1p.bases[1], nX) + BB = evaluate(basis, ACEConfig(Xs)) + Q = rand([-1,1]) * ACE.Random.rand_rot() + Xs_rot = Ref(Q) .* shuffle(Xs) + BB_rot = evaluate(basis, ACEConfig(Xs_rot)) + #print([ norm(Q' * b1 * Q - b2) sum( sum(c .* b.val) + for (c, b) in zip(C, ACE.evaluate(basis, ACEConfig(Xs + t[1] * Us))) ) + dF = t -> [ sum( sum(c .* db) + for (c, db) in zip(C, _rrval.(ACE.evaluate_d(basis, ACEConfig(Xs + t[1] * Us))) * Us) ) ] + print_tf(@test fdtest(F, dF, [0.0], verbose=false)) +end +println() + +## From e6ba0362d5d062b67b99f4802b3ac84be0975e08 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Wed, 5 Jan 2022 14:57:12 +0000 Subject: [PATCH 02/23] more accurate rotation coefficients added --- src/equi_coeffs_dict.jl | 62 +++++++++++++++++----------------- test/test_EquivariantMatrix.jl | 6 ++-- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/equi_coeffs_dict.jl b/src/equi_coeffs_dict.jl index 00c5b3f8..0217c874 100644 --- a/src/equi_coeffs_dict.jl +++ b/src/equi_coeffs_dict.jl @@ -1,27 +1,27 @@ mrmatrices=Dict( (-2, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), (-1, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, -0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(-1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, -0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), (-1, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(0, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), (0, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0666667+0.0im), +(0, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im), (0, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), (1, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), (1, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), (1, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), (2, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+-0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), @@ -34,11 +34,11 @@ mrmatrices=Dict( (-1, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), -(0, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), (0, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im), +(0, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im), (1, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), (1, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), @@ -60,9 +60,9 @@ mrmatrices=Dict( (-1, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), (-1, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), (0, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), (0, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), @@ -84,11 +84,11 @@ mrmatrices=Dict( (-1, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), -(0, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), (0, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im), +(0, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im), (1, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), (1, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), @@ -101,27 +101,27 @@ mrmatrices=Dict( (2, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), (-1, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, -0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(-1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, -0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), (-1, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(0, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), (0, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0666667+0.0im), +(0, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im), (0, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), (1, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), (1, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0408248im, 0.0408248+0.0im, 0.0+0.0408248im, 0.0+0.0im), +(1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), (1, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), (2, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+-0.0408248im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), @@ -135,9 +135,9 @@ mrmatrices=Dict( (-1, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), (-1, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), (0, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), (0, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), @@ -160,9 +160,9 @@ mrmatrices=Dict( (-1, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), (-1, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im), +(0, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), (0, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0408248+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im), +(0, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), (0, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), @@ -185,9 +185,9 @@ mrmatrices=Dict( (-1, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), (-1, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), (0, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0408248im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816497im), +(0, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), (0, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), @@ -201,27 +201,27 @@ mrmatrices=Dict( (2, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816497+0.0im, 0.0+-0.0816497im, 0.0+0.0im, 0.0+-0.0816497im, -0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(-2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im, 0.0+-0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-2, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im, 0.0816497+0.0im, 0.0+-0.0816497im, 0.0+0.0im), +(-1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im, 0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im), (-1, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (-1, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.0666667+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0666667+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.133333+0.0im), +(0, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.06666666666666666+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.1333333333333333+0.0im), (0, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (0, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816497im, -0.0816497+0.0im, 0.0+-0.0816497im, 0.0+0.0im), +(1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im), (1, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (1, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816497+0.0im, 0.0+0.0816497im, 0.0+0.0im, 0.0+0.0816497im, -0.0816497+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816496580927726+0.0im, 0.0+0.0816496580927726im, 0.0+0.0im, 0.0+0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), (2, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im) ) diff --git a/test/test_EquivariantMatrix.jl b/test/test_EquivariantMatrix.jl index fd65e62b..d1ebd1ee 100644 --- a/test/test_EquivariantMatrix.jl +++ b/test/test_EquivariantMatrix.jl @@ -18,7 +18,7 @@ cfg = ACEConfig(Xs) ## -@info("SymmetricBasis construction and evaluation: EuclideanVector") +@info("SymmetricBasis construction and evaluation: EquivariantMatrix") φ = ACE.EquivariantMatrix(Float64) @@ -30,7 +30,7 @@ BB = evaluate(basis, cfg) Iz = findall(iszero, sum(norm, basis.A2Bmap, dims=1)[:]) if !isempty(Iz) - @warn("The A2B map for EuclideanVector has $(length(Iz))/$(length(basis.pibasis)) zero-columns!!!!") + @warn("The A2B map for EquivariantMatrix has $(length(Iz))/$(length(basis.pibasis)) zero-columns!!!!") end ## @@ -44,7 +44,7 @@ println(@test(all(test_fio(basis; warntype = false)))) @info("Test equivariance properties for real version") -tol = 1e-5 +tol = 1e-14 ## From 884ebf9db640d0ba8cd9625bb65d540e9e0938ca Mon Sep 17 00:00:00 2001 From: Christoph Ortner Date: Thu, 6 Jan 2022 18:30:04 -0800 Subject: [PATCH 03/23] fixed fio for EquivariantMatrix --- src/properties.jl | 7 +++++-- test/test_EquivariantMatrix.jl | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/properties.jl b/src/properties.jl index 9812beea..487c13f4 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -250,12 +250,15 @@ rot3Dcoeffs(::EquivariantMatrix,T=Float64) = Rot3DCoeffsEquiv{T,1}(Dict[], Clebs write_dict(φ::EquivariantMatrix{T}) where {T} = Dict("__id__" => "ACE_EquivariantMatrix", - "val" => write_dict(Matrix(φ.val)), + "valr" => write_dict(real.(Matrix(φ.val))), + "vali" => write_dict(imag.(Matrix(φ.val))), "T" => write_dict(T) ) function read_dict(::Val{:ACE_EquivariantMatrix}, D::Dict) T = read_dict(D["T"]) - return EquivariantMatrix{T}(SMatrix{3, 3, Complex{T}, 9}(read_dict(D["val"]))) + valr = SMatrix{3, 3, T, 9}(read_dict(D["valr"])) + vali = SMatrix{3, 3, T, 9}(read_dict(D["vali"])) + return EquivariantMatrix{T}(valr + im * vali) end # differentiation - cf #27 diff --git a/test/test_EquivariantMatrix.jl b/test/test_EquivariantMatrix.jl index d1ebd1ee..2365c594 100644 --- a/test/test_EquivariantMatrix.jl +++ b/test/test_EquivariantMatrix.jl @@ -4,7 +4,7 @@ using ACE: evaluate, evaluate_d, SymmetricBasis, PIBasis, EquivariantMatrix using ACE.Random: rand_rot, rand_refl using ACEbase.Testing: fdtest -# construct the 1p-basis +## construct the 1p-basis maxdeg = 6 ord = 3 Bsel = SimpleSparseBasis(ord, maxdeg) From 8dc35260e82afbd1dbc5c69159cdd368e6d33a51 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Fri, 7 Jan 2022 14:56:32 +0000 Subject: [PATCH 04/23] renaming EquivariantMatrix -> EuclideanMatrix --- src/properties.jl | 45 +++++++++++++++++----------------- test/test_EquivariantMatrix.jl | 8 +++--- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/properties.jl b/src/properties.jl index 487c13f4..9b6f5261 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -214,27 +214,27 @@ rmatrices = Dict( #---------------------- Equivariant matrices -struct EquivariantMatrix{T} <: AbstractProperty where T<:Real +struct EuclideanMatrix{T} <: AbstractProperty where T<:Real val::SMatrix{3, 3, Complex{T}, 9} end -real(φ::EquivariantMatrix) = EquivariantMatrix(φ.val) -complex(φ::EquivariantMatrix) = EquivariantMatrix(φ.val) -complex(::Type{EquivariantMatrix{T}}) where {T} = EquivariantMatrix{complex(T)} +real(φ::EuclideanMatrix) = EuclideanMatrix(φ.val) +complex(φ::EuclideanMatrix) = EuclideanMatrix(φ.val) +complex(::Type{EuclideanMatrix{T}}) where {T} = EuclideanMatrix{complex(T)} -isrealB(::EquivariantMatrix) = true -isrealAA(::EquivariantMatrix) = false +isrealB(::EuclideanMatrix) = true +isrealAA(::EuclideanMatrix) = false -#fltype(::EquivariantMatrix{T}) where {T} = T +#fltype(::EuclideanMatrix{T}) where {T} = T -EquivariantMatrix{T}() where {T <: Real} = EquivariantMatrix{T}(zero(SMatrix{3, 3, ComplexF64, 9})) +EuclideanMatrix{T}() where {T <: Real} = EuclideanMatrix{T}(zero(SMatrix{3, 3, ComplexF64, 9})) -EquivariantMatrix(T::DataType=Float64) = EquivariantMatrix{T}() +EuclideanMatrix(T::DataType=Float64) = EuclideanMatrix{T}() -function filter(φ::EquivariantMatrix, grp::O3, b::Array) +function filter(φ::EuclideanMatrix, grp::O3, b::Array) if length(b) <= 1 #MS: Not sure if this should be here return true end @@ -246,40 +246,41 @@ function filter(φ::EquivariantMatrix, grp::O3, b::Array) return iseven(suml) end -rot3Dcoeffs(::EquivariantMatrix,T=Float64) = Rot3DCoeffsEquiv{T,1}(Dict[], ClebschGordan(T)) +rot3Dcoeffs(::EuclideanMatrix,T=Float64) = Rot3DCoeffsEquiv{T,1}(Dict[], ClebschGordan(T)) -write_dict(φ::EquivariantMatrix{T}) where {T} = - Dict("__id__" => "ACE_EquivariantMatrix", +write_dict(φ::EuclideanMatrix{T}) where {T} = + Dict("__id__" => "ACE_EuclideanMatrix", "valr" => write_dict(real.(Matrix(φ.val))), "vali" => write_dict(imag.(Matrix(φ.val))), "T" => write_dict(T) ) -function read_dict(::Val{:ACE_EquivariantMatrix}, D::Dict) +function read_dict(::Val{:ACE_EuclideanMatrix}, D::Dict) T = read_dict(D["T"]) valr = SMatrix{3, 3, T, 9}(read_dict(D["valr"])) vali = SMatrix{3, 3, T, 9}(read_dict(D["vali"])) - return EquivariantMatrix{T}(valr + im * vali) + return EuclideanMatrix{T}(valr + im * vali) end # differentiation - cf #27 -# *(φ::EquivariantMatrix, dAA::SVector) = φ.val * dAA' +# *(φ::EuclideanMatrix, dAA::SVector) = φ.val * dAA' -coco_init(phi::EquivariantMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( +coco_init(phi::EuclideanMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( (l == 2 && abs(m) <= 2 && abs(μ) <= 2) - ? vec([EquivariantMatrix{CT}(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) + ? vec([EuclideanMatrix{CT}(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) : coco_zeros(phi, l, m, μ, T, A) ) -coco_zeros(φ::EquivariantMatrix, ll, mm, kk, T, A) = EquivariantMatrix.(zeros(SMatrix{3, 3, Complex{T}, 9},9)) +# This is slightly different from implementation in EuclideanVector! +coco_zeros(::EuclideanMatrix, ll, mm, kk, T, A) = EuclideanMatrix.(zeros(SMatrix{3, 3, Complex{T}, 9},9)) -coco_filter(::EquivariantMatrix, ll, mm) = +coco_filter(::EuclideanMatrix, ll, mm) = iseven(sum(ll)) && (abs(sum(mm)) <= 2) -coco_filter(::EquivariantMatrix, ll, mm, kk) = +coco_filter(::EuclideanMatrix, ll, mm, kk) = abs(sum(mm)) <= 2 && abs(sum(kk)) <= 2 && iseven(sum(ll)) -coco_dot(u1::EquivariantMatrix, u2::EquivariantMatrix) = sum(transpose(conj.( u1.val)) * u2.val) +coco_dot(u1::EuclideanMatrix, u2::EuclideanMatrix) = sum(transpose(conj.( u1.val)) * u2.val) #dot(u1.val, u2.val) include("equi_coeffs_dict.jl") diff --git a/test/test_EquivariantMatrix.jl b/test/test_EquivariantMatrix.jl index 2365c594..67bea41f 100644 --- a/test/test_EquivariantMatrix.jl +++ b/test/test_EquivariantMatrix.jl @@ -1,6 +1,6 @@ using ACE, StaticArrays using Random, Printf, Test, LinearAlgebra, ACE.Testing -using ACE: evaluate, evaluate_d, SymmetricBasis, PIBasis, EquivariantMatrix +using ACE: evaluate, evaluate_d, SymmetricBasis, PIBasis, EuclideanMatrix using ACE.Random: rand_rot, rand_refl using ACEbase.Testing: fdtest @@ -18,10 +18,10 @@ cfg = ACEConfig(Xs) ## -@info("SymmetricBasis construction and evaluation: EquivariantMatrix") +@info("SymmetricBasis construction and evaluation: EuclideanMatrix") -φ = ACE.EquivariantMatrix(Float64) +φ = ACE.EuclideanMatrix(Float64) pibasis = PIBasis(B1p, Bsel; property = φ) basis = SymmetricBasis(φ, pibasis) @time SymmetricBasis(φ, pibasis) @@ -30,7 +30,7 @@ BB = evaluate(basis, cfg) Iz = findall(iszero, sum(norm, basis.A2Bmap, dims=1)[:]) if !isempty(Iz) - @warn("The A2B map for EquivariantMatrix has $(length(Iz))/$(length(basis.pibasis)) zero-columns!!!!") + @warn("The A2B map for EuclideanMatrix has $(length(Iz))/$(length(basis.pibasis)) zero-columns!!!!") end ## From d1fa4129fa909e2c8b04a63b5a6520f1e80fb634 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Fri, 7 Jan 2022 20:06:47 +0000 Subject: [PATCH 05/23] rebased branch and adapted implementation --- src/properties.jl | 13 ++++++++++++- ...EquivariantMatrix.jl => test_EuclideanMatrix.jl} | 0 2 files changed, 12 insertions(+), 1 deletion(-) rename test/{test_EquivariantMatrix.jl => test_EuclideanMatrix.jl} (100%) diff --git a/src/properties.jl b/src/properties.jl index 8c581fb8..1ce33aa7 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -250,11 +250,18 @@ struct EuclideanMatrix{T} <: AbstractProperty where T<:Real val::SMatrix{3, 3, Complex{T}, 9} end +Base.show(io::IO, φ::EuclideanMatrix) = + print(io, "m[$(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3])] +m[$(φ.val[2,1]), $(φ.val[2,2]), $(φ.val[2,3])] +m[$(φ.val[3,1]), $(φ.val[3,2]), $(φ.val[3,3])]") real(φ::EuclideanMatrix) = EuclideanMatrix(φ.val) complex(φ::EuclideanMatrix) = EuclideanMatrix(φ.val) complex(::Type{EuclideanMatrix{T}}) where {T} = EuclideanMatrix{complex(T)} ++(x::SMatrix{3}, y::EuclideanMatrix) = EuclideanMatrix(x + y.val) +Base.convert(::Type{SMatrix{3, 3, T, 9}}, φ::EuclideanMatrix) where {T} = convert(SMatrix{3, 3, T, 9}, φ.val) + isrealB(::EuclideanMatrix) = true isrealAA(::EuclideanMatrix) = false @@ -262,7 +269,6 @@ isrealAA(::EuclideanMatrix) = false #fltype(::EuclideanMatrix{T}) where {T} = T EuclideanMatrix{T}() where {T <: Real} = EuclideanMatrix{T}(zero(SMatrix{3, 3, ComplexF64, 9})) - EuclideanMatrix(T::DataType=Float64) = EuclideanMatrix{T}() @@ -301,6 +307,11 @@ coco_init(phi::EuclideanMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( ? vec([EuclideanMatrix{CT}(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) : coco_zeros(phi, l, m, μ, T, A) ) + +coco_init(::EuclideanMatrix{CT}) where {CT<:Real} = [EuclideanMatrix{CT}(SMatrix{3,3,Float64,9}([1.0,0,0,0,1.0,0,0,0,1.0]))] +coco_type(φ::EuclideanMatrix) = typeof(complex(φ)) +coco_type(::Type{EuclideanMatrix{T}}) where {T} = EuclideanMatrix{complex(T)} + # This is slightly different from implementation in EuclideanVector! coco_zeros(::EuclideanMatrix, ll, mm, kk, T, A) = EuclideanMatrix.(zeros(SMatrix{3, 3, Complex{T}, 9},9)) diff --git a/test/test_EquivariantMatrix.jl b/test/test_EuclideanMatrix.jl similarity index 100% rename from test/test_EquivariantMatrix.jl rename to test/test_EuclideanMatrix.jl From f81c451d346b311610b0f6de7a59635328322183 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Sat, 8 Jan 2022 15:01:21 +0000 Subject: [PATCH 06/23] conversion issue fixed. All tests pass! --- src/properties.jl | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/properties.jl b/src/properties.jl index 1ce33aa7..08564d5b 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -246,8 +246,8 @@ rmatrices = Dict( #---------------------- Equivariant matrices -struct EuclideanMatrix{T} <: AbstractProperty where T<:Real - val::SMatrix{3, 3, Complex{T}, 9} +struct EuclideanMatrix{T} <: AbstractProperty + val::SMatrix{3, 3, T, 9} end Base.show(io::IO, φ::EuclideanMatrix) = @@ -255,30 +255,33 @@ Base.show(io::IO, φ::EuclideanMatrix) = m[$(φ.val[2,1]), $(φ.val[2,2]), $(φ.val[2,3])] m[$(φ.val[3,1]), $(φ.val[3,2]), $(φ.val[3,3])]") -real(φ::EuclideanMatrix) = EuclideanMatrix(φ.val) -complex(φ::EuclideanMatrix) = EuclideanMatrix(φ.val) +real(φ::EuclideanMatrix) = EuclideanMatrix(real.(φ.val)) +complex(φ::EuclideanMatrix) = EuclideanMatrix(complex(φ.val)) complex(::Type{EuclideanMatrix{T}}) where {T} = EuclideanMatrix{complex(T)} +(x::SMatrix{3}, y::EuclideanMatrix) = EuclideanMatrix(x + y.val) Base.convert(::Type{SMatrix{3, 3, T, 9}}, φ::EuclideanMatrix) where {T} = convert(SMatrix{3, 3, T, 9}, φ.val) -isrealB(::EuclideanMatrix) = true +isrealB(::EuclideanMatrix) where {T} = (T == real(T)) isrealAA(::EuclideanMatrix) = false #fltype(::EuclideanMatrix{T}) where {T} = T -EuclideanMatrix{T}() where {T <: Real} = EuclideanMatrix{T}(zero(SMatrix{3, 3, ComplexF64, 9})) +EuclideanMatrix{T}() where {T <: Number} = EuclideanMatrix{T}(zero(SMatrix{3, 3, T, 9})) EuclideanMatrix(T::DataType=Float64) = EuclideanMatrix{T}() -function filter(φ::EuclideanMatrix, grp::O3, b::Array) - if length(b) <= 1 #MS: Not sure if this should be here +function filter(φ::EuclideanMatrix, grp::O3, bb::Array) + if length(bb) == 0 # no zero-correlations allowed + return false + end + if length(bb) == 1 #MS: Not sure if this should be here return true end - suml = sum( getl(grp, bi) for bi in b ) - if haskey(b[1], msym(grp)) # depends on context whether m come along? - summ = sum( getm(grp, bi) for bi in b ) + suml = sum( getl(grp, bi) for bi in bb ) + if haskey(bb[1], msym(grp)) # depends on context whether m come along? + summ = sum( getm(grp, bi) for bi in bb ) return iseven(suml) && abs(summ) <= 2 end return iseven(suml) @@ -304,16 +307,17 @@ end coco_init(phi::EuclideanMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( (l == 2 && abs(m) <= 2 && abs(μ) <= 2) - ? vec([EuclideanMatrix{CT}(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) + ? vec([EuclideanMatrix(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) : coco_zeros(phi, l, m, μ, T, A) ) -coco_init(::EuclideanMatrix{CT}) where {CT<:Real} = [EuclideanMatrix{CT}(SMatrix{3,3,Float64,9}([1.0,0,0,0,1.0,0,0,0,1.0]))] +#coco_init(::EuclideanMatrix{CT}) where {CT<:Real} = [EuclideanMatrix(SMatrix{3,3,Complex{CT},9}([1.0,0,0,0,1.0,0,0,0,1.0]))] coco_type(φ::EuclideanMatrix) = typeof(complex(φ)) coco_type(::Type{EuclideanMatrix{T}}) where {T} = EuclideanMatrix{complex(T)} # This is slightly different from implementation in EuclideanVector! -coco_zeros(::EuclideanMatrix, ll, mm, kk, T, A) = EuclideanMatrix.(zeros(SMatrix{3, 3, Complex{T}, 9},9)) +coco_zeros(φ::EuclideanMatrix, ll, mm, kk, T, A) = zeros(typeof(complex(φ)), 9) +#EuclideanMatrix.(zeros(SMatrix{3, 3, Complex{T}, 9},9)) coco_filter(::EuclideanMatrix, ll, mm) = iseven(sum(ll)) && (abs(sum(mm)) <= 2) From c085a441fdac0b0e20832a6ae5db732cbeca62f6 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Sat, 8 Jan 2022 17:16:28 +0000 Subject: [PATCH 07/23] added `test_EuclideanMatrix.jl` to test set --- test/runtests.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/runtests.jl b/test/runtests.jl index b19762ad..de956de8 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -27,6 +27,7 @@ using ACE, Test, Printf, LinearAlgebra, StaticArrays, BenchmarkTools # @testset "Clebsch-Gordan" begin include("test_cg.jl") end @testset "SymmetricBasis" begin include("test_symmbasis.jl") end @testset "EuclideanVector" begin include("test_euclvec.jl") end + @testset "EuclideanMatrix" begin include("test_EuclideanMatrix.jl") end @testset "Multiple SH Bases" begin include("test_multish.jl") end # Model tests From f445e562ef0143a09b1520fc4c8118cf1e519c41 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Sat, 8 Jan 2022 17:28:51 +0000 Subject: [PATCH 08/23] derivative test removed --- test/test_EuclideanMatrix.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index 67bea41f..307c36f4 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -114,10 +114,11 @@ println() ## +#= @info(" ... derivatives") _rrval(x::ACE.XState) = x.rr for ntest = 1:30 - Us = randn(SVector{3, Float64}, length(Xs)) + Us = randn(SMatrix{3, 3, Float64,9 }, length(Xs)) C = randn(typeof(φ.val), length(basis)) F = t -> sum( sum(c .* b.val) for (c, b) in zip(C, ACE.evaluate(basis, ACEConfig(Xs + t[1] * Us))) ) @@ -126,5 +127,6 @@ for ntest = 1:30 print_tf(@test fdtest(F, dF, [0.0], verbose=false)) end println() +=# ## From 9dcc9bb3b6716f6260b1e62003506b0b4d748c88 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Sat, 8 Jan 2022 19:21:13 +0000 Subject: [PATCH 09/23] `show` modified and test for complex version of `EuclideanMatrix` added --- src/properties.jl | 12 ++++++---- test/test_EuclideanMatrix.jl | 45 ++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/properties.jl b/src/properties.jl index 08564d5b..c873d40f 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -250,10 +250,14 @@ struct EuclideanMatrix{T} <: AbstractProperty val::SMatrix{3, 3, T, 9} end -Base.show(io::IO, φ::EuclideanMatrix) = - print(io, "m[$(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3])] -m[$(φ.val[2,1]), $(φ.val[2,2]), $(φ.val[2,3])] -m[$(φ.val[3,1]), $(φ.val[3,2]), $(φ.val[3,3])]") +function Base.show(io::IO, φ::EuclideanMatrix) + print(io, "3x3 EuclideanMatrix:\n") + for i=1:2 + show(io, EuclideanVector(φ.val[i,:])) + print(io, "\n") + end + show(io, EuclideanVector(φ.val[3,:])) +end real(φ::EuclideanMatrix) = EuclideanMatrix(real.(φ.val)) complex(φ::EuclideanMatrix) = EuclideanMatrix(complex(φ.val)) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index 307c36f4..8a311076 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -46,7 +46,6 @@ println(@test(all(test_fio(basis; warntype = false)))) tol = 1e-14 - ## local Xs, BB Xs = rand(PositionState{Float64}, B1p.bases[1], nX) @@ -79,27 +78,27 @@ end println() -# @info("Test equivariance properties for complex version") -# -# basis = SymmetricBasis(φ, pibasis; isreal=false) -# # a stupid but necessary test -# BB = evaluate(basis, cfg) -# BB1 = basis.A2Bmap * evaluate(basis.pibasis, cfg) -# println(@test isapprox(BB, BB1, rtol=1e-10)) # MS: This test will fail for isreal=true -# -# -# @info("check for rotation, permutation and inversion equivariance") -# for ntest = 1:30 -# local Xs, BB -# Xs = rand(PositionState{Float64}, B1p.bases[1], nX) -# BB = evaluate(basis, ACEConfig(Xs)) -# Q = rand([-1,1]) * ACE.Random.rand_rot() -# Xs_rot = Ref(Q) .* shuffle(Xs) -# BB_rot = evaluate(basis, ACEConfig(Xs_rot)) -# print_tf(@test all([ norm(Q' * b1 - b2) < tol -# for (b1, b2) in zip(BB_rot, BB) ])) -# end -# println() +@info("Test equivariance properties for complex version") + +basis = SymmetricBasis(φ, pibasis; isreal=false) +# a stupid but necessary test +BB = evaluate(basis, cfg) +BB1 = basis.A2Bmap * evaluate(basis.pibasis, cfg) +println(@test isapprox(BB, BB1, rtol=1e-10)) # MS: This test will fail for isreal=true + + +@info("check for rotation, permutation and inversion equivariance") +for ntest = 1:30 + local Xs, BB + Xs = rand(PositionState{Float64}, B1p.bases[1], nX) + BB = evaluate(basis, ACEConfig(Xs)) + Q = rand([-1,1]) * ACE.Random.rand_rot() + Xs_rot = Ref(Q) .* shuffle(Xs) + BB_rot = evaluate(basis, ACEConfig(Xs_rot)) + print_tf(@test all([ norm(Q' * b1 * Q - b2) < tol + for (b1, b2) in zip(BB_rot, BB) ])) +end +println() # ## keep for further profiling # @@ -118,7 +117,7 @@ println() @info(" ... derivatives") _rrval(x::ACE.XState) = x.rr for ntest = 1:30 - Us = randn(SMatrix{3, 3, Float64,9 }, length(Xs)) + Us = randn(SVector{3,Float64 }, length(Xs)) C = randn(typeof(φ.val), length(basis)) F = t -> sum( sum(c .* b.val) for (c, b) in zip(C, ACE.evaluate(basis, ACEConfig(Xs + t[1] * Us))) ) From f6ea6e80ea3b2f61f0f5358a47c4a5c4e0314d5a Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Sun, 9 Jan 2022 16:12:32 +0000 Subject: [PATCH 10/23] small fix --- src/properties.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/properties.jl b/src/properties.jl index c873d40f..ae8763e6 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -266,7 +266,7 @@ complex(::Type{EuclideanMatrix{T}}) where {T} = EuclideanMatrix{complex(T)} +(x::SMatrix{3}, y::EuclideanMatrix) = EuclideanMatrix(x + y.val) Base.convert(::Type{SMatrix{3, 3, T, 9}}, φ::EuclideanMatrix) where {T} = convert(SMatrix{3, 3, T, 9}, φ.val) -isrealB(::EuclideanMatrix) where {T} = (T == real(T)) +isrealB(::EuclideanMatrix{T}) where {T} = (T == real(T)) isrealAA(::EuclideanMatrix) = false From c7cdea1ed37aa3d285d028fc763b01667320b7da Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Tue, 11 Jan 2022 23:18:49 +0000 Subject: [PATCH 11/23] additional tests added (some don't pass!) --- test/test_EuclideanMatrix.jl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index 8a311076..73f564be 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -77,6 +77,26 @@ for ntest = 1:30 end println() +@info("Check for symmetry") +for ntest = 1:30 + local Xs, BB + Xs = rand(PositionState{Float64}, B1p.bases[1], nX) + BB = evaluate(basis, ACEConfig(Xs)) + print_tf(@test all([ b.val == transpose(b.val) + for b in BB ])) +end +println() + +@info("Check magnitude of complex part") +for ntest = 1:30 + local Xs, BB + Xs = rand(PositionState{Float64}, B1p.bases[1], nX) + BB = evaluate(basis, ACEConfig(Xs)) + print_tf(@test all([ norm(complex(b)) < .1 + for b in BB ])) +end +println() + @info("Test equivariance properties for complex version") From fa885f2c2fffe652ac72ca0b175090fe1a8e7362 Mon Sep 17 00:00:00 2001 From: Christoph Ortner Date: Tue, 11 Jan 2022 15:56:44 -0800 Subject: [PATCH 12/23] small changes to show and testing --- src/properties.jl | 10 ++++------ test/test_EuclideanMatrix.jl | 9 ++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/properties.jl b/src/properties.jl index ae8763e6..e06037c1 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -251,12 +251,10 @@ struct EuclideanMatrix{T} <: AbstractProperty end function Base.show(io::IO, φ::EuclideanMatrix) - print(io, "3x3 EuclideanMatrix:\n") - for i=1:2 - show(io, EuclideanVector(φ.val[i,:])) - print(io, "\n") - end - show(io, EuclideanVector(φ.val[3,:])) + # println(io, "3x3 $(typeof(φ)):") + println(io, "e[ $(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3]);") + println(io, " $(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3]);") + print(io, " $(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3]) ]") end real(φ::EuclideanMatrix) = EuclideanMatrix(real.(φ.val)) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index 73f564be..5c59ef70 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -78,25 +78,28 @@ end println() @info("Check for symmetry") +@warn(" THIS TEST SHOULD NOT PASS BUT IT DOES!! ") for ntest = 1:30 local Xs, BB Xs = rand(PositionState{Float64}, B1p.bases[1], nX) BB = evaluate(basis, ACEConfig(Xs)) print_tf(@test all([ b.val == transpose(b.val) - for b in BB ])) + for b in BB ])) end println() +## + @info("Check magnitude of complex part") for ntest = 1:30 local Xs, BB Xs = rand(PositionState{Float64}, B1p.bases[1], nX) BB = evaluate(basis, ACEConfig(Xs)) - print_tf(@test all([ norm(complex(b)) < .1 - for b in BB ])) + print_tf(@test all([ norm(imag(b.val)) < .1 for b in BB ])) end println() +## @info("Test equivariance properties for complex version") From ff7a05e2d59e428564315a3749a0acf88a3cb4f3 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Mon, 24 Jan 2022 11:23:04 +0000 Subject: [PATCH 13/23] changes to rotation coefficients - updated implementation of EuclideanVector (moved elementary rotation coefficients to dictionary and changed format) - updated dictionary for elementary rotation coefficients to inlclude l=0,1,2 All tests pass, there are now non-symmetric matrix valued basis functions, BUT the complex part is still not negligible. --- src/bonds.jl | 2 +- src/cov_coeffs_dict.jl | 29 ++ src/equi_coeffs_dict.jl | 540 ++++++++++++++++++++--------------- src/properties.jl | 34 ++- test/test_EuclideanMatrix.jl | 31 +- 5 files changed, 373 insertions(+), 263 deletions(-) create mode 100644 src/cov_coeffs_dict.jl diff --git a/src/bonds.jl b/src/bonds.jl index 005cb9e1..5ce1f5a5 100644 --- a/src/bonds.jl +++ b/src/bonds.jl @@ -42,7 +42,7 @@ cutoff_env(env::CylindricalBondEnvelope) = sqrt(env.rcut^2 + (env.r0cut + env.zc cutoff_radialbasis(env::CylindricalBondEnvelope) = sqrt(env.rcut^2 + (env.zcut + env.floppy * env.λ * env.r0cut)^2) struct EllipsoidBondEnvelope{T} <: BondEnvelope{T} - r0cut::T + r0cut::T # bond-length cutoff rcut::T zcut::T # must satisfy zcut >= r0cut/2 p0::Int diff --git a/src/cov_coeffs_dict.jl b/src/cov_coeffs_dict.jl new file mode 100644 index 00000000..36b637b5 --- /dev/null +++ b/src/cov_coeffs_dict.jl @@ -0,0 +1,29 @@ +crmatrices=Dict( +(l=1, m=-1, mu=-1, i=1) => SVector{3,ComplexF64}(0.1666666666666667+0.0im, 0.0+0.1666666666666667im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=1) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=1) => SVector{3,ComplexF64}(-0.1666666666666667+0.0im, 0.0+-0.1666666666666667im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=1) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, -0.2357022603955158+0.0im), +(l=1, m=0, mu=0, i=1) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=1) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.2357022603955158+0.0im), +(l=1, m=1, mu=-1, i=1) => SVector{3,ComplexF64}(-0.1666666666666667+0.0im, 0.0+0.1666666666666667im, 0.0+0.0im), +(l=1, m=1, mu=0, i=1) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=1) => SVector{3,ComplexF64}(0.1666666666666667+0.0im, 0.0+-0.1666666666666667im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=2) => SVector{3,ComplexF64}(0.0+-0.1666666666666667im, 0.1666666666666667+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=2) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=2) => SVector{3,ComplexF64}(0.0+-0.1666666666666667im, 0.1666666666666667+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=2) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.2357022603955158im), +(l=1, m=0, mu=0, i=2) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=2) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.2357022603955158im), +(l=1, m=1, mu=-1, i=2) => SVector{3,ComplexF64}(0.0+0.1666666666666667im, 0.1666666666666667+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=2) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=2) => SVector{3,ComplexF64}(0.0+0.1666666666666667im, 0.1666666666666667+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=3) => SVector{3,ComplexF64}(-0.2357022603955158+0.0im, 0.0+-0.2357022603955158im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im), +(l=1, m=0, mu=1, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=3) => SVector{3,ComplexF64}(0.2357022603955158+0.0im, 0.0+-0.2357022603955158im, 0.0+0.0im), +(l=1, m=1, mu=1, i=3) => SVector{3,ComplexF64}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im) +) diff --git a/src/equi_coeffs_dict.jl b/src/equi_coeffs_dict.jl index 0217c874..167f08ff 100644 --- a/src/equi_coeffs_dict.jl +++ b/src/equi_coeffs_dict.jl @@ -1,227 +1,317 @@ mrmatrices=Dict( -(-2, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(-1, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, -0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), -(-1, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(0, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), -(0, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im), -(0, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), -(1, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(1, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), -(1, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(2, -2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 1, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), -(-1, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), -(0, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), -(0, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im), -(1, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), -(1, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im), -(2, -2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 1, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(-1, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(-1, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), -(0, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), -(0, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(1, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(1, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 1, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), -(-1, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), -(0, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), -(0, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im), -(1, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), -(1, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im), -(2, -2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 2, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(-1, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, -0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), -(-1, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(0, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), -(0, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im), -(0, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), -(1, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(1, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), -(1, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(2, -2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 2, 2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), -(-1, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), -(-1, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), -(0, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), -(0, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), -(1, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), -(1, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 2, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(-1, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(-1, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), -(0, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), -(0, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), -(1, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), -(1, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 3, 1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), -(-1, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), -(-1, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), -(0, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), -(0, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), -(1, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), -(1, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 3, 2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im, 0.0+-0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-2, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im, 0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im), -(-1, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(-1, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(-0.06666666666666666+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.1333333333333333+0.0im), -(0, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(0, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im), -(1, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(1, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, -1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 0, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0816496580927726+0.0im, 0.0+0.0816496580927726im, 0.0+0.0im, 0.0+0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 1, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), -(2, 2, 3, 3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im) +(l=0, m=0, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.3333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im), +(l=0, m=0, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=0, m=0, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=0, m=0, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=0, m=0, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.3333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im), +(l=0, m=0, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=0, m=0, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=0, m=0, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=0, m=0, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.3333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.3333333333333333+0.0im), +(l=1, m=-1, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, 0.1178511301977579+0.0im, 0.0+0.1178511301977579im, -0.1178511301977579+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, -0.1666666666666667+0.0im, 0.0+0.0im, 0.1666666666666667+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, -0.1178511301977579+0.0im, 0.0+0.1178511301977579im, 0.1178511301977579+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.1178511301977579im, 0.0+0.0im, 0.0+-0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.1178511301977579im, 0.0+0.0im, 0.0+-0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im), +(l=1, m=1, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, -0.1178511301977579+0.0im, 0.0+-0.1178511301977579im, 0.1178511301977579+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.1666666666666667+0.0im, 0.0+0.0im, -0.1666666666666667+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, 0.1178511301977579+0.0im, 0.0+-0.1178511301977579im, -0.1178511301977579+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.1178511301977579+0.0im, 0.0+0.0im, -0.1178511301977579+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, -0.1178511301977579+0.0im, 0.0+0.0im, 0.1178511301977579+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+-0.1178511301977579im, 0.0+0.0im, 0.0+0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+-0.1178511301977579im, 0.0+0.0im, 0.0+0.1178511301977579im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im), +(l=1, m=1, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, -0.1178511301977579+0.0im, 0.0+0.0im, 0.1178511301977579+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.1178511301977579+0.0im, 0.0+0.0im, -0.1178511301977579+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, -0.0833333333333333+0.0im, 0.0+0.0833333333333333im, 0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0833333333333333im, 0.0+0.0im, 0.0+0.0im, 0.0833333333333333+0.0im, 0.0+-0.0833333333333333im, -0.0833333333333333+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=-1, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=0, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=1, m=1, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), +(l=2, m=0, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im), +(l=2, m=0, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), +(l=2, m=1, mu=-2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, -0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), +(l=2, m=1, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=1, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im), +(l=2, m=0, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), +(l=2, m=1, mu=-2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=1, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), +(l=2, m=0, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), +(l=2, m=0, mu=2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=1, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=1, mu=2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=1, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im), +(l=2, m=0, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), +(l=2, m=1, mu=-2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=2, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), +(l=2, m=0, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.03333333333333333+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im), +(l=2, m=0, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), +(l=2, m=1, mu=-2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.04082482904638631im, -0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im), +(l=2, m=1, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.04082482904638631im, 0.0+0.0im, 0.0+0.04082482904638631im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=2, j=2) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), +(l=2, m=0, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), +(l=2, m=0, mu=2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=2, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im), +(l=2, m=0, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.04082482904638631+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im), +(l=2, m=0, mu=2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.05im, -0.05+0.0im, 0.0+0.05im, 0.0+0.0im), +(l=2, m=1, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im), +(l=2, m=1, mu=2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(-0.05+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+-0.05im, -0.05+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=3, j=1) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, -0.05+0.0im, 0.0+0.0im, -0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), +(l=2, m=0, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.04082482904638631im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0816496580927726im), +(l=2, m=0, mu=2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.05im, 0.0+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+0.05im, 0.05+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.05im, 0.05+0.0im, 0.0+0.0im, 0.05+0.0im, 0.0+-0.05im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=3, j=2) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0816496580927726+0.0im, 0.0+0.0816496580927726im, 0.0+0.0im, 0.0+0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-2, mu=2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im), +(l=2, m=-1, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=-1, mu=2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(-0.06666666666666666+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, -0.06666666666666666+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.1333333333333333+0.0im), +(l=2, m=0, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=0, mu=2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+-0.0816496580927726im, 0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im), +(l=2, m=1, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=1, mu=2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=-1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=0, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0816496580927726+0.0im, 0.0+-0.0816496580927726im, 0.0+0.0im, 0.0+-0.0816496580927726im, -0.0816496580927726+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=1, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im), +(l=2, m=2, mu=2, i=3, j=3) => SMatrix{3, 3, ComplexF64, 9}(0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im, 0.0+0.0im) ) diff --git a/src/properties.jl b/src/properties.jl index e06037c1..2a95c251 100644 --- a/src/properties.jl +++ b/src/properties.jl @@ -208,9 +208,14 @@ end coco_init(phi::EuclideanVector{CT}, l, m, μ, T, A) where {CT<:Real} = ( (l == 1 && abs(m) <= 1 && abs(μ) <= 1) - ? [EuclideanVector(rmatrices[m,μ][:,k]) for k=1:3] + ? [EuclideanVector(conj(crmatrices[(l=l,m=-m,mu=-μ,i=i)])) for i=1:3] : coco_zeros(phi, l, m, μ, T, A) ) +#coco_init(phi::EuclideanVector{CT}, l, m, μ, T, A) where {CT<:Real} = ( +# (l == 1 && abs(m) <= 1 && abs(μ) <= 1) +# ? [EuclideanVector(rmatrices[m,μ][:,k]) for k=1:3] +# : coco_zeros(phi, l, m, μ, T, A) ) + # coco_init(phi::EuclideanVector{CT} # this is not needed, since the EuclideanVector should never give us # a constant basis anyhow. Still ... this could become a problem if we @@ -232,17 +237,7 @@ coco_filter(::EuclideanVector, ll, mm, kk) = coco_dot(u1::EuclideanVector, u2::EuclideanVector) = dot(u1.val, u2.val) -rmatrices = Dict( - (-1,-1) => SMatrix{3, 3, ComplexF64, 9}(1/6, 1im/6, 0, -1im/6, 1/6, 0, 0, 0, 0), - (-1,0) => SMatrix{3, 3, ComplexF64, 9}(0, 0, 0, 0, 0, 0, 1/(3*sqrt(2)), 1im/(3*sqrt(2)), 0), - (-1,1) => SMatrix{3, 3, ComplexF64, 9}(-1/6, -1im/6, 0, -1im/6, 1/6, 0, 0, 0, 0), - (0,-1) => SMatrix{3, 3, ComplexF64, 9}(0, 0, 1/(3*sqrt(2)), 0, 0, -1im/(3*sqrt(2)), 0, 0, 0), - (0,0) => SMatrix{3, 3, ComplexF64, 9}(0, 0, 0, 0, 0, 0, 0, 0, 1/3), - (0,1) => SMatrix{3, 3, ComplexF64, 9}(0, 0, -1/(3*sqrt(2)), 0, 0, -1im/(3*sqrt(2)), 0, 0, 0), - (1,-1) => SMatrix{3, 3, ComplexF64, 9}(-1/6, 1im/6, 0, 1im/6, 1/6, 0, 0, 0, 0), - (1,0) => SMatrix{3, 3, ComplexF64, 9}(0, 0, 0, 0, 0, 0, -1/(3*sqrt(2)), 1im/(3*sqrt(2)), 0), - (1,1) => SMatrix{3, 3, ComplexF64, 9}(1/6, -1im/6, 0, 1im/6, 1/6, 0, 0, 0, 0) - ) +include("cov_coeffs_dict.jl") #---------------------- Equivariant matrices @@ -253,8 +248,8 @@ end function Base.show(io::IO, φ::EuclideanMatrix) # println(io, "3x3 $(typeof(φ)):") println(io, "e[ $(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3]);") - println(io, " $(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3]);") - print(io, " $(φ.val[1,1]), $(φ.val[1,2]), $(φ.val[1,3]) ]") + println(io, " $(φ.val[2,1]), $(φ.val[2,2]), $(φ.val[2,3]);") + print(io, " $(φ.val[3,1]), $(φ.val[3,2]), $(φ.val[3,3]) ]") end real(φ::EuclideanMatrix) = EuclideanMatrix(real.(φ.val)) @@ -307,11 +302,14 @@ end # differentiation - cf #27 # *(φ::EuclideanMatrix, dAA::SVector) = φ.val * dAA' +#coco_init(phi::EuclideanMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( +# (l <= 2 && abs(m) <= l && abs(μ) <= l) +# ? vec([EuclideanMatrix(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) +# : coco_zeros(phi, l, m, μ, T, A) ) coco_init(phi::EuclideanMatrix{CT}, l, m, μ, T, A) where {CT<:Real} = ( - (l == 2 && abs(m) <= 2 && abs(μ) <= 2) - ? vec([EuclideanMatrix(conj.(transpose(mrmatrices[(m,μ,i,j)]))) for i=1:3 for j=1:3]) - : coco_zeros(phi, l, m, μ, T, A) ) - + (l <= 2 && abs(m) <= l && abs(μ) <= l) + ? vec([EuclideanMatrix(conj.(mrmatrices[(l=l,m=-m,mu=-μ,i=i,j=j)])) for i=1:3 for j=1:3]) + : coco_zeros(phi, l, m, μ, T, A) ) #coco_init(::EuclideanMatrix{CT}) where {CT<:Real} = [EuclideanMatrix(SMatrix{3,3,Complex{CT},9}([1.0,0,0,0,1.0,0,0,0,1.0]))] coco_type(φ::EuclideanMatrix) = typeof(complex(φ)) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index 5c59ef70..d1c940e9 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -44,20 +44,9 @@ println(@test(all(test_fio(basis; warntype = false)))) @info("Test equivariance properties for real version") -tol = 1e-14 +tol = 1e-12 ## -local Xs, BB -Xs = rand(PositionState{Float64}, B1p.bases[1], nX) -BB = evaluate(basis, ACEConfig(Xs)) -Q = rand([-1,1]) * ACE.Random.rand_rot() -Xs_rot = Ref(Q) .* shuffle(Xs) -BB_rot = evaluate(basis, ACEConfig(Xs_rot)) - -b1 = BB_rot[1] -b2 = BB[1] -diff = Q' * b1 * Q - b2 - # for (b1, b2) in zip(BB_rot, BB) #print_tf(@test all([ norm(Q' * b1 * Q - b2) < tol # for (b1, b2) in zip(BB_rot, BB) ])) @@ -70,35 +59,39 @@ for ntest = 1:30 Q = rand([-1,1]) * ACE.Random.rand_rot() Xs_rot = Ref(Q) .* shuffle(Xs) BB_rot = evaluate(basis, ACEConfig(Xs_rot)) - #print([ norm(Q' * b1 * Q - b2) imtol + @warn( "Large imaginary part for $(ACE.get_spec(basis)[i]), $(norm(imag(b.val)))") + end + end + #println(maximum([ norm(imag(b.val))/ norm(real(b.val)) for b in BBs ])) + #print_tf(@test all([ norm(imag(b.val)) < .1 for b in BB ])) end println() - +print(ACE.get_spec(basis)[1]) ## @info("Test equivariance properties for complex version") From 28ac1fb496d4730ef26c4658f3c89c0b2b0ce886 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Sat, 29 Jan 2022 13:09:04 +0000 Subject: [PATCH 14/23] several changes -new filter added to basis selectors - utils.SymmetricBond_basis extended to include symmetry option for bond sign flip - renamed "test_basisselectors.jl" --- src/basisselectors.jl | 82 ++++++++++++-- src/utils.jl | 11 +- test/runtests.jl | 2 +- test/test_basisselectors.jl | 72 ------------ test/test_bondbasisselectors.jl | 195 ++++++++++++++++++++++++++++++++ 5 files changed, 280 insertions(+), 82 deletions(-) delete mode 100644 test/test_basisselectors.jl create mode 100644 test/test_bondbasisselectors.jl diff --git a/src/basisselectors.jl b/src/basisselectors.jl index f442252f..542a0dce 100644 --- a/src/basisselectors.jl +++ b/src/basisselectors.jl @@ -125,7 +125,7 @@ maxorder(Bsel::SimpleSparseBasis, args...) = """ `AbstractSparseBasis`: Super-type for sparse basis selection as sub-levelsets of the levelset function `level` and corresponding (possibly order-dependent) -levels provided in the dictionary `maxdegs::Dict{Any, Float64}`. In the default +levels provided in the dictionary `maxlevels::Dict{Any, Float64}`. In the default implementation the levelset function and the degree function are identical. Basis functions are selected in two steps. First, "admissible" basis @@ -180,15 +180,15 @@ function SparseBasis(; maxorder::Integer = nothing, p = 1, weight = Dict(:l => 1.0, :n => 1.0), default_maxdeg = nothing, - maxdegs = nothing ) - if (default_maxdeg != nothing) && (maxdegs == nothing ) + maxlevels = nothing ) + if (default_maxdeg != nothing) && (maxlevels == nothing ) return SparseBasis(maxorder, weight, Dict{Any, Float64}("default" => default_maxdeg), p) - elseif (default_maxdeg == nothing) && (maxdegs != nothing) - SparseBasis(maxorder, weight, maxdegs, p) + elseif (default_maxdeg == nothing) && (maxlevels != nothing) + SparseBasis(maxorder, weight, maxlevels, p) else - error("""Either both or neither optional arguments `maxdegs` and + error("""Either both or neither optional arguments `maxlevels` and `default_maxdeg` were provided. To avoid ambiguity ensure that exactly one of these arguments is provided.""") end @@ -279,10 +279,78 @@ cat_weighted_degree(bb::Prodb, Bsel::CategorySparseBasis, basis::OneParticleBasi ) -# --------------------------- + # --------------------------- # Some useful filters struct NoConstant end (::NoConstant)(bb) = (length(bb) > 0) + + +""" +`EvenL`: selects all basis functions where the sum of +""" +struct EvenL + isym::Symbol + categories +end + +function (f::ACE.EvenL)(bb) + if isempty(bb) + return true + else + suml(s) = sum( [getl(O3(), b) for b in bb if getproperty(b, f.isym) == s]) + return all(iseven(suml(s)) for s in f.categories) + end +end + + +#= +""" +`DownsetIntersection`: Basis selector whose set of admissible specifications is the intersection +of the sets of admissible specifications of the sparse basis selectors contained in the lists `DBsels` and `ABsels`. +""" +struct DownsetIntersection <: DownsetBasisSelector + DBsels::Vector{DownsetBasisSelector} + ABsels::Vector{AbstractBasisSelector} + maxorder::Int +end + +maxlevel(Bsel::DownsetIntersection, basis::OneParticleBasis) = 1.0 +maxorder(Bsel::DownsetIntersection) = Bsel.maxorder + + +function Base.intersect(Bsel1::DownsetIntersection,Bsel2::DownsetBasisSelector) + return DownsetIntersection(vcat(Bsel1.DBsels,[Bsel2]), BSel1.ABsels, minimum([maxorder(Bsel1),maxorder(Bsel2)])) +end + +function Base.intersect(Bsel1::DownsetIntersection,Bsel2::AbstractBasisSelector) + return DownsetIntersection(Bsel1.DBsels, vcat(Bsel1.ABsels,[Bsel2]), minimum([maxorder(Bsel1),maxorder(Bsel2)])) +end + +function Base.intersect(Bsel1::DownsetBasisSelector, Bsel2::AbstractBasisSelector) + Bsel = DownsetIntersection(Vector{DownsetBasisSelector}([]), Vector{AbstractBasisSelector}([]), Inf) + return intersect(intersect(Bsel, Bsel1), Bsel2) +end + +Base.intersect(Bsel1::AbstractBasisSelector, Bsel2::DownsetBasisSelector) = intersect(Bsel2,Bsel1) +Base.intersect(Bsel1::AbstractBasisSelector, Bsel2::DownsetIntersection) = intersect(Bsel2,Bsel1) + +function Base.intersect(Bsel1::DownsetIntersection, Bsel2::DownsetIntersection) + Bsel = deepcopy(Bsel1) + for b in Bsel2 + Bsel = intersect(Bsel, b) + end + return Bsel +end + +function level(bb, Bsel::DownsetIntersection, basis::OneParticleBasis) + return maximum([ level(bb, bsel, basis)/maxlevel(bsel,basis) for bsel in Bsel.DBsels]) + #return maximum([ level(bb, bsel, basis)/maxlevel(length(bb),bsel,basis) for bsel in Bsel.DBsels]) +end + +function filter(bb, Bsel::DownsetIntersection, basis::OneParticleBasis) + return all([filter(bb, bsel, basis) for bsel in Bsel.DBsels]) && all([filter(bb, bsel, basis) for bsel in Bsel.ABsels]) +end +=# diff --git a/src/utils.jl b/src/utils.jl index d2a5ee35..d9e7ba3d 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -74,7 +74,7 @@ BondBasisSelector(Bsel::ACE.SparseBasis; weight_cat = Dict(:bond => bond_weight, :env=> env_weight) ) -function SymmetricBond_basis(ϕ::ACE.AbstractProperty, env::ACE.BondEnvelope, Bsel::ACE.SparseBasis; RnYlm = nothing, kwargs...) +function SymmetricBond_basis(ϕ::ACE.AbstractProperty, env::ACE.BondEnvelope, Bsel::ACE.SparseBasis; RnYlm = nothing, bondsymmetry=nothing, kwargs...) BondSelector = BondBasisSelector(Bsel; kwargs...) if RnYlm === nothing RnYlm = RnYlm_1pbasis(; r0 = ACE.cutoff_radialbasis(env), @@ -85,9 +85,16 @@ function SymmetricBond_basis(ϕ::ACE.AbstractProperty, env::ACE.BondEnvelope, Bs kwargs... ) end + filterfun = _->true + if bondsymmetry == "Invariant" + filterfun = ACE.EvenL(:be, [:bond]) + end + if bondsymmetry == "Covariant" + filterfun = x -> !(ACE.EvenL(:be, [:bond])(x)) + end Bc = ACE.Categorical1pBasis([:bond, :env]; varsym = :be, idxsym = :be ) B1p = Bc * RnYlm * env - return ACE.SymmetricBasis(ϕ, B1p, BondSelector) + return ACE.SymmetricBasis(ϕ, B1p, BondSelector; filterfun = filterfun) end # invariant_basis(; kwargs...) = diff --git a/test/runtests.jl b/test/runtests.jl index de956de8..bb0eb471 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -38,7 +38,7 @@ using ACE, Test, Printf, LinearAlgebra, StaticArrays, BenchmarkTools # Experimental material @testset "Multipliers" begin include("test_multiplier.jl") end @testset "Bonds" begin include("test_bonds.jl") end - @testset "BasisSelectors" begin include("test_basisselectors.jl") end + @testset "Bond BasisSelectors" begin include("test_bondbasisselectors.jl") end end diff --git a/test/test_basisselectors.jl b/test/test_basisselectors.jl deleted file mode 100644 index ea74f095..00000000 --- a/test/test_basisselectors.jl +++ /dev/null @@ -1,72 +0,0 @@ -using ACE, Test, ACEbase, ACEbase.Testing, StaticArrays -using ACE.Random: rand_rot, rand_refl -using Random: shuffle - -## -#= -@info("Rudimentary tests for sparse basis selectors and intersections of such") -r0cut = 2.0 -rcut = 1.0 -zcut = 2.0 -env = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= .5) - -maxorder = 3 -dmaxdeg = 4 -Bsel_p2 = ACE.SparseBasis(maxorder; p = 2, default_maxdeg = dmaxdeg) -Bsel_p1 = ACE.SparseBasis(maxorder; p = 1, default_maxdeg = dmaxdeg) - -Bsel_intesect = ACE.intersect(Bsel_p1,Bsel_p2) -B1p = ACE.Utils.RnYlm_1pbasis(; maxdeg=dmaxdeg) -basis_intersect_inv = ACE.SymmetricBasis(ACE.Invariant(), B1p, Bsel_intesect) -=# - -@info("Test bond basis selectors") - -r0cut = 2.0 -rcut = 1.0 -zcut = 2.0 -env = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= .5) - -maxorder = 3 -Bsel = ACE.SparseBasis(; maxorder=maxorder, p = 2, default_maxdeg = 4) - -## - -@info("Test invariance") - - -basis_inv = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env, Bsel; ) -@show length(basis_inv) - -rr0 = SVector{3}(rand(Float64,3)) -cfg = [ ACE.State(rr = SVector{3}(rand(Float64,3)), rr0 = rr0, - be = rand([:bond,:env])) - for _ = 1:10 ] |> ACEConfig -B1_inv = ACE.evaluate(basis_inv, cfg) - -for ntest = 1:30 - Q = rand_refl() * rand_rot() - Xs2 = ACE.shuffle([ ACE.State(rr = Q * X.rr, rr0 = Q * X.rr0, be = X.be) for X in cfg.Xs ]) - B2_inv = ACE.evaluate(basis_inv, ACEConfig(Xs2)) - print_tf(@test isapprox(B1_inv, B2_inv, rtol=1e-10)) -end -println() -@info("Test Euclidian covariance") - -basis_cov = ACE.Utils.SymmetricBond_basis(ACE.EuclideanVector(), env, Bsel; ) -@show length(basis_cov) - -rr0 = SVector{3}(rand(Float64,3)) -cfg = [ ACE.State(rr = SVector{3}(rand(Float64,3)), rr0 = rr0, - be = rand([:bond,:env])) - for _ = 1:10 ] |> ACEConfig -B1_cov = ACE.evaluate(basis_cov, cfg) - - -for ntest = 1:30 - Q = rand_refl() * rand_rot() - Xs2 = ACE.shuffle([ ACE.State(rr = Q * X.rr, rr0 = Q * X.rr0, be = X.be) for X in cfg.Xs ]) - B2_cov = ACE.evaluate(basis_cov, ACEConfig(Xs2)) - print_tf(@test isapprox( map(x->Q*x, B1_cov), B2_cov, rtol=1e-10)) -end -println() \ No newline at end of file diff --git a/test/test_bondbasisselectors.jl b/test/test_bondbasisselectors.jl new file mode 100644 index 00000000..fa0e5fbb --- /dev/null +++ b/test/test_bondbasisselectors.jl @@ -0,0 +1,195 @@ +using ACE, Test, ACEbase, ACEbase.Testing, StaticArrays +using ACE.Random: rand_rot, rand_refl +using Random: shuffle + +## +#= +@info("Rudimentary tests for sparse basis selectors and intersections of such") +r0cut = 2.0 +rcut = 1.0 +zcut = 2.0 +env = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= .5) + +maxorder = 3 +dmaxdeg = 4 +Bsel_p2 = ACE.SparseBasis(maxorder; p = 2, default_maxdeg = dmaxdeg) +Bsel_p1 = ACE.SparseBasis(maxorder; p = 1, default_maxdeg = dmaxdeg) + +Bsel_intesect = ACE.intersect(Bsel_p1,Bsel_p2) +B1p = ACE.Utils.RnYlm_1pbasis(; maxdeg=dmaxdeg) +basis_intersect_inv = ACE.SymmetricBasis(ACE.Invariant(), B1p, Bsel_intesect) +=# + +@info("Test bond basis selectors") + +r0cut = 2.0 +rcut = 1.0 +zcut = 2.0 +env = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= .5) + +maxorder = 3 +Bsel = ACE.SparseBasis(; maxorder=maxorder, p = 2, default_maxdeg = 4) + +## + +@info("Test invariance") + + +basis_inv = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env, Bsel; ) +@show length(basis_inv) + +rr0 = SVector{3}(rand(Float64,3)) +cfg = [ ACE.State(rr = SVector{3}(rand(Float64,3)), rr0 = rr0, + be = rand([:bond,:env])) + for _ = 1:10 ] |> ACEConfig +B1_inv = ACE.evaluate(basis_inv, cfg) + +for ntest = 1:30 + Q = rand_refl() * rand_rot() + Xs2 = ACE.shuffle([ ACE.State(rr = Q * X.rr, rr0 = Q * X.rr0, be = X.be) for X in cfg.Xs ]) + B2_inv = ACE.evaluate(basis_inv, ACEConfig(Xs2)) + print_tf(@test isapprox(B1_inv, B2_inv, rtol=1e-10)) +end +println() +@info("Test Euclidian covariance") + +tol = 10^-14 +for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] + + basis = ACE.Utils.SymmetricBond_basis(property, env, Bsel; ) + @show length(basis) + + rr0 = SVector{3}(rand(Float64,3)) + cfg = [ ACE.State(rr = SVector{3}(rand(Float64,3)), rr0 = rr0, + be = rand([:bond,:env])) + for _ = 1:10 ] |> ACEConfig + B1 = ACE.evaluate(basis, cfg) + + println("------------------------------------------------------------") + @info("Test rotation-equivariance for property $(typeof(property))") + + for ntest = 1:30 + Q = rand_refl() * rand_rot() + Xs2 = ACE.shuffle([ ACE.State(rr = Q * X.rr, rr0 = Q * X.rr0, be = X.be) for X in cfg.Xs ]) + B2 = ACE.evaluate(basis, ACEConfig(Xs2)) + if property == ACE.Invariant() + print_tf(@test isapprox(B1, B2, rtol=tol)) + elseif property == ACE.EuclideanVector() + print_tf(@test isapprox( map(x->Q*x, B1), B2, rtol=tol)) + elseif property == ACE.EuclideanMatrix() + print_tf(@test isapprox( map(x->Q * x * Q', B1), B2, rtol=tol)) + end + end + println() +end + + +env0 = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut; p0=1, pr=1, floppy=false, λ= 0.0) + +maxorder = 2 +Bsel = ACE.SparseBasis(;maxorder=maxorder, p = 2, default_maxdeg = 5) + +RnYlm = ACE.Utils.RnYlm_1pbasis(; r0 = ACE.cutoff_radialbasis(env), + rin = 0.0, + trans = PolyTransform(1, ACE.cutoff_radialbasis(env)), + pcut = 0, + pin = 0, Bsel = Bsel + ) + +function get_config(X::Vector{SVector{3, Float64}}, k::Int, j::Int) + n = length(X) + Js = [i for i = 1:n if i != k] + Rs = [X[i] - X[k] for i = 1:n if i != k] + ba = (j=j,r= X[j] - X[k]) + config = [ ACE.State(rr = (j==ba.j ? ba.r : r-.5 * ba.r), rr0 = ba.r, be = (j==ba.j ? :bond : :env )) for (j,r) in zip(Js, Rs)] |> ACEConfig + return config +end + + +evaluate_onsite!(B::AbstractVector{Matrix{SMatrix{3,3,T,9}}}, m::E2MatrixModel, at::AbstractAtoms, k::Int, nlist::PairList) + +k=1 +j=2 +tol = 10^-5 +#env0 = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= 0.0) +for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] + + basis = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Invariant" ) + @show length(basis) + + rr0 = SVector{3}(rand(Float64,3)) + X = [ SVector{3}(rand(Float64,3)) for _ = 1:11 ] + cfg = get_config(X, k, j) + B1 = ACE.evaluate(basis, cfg) + + println("------------------------------------------------------------") + @info("Test rotation-equivariance for property $(typeof(property))") + + for ntest = 1:30 + Q = rand_refl() * rand_rot() + X2 = [Q * x for x in X] + cfg2 = get_config(X2, k, j) + B2 = ACE.evaluate(basis, cfg2) + if property == ACE.Invariant() + print_tf(@test isapprox(B1, B2, rtol=tol)) + elseif property == ACE.EuclideanVector() + print_tf(@test isapprox( map(x->Q*x, B1), B2, rtol=tol)) + elseif property == ACE.EuclideanMatrix() + print_tf(@test isapprox( map(x->Q * x * Q', B1), B2, rtol=tol)) + end + end + println() +end + +@info("Test bond-symmetry conditions") + +using LinearAlgebra +tol = 10^-15 +env = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= 0.0); + + + +for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] + + println("------------------------------------------------------------") + @info("Test bond-symmetry conditions for property $(typeof(property))") + println() + basis_bondinv = ACE.Utils.SymmetricBond_basis(property, env, Bsel; bondsymmetry="Invariant"); + #@show length(basis_bondinv ); + + @info("Test for invariance under bond inversion"); + for ntest = 1:300 + rr0 = SVector{3}(rand(Float64,3)); + randX = [ SVector{3}(rand(Float64,3)) for _ =1:10]; + cfg1 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = rr0, be = :env) for r in randX ] , [ACE.State(rr = rr0, rr0 = rr0, be = :bond)]) |> ACEConfig; + cfg2 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = -rr0, be = :env) for r in randX ] , [ACE.State(rr = -rr0, rr0 = -rr0, be = :bond)]) |> ACEConfig; + B1 = ACE.evaluate(basis_bondinv , cfg1); + B2 = ACE.evaluate(basis_bondinv, cfg2); + print_tf(@test all([ norm(b1-b2) < tol for (b1,b2) in zip(B1,B2)])); + end + println() + + + @info("Test for covariance under bond inversion"); + basis_bondcov = ACE.Utils.SymmetricBond_basis(property, env, Bsel; bondsymmetry="Covariant"); + #@show length(basis_bondcov ); + for ntest = 1:300 + rr0 = SVector{3}(rand(Float64,3)); + randX = [ SVector{3}(rand(Float64,3)) for _ =1:10]; + cfg1 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = rr0, be = :env) for r in randX ] , [ACE.State(rr = rr0, rr0 = rr0, be = :bond)]) |> ACEConfig; + cfg2 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = -rr0, be = :env) for r in randX ] , [ACE.State(rr = -rr0, rr0 = -rr0, be = :bond)]) |> ACEConfig; + B1 = ACE.evaluate(basis_bondcov, cfg1); + B2 = ACE.evaluate(basis_bondcov, cfg2); + print_tf(@test all([ norm(b1+b2) < tol for (b1,b2) in zip(B1,B2)])); + end + println() + + +end + + + + + + + From 48bca8371c3106d6f1d38744f3fe88efa271a8f6 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Mon, 31 Jan 2022 20:54:40 +0000 Subject: [PATCH 15/23] small change to tests --- test/test_bondbasisselectors.jl | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/test/test_bondbasisselectors.jl b/test/test_bondbasisselectors.jl index fa0e5fbb..9e3c2a1e 100644 --- a/test/test_bondbasisselectors.jl +++ b/test/test_bondbasisselectors.jl @@ -31,27 +31,7 @@ maxorder = 3 Bsel = ACE.SparseBasis(; maxorder=maxorder, p = 2, default_maxdeg = 4) ## - -@info("Test invariance") - - -basis_inv = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env, Bsel; ) -@show length(basis_inv) - -rr0 = SVector{3}(rand(Float64,3)) -cfg = [ ACE.State(rr = SVector{3}(rand(Float64,3)), rr0 = rr0, - be = rand([:bond,:env])) - for _ = 1:10 ] |> ACEConfig -B1_inv = ACE.evaluate(basis_inv, cfg) - -for ntest = 1:30 - Q = rand_refl() * rand_rot() - Xs2 = ACE.shuffle([ ACE.State(rr = Q * X.rr, rr0 = Q * X.rr0, be = X.be) for X in cfg.Xs ]) - B2_inv = ACE.evaluate(basis_inv, ACEConfig(Xs2)) - print_tf(@test isapprox(B1_inv, B2_inv, rtol=1e-10)) -end -println() -@info("Test Euclidian covariance") +@info("Test rotation-equivariance properties") tol = 10^-14 for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] @@ -66,7 +46,7 @@ for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] B1 = ACE.evaluate(basis, cfg) println("------------------------------------------------------------") - @info("Test rotation-equivariance for property $(typeof(property))") + @info("Test rotation-equivariance for property $(typeof(property)) with tol = $tol") for ntest = 1:30 Q = rand_refl() * rand_rot() From 09918210ddeac412e81a5648fd9a8c1d7f5cf9df Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Mon, 31 Jan 2022 21:32:32 +0000 Subject: [PATCH 16/23] clean-up in tests for bond basis selectors --- test/test_bondbasisselectors.jl | 87 +++++++++++++++++---------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/test/test_bondbasisselectors.jl b/test/test_bondbasisselectors.jl index 9e3c2a1e..f1535041 100644 --- a/test/test_bondbasisselectors.jl +++ b/test/test_bondbasisselectors.jl @@ -1,7 +1,6 @@ using ACE, Test, ACEbase, ACEbase.Testing, StaticArrays using ACE.Random: rand_rot, rand_refl using Random: shuffle - ## #= @info("Rudimentary tests for sparse basis selectors and intersections of such") @@ -85,56 +84,58 @@ function get_config(X::Vector{SVector{3, Float64}}, k::Int, j::Int) return config end - -evaluate_onsite!(B::AbstractVector{Matrix{SMatrix{3,3,T,9}}}, m::E2MatrixModel, at::AbstractAtoms, k::Int, nlist::PairList) - -k=1 -j=2 -tol = 10^-5 +basis = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env0, Bsel; bondsymmetry="Invariant" ) +length(basis) +basis = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env0, Bsel;) +length(basis) +basis = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env0, Bsel;bondsymmetry="Covariant") +length(basis) +n_particle = 11 +tol = 10^-14 #env0 = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= 0.0) -for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] - - basis = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Invariant" ) - @show length(basis) - - rr0 = SVector{3}(rand(Float64,3)) - X = [ SVector{3}(rand(Float64,3)) for _ = 1:11 ] - cfg = get_config(X, k, j) - B1 = ACE.evaluate(basis, cfg) - - println("------------------------------------------------------------") - @info("Test rotation-equivariance for property $(typeof(property))") - - for ntest = 1:30 - Q = rand_refl() * rand_rot() - X2 = [Q * x for x in X] - cfg2 = get_config(X2, k, j) - B2 = ACE.evaluate(basis, cfg2) - if property == ACE.Invariant() - print_tf(@test isapprox(B1, B2, rtol=tol)) - elseif property == ACE.EuclideanVector() - print_tf(@test isapprox( map(x->Q*x, B1), B2, rtol=tol)) - elseif property == ACE.EuclideanMatrix() - print_tf(@test isapprox( map(x->Q * x * Q', B1), B2, rtol=tol)) +@info("Test equivariance properties under bond symmetry constraints"); +for bs in ["Invariant", "Covariant"] + for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] + + k= rand(1:n_particle) + j= rand([ i for i =1:n_particle if i != k]) + basis = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Invariant" ) + @show length(basis) + + rr0 = SVector{3}(rand(Float64,3)) + X = [ SVector{3}(rand(Float64,3)) for _ = 1:n_particle ] + cfg = get_config(X, k, j) + B1 = ACE.evaluate(basis, cfg) + + println("------------------------------------------------------------") + @info( string("Test rotation-equivariance for property $(typeof(property)) and bond symmetry of type ", bs)) + + for ntest = 1:30 + Q = rand_refl() * rand_rot() + X2 = [Q * x for x in X] + cfg2 = get_config(X2, k, j) + B2 = ACE.evaluate(basis, cfg2) + if property == ACE.Invariant() + print_tf(@test isapprox(B1, B2, rtol=tol)) + elseif property == ACE.EuclideanVector() + print_tf(@test isapprox( map(x->Q*x, B1), B2, rtol=tol)) + elseif property == ACE.EuclideanMatrix() + print_tf(@test isapprox( map(x->Q * x * Q', B1), B2, rtol=tol)) + end end + println() end - println() end @info("Test bond-symmetry conditions") -using LinearAlgebra -tol = 10^-15 -env = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= 0.0); - - - +tol = 10^-10 for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] println("------------------------------------------------------------") - @info("Test bond-symmetry conditions for property $(typeof(property))") + @info("Test bond-symmetry conditions for property $(typeof(property)) and tolerance tol = $tol") println() - basis_bondinv = ACE.Utils.SymmetricBond_basis(property, env, Bsel; bondsymmetry="Invariant"); + basis_bondinv = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Invariant"); #@show length(basis_bondinv ); @info("Test for invariance under bond inversion"); @@ -145,13 +146,13 @@ for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] cfg2 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = -rr0, be = :env) for r in randX ] , [ACE.State(rr = -rr0, rr0 = -rr0, be = :bond)]) |> ACEConfig; B1 = ACE.evaluate(basis_bondinv , cfg1); B2 = ACE.evaluate(basis_bondinv, cfg2); - print_tf(@test all([ norm(b1-b2) < tol for (b1,b2) in zip(B1,B2)])); + print_tf(@test all([ isapprox(b1.val,b2.val, rtol = tol) for (b1,b2) in zip(B1,B2)])); end println() @info("Test for covariance under bond inversion"); - basis_bondcov = ACE.Utils.SymmetricBond_basis(property, env, Bsel; bondsymmetry="Covariant"); + basis_bondcov = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Covariant"); #@show length(basis_bondcov ); for ntest = 1:300 rr0 = SVector{3}(rand(Float64,3)); @@ -160,7 +161,7 @@ for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] cfg2 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = -rr0, be = :env) for r in randX ] , [ACE.State(rr = -rr0, rr0 = -rr0, be = :bond)]) |> ACEConfig; B1 = ACE.evaluate(basis_bondcov, cfg1); B2 = ACE.evaluate(basis_bondcov, cfg2); - print_tf(@test all([ norm(b1+b2) < tol for (b1,b2) in zip(B1,B2)])); + print_tf(@test all([ isapprox(b1.val,-b2.val, rtol = tol) for (b1,b2) in zip(B1,B2)])); end println() From a06a3034b7d31bc411926f9cf3811b27be889593 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Mon, 31 Jan 2022 21:34:40 +0000 Subject: [PATCH 17/23] update --- test/test_bondbasisselectors.jl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/test_bondbasisselectors.jl b/test/test_bondbasisselectors.jl index f1535041..22ca02b1 100644 --- a/test/test_bondbasisselectors.jl +++ b/test/test_bondbasisselectors.jl @@ -84,12 +84,6 @@ function get_config(X::Vector{SVector{3, Float64}}, k::Int, j::Int) return config end -basis = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env0, Bsel; bondsymmetry="Invariant" ) -length(basis) -basis = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env0, Bsel;) -length(basis) -basis = ACE.Utils.SymmetricBond_basis(ACE.Invariant(), env0, Bsel;bondsymmetry="Covariant") -length(basis) n_particle = 11 tol = 10^-14 #env0 = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= 0.0) From e856741b89aa75e902eda4ef117cd66e732a99aa Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Wed, 2 Feb 2022 18:33:38 +0000 Subject: [PATCH 18/23] Documentation of filter function EvenL updated --- src/basisselectors.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basisselectors.jl b/src/basisselectors.jl index b9fc986c..efd5b6e8 100644 --- a/src/basisselectors.jl +++ b/src/basisselectors.jl @@ -292,7 +292,7 @@ end """ -`EvenL`: selects all basis functions where the sum of +`EvenL`: selects all basis functions where the sum `L = \sum_i l_i` of the degrees `l_i` of the spherical harmonics is even. """ struct EvenL isym::Symbol From e02dd3663751c92c00c2788d31511a54a29406ed Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Wed, 2 Feb 2022 18:39:19 +0000 Subject: [PATCH 19/23] edit fixed --- src/basisselectors.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basisselectors.jl b/src/basisselectors.jl index efd5b6e8..67fcc8af 100644 --- a/src/basisselectors.jl +++ b/src/basisselectors.jl @@ -292,7 +292,7 @@ end """ -`EvenL`: selects all basis functions where the sum `L = \sum_i l_i` of the degrees `l_i` of the spherical harmonics is even. +`EvenL`: selects all basis functions where the sum `L = sum_i l_i` of the degrees `l_i` of the spherical harmonics is even. """ struct EvenL isym::Symbol From 6793aae46d5ae2d1e038c9b3801bb25f4a6534d6 Mon Sep 17 00:00:00 2001 From: Christoph Ortner Date: Fri, 4 Feb 2022 13:49:48 -0800 Subject: [PATCH 20/23] slim printing of test --- test/test_EuclideanMatrix.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index d1c940e9..d37d8497 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -38,7 +38,7 @@ end @info("Test FIO") using ACEbase.Testing: test_fio -println(@test(all(test_fio(basis; warntype = false)))) +println_slim(@test(all(test_fio(basis; warntype = false)))) ## @@ -100,7 +100,7 @@ basis = SymmetricBasis(φ, pibasis; isreal=false) # a stupid but necessary test BB = evaluate(basis, cfg) BB1 = basis.A2Bmap * evaluate(basis.pibasis, cfg) -println(@test isapprox(BB, BB1, rtol=1e-10)) # MS: This test will fail for isreal=true +println_slim(@test isapprox(BB, BB1, rtol=1e-10)) # MS: This test will fail for isreal=true @info("check for rotation, permutation and inversion equivariance") From 1501aca2addf40d4cbdf508d7bc951560a287e82 Mon Sep 17 00:00:00 2001 From: Christoph Ortner Date: Thu, 3 Mar 2022 10:31:11 -0800 Subject: [PATCH 21/23] fix sparsification for bses without symbol --- src/product_1pbasis.jl | 7 ++++++- test/test_EuclideanMatrix.jl | 1 + test/test_bondbasisselectors.jl | 11 ++++++++--- test/test_sparsify.jl | 2 +- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/product_1pbasis.jl b/src/product_1pbasis.jl index c3e3fb2f..6ef4ecaa 100644 --- a/src/product_1pbasis.jl +++ b/src/product_1pbasis.jl @@ -292,8 +292,13 @@ this performs some generic work to sparsify a 1p-basis component. but the actual sparsificatin happens in the individual basis implementations """ function _sparsify_component!(basis1p, keep) - # get rid of all info we don't need + # if basis1p has no symbols (e.g. a multiplier) then it means it must + # be a one-component basis, so there is nothing to sparsify. syms = symbols(basis1p) + if isempty(syms) + return basis1p + end + # get rid of all info we don't need keep1 = unique( select.(keep, Ref(syms)) ) # double-check that keep1 is compatible spec = get_spec(basis1p) diff --git a/test/test_EuclideanMatrix.jl b/test/test_EuclideanMatrix.jl index d37d8497..f44d4c79 100644 --- a/test/test_EuclideanMatrix.jl +++ b/test/test_EuclideanMatrix.jl @@ -92,6 +92,7 @@ for ntest = 1:30 end println() print(ACE.get_spec(basis)[1]) + ## @info("Test equivariance properties for complex version") diff --git a/test/test_bondbasisselectors.jl b/test/test_bondbasisselectors.jl index 22ca02b1..984081c2 100644 --- a/test/test_bondbasisselectors.jl +++ b/test/test_bondbasisselectors.jl @@ -34,7 +34,7 @@ Bsel = ACE.SparseBasis(; maxorder=maxorder, p = 2, default_maxdeg = 4) tol = 10^-14 for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] - + local basis, cfg, B1 basis = ACE.Utils.SymmetricBond_basis(property, env, Bsel; ) @show length(basis) @@ -84,16 +84,18 @@ function get_config(X::Vector{SVector{3, Float64}}, k::Int, j::Int) return config end +## + n_particle = 11 tol = 10^-14 #env0 = ACE.EllipsoidBondEnvelope(r0cut, rcut, zcut;floppy=false, λ= 0.0) @info("Test equivariance properties under bond symmetry constraints"); for bs in ["Invariant", "Covariant"] for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] - + local basis, X, cfg, B1 k= rand(1:n_particle) j= rand([ i for i =1:n_particle if i != k]) - basis = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Invariant" ) + basis = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry=bs ) @show length(basis) rr0 = SVector{3}(rand(Float64,3)) @@ -121,6 +123,7 @@ for bs in ["Invariant", "Covariant"] end end +## @info("Test bond-symmetry conditions") tol = 10^-10 @@ -134,6 +137,7 @@ for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] @info("Test for invariance under bond inversion"); for ntest = 1:300 + local B1 rr0 = SVector{3}(rand(Float64,3)); randX = [ SVector{3}(rand(Float64,3)) for _ =1:10]; cfg1 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = rr0, be = :env) for r in randX ] , [ACE.State(rr = rr0, rr0 = rr0, be = :bond)]) |> ACEConfig; @@ -149,6 +153,7 @@ for property in [ACE.Invariant(), ACE.EuclideanVector(), ACE.EuclideanMatrix()] basis_bondcov = ACE.Utils.SymmetricBond_basis(property, env0, Bsel; bondsymmetry="Covariant"); #@show length(basis_bondcov ); for ntest = 1:300 + local B1 rr0 = SVector{3}(rand(Float64,3)); randX = [ SVector{3}(rand(Float64,3)) for _ =1:10]; cfg1 = vcat( [ ACE.State(rr = r-.5*rr0, rr0 = rr0, be = :env) for r in randX ] , [ACE.State(rr = rr0, rr0 = rr0, be = :bond)]) |> ACEConfig; diff --git a/test/test_sparsify.jl b/test/test_sparsify.jl index 4e71bd56..68cc45e8 100644 --- a/test/test_sparsify.jl +++ b/test/test_sparsify.jl @@ -43,7 +43,7 @@ println() @info("check evaluation is consistent") for ntest = 1:30 - local cfg + local cfg , BB1 cfg = [ State(rr = ACE.rand_radial(B1p["Rn"]) * ACE.rand_sphere()) for _=1:10 ] BB1 = evaluate(symB, cfg) BB2 = evaluate(symB2, cfg) From 8e178e03df02097ea4d9a3ff89a7c56edca491f8 Mon Sep 17 00:00:00 2001 From: Christoph Ortner Date: Thu, 3 Mar 2022 10:52:15 -0800 Subject: [PATCH 22/23] added mixed license text --- README.md | 4 +--- license/contrib.md | 4 ++++ license/mit.md | 5 +++++ 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 license/contrib.md create mode 100644 license/mit.md diff --git a/README.md b/README.md index d73f01e6..d9fb4527 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,7 @@ See [Documentation](https://acesuit.github.io/ACE.jl/dev/) for more details on A ## License -`ACE.jl` is © 2019, Christoph Ortner - -`ACE.jl` is published and distributed under the [Academic Software License v1.0 (ASL).](ASL.md) +The majority of `ACE.jl` is published and distributed under the [Academic Software License v1.0 (ASL).](ASL.md). Some parts are distributed under the more permissive [The MIT License](https://opensource.org/licenses/MIT) - see `/license/MIT.md' for further details. `ACE.jl` is distributed in the hope that it will be useful for non-commercial academic research, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ASL for more details. diff --git a/license/contrib.md b/license/contrib.md new file mode 100644 index 00000000..0b6c4d4e --- /dev/null +++ b/license/contrib.md @@ -0,0 +1,4 @@ +Contributions made in the following commits are licensed under the MIT Software License, cf. MIT.md. Contributors agree to their contributions to be licensed in this way by committing changes to this license file. All other contributions are licensed under ASL. + +Commit - Contributer (github name, full name) + diff --git a/license/mit.md b/license/mit.md new file mode 100644 index 00000000..1f95d26c --- /dev/null +++ b/license/mit.md @@ -0,0 +1,5 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 298c8c3284d23365fb35ff3f5314a1f07ca2b071 Mon Sep 17 00:00:00 2001 From: Matthias Sachs Date: Thu, 3 Mar 2022 18:59:56 +0000 Subject: [PATCH 23/23] license stuff --- license/contrib.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/license/contrib.md b/license/contrib.md index 0b6c4d4e..05387c38 100644 --- a/license/contrib.md +++ b/license/contrib.md @@ -1,4 +1,25 @@ Contributions made in the following commits are licensed under the MIT Software License, cf. MIT.md. Contributors agree to their contributions to be licensed in this way by committing changes to this license file. All other contributions are licensed under ASL. -Commit - Contributer (github name, full name) +Commit - Contributer (Github username) +e6ba0362d5d062b67b99f4802b3ac84be0975e08 - MatthiasSachs +8dc35260e82afbd1dbc5c69159cdd368e6d33a51 - MatthiasSachs +75d5b6a2bec95ec56518a3298cb10899b28a5139 - MatthiasSachs +d1fa4129fa909e2c8b04a63b5a6520f1e80fb634 - MatthiasSachs +f81c451d346b311610b0f6de7a59635328322183 - MatthiasSachs +c085a441fdac0b0e20832a6ae5db732cbeca62f6 - MatthiasSachs +f445e562ef0143a09b1520fc4c8118cf1e519c41 - MatthiasSachs +9dcc9bb3b6716f6260b1e62003506b0b4d748c88 - MatthiasSachs +f6ea6e80ea3b2f61f0f5358a47c4a5c4e0314d5a - MatthiasSachs +c7cdea1ed37aa3d285d028fc763b01667320b7da - MatthiasSachs +ff7a05e2d59e428564315a3749a0acf88a3cb4f3 - MatthiasSachs +28ac1fb496d4730ef26c4658f3c89c0b2b0ce886 - MatthiasSachs +b035504dfaf41b8418a2d1fc04b95458eb65459e - MatthiasSachs +48bca8371c3106d6f1d38744f3fe88efa271a8f6 - MatthiasSachs +09918210ddeac412e81a5648fd9a8c1d7f5cf9df - MatthiasSachs +a06a3034b7d31bc411926f9cf3811b27be889593 - MatthiasSachs +e856741b89aa75e902eda4ef117cd66e732a99aa - MatthiasSachs +e02dd3663751c92c00c2788d31511a54a29406ed - MatthiasSachs +4b82aece333ef1e010f9f927f2873d5676d439ed - MatthiasSachs + +-- \ No newline at end of file