2.1. Self-consistent calculation
In this section, I show how to compute the electronic ground-state
density of graphene. In subsequent sections, I will use the ground-state
density to compute the projected density of states of graphene. I use
atomic orbitals throughout this tutorial to ease the computational
burden, but everything can be done in real space as well. Copy the
following input file and save it to a text file named c2_scf.txt
.
info.calculationType = 'self-consistent'
info.savepath = 'results/c2_scf'
atom.element = [1 1]
la = 4.648725932
atom.xyz = [1 1/sqrt(3) 0;1 -1/sqrt(3) 0]/2*la
domain.latvec = [1/2 sqrt(3)/2 0; 1/2 -sqrt(3)/2 0; 0 0 4]*la
domain.lowres = 0.3
element.species = 'C'
element.path = './C_TM_LDA.mat'
kpoint.gridn = [9,9,1]
LCAO.status = 1
Then copy the C pseudopotential file from the database to
./C_TM_LDA.mat
. Pass it to RESCU and execute the program as follows
rescu -i c2_scf.txt;
The results are saved as results/c2_scf.mat
.
The system information and the simulation parameters are defined by
keywords. The keywords generally have self-explanatory names, but you
may refer to the input reference file inputDescription.m
located int
the doc
directory for more information. I will briefly describe the
keywords found in the above example.
info.calculationType
tells RESCU to perform a self-consistent calculation;info.savepath
is the path and name prefix of the file where RESCU writes its results. RESCU appends the rank number to the file name prefix, which for serial calculations is always 0;atom.element
is a vector defining the element type of each atom. In the case of bulk silicon, there are two atoms of the silicon element defined below;atom.xyz
is an array of row-vectors containing the position of each atom;domain.latvec
defines the lattice vectors which must be written as an array of row-vectors;domain.lowres
controls the real space resolution;element
is a structure array containing the atomic information;element.species
is a tag for the element structure. It is usually the chemical symbol of the corresponding element;element.path
is a string containing the path to the pseudo-potential file associated with the element;kpoint.gridn
sets the number of k-points used to sample the first Brillouin zone. element;LCAO.status
perform the calculation using a basis of atomic orbitals.
The resolution (domain.lowres
) and the Brillouin zone sampling
(kpoint.gridn
) determine the accuracy of the calculation. It is
generally necessary to estimate the error on some quantity (e.g. total
energy) by varying those parameters. In the present case, a resolution
of 0.3 Bohr and a \(9\times9\) Monkhorst-Pack grid is sufficient.