# TELCAL design explanations

- Several comments on the design of the fitting part:
  - Derived typed are defined to stay general, in particular no array dimension is explicitly specified. This implied the use of POINTERS.
  - Everything can not be passed in the subroutine calling sequences. Indeed, ALL minimization (and thus fitting) algorithms ask for a function to be minimized which have a pre-defined calling sequence. This calling sequence varies with the used minimization methods and libraries. However, those calling sequence inevitably miss some important parameters (as an example, they never pass function parameters that the user want to stay fixed). Properties of the fitted function (and also sometimes grid of measured points) must be passed by another mechanism. In some F77 parts of GILDAS (e.g. UV_FIT), this problem is solved by INCLUDE files and COMMON. Here, the F90 “use association” mechanism is used (i.e. the variable to be shared is define in a module that is called in all the needed subroutines).
  - There are some duplication between the fitted function calling sequence and the “association module”. This avoids particular cases for every different minimization methods and libraries.
- The plotting part is done through SIC procedures. This is very flexible but this implies the definition of SIC structures associated to the high levels TELCAL derived types (e.g. POINT_CROSS).
- The TELCAL demonstration could be the basis of a TELCAL test suit.