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.calculationTypetells RESCU to perform a self-consistent calculation;info.savepathis 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.elementis 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.xyzis an array of row-vectors containing the position of each atom;domain.latvecdefines the lattice vectors which must be written as an array of row-vectors;domain.lowrescontrols the real space resolution;elementis a structure array containing the atomic information;element.speciesis a tag for the element structure. It is usually the chemical symbol of the corresponding element;element.pathis a string containing the path to the pseudo-potential file associated with the element;kpoint.gridnsets the number of k-points used to sample the first Brillouin zone. element;LCAO.statusperform 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.