API
GrapheneQFT.DefectGrapheneQFT.GrapheneCoordGrapheneQFT.GrapheneStateGrapheneQFT.GrapheneSystemGrapheneQFT.HoppingGrapheneQFT.ImpurityStateGrapheneQFT.LocalSpinGrapheneQFT.G_RGrapheneQFT.crystal_to_cartesianGrapheneQFT.graphene_multiple_neighborsGrapheneQFT.graphene_neighborsGrapheneQFT.mkGrapheneSystemGrapheneQFT.peierls_phaseGrapheneQFT.ΓGrapheneQFT.δG_RGrapheneQFT.δΓ
Pristine Graphene
GrapheneQFT.GrapheneCoord — TypeGrapheneCoord(u::Int, v::Int, sublattice::Sublattice)Lattice coordinate of a carbon atom.
Each coordinate contains the sublattice index A or B, as well as the integer coefficients of the two basis vectors $d\times(\pm 1 \hat{x} + \sqrt{3}\hat{y}) / 2$ (u for +, v for -), with $d = 2.46$Å as the lattice constant.
GrapheneQFT.GrapheneState — TypeGrapheneState(coord::GrapheneCoord, spin::Spin)Quantum state of an electron in graphene, denoted by $|u, v, L\rangle\otimes |\sigma\rangle$ in the drivation.
The state is given by the GrapheneCoord of the orbital, as well as the electronic spin, which can take values SpinUp and SpinDown.
GrapheneQFT.Defect — TypeDefectAbstract type for all defect types.
GrapheneQFT.ImpurityState — TypeImpurityState(ϵ::Float64, coupling::Vector{Tuple{Float64,GrapheneCoord}}) <: DefectAn impurity state of energy ϵ (in eV) coupled to the graphene system. The tuples in the coupling field contain all the coupling energies (in eV) and the  corresponding GrapheneCoord's.
GrapheneQFT.LocalSpin — TypeLocalSpin(x::Float64, y::Float64, z::Float64, coord::GrapheneCoord) <: DefectA local spin with components x, y, and z located at coord. See GrapheneCoord.
GrapheneQFT.Hopping — TypeHopping(c1::GrapheneCoord, c2::GrapheneCoord, Δ::ComplexF64) <: DefectHopping modification (in eV) between two GrapheneCoord's. If c1==c2,  this quantity corresponds to a local energy modification.
GrapheneQFT.GrapheneSystem — TypeGrapheneSystem(
    μ::Float64,
    T::Float64,
    Δ::Array{ComplexF64,2},
    V::Array{Float64,2},
    scattering_states::Vector{GrapheneState},
    imps::Vector{Float64},
)A structure describing the perturbed graphene system.
See also mkGrapheneSystem.
GrapheneQFT.graphene_neighbors — Functiongraphene_neighbors(atom::GrapheneCoord)Determine the nearest neighbors of an atom and return a vector of the corresponding GrapheneCoord's.
GrapheneQFT.graphene_multiple_neighbors — Functiongraphene_multiple_neighbors(atom::GrapheneCoord, n::Int)Return an array of GrapheneCoord's obtained by iteratively running graphene_neighbors n times, applying it only to the newly-added GrapheneCoord's from the past iteration. The entries in the result are unique and sorted by their distance from atom.
Arguments
atom:GrapheneCoordfrom which the iteration beginsn: number of iterations ofgraphene_neighbors.
GrapheneQFT.crystal_to_cartesian — Functioncrystal_to_cartesian(coord::GrapheneCoord)Convert a GrapheneCoord to a cartesian point with lengths in Å, where GrapheneCoord(0, 0, A) is at the origin.
GrapheneQFT.mkGrapheneSystem — FunctionmkGrapheneSystem(
    μ::Float64,
    T::Float64,
    defects::Vector{Defect},
)Construct GrapheneSystem.
Arguments
μ: chemical potentialT: temperaturedefects: a list of [Defect]'s
When supplying []Hopping](@ref) in defects, ensure that each coordinate pair appears only once as repeated pairs with different couplings will cause eariler values to be overwritten. The order of the coordinates does not matter.
The function constructs a GrapheneSystem with the Δ and V matrices.  In addition, a list of all GrapheneState that are perturbed (scattering_states field in GrapheneCoord) and a list of impurity energies (imps field in GrapheneCoord) are included.
GrapheneQFT.peierls_phase — Functionpeierls_phase(vec_pot, a1::GrapheneCoord, a2::GrapheneCoord)Calculate the phase used in the Peierls substitution to include the effects of the magnetic field.
To make the units work out better, the magnetic field $\mathbf{B}(x, y, z) = \Phi_0/\mathcal{V} \mathbf{f}(x, y, z)$, where $\mathcal{V}$ is the area of the graphene unit cell in Ų, $\Phi_0 = h / 2e$ is the magnetic flux quantum, and $\mathbf{f}(x, y, z) = \nabla \times \mathbf{g}(x,y,z)$ is a dimensionless vector function. Note that $\mathbf{f} = 1$ produces a field of about 40000 T.
For the vector potential, we have $\mathbf{A}(x, y, z) =\Phi_0 / \mathcal{V} \mathbf{g}(x, y, z)$, where $\mathbf{g}(x, y, z)$ has the units of Å. Using the definition of the Peierls phase, one gets
\[\phi = -\frac{\pi}{ \Phi_0} \int \mathbf{A}\cdot d\mathbf{l} = -\frac{\pi}{ \mathcal{V}} \int \mathbf{g}(x, y, z) \cdot d\mathbf{l} \rightarrow -\frac{\pi}{ \mathcal{V}} \int \mathbf{g}_{xy}(x, y) \cdot d\mathbf{l}\,.\]
The last step follows from the fact that the graphene system resides in the $xy$ plane, so one needs to retain only the $x$ and $y$ componends of $\mathbf{g}$, as denoted by the subscript $xy$.
Arguments
vec_pot(x,y): $\mathbf{g}_{xy}(x, y)$ in Å withxandyin Å.a1:GrapheneCoordof the "from" atom.a2:GrapheneCoordof the "to" atom.
vec_pot(x,y) needs to return a tuple corresponding to the vector potential in     $x$ and $y$ directions.
Green's Functions
GrapheneQFT.δG_R — FunctionδG_R(z::ComplexF64,
 pairs::Vector{Tuple{GrapheneState,GrapheneState}},
 s::GrapheneSystem)The correction to the real-space graphene Green's function in the presence of defects as a function of complex energy z.
The function returns a vector of ComplexF64 for each pair of     GrapheneState's in pairs.
Arguments
z: complex energypairs: pairs ofGrapheneState's for whichδG_Ris calculateds:GrapheneSystemfor whichδG_Ris calculated
GrapheneQFT.G_R — FunctionG_R(z::ComplexF64,
pairs::Vector{Tuple{GrapheneState,GrapheneState}},
s::GrapheneSystem)The full real-space graphene Green's function in the presence of defects as a function of complex energy z.
Arguments
z: complex energypairs: pairs ofGrapheneState's for whichG_Ris calculateds:GrapheneSystemfor whichG_Ris calculated
GrapheneQFT.δΓ — FunctionδΓ(z::ComplexF64, s::GrapheneSystem)The correction to the impurity Green's function due to the impurities' interaction with graphene.
Arguments
z: complex energys:GrapheneSystemfor whichδΓis calculated
GrapheneQFT.Γ — FunctionΓ(z::ComplexF64, s::GrapheneSystem)The full impurity Green's function with the correction due to the impurities' interaction with graphene.
Arguments
z: complex energys:GrapheneSystemfor whichΓis calculated