CP2K is a large, complex application which has many features, methods and algorithms implemented. When looking at the code for the first time it can be very challenging to understand how it all works, or even where to start looking! This page is intended for novice developers who have read and understood the literature and wish to locate the relevant algorithms and data structures in the code.
Source files should have prefixes corresponding to their main functionalities. For example:
qs_*
for Quickstep related source codes (Hamiltonian construction, integration, collocation, energy minimisation and SCF cycle etc)xc_*
for Exchange-Correlation functionals used by Quickstep md_*
for Molecular Dynamics related source codesmc_*
for Quantum Monte Carlo related source codesfist_*
for FIST classical MD related source codesinput_*
for general input functions of CP2Kqmmm_*
for QM/MM related source codesmessage_*
for MPI message passing related source codesmachine_*
for architecture dependent codesadmm_*
for auxilliary density matrix (ADMM) method related codesai_*
for integrals of the primitive cartesian Gaussiansatomic_*
for datatypes related to information on atoms in a simulationatom_*
for atomic calculationsThese prefixes are not exclusive, nor are they always logical. There are exceptions in code naming conventions, for example:
realspace_grid_types.F
and realspace_grid_cube.F
are both used in Quickstep, but do not have the corresponding qs_
prefixlibcp2kmain
, libcp2kbase
, libcp2kdbcsrwrap
, libcp2kfft
etc.PACKAGE
file in cp2k/src
and its subdirectories.Quickstep part of the CP2K code calculates the ab initio self-consistent Kohn-Sham energy and the associated forces of a periodic system. The calculation involves
Most of the computational time are spent on:
This subsection is the modules containing the definition the key data used in Quickstep calculations
qs_rho_types
qs_rho_types.F
qs_rho_type