User Tools

Site Tools


exercises:2016_uzh_cmest:band_structure_calculation

This is an old revision of the document!


Getting the band structure of graphene

To get the band structure for graphene (or h-BN), only a few changes are required compared to the previous example for calculating the PDOS:

graphene_kp_dos.inp
&GLOBAL
  PROJECT graphene_kp_dos
  RUN_TYPE ENERGY 
  PRINT_LEVEL MEDIUM
&END GLOBAL

&FORCE_EVAL
  METHOD Quickstep
  &DFT
    BASIS_SET_FILE_NAME  BASIS_MOLOPT
    POTENTIAL_FILE_NAME  POTENTIAL

    &POISSON
      PERIODIC XYZ
    &END POISSON
    &QS
      EXTRAPOLATION USE_GUESS ! required for K-Point sampling
    &END QS
    &SCF
      SCF_GUESS ATOMIC
      EPS_SCF 1.0E-6
      MAX_SCF 300

      ADDED_MOS 2
      &SMEAR ON
        METHOD FERMI_DIRAC
        ELECTRONIC_TEMPERATURE [K] 300
      &END SMEAR
      &DIAGONALIZATION
        ALGORITHM STANDARD
        EPS_ADAPT 0.01
      &END DIAGONALIZATION
      &MIXING
        METHOD BROYDEN_MIXING
        ALPHA 0.2
        BETA 1.5
        NBROYDEN 8
      &END MIXING
    &END SCF
    &XC
      &XC_FUNCTIONAL PBE
      &END XC_FUNCTIONAL
    &END XC
    &KPOINTS
      SCHEME MONKHORST-PACK 3 3 1
      SYMMETRY OFF 
      WAVEFUNCTIONS REAL
      FULL_GRID .TRUE.
      PARALLEL_GROUP_SIZE  0
      &BAND_STRUCTURE
        ADDED_MOS 2
        FILE_NAME graphene.bs
        &KPOINT_SET
          UNITS CART_BOHR ! work around a bug in CP2K, should be B_VECTOR
          SPECIAL_POINT 0.0   0.0   0.0
          SPECIAL_POINT 1./2. 0.0   0.0
          NPOINTS 5
        &END
      &END BAND_STRUCTURE
    &END KPOINTS
  &END DFT

  &SUBSYS
    &CELL
      ABC [angstrom] 2.4612 2.4612 8
      ALPHA_BETA_GAMMA 90. 90. 60.
      SYMMETRY HEXAGONAL
      PERIODIC XYZ
      MULTIPLE_UNIT_CELL 1 1 1
    &END CELL
    &TOPOLOGY
      MULTIPLE_UNIT_CELL 1 1 1
    &END TOPOLOGY
    &COORD
      SCALED
      C  1./3.  1./3.  0.
      C  2./3.  2./3.  0.
    &END
    &KIND C
      ELEMENT C
      BASIS_SET TZVP-MOLOPT-GTH
      POTENTIAL GTH-PBE
    &END KIND
  &END SUBSYS

&END FORCE_EVAL
At present (CP2K 4.1) it is not possible to get the projected density of states when doing a K-Point calculation. Plus there is currently an issue with the UNITS specification for the special point coordinates: even though the unit is set to Cartesian coordinates (in Bohr), the special points are multiplied by the reciprocal vectors and must therefore be given in terms of the b-vectors.

Some notes on the input file:

  • By specifying the KPOINT section you are enabling the K-Point calculation.
  • While you could specify the K-Points directly, we are using the Monkhorst-Pack scheme 1) to generate them. The numbers following the keyword MONKHORST-PACK specify the tiling of the brillouin zone.
  • After the basic calculation, CP2K calculates the energies along certain lines, denoted as KPOINT_SET (when you check [https://manual.cp2k.org/trunk/CP2K_INPUT/FORCE_EVAL/DFT/KPOINTS/BAND_STRUCTURE/KPOINT_SET.html|the documentation] you will note that this section can be repeated).
  • The keyword NPOINTS specifies how many points (in the addition to the starting point) should be sampled between two special points.
  • The SPECIAL_POINT keyword is used to specify the start-, mid- and endpoints of the line. Those points usually denote special points in the reciprocal lattice/unit cell, like the $\Gamma$, $M$ or $K$ point. You can find the definition for these in the appendix of [http://www.sciencedirect.com/science/article/pii/S0927025610002697|this paper]. This keyword can also be specified multiple times, making it possible to directly get the band structure for a complete path.

Now, when you run this input file you will get in addition the the output file, a file named graphene.bs which will look similar to the following:

 SET:       1                 TOTAL POINTS:      6
   POINT   1                     0.000000    0.000000    0.000000
   POINT   2                     0.500000    0.000000    0.000000
       Nr.    1    Spin 1        K-Point  0.00000000  0.00000000  0.00000000
                8
           -15.30752034     -3.31285773      0.93143545      1.03651421
             8.71874068     12.74920179     12.83785311     15.50144316
       Nr.    2    Spin 1        K-Point  0.02500000  0.00000000  0.00000000
                8
           -15.29453364     -3.29547462      0.87472486      1.00321991
             8.31998068     12.81500348     12.93001933     15.45108207
       Nr.    3    Spin 1        K-Point  0.05000000  0.00000000  0.00000000
[...]

For each set there is a block named SET with the special points listed as POINT, followed by sub-blocks for each K-Point containing the energies for each MO.

Your tasks:

  • Lookup the special points for the $\Gamma$, $M$, $K$ points in the mentioned paper. Calculate and plot the band structure for graphene from $\Gamma$ over $M$, $K$ back to $\Gamma$ (you are free to decide whether to use multiple K-Point sets are multiple special points in a single set). Mark the special points.
  • Compare your plot with plots from literature. What is different?
  • Why do you get 8 orbital energies? Try to change the input to get more unoccupied orbitals.

To convert the band structure file to a file which can be loaded directly into MATLAB for example, you can use the script /users/tiziano/bin/cp2k_bs2csv.py which when passed a band structure file graphene.bs as an argument will write files graphene.bs-setN.csv for each set containing the K-Point coordinates and the energies in one line.

exercises/2016_uzh_cmest/band_structure_calculation.1478444490.txt.gz · Last modified: 2020/08/21 10:15 (external edit)