## Introduction

In modelling with data, it is often useful to apply the same model logic on different sets of parameters, to support scenario/what-if analysis. The GeoDMS therefore uses calculation schemes. A calculation scheme is defined as a set of calculation rules (model logic) with at least one case parameter. A calculation scheme can be compared with a function in a programming language.

In a calculation scheme data items can not be calculated, as the value(s) for the case parameter(s) are not known. To calculate the results, values need to be set for the case parameters. A case is defined as an instantiated calculation scheme with values set for each case parameter.

With the GeoDMS results of cases can easily be compared, as results of multiple cases can be available as different tree items simultaneously.

## How to configure a calculation scheme

The following example shows a calculation scheme used to:

- Calculate the farest distance of two distance attributes and

- Call another calculation scheme that aggregates the results to different spatial levels

Template CombineDistWithANDcond^{1)}

{

// begin case parameters

attribute<m> dist1 (bag/vbo);

attribute<m> dist2 (bag/vbo);

// end case parameters

attribute<m> farest_dist (bag/vbo) := max_elem(dist1, dist1);

container aggregations := AggScheme(farest_dist);

}

*1) Until GeomDMS version 7.120 the syntax: container SchemeName: IsTemplate = "True" was used. This syntax is still supported, but the new syntax is advised as it is shorter.*

The container CombineDistWithANDcond is the parent item of the calculation scheme and used as the name of the scheme. In the example two case parameters are configured, dist1 and dist2. Case parameters are always configured as the first subitems of the calculation scheme container.

After the configuration of the case parameters, two attributes are configured. These attributes from the model logic of this scheme. The case parameters are suppliers of the first attribute. This first attribute is supplier of the second attribute.

The container aggregations, the last item of this scheme, has an expression configured with calls another scheme. This way a nested structure of schemes calling other schemes can be set up.