Dinamica EGO is written in C++ and Java.  It holds a series of algorithms called functors. Each functor performs an operation. These functors are sequenced to establish data flow in the form of graphs. Through the Dinamica EGO graphical interface one can create models by simply dragging and connecting functors via their ports, which represent connectors to types of data, such as maps, tables, matrices, mathematical expressions and constants. Functors can be enveloped by “containers”, a special type of functor that is used, for example, to execute iterations or process data from specific regions of a map. Thus, models can be designed as a diagram and execution follows a data flow chain. This friendly interface permits the design of simple to very complex spatial models that are saved in a script language in XML format or EGO programming language.

 

In sum, Dinamica EGO software favors simplicity, flexibility and good performance, optimizing speed and computer resources, such as memory and parallel processing. Most of its algorithms are designed to take advantage of multicore processor architecture. In addition, Dinamica EGO handles large raster format using disk paging. On the other hand, if memory is available, it can load all the input maps at the beginning of a model execution and keep them in memory only while they are needed. In this way, the software only accesses the disk at the end of an execution to write the final outputs or, if specified by the modeller, at the end of an iteration to save the output maps from each time step.