For modelers with expertise in developing algorithms, SciNapse's natural algorithm description language allows the user to control the code-generation process with as much detail as desired. SciNapse has a knowledge base containing information about scientific, engineering, and business applications, plus a knowledge base containing information on a wide range of numerical algorithms, providing a solid platform on which to build new capabilities. SciNapse does extensive consistency checking at all levels of the code generation process, which guarantees that a problem is well specified and that the transformations from specification to algorithm to target code are correct and that detailed programming requirements are rigorously observed. This also allows SciNapse to find omissions or errors early in the process when they are easiest to fix. In addition, the final code can be automatically tested for accuracy and stability.
Objects represent application-specific, mathematical and programming constructs.
Algorithms are represented by special templates that abstract away all the equation-specific data structures and program optimization details. Guided by a planning mechanism that automatically applies the transformation rules, SciNapse uses constraints and heuristic rules to make any design decisions not indicated in the specification and to warn the user about conflicting specification statements. The transformations produce a series of increasingly detailed internal representation levels that roughly parallel best-practice mathematical modeling methods. The power of the SciNapse synthesis engine is derived from its careful integration of computer algebra with program transformation and object-based representation of mathematical concepts. Objects represent application-specific mathematical and programming constructs.