# 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.