Endurance gain from weld improvements
DNV has published RP-C203 Fatigue design of offshore steel structures (2025). It now covers bankable endurance1 from weld improvement techniques such as grinding, and hammer peening.
I’ve taken a stab at comparing Tables 2-3 and F-15, see figure below. The legend to be read as [N] – no improvements, [G] – grinding, and [P] – hammer peening.
Data and plot code for weld improvements
curve,r_start,r_mid,r_end,a1,m1,a2,m2
T (DNV 2025) [N],1.00E+03,1.80E+06,1.00E+08,12.180,3.0,16.130,5.0
T (DNV 2025 [G]),1.00E+03,1.00E+06,1.00E+08,14.597,4.0,18.896,6.0
T (DNV 2025 [P]),1.00E+03,1.00E+06,1.00E+08,17.082,5.0,21.515,7.0
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
# Grinding and hammer peening improvements in DNV-RP-C203 (2025)
# snc.py -- 2025 C Kunte
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def lbls():
plt.legend(loc="best", fontsize="small")
plt.xlabel(r"Number of cycles, N")
plt.ylabel(r"Hotspot stress, $\sigma$ (MPa)")
plt.grid(True, which="both", linestyle="--", linewidth=0.5)
def sncurve(curve, r_start, r_mid, r_end, a1, m1, a2, m2, color):
# First slope
n1 = np.logspace(np.log10(r_start), np.log10(r_mid), num=200)
s1 = (n1 / 10**a1) ** (-1 / m1)
# Second slope
n2 = np.logspace(np.log10(r_mid), np.log10(r_end), num=200)
s_mid = (r_mid / 10**a1) ** (-1 / m1)
s2 = s_mid * (n2 / r_mid) ** (-1 / m2)
plt.loglog(n1, s1, base=10, color=color,
label=f"{curve} ($m_1$={m1}, $m_2$={m2})")
plt.loglog(n2, s2, base=10, color=color)
def main():
df = pd.read_csv("./sncurves_t.csv")
# Exactly three colors, in order:
colors = ["red", "darkorange", "green"]
for (i, (_, row)) in enumerate(df.iterrows()):
color = colors[i] # select 1st, 2nd, 3rd
sncurve(**row.to_dict(), color=color)
lbls()
plt.title("S–N curves as per DNV RP-C203 (2025)")
plt.savefig("sncurves_t.svg")
if __name__ == "__main__":
main()
-
See also TSA for pile welds? and S-N curves. ↩