ABSTRACT

Computational science and interdisciplinary studies have emerged as cuttingedge elds in recent years; due, in large part, to the fact that their tools and concepts are particularly ecient at helping researchers analyze and dene the extraordinarily diverse range of physical phenomena that comprise our complex natural environment. These physical phenomena are usually modeled as a set of ordinary, or partial dierential (or integral) equations, and correspond to a particular conservation law. Therefore, the numerical methods used to solve and study these equations are of vital importance in the current paradigm of interdisciplinary science. Several noteworthy projects are currently underway whose primary goal

is the creation of a variety of numerical application programming interfaces (APIs) which will allow users to implement numerical schemes products of theoretical development in an intuitive way. APIs provide abstractions for the problems under consideration, as well as specify how clients should interact with the software components that implement the problem's solution [151]. API development is ubiquitous in modern software development, and its purpose is to provide a logical interface for the functionality of a component, while hiding the details of its implementation. Note that, in this chapter, we utilize true type text when referring to any

computer-related context. If we consider a particular programming paradigm as implemented through

a specic programming language, as, for example C++, an API will generally include the following elements [151]:

Headers: A collection of .h header les that dene the interface and allow client code to be compiled against that interface. Open source APIs also include the source code (.cpp or .cc les) for the API implementation.