The coding for sensitivity analysis is concentrated within the sensitivity.c subroutine. The objective functions and the parameters describing them are stored in a character*81 field objectset(4,nobject), where nobject is the number of objective functions. In the absence of constraints there can be an arbitrary number of objective functions specified by the user. In the presence of constraints, there is exactly one objective function and an arbitrary number of constraints. Regarding the field objectset, constraints are treated in exactly the same way as objective functions. However, in the presence of constraints, in addition to the sensitivity of the objective function and each of the constraints, the sensitivity of the constrained objective function is calculated too. Therefore, nobject is in that case 1(for the unconstrained objective function) + number of constraints + 1 (for the constrained objective function)

The structure of the field objectset is as follows:

- objectset(1,*)
- 1-18: objective/constraint (e.g. DISPLACEMENT)
- 19-20: LE or GE (for constraints)
- 21-40: boundary weighting distance
- 41-60: relative constraint value
- 61-80: absolute constraint value
- 81-81: R for reading the sensitivities from file jobname.sen, W for writing the sensitivities to file jobname.sen (only stored in objectset(1,1))

- objectset(2,*)
- 1-5: filter type
- 6-8: BOU if boundary weighting is active, else empty
- 10-12: EDG if edge conservation is active, else empty
- 14-16: DIR if direction weighting is active, else empty
- 21-40: filter radius
- 41-60: of the Kreisselmeier-Steinhauser function
- 61-80: of the Kreisselmeier-Steinhauser function

- objectset(3,*)
- 1-81: node or element set to which the objective/constraint applies

- objectset(4,*)
- set of opposite ndoes for THICKNESS constraint

The structure of subroutine sensitivity.c is made up of a preprocessing part, a processing part and a postprocessing part. The preprocessing part is executed only once, for frequency sensitivities the processing and postprocessing part is executed as many times as there are eigenvalues, else they are executed only once.