## Summary

The end user combines a (perhaps already calibrated) Sobek-CF schematization and a (perhaps already calibrated) Modflow schematization.

He wants to calibrate this composition.

He has 5 observations available (water levels time series at 3 Sobek-CF locations, grondwater level time series at 3 Modflow locations).

The parameters that have to be calibrated are:

- the Manning coefficient in a certain part of the river schematization
- the exchange coefficient used for computing the seepage (coefficient is the same for all locations and all time steps).

There is an algorithm available that, to do its work, must be able to repeatedly:

- feed a new value for each parameter to the related model
- ask the models for their computed values at the locations where the observations are available
- compare (or let another component compare) the computed values and the observated values.

We assume that both Sobek-CF and Modflow implement the IManagedState interface.

## How to address in Version 1

You have to program two classes, the calibration algorithm itself, and a cost function.

The cost function class:

- can link the two models (i.e. that is a kind of 'Composition' class, and therefore preferably can be instantiated from an *.opr file)
- can access the required parameters of the two models (note that this class has to be a ILinkableComponent itself).
- is a ILinkableComponent itself (including IManagedState), so that another ILinkableComponent (the algorithm) can interact with it.

The algorithm class:

- is a ILinkableComponent itself, be able to interact with the cost function class
- ...

## How to address in Version 2

...