Line theory: Buried line examples

The following examples demonstrate how line covered sections and cover types can be used to model buried lines. The examples range from quite simple to very advanced, and illustrate many of the concepts outlined in the corresponding theory topic.

Example 1: concrete mattress

In this example, we use a covered section to prevent a buoyant line from lifting off the seabed. The cover represents an array of concrete mattresses that have been laid over of the line. These apply a constant weight force per unit arc length. In this simple model, the only property of the cover that matters is its weight; the concepts of as-buried seabed penetration and cover height are not relevant.

The line in this model has a central buoyant section (green) between two heavier sections (yellow). In the initial set-up, it is effectively uncovered. If you run the model, you will see that the buoyant part the line floats up to the sea surface in the statics analysis:

Figure: The static solution without concrete mattresses

To prevent this, the central portion of the line, between arc lengths 235m and 265m, can be covered:

Figure: Line covered section data

The cover height is not relevant in this example (the uplift resistance will be the same for all the nodes within the covered section) and has been set to N/A to indicate this. The as-buried seabed penetration is also irrelevant, since we'll be applying a constant weight force that does not vary with uplift. The properties of the covering material are embodied in the ConcreteMattress cover type:

Figure: Cover type data

The normalised resistance has been set to 1 here. This means that the uplift resistance will always be equal to the resistance scale, which in this case is 0 (meaning that the line in the initial setup is effectively uncovered). The cover downward stiffness has also been set to 0, since we are not concerned with downward resistance generated when descending through the cover.

Now increase the resistance scale value from 0 in multiples of 10 kN/m, re-running the statics analysis each time. You will see that the central portion of the line starts to bow downwards as the weight on it increases. At a resistance scale of 40 kN/m, the portion of the line beneath the concrete mattress becomes firmly depressed into the seabed. This is illustrated by following animation:

Figure: The effect of increasing mattress weight
Note: The above animation is not a time domain replay. Instead, it was produced from a series of statics restarts, with each restart increasing the resistance scale by 2 kN/m.

Example 2: generic uplift resistance profile

In this example, we demonstrate how to use a cover type to apply a simple uplift resistance profile to a line.

For simplicity, the line in this model has a single-segment that is 1m in length. Both ends are attached to a constraint, so there are no free degrees of freedom in the model. The analysis runs over a period of 0-10s, during which the constraint lifts the line at a constant velocity of 1 m/s. The covered section data is as follows:

Figure: Line covered section data

The value of -149m for the as-buried seabed penetration has been chosen so that the initial position of the line is also its as-buried position. In this case, it means that the bottom of the line is 149m above the seabed. The data for FibonacciCover is as follows:

Figure: Cover type data

We have set the resistance scale and mobilisation scale to unit values, which effectively redimensionalises the normalised resistance to make it a function of uplift resistance (per unit length) versus upwards displacement:

Figure: Normalised resistance data

The uplift resistance values have been set equal to the first eleven Fibonacci numbers, which will make it easy for us to confirm that the model is reporting the expected results. Now run the model and open the genericUpliftResistanceProfile.wrk workspace.

Figure: The model results

Notice how the distinctive Fibonacci numbers reappear in these results: our original normalised resistance has been directly translated into the cover resistance (per unit length); and, since the line is of unit length, this also translates into the constraint connection force.

Note: The UnitUpliftRate constraint in this model has a constant applied load of 1.765197 kN, acting vertically upwards. This is to cancel out the weight of the line so that it does not contribute to the constraint connection force and obscure the key observation that the Fibonacci numbers appear in the model results.

Example 3: DNV drained soil model with ratcheting

In this example, we implement the DNV model for drained soil (see DNVGL-RP-F114).

We define the resistance scale, $R_c$, to be equal to the peak resistance of the DNV model: \begin{equation} R_c(D, H) = \gamma' \left[ D H + \left(\frac12 - \frac{\pi}{8} \right) D^2 + f \left(H + \frac{D}{2} \right)^2 \right] \end{equation} where $H$ is the cover height, $D$ is the pipe diameter, $\gamma'$ is the submerged weight of the soil (per unit volume) and $f$ is known as the uplift resistance factor. We combine this with the formula for mobilisation scale, $d_m$, given in equation 5 of Thusyanthan et al., 2010: \begin{equation} d_m(D, H) = \frac{D}{50} \, \exp \left( \frac{H}{2D} \right) \end{equation}

Note: This formula for $d_m$ as a function of both $D$ and $H$ is a rarity in the literature. Usually, $d_m$ is directly proportional to either $D$ or $H$.

In addition, we also define a ratcheting length, $d_r$, based on the geometry of figure 5 in Thusyanthan et al., 2011: \begin{equation} d_r(D) = \frac{D}{2} \, \frac{1 - \cos \alpha}{\cos \alpha} \end{equation} where $\alpha$ is the angle of repose of the soil (the angle at which the material on the slope face is on the verge of sliding). We implement this in OrcaFlex by defining a cover load model (DrainedLoadModel) with the following equation script:

