mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-26 21:25:19 -04:00
146 lines
4.8 KiB
Markdown
146 lines
4.8 KiB
Markdown
# Run a First Calculation
|
|
|
|
This page walks through a small single-point energy calculation for a water molecule. It uses the
|
|
{term}`Quickstep` module, the Gaussian and plane wave ({term}`GPW`) method, a molecular Gaussian
|
|
basis set, and Goedecker-Teter-Hutter ({term}`GTH`) pseudopotentials. The example is intentionally
|
|
small enough to run in a few seconds while still showing the parts of a typical CP2K input file that
|
|
matter for larger calculations.
|
|
|
|
## Input File
|
|
|
|
Save the following input as `h2o.inp`. The same file is also available as [](h2o.inp).
|
|
|
|
```text
|
|
&GLOBAL
|
|
PROJECT h2o
|
|
RUN_TYPE ENERGY
|
|
&END GLOBAL
|
|
|
|
&FORCE_EVAL
|
|
METHOD Quickstep
|
|
&DFT
|
|
BASIS_SET_FILE_NAME BASIS_MOLOPT
|
|
POTENTIAL_FILE_NAME GTH_POTENTIALS
|
|
&MGRID
|
|
CUTOFF 400
|
|
REL_CUTOFF 50
|
|
&END MGRID
|
|
&POISSON
|
|
PERIODIC NONE
|
|
PSOLVER MT
|
|
&END POISSON
|
|
&SCF
|
|
EPS_SCF 1.0E-6
|
|
MAX_SCF 50
|
|
&END SCF
|
|
&XC
|
|
&XC_FUNCTIONAL PBE
|
|
&END XC_FUNCTIONAL
|
|
&END XC
|
|
&END DFT
|
|
&SUBSYS
|
|
&CELL
|
|
ABC 10.0 10.0 10.0
|
|
PERIODIC NONE
|
|
&END CELL
|
|
&COORD
|
|
O 5.0000 5.0000 5.0000
|
|
H 5.7586 5.0000 5.5043
|
|
H 4.2414 5.0000 5.5043
|
|
&END COORD
|
|
&KIND O
|
|
BASIS_SET DZVP-MOLOPT-GTH
|
|
POTENTIAL GTH-PBE-q6
|
|
&END KIND
|
|
&KIND H
|
|
BASIS_SET DZVP-MOLOPT-GTH
|
|
POTENTIAL GTH-PBE-q1
|
|
&END KIND
|
|
&END SUBSYS
|
|
&END FORCE_EVAL
|
|
```
|
|
|
|
## Running CP2K
|
|
|
|
Run the calculation with one of the installed CP2K binaries:
|
|
|
|
```bash
|
|
OMP_NUM_THREADS=1 cp2k.psmp -i h2o.inp -o h2o.out
|
|
```
|
|
|
|
The executable name depends on how CP2K was built:
|
|
|
|
| executable | meaning |
|
|
| ----------- | --------------------------- |
|
|
| `cp2k.psmp` | MPI + OpenMP parallel build |
|
|
| `cp2k.pdbg` | MPI + OpenMP debug build |
|
|
| `cp2k.ssmp` | serial/OpenMP build |
|
|
| `cp2k.sdbg` | serial/OpenMP debug build |
|
|
|
|
For MPI-parallel runs, launch CP2K through the MPI launcher used on your system, for example:
|
|
|
|
```bash
|
|
mpirun -np 2 -x OMP_NUM_THREADS=1 cp2k.psmp -i h2o.inp -o h2o.out
|
|
```
|
|
|
|
`cp2k.psmp` supports both MPI and OpenMP. Setting `OMP_NUM_THREADS=1` keeps this first example in a
|
|
simple MPI-only layout. To see the output on screen while also saving it, replace `-o h2o.out` with
|
|
`| tee h2o.out`.
|
|
|
|
## What the Input Does
|
|
|
|
[RUN_TYPE](#CP2K_INPUT.GLOBAL.RUN_TYPE) is set to `ENERGY`, so CP2K evaluates the electronic ground
|
|
state energy without moving the atoms.
|
|
|
|
[METHOD](#CP2K_INPUT.FORCE_EVAL.METHOD) selects `Quickstep`, CP2K's electronic-structure module for
|
|
Gaussian-based density functional theory and related methods.
|
|
|
|
`BASIS_SET_FILE_NAME` and `POTENTIAL_FILE_NAME` tell CP2K where to find the basis-set and
|
|
pseudopotential libraries. The matching [KIND](#CP2K_INPUT.FORCE_EVAL.SUBSYS.KIND) sections then
|
|
choose one Gaussian basis set and one GTH pseudopotential for each element.
|
|
|
|
[CUTOFF](#CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF) and
|
|
[REL_CUTOFF](#CP2K_INPUT.FORCE_EVAL.DFT.MGRID.REL_CUTOFF) control the real-space integration grids
|
|
used by the GPW method. They are not a replacement for increasing the Gaussian basis quality; for
|
|
accurate work the basis set and grid parameters should be converged together.
|
|
|
|
The [POISSON](#CP2K_INPUT.FORCE_EVAL.DFT.POISSON) section and the
|
|
[CELL](#CP2K_INPUT.FORCE_EVAL.SUBSYS.CELL) section both use `PERIODIC NONE`, which is appropriate
|
|
for this isolated molecule in a large non-periodic box.
|
|
|
|
## Checking the Result
|
|
|
|
At the end of `h2o.out`, CP2K prints the total energy in Hartree:
|
|
|
|
```text
|
|
ENERGY| Total FORCE_EVAL ( QS ) energy [hartree]
|
|
```
|
|
|
|
You should also see a line stating that the self-consistent field ({term}`SCF`) cycle converged. If
|
|
the SCF cycle does not converge, increase `MAX_SCF`, improve the initial guess, or use a more robust
|
|
SCF setup.
|
|
|
|
The timing table printed at the end of every CP2K run is useful for a first performance check. For
|
|
larger calculations, compare timings between MPI/OpenMP layouts and watch whether most of the time
|
|
is spent in grid operations, sparse matrix operations, diagonalization, or communication.
|
|
|
|
## Next Steps
|
|
|
|
- If this example calculation has been executed on the cloud, consider building or installing CP2K
|
|
on your server: [](build-from-source), [](build-with-spack), [](distributions)
|
|
- Learn the idea behind GPW: [](../methods/dft/gpw)
|
|
- Learn about basis sets and pseudopotentials: [](../methods/dft/basis_sets),
|
|
[](../methods/dft/pseudopotentials)
|
|
- Converge [CUTOFF](#CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF) and
|
|
[REL_CUTOFF](#CP2K_INPUT.FORCE_EVAL.DFT.MGRID.REL_CUTOFF): [](../methods/dft/cutoff)
|
|
- Proceed to geometry optimization: [](../methods/optimization/geometry_and_cell_opt)
|
|
- Proceed to molecular dynamics simulation: [](../methods/sampling/molecular_dynamics)
|
|
- Explore more complete examples: <https://github.com/cp2k/cp2k-examples>
|
|
|
|
```{youtube} qMR-NAaUheg
|
|
---
|
|
url_parameters: ?start=45
|
|
align: center
|
|
privacy_mode:
|
|
---
|
|
```
|