the top of the object hierarchy, containing an overview of the current model
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. But frequently 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 particular vector 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 vector 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 vector somewhere defining all available solutes and then each solution would have its own vectorPointer 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.
The available frameworks are: KSCell, ReactionKinetics, ReactionDiffusion, cfNet, IaFNet, PassiveProp, CellGeometry, ArtCell