Go to the first, previous, next, last section, table of contents.


The language paradigm.

The ecosystem is divided into cells, geographically separated bits of ecosystem. The cells are linked together, giving the concept of adjacency. Ie. "this cell is next to that cell".

There are two flavours of species, (yummy like mullet, ucky chewy like croc..), (sorry just joking), ie. cell based species like plants which are immobile and are forced to respond to conditions within a cell, and ecosystem wide species like the flamingo, that are so mobile that it is pointless modelling them on a cell by cell basis.

Each species has a species "declaration" or "rule set".

Now for the cell based flavour of beastie...

The species declaration has a startup part which is execute once for each cell. Thereafter the "running rules" part is executed once for each time step and for each cell. All species and cells are run as 'simultaneous' threads of execution. This permits inter cell interactions. References to other cells/species return their state in the preceding time step, not the current time step. Why? Otherwise the final result would be dependant on the order of evaluation of the rules. Ie. You would get a different answer if you evaluated the northlake before the southlake to the answer you would get if you evaluated the southlake before the northlake. References to own cell/specie refer to current time step.

Ecosystem wide species

The ecosystem wide flavour of specie is not evaluated on a per cell basis, but is evaluated in step with the other species.

Data streams.

The model is driven by it input data. The time step for the input data need not match that of the model as all input data is regarded as a linearly interpolated function. Ie. To obtain the value of the input data at a time between two data points the model just linearly interpolates. The name of each input data stream defines an identifier that may be referenced in the rules. If a variable exists as a data stream for each cell, then an additional identifier with that variable name is defined.

In the example (See section Brief example) we have in the input file data streams this_cell.birdwatchers, that_cell.birdwatchers, the_other_cell.birdwatchers. On input, the program mashes these names to fit the variable@cellName convention. Thus the input file would give use variables of the name birdwatchers@this_cell, birdwatchers@that_cell, birdwatchers@the_other_cell.

If a variable in the input file is found to be present for all cells, then a cell based identifier corresponding to that variable is created. eg. birdwatchers


Go to the first, previous, next, last section, table of contents.