Skip to the content.

DNV-RP-F109 on-bottom stability screening

NeqSim provides a typed engineering kernel for transparent early-phase on-bottom stability screening of submarine pipelines, cables, and umbilicals. The publisher identifies the current basis as DNV-RP-F109, edition 2021-05, amended 2025-09, covering lateral and vertical stability. See the DNV standard page.

The implementation is deliberately bounded. It calculates a transparent absolute-static screen, or checks displacement supplied by an externally validated generalized or dynamic response model. It does not reproduce licensed generalized-design tables, generate dynamic response, qualify an environmental or soil model, or establish conformity with DNV-RP-F109. Every calculated result is returned as CALCULATED_REVIEW_REQUIRED, including a passing screen.

Package integration

Responsibility Package/class
Typed workflow, readiness findings, edition and applicability gates neqsim.process.engineering.calculation.DnvRpF109OnBottomStabilityKernel
Immutable global and per-load-case inputs neqsim.process.mechanicaldesign.subsea.DnvRpF109OnBottomStabilityInput
Pure load and resistance calculation neqsim.process.mechanicaldesign.subsea.DnvRpF109OnBottomStabilityCalculator
Immutable assessment and intermediate results DnvRpF109OnBottomStabilityAssessment
Traceable limit-state result DnvRpF109StabilityCheck
Standard discovery StandardType, StandardCatalog, StandardRequirementPackRegistry, and EquipmentDesignKernelRegistry

The calculation belongs in mechanicaldesign.subsea because it combines hydrodynamic loading, submerged weight, and pipe-soil resistance for a seabed asset. The typed adapter remains in the shared engineering-calculation package, consistent with other standards kernels.

Implemented calculation boundary

For each load case, velocity and acceleration normal to the asset axis are calculated from the caller-supplied directions:

[ u_{c,n}=|u_c\sin\theta_c|,\quad u_{w,n}=|u_w\sin\theta_w|,\quad a_n=|a_w\sin\theta_w| ]

The transparent screen conservatively adds the normal current and wave velocity magnitudes, (u_n=u_{c,n}+u_{w,n}). With explicit project coefficients and reduction factors, it calculates:

[ F_D=\frac{1}{2}f_H\rho C_D D u_n^2,\quad F_I=f_H\rho C_M\frac{\pi D^2}{4}a_n,\quad F_L=\frac{1}{2}f_V\rho C_L D u_n^2 ]

The factored demands and available lateral resistance are:

[ H_d=\gamma_H(F_D+F_I),\quad V_d=\gamma_VF_L,\quad R_H=\mu\max(W_s-V_d,0)+R_p ]

where (W_s) is actual submerged weight per unit length and (R_p) is a caller-supplied, validated passive soil resistance. The kernel reports vertical utilization (V_d/W_s) and absolute-static lateral utilization (H_d/R_H). For a static case it also reports:

[ W_{s,required}=V_d+\frac{\max(H_d-R_p,0)}{\mu} ]

The result includes specific gravity derived from submerged weight and displaced-water buoyancy. Direction is measured relative to the asset axis: 0 degrees is axial and 90 degrees is normal.

For EXTERNAL_RESPONSE_0_5D, EXTERNAL_RESPONSE_10D, and EXTERNAL_RESPONSE_USER_DEFINED, NeqSim does not generate displacement. It checks an externally calculated displacement against 0.5 diameter, 10 diameters, or an explicit project limit. The caller must affirm that the response model is within its validated range and provide a traceable model basis; otherwise readiness fails closed. DNV describes its StableLines simplified methods and PILSS dynamic analysis separately on the StableLines service page and PILSS service page.

Required inputs

There are no hidden numerical project defaults. A runnable case supplies:

Storm duration and oscillation count are preserved in provenance but do not alter the transparent static Morison calculation. They remain important when reviewing cyclic pipe-soil response or an external generalized/dynamic analysis.

Java example

LoadCase operating = LoadCase.builder()
    .caseId("operating transverse storm")
    .submergedWeightNPerM(3200.0)
    .currentVelocityMPerS(0.6)
    .waveVelocityMPerS(1.2)
    .waveAccelerationMPerS2(0.8)
    .currentDirectionRelativeToPipeDeg(90.0)
    .waveDirectionRelativeToPipeDeg(90.0)
    .dragCoefficient(1.0)
    .liftCoefficient(0.8)
    .inertiaCoefficient(3.0)
    .horizontalLoadReductionFactor(0.8)
    .verticalLoadReductionFactor(0.7)
    .soilFrictionCoefficient(0.5)
    .passiveSoilResistanceNPerM(100.0)
    .horizontalSafetyFactor(1.1)
    .verticalSafetyFactor(1.1)
    .stormDurationHours(3.0)
    .oscillationCount(1000.0)
    .lateralMethod(LateralMethod.ABSOLUTE_STATIC)
    .build();

DnvRpF109OnBottomStabilityInput input = DnvRpF109OnBottomStabilityInput.builder()
    .edition(StandardEdition.defaultEdition(StandardType.DNV_RP_F109))
    .assetType(AssetType.PIPELINE)
    .equipmentType("Pipeline")
    .outsideDiameterM(0.508)
    .seawaterDensityKgM3(1025.0)
    .gravitationalAccelerationMPerS2(9.81)
    .engineeringBasis("Environmental ENV-1; geotechnical GEO-2; hydrodynamic HYD-3")
    .addLoadCase(operating)
    .build();

EngineeringCalculationResult<DnvRpF109OnBottomStabilityAssessment> result =
    new DnvRpF109OnBottomStabilityKernel().calculate(input, null);

Use the executed dnv_rp_f109_on_bottom_stability.ipynb notebook for load-case comparison, current-velocity sensitivity, and weight/soil-friction design space. Replace its illustrative coefficients and resistance inputs with project-controlled values.

Engineering use

A pass means only that the implemented arithmetic passes for the supplied inputs. Before a design decision, independently verify at least the licensed RP edition, environmental statistics and kinematics, hydrodynamic coefficients and reduction factors, seabed survey and pipe-soil model, penetration and passive-resistance basis, cyclic degradation, free-span and crossing interactions, displacement acceptability, adjacent assets, and installation and operating conditions.