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
- list_timerenv
- 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
- ...