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 SReturn 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}