R_c = gammaPrime*(D*H + (1/2 - pi/8)*D**2 + f*(H + D/2)**2)


d_m = 0.02*D*exp( H/(2*D) )


cosAlpha = cos(rad(alpha))

d_r = (D/2) * ( (1-cosAlpha)/cosAlpha )

where the rad function converts degrees to radians. gammaPrime, f and alpha are defined as Python variable data constants:

Figure: Constants for DNV drained soil cover load model

To emphasise the effect of the cover, the model contains two lines, Uncovered (yellow) and Covered (purple). The analysis is broken up into two parts: the first is a static analysis (for which neither line is covered), to lay both lines down onto the seabed; the second is a dynamics-only restart analysis, in which the ends of the two lines are lifted up from the seabed by constraints. The two lines are identical in the parent statics analysis, then the central portion of Covered is buried under a layer of soil in the restart analysis:

Figure: Line covered section data

The central portion of Covered (between arc lengths 200m and 300m) has been buried under a trapezium-shaped mound of soil:

Figure: Cover height profile

The value of ~ for the as-buried seabed penetration indicates that the line is considered to have been buried in the position it was in at the end of the parent statics analysis. The data for the DrainedSoil cover type is:

Figure: Cover type data

The resistance scale, mobilisation scale and ratcheting length will all be determined by the DrainedLoadModel cover load model, detailed above. The normalised resistance has been set to a typical trilinear curve, incorporating an additional safety factor:

Figure: Normalised resistance

The final point of note is that the cover downward stiffness has been set equal to ~, which means that the seabed normal stiffness (at zero penetration) will be used to determine the downward resistance when descending through the cover.

There are two curvilinear constraints in the model, UncoveredConstraint and CoveredConstraint. The first of these lifts the ends of Uncovered line; the second lifts the ends of CoveredLine. Both constraints have identical data:

Figure: Constraint data

The z = 10*t line in the mapping means that the out-frame of the constraint will lift at a constant rate of 10 m/s (the simulation starts at $t=0$). The out-frame release condition means that the constraint will 'break' when the downwards force exceeds 50,000 kN. If this happens, then the out-frame will be released from the in-frame and the line will begin to fall back towards the seabed.

The outcome of running the model is illustrated by the following animation:

Figure: DNV drained soil model with ratcheting

Firstly, notice that the central portion of the purple Covered line is retarded by its motion through the cover, compared to the yellow Uncovered line. This is because of the extra resistance applied by the mound of cover (drawn as a grey trapezium). This extra resistance eventually exceeds the 50,000 kN breaking strength of the constraint, which causes the line to fall back down towards the seabed. Note how its fall is eventually arrested by the mound of soil beneath it. This happens because the ratcheting length is relatively short, meaning that the soil fills beneath the line as it rises. If you reset the model and set the ratcheting length for DrainedSoil to Infinity, then this means that there will be no infill of soil and a void will be formed beneath the uplifting line instead. This results in Covered falling freely back through the cover and returning to its original position on the seabed:

Figure: DNV drained soil model without ratcheting

Example 4: DNV undrained soil model

In this example, we sketch how to implement the DNV model for undrained soil (see DNVGL-RP-F114) in OrcaFlex. In undrained conditions there are two contributions to the peak uplift resistance: a local resistance caused by soil displacing around and below the pipe as it rises; and a global resistance that embodies the pipe lifting the entire weight of the soil above it. The peak resistance (which we again set to be the resistance scale, $R_c$) is the minimum of these two contributions: \begin{equation} R_c(D, H) = \min \left( R_\textrm{local} (D), R_\textrm{global} (D, H) \right) \end{equation} where \begin{equation} R_\textrm{local} (D) = N_c \bar{s}_u D - \frac{\pi}{4} \gamma' D^2 \\ R_\textrm{global} (D, H) = \gamma' \left[ D H + \left(\frac12 - \frac{\pi}{8} \right) D^2 \right] + 2 \bar{s}_u \left( H + \frac{D}{2} \right) \end{equation} $N_c$ is the bearing capacity factor, $\bar{s}_u$ is the average undrained shear strength and $\gamma'$ is again the submerged unit soil weight. In OrcaFlex, we can encode this equation in a cover load model with the following SymPy variable data equation script:

R_local = N_c*s_u*D - (pi/4)*gammaPrime*D**2


R_global = gammaPrime*(D*H + (1/2 - pi/8)*D**2) + 2*s_u*(H + D/2)


R_c = Min(R_local, R_global)

with N_c, s_u and gammaPrime defined as Python variable data constants.

Note: For simplicity, this equation script does not include formulae for d_m and d_r. This is fine, as long as the cover type only expects R_c to be provided by this model.

Example 5: residual post-peak resistance

In this example, we sketch how to implement the post-peak resistance model of Wang et al.. This is very similar to the DNV model for drained soil. The difference is that the resistance to uplift starts to decrease (as the depth of cover above the line reduces) once the initial peak resistance has been fully mobilised. In the original DNV model, the soil, once lifted, is treated as if it remains on top of the pipe for evermore. In the model of Wang et al., any soil raised above the top of the cover falls away to the sides, apart from a residual wedge of soil that remains in perpetuity. This is illustrated by the following schematic:

