Externally calculated torsional stiffness

OrcaFlex line types allow the torsional stiffness data to be externally calculated. The procedure involved is more complicated than for other external functions and is described in detail below.

OrcaFlex lines are made up of sections and each section has properties as specified by an OrcaFlex line type. In turn, each section is represented by a number of nodes and segments. Each segment therefore has an torsional spring stiffness based on the line type torsional stiffness value. It is the torque in these torsional springs that the external function implements.

External function instancing

For other external functions in OrcaFlex there is a one-to-one relationship between data items specified to be externally calculated and instances of an external function record (TExtFnInfo). Externally calculated torsional stiffness deviates from this pattern.

The torsional stiffness data are specified on the line type form in OrcaFlex. There may be many nodes in potentially many different lines which use the properties of any single line type. Because of this each node in a section with externally calculated torsional stiffness has a separate instance of an external function record.

Nominal torsional stiffness

The OrcaFlex calculation needs to know a 'nominal' value of torsional stiffness for various auxiliary requirements. To cater for this a special call to the external function is made with lpExtFnInfo->Action set to eaCalculateNominalValue. With this value of Action the external function is requested to return the nominal value of torsional stiffness in the lpExtFnInfo->Value field.

The value you return should typically be the torsional stiffness corresponding to zero twist. If the stiffness is nonlinear then you need to choose a single representative value.

Note: This nominal value call uses different instancing from the other calls to the external function. The nominal value is assumed to be unique to each line type and so the call is made once for each line type with externally calculated torsional stiffness. Accordingly the lpExtFnInfo->ObjectHandle parameter identifies a line type.

When lpExtFnInfo->ObjectHandle identifies a line type then the Action parameter is never equal to eaCalculate. The call sequence for line type objects is eaInitialise, eaCalculateNominalValue and then eaFinalise.


The other types of external function in OrcaFlex are typically not updated during statics. Torsional stiffness external functions differ in that they are required to update their values during statics.

Externally calculated torsional stiffness allows you to implement sophisticated dynamic behaviour, such as hysteresis or rate dependence, etc. For such relationships you would typically disable hysteretic or other history-dependent effects during statics. To achieve this you can call C_GetModelState – the model is calculating statics if this returns msCalculatingStatics.