About

The goal of this activity is to assist the development and the implementation of computer-based models. It does so in close collaboration with selected PIK projects. The present focuses are on the "Germany model", on the "REMIND" model and on the formal framework for vulnerability assessment developed within the "ADAM" cooperation.
 
The approach is based on the distinction between model and model implementation. Currently, models are identified with their mathematical description, usually published in scientific journals. Implementations are (usually unpublished) programs written in a programming language like Java (Germany model) or GAMS (REMIND). Standard mathematical descriptions of models are important for scientific communication. However, they provide little help for developing, testing, extending and re-factoring the actual implementations. In absence of more operational, program-development oriented notions of models, model development and exploratory programming are inefficient and error-prone.
 
Our approach is twofold. On one hand we introduce an abstract specification of the concrete model implementation. Important features of the implementation which are not visible in the mathematical model, for instance the choice of an optimization algorithm in REMIND, are represented in this specification. Implementational details like memory management are not. Since the specification is at a higher level than code, it is easier to modify: thus, exploratory programming can be done in a more disciplined manner. On the other hand, we develop application domain specific libraries of generic components. These fulfill well-defined specifications, are implemented in run-time efficient programming languages and encapsulate stable, application domain dependent but model independent scientific knowledge.
 
An example of such components are generic functions for operating with graphs and relations. Another example are combinators for coupling dynamical systems.  It is out hope that some of the specifications and of the software components developed in this activity, e.g.,  for the Germany model or for REMIND, will cross the border of the specific applications and relieve future PIK "scientific programmers" from the burden of reimplementing yet another non-generic version of some specific algorithm.