Software entry example
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 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)
B(input) DOUBLE PRECISION array, dimension (
result(output) DOUBLE PRECISION array, dimension (
n(output) DOUBLE PRECISION
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:
On how to install, link, etc.
Information on tests prepared for the software, and how to run them.
(Optional) The main paper describing this software can be found in this reference. Alternatively, this could appear as a subsection in one or more of the other sections (Algorithm, Programming interface, etc.) if more appropriate.
(Optional) You can announce here things related to the entry that are currently under development, keeping in mind that you want to deliver.
(Optional) You can announce here things to come related to the entry, keeping in mind that you want to deliver.
(Optional) Other sections can be added if relevant to the entry.
- A. N. Other, On the implementation of an algorithm, J. Rand. Thoughts 3, 14 (1592). DOI: 65.3589/7.932.3846.26.433