CSR General model structure
This article describes the conceptual model and does not include technical details, such as the initialization sequence or the runtime sequence. The grand design of the CSR-model is laid out in the schema below:
The "Model" represented by a synonymic Python class is the administrative starting point of the model. Its responsabilities is to start the model and to keep it running as long as desired. In itself it is not a representation of a real-world concept.
The ModelSystem serves to realize a loose coupling of the semantically meaningful simulation model with the mechanistic engine layers that end with "Model". When the same model engine is to be re-used for a completely different model, the ModelSystem is the unit to rewrite and to connect to the Model. The Model only knows about the mechanics of the simulation; the ModelSystem is allowed and expected to have knowledge about the representative model. ModelSystem is the class to be responsible for global concepts. However, it is debatable whether the Weather that is created here is in the right place. After all, a model system could hold up more than a single ModelArea (see below), each suffering from its own local weather.
The ModelArea represents a (real-world) area with all that is in it. The ModelArea consists of Patch and it takes care that these patches get instantiated and populated well.
A patch is a geographically defined (at least,within the context of a ModelArea) piece of land. Even though it has a surface extent that may be of considerable size, it is internally homogenous and all processes internal to the patch assume a one square meter surface.