Symmetry Operation
AbstractSpaceSymmetryOperation
LatticeTools.AbstractSpaceSymmetryOperation
— TypeAbstractSpaceSymmetryOperation{S<:Real}
Abstract space symmetry operation, i.e. translation, point, and space operation. See also TranslationOperation
, PointOperation
, SpaceOperation
.
LatticeTools.domaintype
— Methoddomaintype(arg::AbstractSpaceSymmetryOperation{S}) where {S<:Real}
Domain type of arg
, i.e. the type of the coordinates.
IdentityOperation
LatticeTools.IdentityOperation
— TypeIdentityOperation{S<:Real} <: AbstractSpaceSymmetryOperation{S}
Represents identity (space symmetry) operation
Fields
dimension::Int
: dimension of the space on which the identity operation acts
Constructors
LatticeTools.IdentityOperation
— MethodIdentityOperation(S, dim::Integer)
Construct an identity operation of dimension dim
, on coordinates of type S
.
Properties
LatticeTools.isidentity
— Methodisidentity(arg::IdentityOperation)
Check whether the argument is an identity. Always true
.
LatticeTools.istranslation
— Methodistranslation(arg::IdentityOperation)
Check whether the argument is a translation operation. Always true
.
LatticeTools.ispoint
— Methodispoint(arg::IdentityOperation)
Check whether the argument is a point operation. Always true
.
LatticeTools.dimension
— Methoddimension(arg::IdentityOperation)
Return the spatial dimension of the identity operation.
Apply
LatticeTools.apply_operation
— Methodapply_operation(identity{S}, coordinate::AbstractArray{S}) where {S<:Real}
Do nothing.
TranslationOperation
LatticeTools.TranslationOperation
— TypeTranslationOperation{S<:Real}
Represents translation symmetry operation
Fields
displacement
: displacement vector
Examples
julia> using LatticeTools
julia> TranslationOperation([1, 2])
TranslationOperation{Int64}([1, 2])
julia> TranslationOperation([0.5, 0.0, 0.5])
TranslationOperation{Float64}([0.5, 0.0, 0.5])
Constructors
LatticeTools.TranslationOperation
— MethodTranslationOperation{S}(displacement::AbstractVector{<:Real}) where {S}
Construct a translation operation of displacement
on coordinate space of type S
.
LatticeTools.TranslationOperation
— MethodTranslationOperation{S}(displacement::AbstractVector{<:Real}) where {S}
Construct a translation operation of displacement
on coordinate space of type S
.
TranslationOperation(displacement::AbstractVector{S}) where {S<:Real}
Construct a translation operation of displacement
on coordinate space of type S
.
Properties
LatticeTools.isidentity
— Methodisidentity(t::TranslationOperation)
Return true if the translation operation is an identity, i.e. iszero(t.displacement)
LatticeTools.istranslation
— Methodistranslation(arg::TranslationOperation)
Always return true
, since arg
is already a translation operation.
LatticeTools.ispoint
— Methodispoint(arg::TranslationOperation)
Return true
if arg
is a point operation. The only way this can be true is when arg
is an identity operation.
LatticeTools.dimension
— Methoddimension(arg::TranslationOperation)
Spatial dimension of the translation operation
Apply
LatticeTools.apply_operation
— Methodapply_operation(symop::TranslationOperation{S}, coordinate::AbstractArray{S}) where S
Return the translated coordinate.
PointOperation
LatticeTools.PointOperation
— TypePointOperation{S<:Real}
Represents point symmetry operation
Fields
matrix
: rotation/mirror/inversion matrix
Constructors
LatticeTools.PointOperation
— MethodPointOperation(matrix::AbstractMatrix{S}) where {S<:Real}
Construct a point operation with matrix
.
Properties
LatticeTools.isidentity
— Methodisidentity(arg::PointOperation)
Check whether arg
is identity.
LatticeTools.istranslation
— Methodistranslation(arg::PointOperation)
Check whether arg
is a translation operation, i.e. identity.
LatticeTools.ispoint
— Methodispoint(arg::PointOperation)
Check whether arg
is a point operation. Always true
.
LatticeTools.dimension
— Methoddimension(arg::PointOperation)
Return spatial dimension of arg
.
Apply
LatticeTools.apply_operation
— Methodapply_operation(symop::PointOperation{S}, coordinate::AbstractArray{S}) where {S}
Apply point operation to the coordinates.
SpaceOperation
LatticeTools.SpaceOperation
— TypeSpaceOperation{Tp<:Real, Tt<:Real}
Represent a spatial symmetry operation of the following form:
\[S_{[M, \mathbf{R}]}: \mathbf{r} \mapsto M \cdot ( \mathbf{r} + \mathbf{R} )\]
Fields
matrix
: Rotation matrixdisplacement
: Displacement vector
Constructors
LatticeTools.SpaceOperation
— MethodSpaceOperation(matrix::AbstractMatrix{Tp}, displacement::AbstractVector{Tt}) where {Tp<:Real, Tt<:Real}
Construct a space operation by matrix
and displacement
.
LatticeTools.SpaceOperation
— MethodSpaceOperation([point], [translation])
Construct a space operation by point
and translation
.
Arguments
point::PointOperation{Tp}
translation::TranslationOperation{Tt}
Properties
LatticeTools.isidentity
— Methodisidentity(arg::SpaceOperation)
Check whether arg
is identity (i.e. identity point and identity translation)
LatticeTools.istranslation
— Methodistranslation(arg::SpaceOperation)
Check whether arg
is a translation operation (i.e., point operation is identity)
LatticeTools.ispoint
— Methodispoint(arg::SpaceOperation)
Check whether arg
is a point operation (i.e. translation is identity)
LatticeTools.dimension
— Methoddimension(arg::SpaceOperation)
Return the spatial dimension of arg
.
Apply
LatticeTools.apply_operation
— Methodapply_operation(op::SpaceOperation{Tp, Tt}, coord::AbstractArray{<:Union{Tp, Tt}}) where {Tp, Tt}