Input files written in extensible markup language (XML) are used by QnD and converted into Java objects. Components, Data and Processes objets are described in the XML files. For clarification within QnD designs and labeling, a ”C” prefixes Components, a “P” prefixes Precesses, and a “D” prefixes Data objects.
CComponent objects are the basic items of interest within a simulation. PProcess objects provide the action and changes from a state to another. DData objects provide the necessary description of various attributes.
CComponents objects
Spatially-explicit areas and non-spatially-explicit areas are specifically represented through two primary CComponent objects, CSpatialUnit and CHabitat. A CSpatialUnit is the basic spatial entity of the QnD system. CSpatialUnits can be linked to one another and have a specific location. A CSpatialUnit can have either zero or any number of CSpatialUnits connected to them. One or more CHabitat objects exist within a CSpatialUnit and are not spatially defined, except via the relationship with the “homeSpatialUnit”. A CHabitat can hold any number of local instantiations of CComponent objects (CLocalComponents). These CLocalComponents have both relationships with both “home” CHabitat and CSpatialUnit. With this basic QnD object architecture, both simple and complex designs are possible with both spatial and non-spatial elements.
DData objects
DData objects store all the relevant information for a specific QnD simulation. All DData objects are created from the input XML, GIS data files or time series files and represent a composite variable storing a set of double values. Each DData has several attribute variables that allow for various calculations. All available attributes are not always used for each DData as some data objects may use other attribute features while others do not. For example, a DData object that is linked with a time series file (through its DriverLink attribute) may constantly change current values over time while another may represent a static variable in the simulation and may not use any other attributes besides a single parameter value. In addition to the primary SimulationEngine-related objects, several packages exist for various housekeeping and organization functionality.
PProcesses objects
PProcess objects provide all state changes and action within QnD, using DData objects as inputs they provide a calculation or series of calculations and then write the resulting products into output DData objects. PProcesses are designed with constituent sub-processes within them to create a series of processes for more complex interactions. The table shows some of the different types of processes that can be bound together in series within QnD.