Figure: The conceptual difference between the DNV model and that of Wang et al.

The modified formula for the resistance scale is: \begin{equation} R_c(D, H) = \gamma' \left[ D h + \left(\frac12 (1 + \tan \alpha) - \frac{\pi}{8} \right) D^2 + f \left(h + \frac{D}{2} \right)^2 \right] \end{equation} where $h = H - z$, $\gamma'$ is the submerged unit soil weight, $f$ is the uplift resistance factor and $\alpha$ is the soil angle of repose (critical soil intergranular friction angle). This is the same as the DNV formula for drained soil, but with two important differences:

  1. The instantaneous cover height, $h$, is used instead of the as-buried cover height, $H$. $h$ is the distance remaining between the top of the pipe and the top of the cover when the line is in its current position.
  2. The $\tan \alpha$ term corresponds to the weight of a residual wedge of cover above the line.

In OrcaFlex, we can encode this equation in a cover load model with the following SymPy variable data equation script:

h = Max(H - z, 0)


R_c = gammaPrime*(D*h + ((1/2)*(1 + tan(rad(alpha))) - pi/8)*D**2 + f*(h + D/2)**2)

Note: For simplicity, this equation script does not include formulae for d_m and d_r. This is fine, as long as the cover type only expects R_c to be provided by this model.

$R_c$ here is a function of $D$, $H$ and $z$. The fact that it is a function of z means that it has to be re-evaluated at every time-step of the simulation (whereas a function of just $D$ and $H$ only needs to be evaluated once for each node). Here, we've used the SymPy Max function to prevent $h$ from becoming negative when the top of the line leaves the cover. Unfortunately, this Max function is quite slow to evaluate in SymPy, which may lead to poor performance. An alternative is to evaluate the script with ordinary Python instead of SymPy.

Figure: Normalised resistance

This requires a slight modification to the script to replace SymPy's Max with Python's built-in max. A downside of using ordinary Python instead of SymPy is that OrcaFlex will no longer evaluate the derivative of $R_c$ with respect to $z$, which may be detrimental to the accuracy of a frequency domain model, or the convergence of a time domain one.

Note: Usually, the $z$-dependence of the uplift resistance can be encoded into the normalised resistance, rather than into the resistance scale. In most cases, this will be sufficient for your needs.

Example 6: backfill plus rockdump

In this example, we implement the backfill plus rockdump resistance model of Thusyanthan et al.. The example is a modified version of the DNV drained soil with ratcheting model described above, and has broadly the same features and behaviour. Since the models are so similar, only the key differences will be explained in this section.

This is an example of a cover type composed of two distinct layers: a lower layer of soil, of thickness $H_b$, with a coarser layer of rock, of thickness $H_r$, on top of it. The formula for the resistance scale will be a function of both $H_b$ and $H_r$, which means that it should be modelled as a single 2-layer cover type, rather than as two separate (non-interacting) cover types (for which the resistances would be computed separately and summed). The formula for the resistance scale is: \begin{equation} R_c(D, H_b, H_r) = \gamma' \left[ D H_b + \frac{1}{10} D^2 + f_\textrm{p} \left(H_b + \frac{D}{2} \right)^2 \right] + \gamma_r' H_r \left( D + 2 f_\textrm{p} H_b + f_\textrm{rp} H_r \right) \end{equation} where $\gamma'$ and $\gamma_r'$ are the unit soil weight and unit rock weight, respectively; and $f_\textrm{p}$ and $f_\textrm{rp}$ are non-dimensional coefficients.

The equation for $R_c$ is encoded in the BackfillPlusRockdumpLoadModel cover load model:

R_c = gammaPrime*(D*H[0] + 0.1*D**2 + f_p*(H[0] + D/2)**2) + gamma_rPrime*H[1]*(D + 2*f_p*H[0] + f_rp*H[1])

Notice that $H$ is now an indexed quantity: H[0] corresponds to $H_b$, the height of the backfill (lower layer); H[1] corresponds to $H_r$, the height of the rock dump (upper layer). We arrange this by setting the number of layers of the BackfillPlusRockdump cover type to 2:

Figure: Cover type data
Note: For simplicity, the mobilisation distance and ratcheting length have been set to fixed values in this example, rather than being determined by a cover load model.

The covered section data for Covered must also reflect that there are two layers of cover, by referencing a 2-layer cover height model (BackfillPlusRockdumpLayerHeights):

Figure: Line covered section data

The cover height model has the following equation script:

H = (4, 2 + 3*sin(pi*s/100))

where s is the arc length within the covered section (between arc lengths 200 m and 300 m). This means that the lower layer of backfill is 4 m thick (measured from the top of the as-buried line), and the upper layer of rock dump is 2 m thick at the edges (of the covered section) and 5 m thick in the centre.

Running the model results in the following behaviour:

Figure: Backfill plus rockdump