S-Curve Progression

S-Curve Progression

Purpose

To model development/progression of a model parameter that follows a S-shaped progression curve in the nature of the HDM3 crack development models, as shown in Figure 1 below.

As shown in this figure, there are three parameters that define this curve:

  • AADI = Age At Distress Initiation (in model periods).
  • Initial Value = the initial distress percentage when distress initially appears.
  • T100 = the number of periods for distress to reach 100%.

Figure 1: S-Progression Curve

Type Name: ‘s_progression’

Definition Syntax

[aadi] : [initial_value] : [T100] : [x_parameter_key]

where:

  • ‘aadi’ is the Age At Distress Initiation. The value provided here can be a constant or number, of a key that maps to one of the pre-defined or pre-calculated values in the value dictionary.
  • ‘initial_value’ is the Percent of distress at distress initiation. Typically this will be a low value such as 1% or 0.5%. The value provided here can be a constant or number, of a key that maps to one of the pre-defined or pre-calculated values in the value dictionary.
  • ‘T100’ is the number of periods to reach 100% distress. The value provided here can be a constant or number, of a key that maps to one of the pre-defined or pre-calculated values in the value dictionary.
  • ‘x_parameter_key’ is a key to define the model parameter or JFunction that defines the value on the X-axis as shown in the figure above. Thus, this is the parameter that maps to the ‘Age’ for the distress in question.

Example:

‘f_aadi_mesh_cracks : 0.5 : f_t100_mesh_cracks : par_surface_age’

In this example, the value for AADI will be extracted from the value dictionary using the key ‘f_aadi_mesh_cracks’. The value for the initial distress will be a fixed value of 0.5%, and the value for T100 will be extracted from the value dictionary using the key ‘f_t100_mesh_cracks’. Finally, the X-value that is entered into the S-curve in order to get the increment will be the value mapping to key ‘par_surface_age’ in the value dictionary.

Important

This function returns the INCREMENT that will occur at component age i, and not the absolute value that matches component age i. This is illustrated in a somewhat exagerated way in Figure 2 below, which shows that the value returned when the age is 3 periods/years, will be the increment that increases the distress percentage when the component ages by one year.

Thus, to get the parameter/distress value in the next epoch, you need to use an additive equation JFunction that adds the increment (value from this JFunction) to the current value for the parameter/distress.

Figure 2: S-Progression Increment

Comments

You should note that the value for parameter T100 (the number of periods to reach 100% distress) is better viewed as a model parameter to calibrate the S-curve appropriately, than an actual value. It is not unusual to use a value for T100 that is, for example, 120 years. This does not necessarily mean it will in actual fact take 120 years to reach 100% distress, because 100% distress is very seldom reached. Rather, a T100 value of 120 simply means that the curve has a very long tail, and that beyond the 50% distress mark (see below) it will take much longer to reach 60%, 70% or more distress.

The S-curve function implemented in Juno Cassandra is not a symmetrical S-curve. With a symmetrical S-curve, we mean a curve for this the 50% distress lies at the halfway point for T100. In the JCass implementation, the 50% distress point lies at 30% of the T100 range. This means that distress accumulates faster between the initial value and the 50% point, and then progression slows down above 50% distress. We feel this curve is a more realistic representation for how most distress will develop in infrastructure components.