Software entry example

From ESL
Jump to navigation Jump to search

{{#if: Name, Institution, City, Country

Name, Institution, City, Country |

Source authors:
Name, Institution, City, Country
Name, Institution, City, Country

}}{{#if: LGPL |

License: LGPL

}}{{#if: Project page/Launchpad/GitHub/SourceForge |

Download: Project page/Launchpad/GitHub/SourceForge

}}{{#if: link to documentation |

Documentation: link to documentation

}}{{#if:
  • Functionality entry example
  • |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    |{{#if:
  • Data standard entry example
  • |

    Links to other ESL entries

    | {{#if: |

    Links to other ESL entries

    |}}}}}}}}}}}}{{#if:
  • Functionality entry example
  • |

    Functionalities:

    }}{{#if: |

    Algorithms:

      {{{algorithms}}}

    }}{{#if: |

    Generic interfaces:

      {{{generic interfaces}}}

    }}{{#if: |

    APIs:

      {{{apis}}}

    }}{{#if:
  • Data standard entry example
  • |

    Data standards:

    }}{{#if: |

    Software:

      {{{software}}}

    }}

    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.

    Algorithm

    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
    enddo
    
    if (useful)
        Celebrate
    endif
    


    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.

    Prerequisites

    List here dependencies, such as:

    • BLAS
    • LAPACK
    • NetCDF
    • FFTW

    Instructions

    On how to install, link, etc.

    Tests

    Information on tests prepared for the software, and how to run them.

    Publications

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

    References

    (Optional)

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