Overview of package common

Basic routines which are conceptually independent from CP2K and its input

bessel_lib
Calculates Bessel functions
bibliography
collects all references to literature in CP2K as new algorithms / method are included from literature sources we add a citation, to give credit to the authors (often ourselves, but this need not to be the case), and as a form of documentation.
cg_test
Test of Clebsch-Gordon Coefficients
cp_array_sort
Routine for sorting an array
cp_array_utils
various utilities that regard array of different kinds: output, allocation,... maybe it is not a good idea mixing output and memeory utils...
cp_error_handling
Module that contains the routines for error handling
cp_files
Utility routines to open and close files. Tracking of preconnections.
cp_iter_types
Collection of routines to handle the iteration info
cp_log_handling
various routines to log and control the output. The idea is that decisions about where to log should not be done in the code that generates the log, but should be globally changeable a central place. So some care has been taken to have enough information about the place from where the log comes so that in the future intelligent and flexible decisions can be taken by the logger, without having to change other code.
cp_min_heap
...
cp_para_env
type to store parallelization informations (at the moment assumes 1d position and uses mpi)
cp_para_types
type to store parallelization informations (at the moment assumes 1d position and uses mpi). type def in this separate module to avoid circular ref.
cp_result_methods
set of type/routines to handle the storage of results in force_envs
cp_result_types
set of type/routines to handle the storage of results in force_envs
cp_units
unit conversion facility
cuda_profiling
routines for profiling cuda
dict
A dictionary (also known as hashtable or hashmap). Internally the dictionary uses an array to holds its data. If this array reaches a load-factor of 75%, a new array with twice the size will be allocated and the items are then copied over. This ensures that the dictionary will perform operations in O(1).
distribution_1d_types
stores a lists of integer that are local to a processor. The idea is that these integers represent objects that are distributed between the different processors. The ordering is just to make some operation more efficent, logically these lists are like sets. Some operations assume that the integers represent a range of values from 1 to a (not too big) maxval, and that an element is present just once, and only on a processor (these assumption are marked in the documentation of such operations). The concrete task for which this structure was developed was distributing atoms between the processors.
eigenvalueproblems
Provides interfaces to LAPACK eigenvalue/SVD routines
erf_fn
Calculates error function and complementary error function
fparser
...
gamma
Calculation of the incomplete Gamma function F_n(t) for multi-center integrals over Cartesian Gaussian functions.
glob_matching
...
kahan_sum
sums arrays of real/complex numbers with *much* reduced round-off as compared to a naive implementation (or the one found in most compiler's SUM intrinsic) using an implementation of Kahan's algorithm for summing real numbers that can be used instead of the standard Fortran SUM(array[,mask]).
lapack
Interface to the LAPACK F77 library
lebedev
Generation of the spherical Lebedev grids. All Lebedev grids were generated with a precision of at least 33 digits (Mathematica). Thus the Lebedev abscissas and weights are accurate to 32 digits (quadruple precision).
linear_systems
Provides interfaces to LAPACK routines for factorisation and linear system solving
list
An array-based list which grows on demand. When the internal array is full, a new array of twice the size will be allocated and the items are copied over.
list_callstackentry
An array-based list which grows on demand. When the internal array is full, a new array of twice the size will be allocated and the items are copied over.
list_routinereport
An array-based list which grows on demand. When the internal array is full, a new array of twice the size will be allocated and the items are copied over.
list_routinestat
An array-based list which grows on demand. When the internal array is full, a new array of twice the size will be allocated and the items are copied over.
list_timerenv
An array-based list which grows on demand. When the internal array is full, a new array of twice the size will be allocated and the items are copied over.
mathconstants
Definition of mathematical constants and functions.
mathlib
Collection of simple mathematical functions and subroutines
memory_utilities
Utility routines for the memory handling. Uses stop_memory to handle exceptions
parallel_rng_types
Parallel (pseudo)random number generator (RNG) for multiple streams and substreams of random numbers.
periodic_table
Periodic Table related data definitions
physcon
Definition of physical constants:
powell
...
reference_manager
provides a uniform framework to add references to CP2K cite and output these
spherical_harmonics
Calculate spherical harmonics
splines
Simple splines Splines are fully specified by the interpolation points, except that at the ends, we have the freedom to prescribe the second derivatives. If we know a derivative at an end (exactly), then best is to impose that. Otherwise, it is better to use the "consistent" end conditions: the second derivative is determined such that it is smooth.
string_table
generates a unique id number for a string (str2id) that can be used two compare two strings. I.e. if (str1==str2) => str2id(str1)==str2id(str2) if (str1.NE.str2) => str2id(str1).NE.str2id(str2) and the other way around. Given an id, the string can be retrieved.
string_utilities
Utilities for string manipulations
structure_factor_types
...
structure_factors
...
termination
Perform an abnormal program termination.
timings
Timing routines for accounting
timings_base_type
Types used by timings.F and timings_report.F The types in this module are used within dict or list, which are in turn used in timer_env_type from timings_type.F Due to the fortran restriction on cicular module-dependencies these "inner-types" had to go into a separate module.
timings_report
Timing routines for accounting
timings_types
Types used by timings.F and timings_report.F Due to the fortran restriction on cicular module-dependencies the types, which are used through dict or list had to go into the separate module timings_base_type.F
util
All kind of helpfull little routines
whittaker
Calculates special integrals
xml_parser
...