4.2.4. CP2K

(contributed by Felipe Zapata)

cp2k input is rather complex one compared to other computational codes, but its input is structured as a set of nested block and sub-blocks that can be easily represented by the Settings class. Like the other interfaces, the CP2K input file is generated using the input branch of the job settings. For instance, a single point calculation for pentacene:

penta = Settings()

penta.input.force_eval.dft.basis_set_file_name = "/path/to/basis"
penta.input.force_eval.dft.potential_set_file_name = "/path/to/potential"
penta.input.force_eval.dft.mgrid.cutoff = 400
penta.input.force_eval.dft.mgrid.ngrids = 4

penta.input.force_eval.qs.method = "GPW"
penta.input.force_eval.scf.eps_scf = 1e-6
penta.input.force_eval.scf.max_scf = 200
penta.input.force_eval.xc.xc_functional = "PBE"

penta.input.force_eval.subsys.cell.A = [16.11886919, 0.07814137, -0.697284243]
penta.input.force_eval.subsys.cell.B = [-0.215317662, 4.389405268, 1.408951791]
penta.input.force_eval.subsys.cell.C = [-0.216126961, 1.732808365, 9.74896108]
penta.input.force_eval.subsys.cell.periodic = 'XYZ'
penta.input.force_eval.subsys.kind.C.basis_set = "DZVP-MOLOPT-SR-GTH-Q4"
penta.input.force_eval.subsys.kind.C.basis_set = "GTH-PBE-Q4"
penta.input.force_eval.subsys.kind.H.basis_set = "DZVP-MOLOPT-SR-GTH-Q1"
penta.input.force_eval.subsys.kind.H.basis_set = "GTH-PBE-q1"
penta.input.force_eval.subsys.topology.coord_file_name = "./penta.xyz"
penta.input.force_eval.subsys.topology.coordinate = "xyz"

penta.input.global.print_level = "low"
penta.input.global.project  = "example"
penta.input.global.run_type = "energy_force"

The input generated during the execution of the cp2k job is similar to:

&FORCE_EVAL
  &DFT
    BASIS_SET_FILE_NAME  /path/to/basis
    &MGRID
      CUTOFF  400
      NGRIDS  4
    &END
    POTENTIAL_FILE_NAME  /path/to/potential
    &QS
      METHOD  GPW
    &END
    &SCF
      EPS_SCF  1e-06
      MAX_SCF  200
    &END
    &XC
      &XC_FUNCTIONAL PBE
      &END
    &END
  &END
  &SUBSYS
    &CELL
      A  16.11886919 0.07814137 -0.697284243
      B  -0.215317662 4.389405268 1.408951791
      C  -0.216126961 1.732808365 9.748961085
      PERIODIC  XYZ
    &END
    &KIND  C
      BASIS_SET  DZVP-MOLOPT-SR-GTH-q4
      POTENTIAL  GTH-PBE-q4
    &END
    &KIND  H
      BASIS_SET  DZVP-MOLOPT-SR-GTH-q1
      POTENTIAL  GTH-PBE-q1
    &END
    &TOPOLOGY
      COORD_FILE_NAME  ./geometry.xyz
      COORDINATE  XYZ
    &END
  &END
&END

&GLOBAL
  PRINT_LEVEL  LOW
  PROJECT  example
  RUN_TYPE  ENERGY_FORCE
&END

PLAMS automatically creates the indented structure of the previous example together with the special character & at the beginning and end of each section, and finally the keyword END at the end of each section.

Notice that CP2K requires the explicit declaration of the basis set together with the charge and the name of the potential used for each one of the atoms. In the previous example the basis for the carbon is DZVP-MOLOPT-SR-GTH, while the potential is GTH-PBE and the charge q4. Also, the simulation cell can be specified using the x, y, z vectors like in the previous example. A cubic box can be easily specified by:

penta.input.force_eval.subsys.cell.ABC = "[angstrom] 50 50 50"

That results in a simulation cube of 50 cubic angstroms. For a more detailed description of cp2k input see manual.