Externally calculated axial stiffness

OrcaFlex line types allow the axial 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 axial spring stiffness based on the line type axial stiffness value. It is the wall tension in these axial 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 axial stiffness deviates from this pattern.

The axial 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 axial stiffness has a separate instance of an external function record.

Nominal axial stiffness

The OrcaFlex calculation needs to know a 'nominal' value of axial 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 axial stiffness in the lpExtFnInfo->Value field.

The value you return should typically be the axial stiffness corresponding to zero strain. 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 axial 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. Axial stiffness external functions differ in that they are required to update their values during statics.

Externally calculated axial 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.