From ESL
Jump to navigation Jump to search

{{#if: Bálint Aradi, BCCMS, Bremen, Germany

Ben Hourahine, The University of Strathclyde, Glasgow, UK |

Source authors:
Bálint Aradi, BCCMS, Bremen, Germany
Ben Hourahine, The University of Strathclyde, Glasgow, UK

}}{{#if: LGPL |

License: LGPL

}}{{#if: Project GitHub |

Download: Project GitHub

}}{{#if: ReadTheDocs |

Documentation: ReadTheDocs

  • Semiempirical
  • |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

  • Data standard entry example
  • |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

  • Semiempirical
  • |


    }}{{#if: |



    }}{{#if: |

    Generic interfaces:

      {{{generic interfaces}}}

    }}{{#if: |



  • Data standard entry example
  • |

    Data standards:

    }}{{#if: |




    DFTB+ is a software package for carrying out fast quantum mechanical atomistic calculations based on the Density Functional Tight Binding method. It can be either used as a standalone program or integrated into other software packages as a library.

    Entries can be of different kinds depending on the content categories they contain. This one is a dummy example of an entry containing information of an algorithm, API, and software implementation. The different categories that can be contained in one entry are described in About ESL.

    The box on the right is mandatory for an entry containing a software implementation. Software entries must list the source authors, responsible for the ESL entry, software license, and a download link. Furthermore, the box can contain links to other entries which this page is connected to, typically ones describing the functionality or data standard being implemented. Please make sure that any entry you link to has a corresponding link back to this page

    The entry is first introduced with a few lines describing its contents, i.e., an introductory abstract. It should be brief but sufficient to transmit to the reader what he/she needs to know in order to decide whether it is interesting for his/her project.

    At the bottom of the page comes a list of Categories. As explained in Contributing, all pages should contain the ESL Entries category tag. A software entry should also contain either the ESL Software or the Other Software tag. Other tags can be added if appropriate.


    If the method described is quite generic and allows for different ways of its being implemented, a description of the algorithm (or a link to an external website or other ESL entry) is important and useful. In some cases it is obvious and not needed.

    It can be described with words, flow charts or metalanguage.

    A, B, C: NxN Matrices
    Do until get bored:
        Read A, B
        Matrix multiply C = A x B
        Store C
    if (useful)

    Generic programming interface

    Describes the programming interface for the implementation of an algorithm in generic terms. It should be human-readable and descriptive, listing the physical quantities involved (e.g., the Hamiltonian, the lattice vectors, etc.) rather than specifying how these are to be represented within the code.

    Application programming interface

    Describes the API (application programming interfaces) in strict terms, i.e., it should give all the information necessary to be implementable within a piece of code with no ambiguities.

    subroutine theRoutine( a, B, result, n, w)

    Implementation independent:

    • a (input) INTEGER
      Variable .
    • B (input) DOUBLE PRECISION array, dimension (a,a)
      Matrix .
    • result (output) DOUBLE PRECISION array, dimension (a,a)
      The result.

    Algorithm specific:

    • n (output) DOUBLE PRECISION
      Variable .

    Implementation specific:

    • w (input, optional) LOGICAL
      T: Do this.
      F: Don't do it.

    Software description and installation

    If the entry contains a specific software implementation, in addition to the box in the upper right corner, this section should contain whatever needs explaining about the code which is not already present in the description of the algorithm or programming interface. Software should be included in the list of categories at the end of the page.


    List here dependencies, such as:

    • BLAS
    • LAPACK

    Optional dependencies:


    On how to install, link, etc.


    Supports ctest


    (Optional) The main paper describing this software can be found in this reference[1]. Alternatively, this could appear as a subsection in one or more of the other sections (Algorithm, Programming interface, etc.) if more appropriate.

    Current developments

    (Optional) You can announce here things related to the entry that are currently under development, keeping in mind that you want to deliver.

    Future developments

    (Optional) You can announce here things to come related to the entry, keeping in mind that you want to deliver.

    Other sections

    (Optional) Other sections can be added if relevant to the entry.



    1. A. N. Other, On the implementation of an algorithm, J. Rand. Thoughts 3, 14 (1592). DOI: 65.3589/7.932.3846.26.433