This is an old revision of the document!
The H$_2$O molecule: DFT basics
In this exercise, we are going to learn the basics of using CP2K by calculating the total energy, optimizing the geometry, and printing the projected density of states (PDOS) of a single H$_2$O molecule. We will also investigate how different parameters such as the DFT functional and basis sets affect the accuracy and duration of our calculations.
Part 1: Basic input
In the first part of the exercise, we will go through the input and steps needed to perform a single-point calculation of a water molecule. The first thing we need is to create an input file describing our system and choosing the methods we want to use. Below is a simple example input that we need.
- water.inp
&GLOBAL PROJECT h2o RUN_TYPE ENERGY IOLEVEL LOW &END GLOBAL &FORCE_EVAL METHOD QS &DFT BASIS_SET_FILE_NAME GTH_BASIS_SETS POTENTIAL_FILE_NAME GTH_POTENTIALS LSD 0 &QS EPS_DEFAULT 1.0E-10 &END QS &SCF MAX_SCF 300 EPS_SCF 1.0E-06 SCF_GUESS ATOMIC &MIXING METHOD DIRECT_P_MIXING ALPHA 0.6 &END MIXING &DIAGONALIZATION ALGORITHM STANDARD &END DIAGONALIZATION &END SCF &MGRID NGRIDS 4 CUTOFF 300 REL_CUTOFF 60 &END &XC &XC_FUNCTIONAL BLYP &END XC_FUNCTIONAL &END XC &END DFT &SUBSYS &CELL ABC 15.0 15.0 15.0 ANGLES 90.00 90.00 90.00 &END CELL &COORD O 0 0 0 H 0.7 0.7 0 H -0.7 0.7 0 &END COORD &KIND H BASIS_SET DZVP-GTH POTENTIAL GTH-BLYP-q1 &END KIND &KIND O BASIS_SET DZVP-GTH POTENTIAL GTH-BLYP-q6 &END KIND &PRINT &ATOMIC_COORDINATES &END &END PRINT &END SUBSYS &END FORCE_EVAL
The input file is structured in different sections, started by the “&SECTION_NAME” and ended by “&END SECTION NAME” where the including the section name after &END is optional but recommended. Each section may contain additional sections, and keywords used to control the parameters. There are three main input sections that we will use in this exercise:
- “&GLOBAL” - contains the general options such as the kind of run (in this case ENERGY) and the name of the project.
- “&FORCE_EVAL” - sets the parameters needed to evaluate the forces on the atoms, including the atomic positions, DFT functional, and basis set.
- “&MOTION” - controls e.g. geometry optimizations and MD.
The &GLOBAL section is quite straightforward and controls the type of calculation, our project’s name, etc. but the &FORCE_EVAL section is more complicated and we will go through the most important parts more carefully. The keyword
METHOD Quickstep
chooses that we want to use the Quickstep code which means DFT with the Gaussian and Planewaves method (GPW). We then move in two the &DFT section where we have to specify in which files the program should search for the basis sets and potentials.
BASIS_SET_FILE_NAME GTH_BASIS_SETS POTENTIAL_FILE_NAME GTH_POTENTIALS
In the &QS section, the EPS_DEFAULT keyword sets all tolerances within the Quickstep method. Individual tolerances can also be set, overwriting the EPS_DEFAULT value in the process. The &SCF section controls the self-consistent optimization method for the Kohn-Sham orbitals, with important keywords such as the maximum number of self-consistent loops, MAX_SCF, the initial guess of the wavefunction SCF_GUESS, and the convergence tolerance EPS_SCF. The &MIXING subsection
&MIXING METHOD DIRECT_P_MIXING ALPHA 0.6 &END MIXING
sets how much of the new density that should be mixed with the old density in each step. In this case, 60 % of the new density will be combined with 40 % of the old density when moving on to the next step. A small mixing parameter ALPHA will slow down the calculation but can help with convergence in hard cases. Finally the &MGRID section
&MGRID NGRIDS 4 CUTOFF 300 REL_CUTOFF 60 &END
controls how to set up the integration grid used in the Quickstep method. NGRIDS chooses the number of multigrids to use, CUTOFF selects the number of plane-wave basis functions to describe the electron density, and the REL_CUTOFF determines the grid spacing of the Gaussian basis functions.
After the &DFT section, the other main part of &FORCE_EVAL is the &SUBSYS. Here we set up the system we would like to study including basis sets and potentials. The &CELL and the &COORD sections
&CELL ABC 15.0 15.0 15.0 ANGLES 90.00 90.00 90.00 &END CELL &COORD O 0.0 0.0 0.0 H 0.7 0.7 0.0 H -0.7 0.7 0.0 &END COORD
sets up our simulation cell and atomic coordinates respectively. In the &KIND sections,
&KIND H BASIS_SET DZVP-GTH POTENTIAL GTH-BLYP-q1 &END KIND &KIND O BASIS_SET DZVP-GTH POTENTIAL GTH-BLYP-q6 &END KIND
the basis sets and potentials associated with each atom is given. In this case, we use GTH pseudopotentials and corresponding basis sets optimized for them.
Remember that a lot of information about the different sections and the keywords can be found in the CP2K manual https://manual.cp2k.org/.
Part 2: Running an single-point calculation
We are now ready to run the input in CP2K. To start the calculation, type
/cp2k.sopt -i water.inp -o water.out &
or
./cp2k.sopt water.inp | tee water.out
if you want to follow the output as it runs. When the program is finished, you will have two new files in your working directory:
water.out h2o-RESTART.wfn
The first file ending with .out is the main output file of the calculation which contains information about the optimization
SCF PARAMETERS Density guess: ATOMIC -------------------------------------------------------- max_scf: 300 max_scf_history: 0 max_diis: 4 -------------------------------------------------------- eps_scf: 1.00E-06 eps_scf_history: 0.00E+00 eps_diis: 1.00E-01 eps_eigval: 1.00E-05 -------------------------------------------------------- level_shift [a.u.]: 0.00 -------------------------------------------------------- Mixing method: DIRECT_P_MIXING -------------------------------------------------------- No outer SCF Number of electrons: 8 Number of occupied orbitals: 4 Number of molecular orbitals: 4 Number of orbital functions: 23 Number of independent orbital functions: 23 Extrapolation method: initial_guess SCF WAVEFUNCTION OPTIMIZATION Step Update method Time Convergence Total energy Change ------------------------------------------------------------------------------ 1 P_Mix/Diag. 0.60E+00 2.3 0.81098873 -17.0423550185 -1.70E+01 2 P_Mix/Diag. 0.60E+00 2.6 0.50875403 -17.1088252836 -6.65E-02 3 P_Mix/Diag. 0.60E+00 2.7 0.31846629 -17.1438061995 -3.50E-02 4 P_Mix/Diag. 0.60E+00 2.7 0.23820162 -17.1640209526 -2.02E-02 5 P_Mix/Diag. 0.60E+00 2.7 0.16669867 -17.1752275067 -1.12E-02 6 P_Mix/Diag. 0.60E+00 2.8 0.13086134 -17.1817453111 -6.52E-03 7 P_Mix/Diag. 0.60E+00 2.7 0.09423552 -17.1854419077 -3.70E-03 8 DIIS/Diag. 0.55E-01 2.7 0.02674149 -17.1876018813 -2.16E-03 9 DIIS/Diag. 0.12E-03 2.6 0.00054023 -17.1905995511 -3.00E-03 10 DIIS/Diag. 0.16E-03 2.7 0.00033668 -17.1905995449 6.19E-09 11 DIIS/Diag. 0.39E-05 2.7 0.00000741 -17.1905995597 -1.48E-08 12 DIIS/Diag. 0.12E-05 2.6 0.00000090 -17.1905995597 -1.00E-11 *** SCF run converged in 12 steps ***
as well as the converged results:
Electronic density on regular grids: -7.9999999840 0.0000000160 Core density on regular grids: 7.9999999997 -0.0000000003 Total charge density on r-space grids: 0.0000000157 Total charge density g-space grids: 0.0000000157 Overlap energy of the core charge distribution: 0.00000001850899 Self energy of the core charge distribution: -44.54061621428737 Core Hamiltonian energy: 12.90570300282121 Hartree energy: 18.65475043862882 Exchange-correlation energy: -4.21043680541513 Total energy: -17.19059955974348 ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -17.190599559743479
The output file also contains information about timing, i.e. how much time was spent on the different parts in the code, and also ends with references to cite, relevant to your particular calculation.
The second file contains the optimized Kohn-Sham wavefunction, which can be used to restart your calculation using the keyword
SCF_GUESS RESTART
in the &SCF section.