Utopia  2 Framework for studying models of complex & adaptive systems.
Model

The Model framework is the foundation for your future model. More...

Collaboration diagram for Model:

## Classes

struct  Utopia::ModelTypes< RNGType, data_write_mode, SpaceType, ConfigType, DataGroupType, DataSetType, TimeType, MonitorType, MonitorManagerType >
Wrapper struct for defining model class data types. More...

class  Utopia::Model< Derived, ModelTypes >
Base class interface for Models using the CRT Pattern. More...

class  Utopia::PseudoParent< RNG >
A class to use at the top level of the model hierarchy as a mock parent. More...

struct  Utopia::Space< num_dims >
The Space bundles properties about the physical space a model resides in. More...

## Typedefs

using Utopia::DefaultSpace = Space< 2 >
The default Space object to be used throughout Utopia. More...

## Enumerations

enum class  Utopia::WriteMode { Utopia::basic , Utopia::managed , Utopia::manual , Utopia::off }
How to write data in the models. More...

## Variables

constexpr WriteMode Utopia::DefaultWriteMode = WriteMode::basic
Alias for the default write mode. More...

## Detailed Description

The Model framework is the foundation for your future model.

By deriving from Utopia::Model, you have access to many infrastructure features and can place your model into a hierarchy of models.

## ◆ DefaultSpace

 using Utopia::DefaultSpace = typedef Space<2>

The default Space object to be used throughout Utopia.

## ◆ WriteMode

 enum Utopia::WriteMode
strong

How to write data in the models.

Enumerator
basic

Basic writing features: write_start, write_every.

This leads to write_data being invoked the first time at time write_start and henceforth every write_every steps. If write_start is 0, this means that write_data is called after the model constructor finished and before perform_step is called the first time.

managed

Use the DataManager to handle output.

The DataManager is invoked before the initial iteration and then once after each iteration; it decides itself whether data is to be written or not. Note that the write_start and write_every arguments are ignored; such functionality has to be implemented via the DataManager's interface.

manual

Fully manual: write_data method is always called.

More accurately: write_data will be called after the model constructor finished (and before perform_step is called for the first time) and henceforth every time after perform_step finished and the time was incremented. There are no further checks and the write_start and write_every arguments are not needed.

off

The write_data method is never called.

## ◆ DefaultWriteMode

 constexpr WriteMode Utopia::DefaultWriteMode = WriteMode::basic
constexpr

Alias for the default write mode.