Irreducible Representation
E3NN.O3.Irrep
— TypeIrrreducible 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.
E3NN.O3.Irrep
— MethodIrrep(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
E3NN.O3.Irrep
— MethodIrrep(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
E3NN.O3.Irrep
— MethodIrrep(ir::Tuple{Integer, Integer})
Instantiate a new O3.Irrep
object from a tuple of (l
, p
).
E3NN.O3.Irreps
— TypeIrreps
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("")
(, )
E3NN.O3.dim
— Methoddim(x::Irreps)
Returns the dimension representation of Irreps
, $2l+1$
E3NN.O3.isscalar
— Methodisscalar(x::Irrep)
Check if the irrep is a scalar representation. Equivalent to x.l == 0 && x.p == 1
.