Irreducible Representation

E3NN.O3.IrrepType

Irrreducible representations of $O(3)$.

This struct does not contain any data; it is a structure that describes the representation. It is typically used as an argument in other parts of the library to define the input and output representations of functions.

Fields:

  • l::Int: non-negative integer, the degree of the representation, $l = 0, 1, \dots$
  • p::Int: the parity of the representation, either 1 (even) or -1 (odd)

The degree $l$ corresponds to the angular momentum quantum number and defines the dimension of the irrep, with $l = 0$ representing a scalar, $l = 1$ a vector, and higher $l$ values corresponding to tensor-like objects.

source
E3NN.O3.IrrepMethod
Irrep(ir::T) where {T <: AbstractString}

Instantiate a new O3.Irrep object from it's string representation.

The string representation should be of the form l followed by "e" or "o" for even or odd parity, respectively. There can also be a "y" at the end, which is used to represent the parity of the spherical harmonics.

  • "e" for even parity, translates to p=1
  • "o" for odd parity, translates to p=-1
  • "y" for the parity of the spherical harmonics, translates to p=$(-1)^l$

Examples

Create a vector representation ($l=1$) of the parity of the spherical harmonics ($-1^l$) gives odd parity):

julia> Irrep("1y")
1o
source
E3NN.O3.IrrepMethod
Irrep(l::Integer, p::Integer)

Instantiate a new O3.Irrep object.

Examples:

Create a scalar representation ($l=0$) of even parity:

julia> Irrep(0, 1)
0e

Create a pseudotensor representation ($l=2$) of odd parity:

julia> Irrep(2, -1)
2o
source
E3NN.O3.IrrepsType
Irreps

Direct sum of irreducible representations of $O(3)$.

This struct does not contain any data, it is a structure that describes the representation.

Examples

# Create a representation of 100 l=0 of even parity and 50 pseudo-vectors.
julia> x = Irreps([(100, (0, 1)), (50, (1, 1))])
100x0e+50x1e

julia> dim(x)
250

# Create a representation of 100 l=0 of even parity and 50 pseudo-vectors.
julia> Irreps("100x0e + 50x1e")
100x0e+50x1e

julia> Irreps("100x0e + 50x1e + 0x2e")
100x0e+50x1e+0x2e

julia> Irreps("100x0e + 50x1e + 0x2e") |> lmax
1

julia> Irrep("2e") in irs("0e + 2e")
true

# Empty Irreps
julia> Irreps(), Irreps("")
(, )
source
E3NN.O3.dimMethod
dim(x::Irreps)

Returns the dimension representation of Irreps, $2l+1$

source
E3NN.O3.isscalarMethod
isscalar(x::Irrep)

Check if the irrep is a scalar representation. Equivalent to x.l == 0 && x.p == 1.

source