User Tools

Site Tools


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 required flag from input keywords and sections. The flag states that there is no default value available, but the same effect can be achieved by simply not supplying a default value. To fully remove the flag one also has to adopt the generation of the input reference manual.
  • 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.


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



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


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


  • 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)
dev/todo.1434371588.txt.gz · Last modified: 2020/08/21 10:14 (external edit)