home
download
class models
standard gui
custom gui
models
user guide
problems

Data structures

Catacomb models are built from a set of objects each intended to encapsulate a different part of the structure of the model. There are also a number of other objects not related to a particular model which control such things as the on-line help system, error messages, and preferences as to how the user interface should operate.

The objects belonging to a particular model are arranged hierarchically, as displayed in the catacombEditor. The framework of the hierarchy is defined by the problem domain, and hardcoded in the objects themselves. Frequently, however, there is a lot of freedom in what to fit within this framework. Catacomb provides a graphical interface for constructing models within these predefined frameworks, and implements numerical methods for computing their behavior.

Besides the elementary data types: booleans, ints, doubles, and strings, Catacomb uses four complex data types: CcmbObjects, CcmbLists, CcmbSelections and CcmbReferences.

CcmbObjects can contain any combination of the elementary and complex data types. Catacomb itself is a ccmbObject. The user interface provides tools for making new CcmbObjects, setting their fields, documenting them, running any calculations they may define, and saving and restoring from files.

CcmbLists contain a variable number of CcmbObjects all of the same class. The interface provides tools for adding, removing and copying elements.

CcmbSelections come in various flavors, but always point to a CcmbList defined elsewhere in the model. How they operate in a particular case is predefined according to what is needed in the model. They may select just one element of the list for use locally or a subset, and may have boolean values (the element is either included or it is not) or continuous ones (a variable quantity of each element). For example, in defining a solution, there might be a list somewhere defining all available solutes and then each solution would have its own ccmbSelection selecting certain quantities of each of a subset of these solutes.

CcmbReferences can point to any component of a model, not just CcmbObjects, but elementary data values too and the other complex types. They have no subtle properties, but each occurrence is restricted to a particular class of target. The interface provides a drag-and-drop mechanism for setting their targets and they refuse anything which is not meaningful in the current context.

The second main function of Catacomb, after allowing the construction of models within one if its available frameworks, is to compute their behavior and keep it up to date whenever any component is changed. Each complete framework contains one or more CcmbObjects which contain calculation methods. They are able to extract the data from the rest of the model and compute its behavior. Whenever the interface is used to examine one of these models it provides windows to display the results of the calculations, and possibly other displays depending on the nature of the data.