CP2K Open Source Molecular Dynamics

Sidebar

For Developers

dev:todo

This is an old revision of the document!

Nice to Haves

This is a list of nice to have features or changes in CP2K that nobody got around to do, yet

Input / Output

• Refactor cp_output_handling.F such that it does not require the input_section. Instead there should be a routine to parse the input section once and store that information into a novel printkey_type.
• Evolve the printkey into a real logging mechanism. If the WRITE statements were converted into functions calls, one could annotate the output in a standardized way. Such annotations would then allow for parsing the output in a generic fashion.
• Remove the cp_error_type and the 'pseudo exception handling' code like IF (.NOT.failure). These constructs clutter the code without providing any useful functionality. The side-feature of the error_type to carry a reference to a cp_logger_type is sparsely used. It can be completely replaced by the add/rm_default_logger mechanism.

Unit-Tests

• The test coverage of the XC-functionals is pretty low. Since we have libxc as reference, one could easily write a unit-test that compares both implementations by applying them to a randomly generated density.

DBCSR

Removals

• Remove cp_error_type from dbcsrwrap.
• Remove dbcsr_error_type entirely.
• Remove dbcsr_mutable_type.
• Remove various init-routines, rely on Fortran type initializers instead.

Restructurings

• Eliminate the work matrices, the assignment to threads should be static.
• Enforce clear separation of library layers. For example arnoldi should be independent from data storage format.
• Do not pass any internal data-structure to the “outside”.
• Merge dbcsrwrap and dbcsr_api. There should only be one API.
• Strengthen the API with unit-tests.
• Remove usages of the FORALL statement
• Remove improper usage of INTERFACEs like this .

Bugs?

• dbcsr_add does not check for symmetry.
• dbcsr_add does not check the “transpose-state”.
• dbcsr_copy has confusing order of arguments.

Missing features?

• dbcsr_trace does not work with matrices of different symmetries.
• dbcsr_add does not work with matrices of different symmetries.
• Complex matrices are not fully supported, which is why they are not used in e.g. RTP.
• Expose dbcsr's internal types as Fortran types. This means having separate types for symmetry/non-symmetric and int/float/complex.
• MIC port (integrate)
• finish OpenCL port (kernels)