Public API
Contents
Index
CrystallographyBase.MetricTensorCrystallographyBase.MonkhorstPackGridCrystallographyBase.PrimitiveFromStandardizedCrystallographyBase.StandardizedFromPrimitiveCrystallographyCore.CellCrystallographyCore.LatticeCrystallographyCore.ReciprocalLatticeCrystallographyBase.atomicmassCrystallographyBase.cellvolumeCrystallographyBase.crystaldensityCrystallographyBase.distanceCrystallographyBase.islefthandedCrystallographyBase.isrighthandedCrystallographyBase.latticeconstantsCrystallographyBase.latticesystemCrystallographyBase.lengthofCrystallographyBase.periodicityCrystallographyBase.superCrystallographyCore.basisvectorsCrystallographyCore.eachatomCrystallographyCore.reciprocal
Public interface
Lattice and Cell
CrystallographyCore.Lattice — Type
Lattice(data::AbstractMatrix)Construct a Lattice from a matrix.
Examples
julia> Lattice([
1.2 4.5 7.8
2.3 5.6 8.9
3.4 6.7 9.1
])
Lattice{Float64}
1.2 4.5 7.8
2.3 5.6 8.9
3.4 6.7 9.1CrystallographyBase.isrighthanded — Function
isrighthanded(lattice::Lattice)Test whether the basis vectors are defined to be right-handed.
The basis vectors are right-handed if and only if
\[\mathbf{a} \cdot (\mathbf{b} \times \mathbf{c}) > 0.\]
CrystallographyBase.islefthanded — Function
islefthanded(lattice::Lattice)Test whether the basis vectors are defined to be left-handed.
The basis vectors are left-handed if and only if
\[\mathbf{a} \cdot (\mathbf{b} \times \mathbf{c}) < 0.\]
CrystallographyCore.basisvectors — Function
basisvectors(lattice::Lattice)Get the three basis vectors from a lattice.
basisvectors(lattice::ReciprocalLattice)Get the three basis vectors from a reciprocal lattice.
CrystallographyBase.latticesystem — Function
latticesystem(bravais::Bravais)Get the lattice system of a Bravais lattice.
latticesystem(lattice::Lattice; angletol=1e-5, lengthtol=1e-5)Get the lattice system of a Lattice.
CrystallographyBase.latticeconstants — Function
latticeconstants(lattice::Lattice)Get the six lattice constants from a lattice.
latticeconstants(g::MetricTensor)Get the six lattice constants from a MetricTensor.
CrystallographyBase.periodicity — Function
periodicity(lattice::Lattice)Get crystal periodicity in $x$, $y$, and $z$ direction from the Lattice.
CrystallographyCore.Cell — Type
Cell(lattice, positions, atoms)Create a new cell.
Argument lattice is a Lattice type. Fractional atomic positions positions are given by a vector of $N$ vectors with floating point values, where $N$ is the number of atoms. Argument atoms is a list of $N$ values, where the same kind of atoms need to be the same type.
CrystallographyBase.super — Function
super(lattice::Lattice, factors::AbstractMatrix{<:Integer})
super(lattice::Lattice, factors::AbstractVector{<:Integer})
super(lattice::Lattice, factor::Integer)Create a supercell from lattice.
super(cell::Cell, factors::AbstractMatrix{<:Integer})
super(cell::Cell, factors::AbstractVector{<:Integer})
super(cell::Cell, factor::Integer)Create a supercell from cell.
CrystallographyCore.eachatom — Function
eachatom(cell::Cell)Create a generator that iterates over the atoms in a Cell.
Reciprocal space
Note that we take $2\pi$ as $1$, not the solid-state physics convention.
CrystallographyCore.ReciprocalLattice — Type
ReciprocalLattice(data::AbstractMatrix)Construct a ReciprocalLattice from a matrix.
CrystallographyBase.MonkhorstPackGrid — Type
MonkhorstPackGrid(mesh, is_shift)Represent the Monkhorst–Pack grid.
Arguments
mesh: A length-three vector specifying the k-point grid ($nk_1 × nk_2 × nk_3$) as in Monkhorst–Pack grids.is_shift: A length-three vector specifying whether the grid is displaced by half a grid step in the corresponding directions.
CrystallographyCore.reciprocal — Function
reciprocal(lattice::Lattice)
reciprocal(lattice::ReciprocalLattice)Get the reciprocal of a Lattice or a ReciprocalLattice.
Metric tensor
CrystallographyBase.MetricTensor — Type
MetricTensor(𝐚::AbstractVector, 𝐛::AbstractVector, 𝐜::AbstractVector)Generate a MetricTensor from the three basis vectors.
MetricTensor(lattice::Lattice)Generate a MetricTensor from a Lattice.
MetricTensor(a, b, c, α, β, γ)Generate a MetricTensor from the six cell parameters.
CrystallographyBase.lengthof — Function
lengthof(𝐚::ReducedCoordinates, g::MetricTensor)Get the length of an atomic coordinates.
CrystallographyBase.distance — Function
distance(𝐚::ReducedCoordinates, 𝐛::ReducedCoordinates, g::MetricTensor)Get the distance between two atomic coordinates.
Transformations
CrystallographyBase.PrimitiveFromStandardized — Type
PrimitiveFromStandardized(tf::AbstractMatrix)Construct the transformation from a standardized cell to a primitive cell.
CrystallographyBase.StandardizedFromPrimitive — Type
StandardizedFromPrimitive(tf::AbstractMatrix)Construct the transformation from a primitive cell to a standardized cell.
Others
CrystallographyBase.cellvolume — Function
cellvolume(a, b, c, α, β, γ)Calculate the cell volume from 6 cell parameters.
cellvolume(l::Lattice)
cellvolume(c::Cell)Calculate the cell volume from a Lattice or a Cell.
cellvolume(g::MetricTensor)Calculate the cell volume from a MetricTensor.
CrystallographyBase.crystaldensity — Function
crystaldensity(lattice::Lattice, atoms)
crystaldensity(cell::Cell)Calculate the density of a crystal structure.
Here, atoms is an iterable of atomic numbers, element names, symbols, or Mendeleev.Elements. You can extend the atomicmass method to work with custom types.
CrystallographyBase.atomicmass — Function
atomicmass(element::Element)
atomicmass(i::Union{AbstractString,Integer,Symbol})Return the atomic mass of an element.
This function is by default not implemented. You need to load either package Mendeleev.jl or PeriodicTable.jl to use it.