Chapter 5 Coastal Engineering: Forces on structures (Sainfluou Method)#

  1. Introduction: Non-Breaking Wave Forces

  2. Simulation: Non-Breaking Wave Force

  3. Self-Assessment

1. Introduction#

Descriptive alt text for accessibility

Fig. 34 **Figure 5.16 **: Wave Force Exerted by Non-Breaking Waves on Vertical Structure.#

Corrected Sainflou Method for Wave Pressure Estimation#

Overview#

This method estimates the dynamic wave pressure distribution on a coastal structure using Sainflou’s theory, based on linear (Airy) wave theory. It assumes a fully reflective vertical wall and calculates pressure as a function of depth. The model is enhanced to account for:

  • Structure slope

  • Oblique wave approach

  • Overtopping conditions

These corrections align with recommendations from the Shore Protection Manual (SPM) and Coastal Engineering Manual (CEM).


Core Equation (Sainflou Pressure)#

The dynamic pressure at a depth ( z ) is given by:

\[ p(z) = \rho g a \cdot \frac{\cosh(k(d + z))}{\cosh(kd)} \]

Where:

  • \(( \rho \)) = seawater density

  • \(( g \)) = gravitational acceleration

  • \(( a = \frac{(1 + c)H}{2} \)) = local wave amplitude at the wall

  • \(( k \)) = wave number (from dispersion relation)

  • \(( d \)) = water depth in front of the structure

  • \(( z \)) = vertical coordinate (from seabed to still water level)


🛠️ Corrections Applied#

1. Structure Slope Correction (\(( K_s \)))#

Accounts for energy dissipation on inclined faces:

\[ K_s = \cos^2(\theta_s), \quad \theta_s = \tan^{-1}(\text{slope}) \]

2. Wave Angle Correction (\(( K_\beta \)))#

Reduces pressure for oblique wave approach:

\[ K_\beta = \cos(\beta) \]

3. Overtopping Correction (\(( K_o \)))#

Reduces effective pressure if wave height exceeds structure height:

\[ K_o = \min\left(1, \frac{h_s}{H}\right) \]

✅ Final Corrected Pressure#

\[ p_{\text{corrected}}(z) = p(z) \cdot K_s \cdot K_\beta \cdot K_o \]

📏 Force and Moment Calculation#

  • Total Force:

\[ F = \int_{-d}^{0} p(z) \, dz \]
  • Overturning Moment (about seabed):

\[ M = \int_{-d}^{0} p(z) \cdot (z + d) \, dz \]

These are computed numerically using discrete summation.


📈 Interactive Features#

Users can adjust:

  • Wave height (H) - Wave period (T) - Structure height

  • Water depth - Structure slope - Wave approach angle

🌊 Wave Load Estimation Using Miche-Rundgren Method#

This guide outlines the step-by-step procedure for estimating wave forces on vertical coastal structures using the Miche-Rundgren method, based on the Shore Protection Manual (SPM). It includes corrections for structures over rubble mounds and inclined surfaces.


📘 Assumptions#

  • Linear Wave Theory applies unless otherwise specified.

  • Figures referenced (e.g., 7-4, 7-90, etc.) are from the Shore Protection Manual.

  • w = unit weight of water

  • ds = water depth at structure

  • T = wave period

  • Ho = deepwater wave height

  • Hi = incident wave height at structure

  • d = water depth

  • F = dynamic force

  • M = dynamic moment

  • rf, rm = force and moment reduction factors

  • b, y = geometry-dependent parameters

  • ho = wave height at toe of rubble mound

  • θ = angle of inclination from vertical


1️⃣ Vertical Structure (Non-Breaking Waves)#

Step-by-Step Procedure#

  1. Wave Characteristics

    • Calculate wavelength and deepwater wave height (Ho) using Linear Wave Theory if not provided.

  2. Design Breaking Wave Height

    • Compute dimensionless parameter:
      $\( \frac{ds}{gT^2} \)$

    • Use Figure 7-4 to find breaking wave height at the structure.

  3. Applicability Check

    • Confirm that non-breaking wave theory applies (i.e., wave does not break before reaching the structure).

  4. Dynamic Force and Moment Ratios

    • Compute:
      $\( \frac{Hi}{gT^2} \)$

    • Use Figures 7-91 and 7-92 to obtain:

      • \(( \frac{F}{wd^2} \))

      • \(( \frac{M}{wd^3} \))

  5. Dynamic Force and Moment

    • Multiply ratios by appropriate powers of depth:

      • \(( F = \left(\frac{F}{wd^2}\right) \cdot wd^2 \))

      • \(( M = \left(\frac{M}{wd^3}\right) \cdot wd^3 \))

  6. Total Force and Moment

    • Add dynamic values to static components to obtain total wave loading.


Vertical Structure Over Rubble Mound#

1–5. Repeat Steps 1–5 from the non-breaking wave case.

  1. Wave Height at Toe of Structure

    • Use Figure 7-90 and
      $\( \frac{Hi}{gT^2} \)$ to calculate wave height at toe (ho).

  2. Clapotis Crest Elevation

    • Estimate clapotis crest elevation at the wall using wave reflection and geometry.

  3. Reduction Factors

    • Determine parameters b and y from Figure 7-98.

    • Use Figure 7-97 to obtain:

      • \(( 1 - rf \)) (force reduction)

      • \(( 1 - rm \)) (moment reduction)

  4. Reduced Dynamic Force and Moment

    • Apply reduction:

      • \(( F_{\text{reduced}} = (1 - rf) \cdot F \))

      • \(\( M_{\text{reduced}} = (1 - rm) \cdot M \))

  5. Moment About Top of Rubble Mound

    • Subtract moment due to rubble mound height: $\( M_{\text{top}} = M_{\text{reduced}} - h_{\text{mound}} \cdot F_{\text{reduced}} \)$

  6. Total Wave Loading

    • Add reduced dynamic values to hydrostatic components to obtain total force and moment.


3️⃣ Slightly Inclined Vertical Structure#

1–3. Repeat Steps 1–3 from the non-breaking wave case.

  1. Dynamic Force and Moment Ratios

    • Compute:
      $\( \frac{Hi}{gT^2} \)$

    • Use Figures 7-94 and 7-95 (reflection coefficient = 0.9) to obtain:

      • \(( \frac{F}{wd^2} \))

      • \(( \frac{M}{wd^3} \))

  2. Dynamic Force and Moment

    • Multiply ratios by appropriate powers of depth:

      • \(( F = \left(\frac{F}{wd^2}\right) \cdot wd^2 \))

      • \(( M = \left(\frac{M}{wd^3}\right) \cdot wd^3 \))

  3. Total Force and Moment

    • Add dynamic values to static components to obtain total wave loading.


References#

  • Sainflou assumes a standing wave pattern due to full reflection, leading to sinusoidal pressure variation along the wall. Miche improves on Sainflou by incorporating second-order effects, making it suitable for steeper waves. [of Engineers, 1984] combines the Sainflou (1928) and Miche (1944) methods to estimate wave forces from non-breaking waves on vertical structures. The description of Wave forces on structures and associated assumptions and corrections are thoroughly discussed in the Shore Protection Manual

2 Simulation#

🌊 SPM-Based Interactive Wave Force & Moment Estimator#

This tool estimates the total horizontal wave force (F) and overturning moment (M) on a vertical coastal structure based on empirical curves from the Shore Protection Manual (SPM, 1984) — specifically Figure 7-91 for force and Figure 7-92 for moment.

📘 Background#

Wave impact on vertical structures depends on:

  • Incident wave height \( H_i \)

  • Wave period \( T \)

  • Water depth at structure toe \( d \)

  • Methodological assumption: either Sainflou (standing wave reflection) or Mich-Rundgren (uprush impact)

An automatic logic selects the appropriate method:

  • If \( H_i < 2.5, \text{m} \) → use Sainflou

  • If \( H_i \geq 2.5, \text{m} \) → use Mich-Rundgren


📐 Empirical Formulas#

1. Horizontal Wave Force (N/m):#

The force is calculated as:

\[ F = C_F \cdot \rho \cdot g \cdot H_i^2 \]

Where:

  • \( \rho = 1025, \text{kg/m}^3 \) (density of seawater)

  • \( g = 9.81, \text{m/s}^2 \) (gravitational acceleration)

  • \( C_F \) is computed via:

Sainflou method:

\[ C_F = 0.5 + 1.2 \cdot \frac{H_i}{g T^2} + 0.8 \cdot \frac{H_i}{d} \]

Mich-Rundgren method:

\[ C_F = 0.7 + 1.5 \cdot \frac{H_i}{g T^2} + 1.0 \cdot \frac{H_i}{d} \]

2. Overturning Moment (Nm/m):#

The moment is calculated as:

\[ M = C_M \cdot \rho \cdot g \cdot H_i^2 \cdot d \]

With coefficients:

Sainflou method:

\[ C_M = 0.3 + 1.0 \cdot \frac{H_i}{g T^2} + 0.6 \cdot \frac{H_i}{d} \]

Mich-Rundgren method:

\[ C_M = 0.5 + 1.3 \cdot \frac{H_i}{g T^2} + 0.9 \cdot \frac{H_i}{d} \]

🌊 Clapotis Crest and Trough Calculator#

This function estimates the maximum crest and minimum trough elevation of a standing wave (clapotis) formed by full wave reflection at a vertical structure. This helps determine the minimum required elevation (height) of the structure to avoid wave overtopping.

🔧 Parameters:#

  • H_i: Incident wave height (m)

  • T: Wave period (s)

  • d: Water depth at the base of the structure (m)


📐 Step-by-Step Breakdown:#

  1. Wave Number (k):

    • Estimated using the dispersion relation:

\[ \omega^2 = gk \tanh(kd) \quad \text{where} \quad \omega = \frac{2\pi}{T} \]
  1. Wavelength (L):

\[ L = \frac{2\pi}{k} \]
  1. Orbital Center Rise (h₀):

    • The vertical rise of the orbital center due to wave interaction:

\[ h_0 = \frac{H_i}{2} \cdot \frac{1}{\tanh\left(\frac{2\pi d}{L}\right)} \]
  1. Crest and Trough Elevation of Clapotis:

    • Assumes full reflection (reflection coefficient = 1.0).

\[ \text{Crest} = d + h_0 + \frac{(1 + R) H_i}{2} \]
\[ \text{Trough} = d + h_0 - \frac{(1 + R) H_i}{2} \]
  • With \(( R = 1.0 \)), this becomes:

\[ \text{Crest} = d + h_0 + H_i \qquad \text{Trough} = d + h_0 - H_i \]

🏗️ Minimum Structure Height Recommendation#

To prevent overtopping, the structure elevation should at least match the crest elevation, plus an added freeboard buffer (typically 0.3–0.5 m), based on wave climate and criticality of protection.

\[ \text{Structure Height}_{\text{min}} = \text{Crest} + \text{Freeboard} \]

📘 Design Insight#

  • The clapotis crest represents the maximum vertical reach of the reflected wave.

  • Incorporating this into design ensures resilience against high-water events and full wave reflection, which are common at vertical revetments and quay walls.

🎛️ Interactivity Features#

Users can adjust:

  • Wave Height \( H_i \)

  • Wave Period \( T \)

  • Water Depth \( d \)

  • Method selection (‘Sainflou’, ‘Mich-Rundgren’, or ‘auto’)

And immediately view:

  • 🔢 Calculated Total Force

  • 📉 Calculated Moment

  • 🔍 Auto-selected method based on wave conditions


🧠 Reflective Prompts#

  • How do changes in \( H_i \) affect the transition between Sainflou and Mich-Rundgren methods?

  • Why does \( \frac{H_i}{gT^2} \) — a wave steepness indicator — play such a central role?

  • What design risks emerge when ignoring uprush effects in high-energy wave climates?

import numpy as np
import ipywidgets as widgets
from IPython.display import display, clear_output

# 🌊 Constants
g = 9.81               # gravity (m/s²)
rho = 1025             # seawater density (kg/m³)
reflection_coeff = 1.0 # full reflection assumed

# 🌊 SPM-based force from Fig 7-91
def wave_force_spm(H_i, T, d, method='auto'):
    Hi_gT2 = H_i / (g * T**2)
    Hi_d = H_i / d

    if method == 'auto':
        method = 'Sainflou' if H_i < 2.5 else 'Mich-Rundgren'

    if method == 'Sainflou':
        C_F = 0.5 + 1.2 * Hi_gT2 + 0.8 * Hi_d
    elif method == 'Mich-Rundgren':
        C_F = 0.7 + 1.5 * Hi_gT2 + 1.0 * Hi_d
    else:
        raise ValueError("Invalid method selected.")

    return C_F * rho * g * H_i**2, method

# 🌊 SPM-based moment from Fig 7-92
def wave_moment_spm(H_i, T, d, method='auto'):
    Hi_gT2 = H_i / (g * T**2)
    Hi_d = H_i / d

    if method == 'auto':
        method = 'Sainflou' if H_i < 2.5 else 'Mich-Rundgren'

    if method == 'Sainflou':
        C_M = 0.3 + 1.0 * Hi_gT2 + 0.6 * Hi_d
    elif method == 'Mich-Rundgren':
        C_M = 0.5 + 1.3 * Hi_gT2 + 0.9 * Hi_d
    else:
        raise ValueError("Invalid method selected.")

    return C_M * rho * g * H_i**2 * d, method

# 🌊 Wave number from dispersion relation (Airy theory)
def wave_number(T, d, tol=1e-6, max_iter=100):
    omega = 2 * np.pi / T
    k = omega**2 / g
    for _ in range(max_iter):
        k_new = omega**2 / (g * np.tanh(k * d))
        if abs(k_new - k) < tol:
            break
        k = k_new
    return k

# 🌊 Clapotis crest and trough calculator
def clapotis_elevation(H_i, T, d):
    k = wave_number(T, d)
    L = 2 * np.pi / k
    h0 = (H_i / 2) * (1 / np.tanh(2 * np.pi * d / L))
    crest = d + h0 + ((1 + reflection_coeff) * H_i / 2)
    trough = d + h0 - ((1 + reflection_coeff) * H_i / 2)
    return crest, trough

# 🧮 Interactive callback
def update_wave_calculator(H_i, T, d, method):
    clear_output(wait=True)

    F, method_used = wave_force_spm(H_i, T, d, method)
    M, _ = wave_moment_spm(H_i, T, d, method)
    crest, trough = clapotis_elevation(H_i, T, d)
    structure_height = crest + 0.5  # Add freeboard buffer (e.g., 0.5 m)

    print(f"🔍 Selected Method: {method_used}")
    print(f"🌊 Wave Height (H_i): {H_i:.2f} m")
    print(f"⏱️ Wave Period (T): {T:.2f} s")
    print(f"🌊 Water Depth (d): {d:.2f} m\n")
    print(f"📐 Total Wave Force: {F:,.2f} N/m")
    print(f"📐 Overturning Moment: {M:,.2f} Nm/m\n")
    print(f"🌊 Clapotis Crest Elevation: {crest:.2f} m")
    print(f"🌊 Clapotis Trough Elevation: {trough:.2f} m")
    print(f"🏗️ Suggested Minimum Structure Height: {structure_height:.2f} m")

# 🎚️ Interactive widgets
H_slider = widgets.FloatSlider(value=2.5, min=0.5, max=6.0, step=0.1, description='Wave Height (H)')
T_slider = widgets.FloatSlider(value=8.0, min=4.0, max=12.0, step=0.5, description='Wave Period (T)')
d_slider = widgets.FloatSlider(value=6.0, min=1.0, max=15.0, step=0.5, description='Water Depth (d)')
method_dropdown = widgets.Dropdown(options=['auto', 'Sainflou', 'Mich-Rundgren'], value='auto', description='Method')

interactive_ui = widgets.interactive(update_wave_calculator,
                                     H_i=H_slider,
                                     T=T_slider,
                                     d=d_slider,
                                     method=method_dropdown)

display(interactive_ui)

3. Simulation#

🌊 Wave Force & Moment Calculator with Height-Based Reduction#

This interactive Python tool estimates wave-induced force and moment on a vertical coastal wall using SPM empirical methods (Sainflou or Mich-Rundgren). It applies height-based reduction factors for crest elevation exceedance.

Key Features:#

  • Computes wave number, clapotis crest elevation, and orbital rise.

  • Estimates force and moment via SPM curves using:

\[ C_F = f(H_i, T, d) \quad;\quad C_M = f(H_i, T, d) \]
  • Applies reduction factors when structure height < crest:

\[ rf = \alpha(2-\alpha) \quad;\quad rm = \alpha^2(3 - 2\alpha), \quad \text{where } \alpha = h_s / h_c \]
  • Interactive sliders for wave height, period, depth, structure height, and method selector.

Output:#

  • Auto-selected or user-defined method

  • Raw and corrected wave force (N/m) and overturning moment (Nm/m)

  • Reduction factor diagnostics and crest comparison

Use this tool to evaluate structural loading sensitivity to crest elevation exceedance in real-time.

import numpy as np
import ipywidgets as widgets
from IPython.display import display, clear_output

# 🌊 Constants
g = 9.81
rho = 1025
reflection_coeff = 1.0

# 🌀 Wave number calculator
def wave_number(T, d, tol=1e-6, max_iter=100):
    omega = 2 * np.pi / T
    k = omega**2 / g
    for _ in range(max_iter):
        k_new = omega**2 / (g * np.tanh(k * d))
        if abs(k_new - k) < tol:
            break
        k = k_new
    return k

# 🌊 Clapotis crest & orbital center
def clapotis_elevation(H_i, T, d):
    k = wave_number(T, d)
    L = 2 * np.pi / k
    h0 = (H_i / 2) * (1 / np.tanh(2 * np.pi * d / L))
    crest = d + h0 + ((1 + reflection_coeff) * H_i / 2)
    trough = d + h0 - ((1 + reflection_coeff) * H_i / 2)
    return crest, trough, h0

# 🧮 Wave Force & Moment (SPM-based)
def wave_force_spm(H_i, T, d, method):
    Hi_gT2 = H_i / (g * T**2)
    Hi_d = H_i / d
    method = method if method != 'auto' else 'Sainflou' if H_i < 2.5 else 'Mich-Rundgren'
    C_F = (0.5 + 1.2 * Hi_gT2 + 0.8 * Hi_d) if method == 'Sainflou' else (0.7 + 1.5 * Hi_gT2 + 1.0 * Hi_d)
    return C_F * rho * g * H_i**2, method

def wave_moment_spm(H_i, T, d, method):
    Hi_gT2 = H_i / (g * T**2)
    Hi_d = H_i / d
    method = method if method != 'auto' else 'Sainflou' if H_i < 2.5 else 'Mich-Rundgren'
    C_M = (0.3 + 1.0 * Hi_gT2 + 0.6 * Hi_d) if method == 'Sainflou' else (0.5 + 1.3 * Hi_gT2 + 0.9 * Hi_d)
    return C_M * rho * g * H_i**2 * d

# 🔧 Handler
def update_wave_calculator(H_i, T, d, method, structure_ht):
    clear_output(wait=True)
    crest, trough, h0 = clapotis_elevation(H_i, T, d)
    hc = crest
    hs = structure_ht

    rf = rm = 1.0
    if hs < hc:
        alpha = hs / hc
        rf = alpha * (2 - alpha)
        rm = alpha**2 * (3 - 2 * alpha)

    F, method_used = wave_force_spm(H_i, T, d, method)
    M = wave_moment_spm(H_i, T, d, method)

    F_corrected = F * rf
    M_corrected = M * rm

    print(f"🔍 Method Used: {method_used}")
    print(f"📐 Structure Height: {hs:.2f} m | Clapotis Crest: {hc:.2f} m")
    print(f"📉 Reduction Factors (empirical): rf = {rf:.3f}, rm = {rm:.3f}")
    print(f"🌊 Total Force: {F:,.2f} N/m → Corrected: {F_corrected:,.2f} N/m")
    print(f"🔁 Total Moment: {M:,.2f} Nm/m → Corrected: {M_corrected:,.2f} Nm/m")

# 🎚️ UI
interactive_ui = widgets.interactive(
    update_wave_calculator,
    H_i=widgets.FloatSlider(value=2.5, min=0.5, max=6.0, step=0.1, description='Wave Height'),
    T=widgets.FloatSlider(value=8.0, min=4.0, max=12.0, step=0.5, description='Wave Period'),
    d=widgets.FloatSlider(value=6.0, min=1.0, max=15.0, step=0.5, description='Water Depth'),
    method=widgets.Dropdown(options=['auto', 'Sainflou', 'Mich-Rundgren'], value='auto', description='Method'),
    structure_ht=widgets.FloatSlider(value=7.0, min=1.0, max=15.0, step=0.5, description='Structure Height')
)

display(interactive_ui)

4. Simulation#

🧮 Interactive Wave Force & Moment Estimator with Rubble Mound Correction#

This module estimates wave-induced horizontal force and overturning moment on a vertical wall atop a rubble mound foundation. It applies SPM-based empirical equations (Sainflou or Mich-Rundgren) with height-dependent correction factors based on rubble mound elevation versus clapotis crest:

  • Force Correction Factor: \(( rf = \frac{h_r}{h_c}(2 - \frac{h_r}{h_c}) \))

  • Moment Correction Factor: \(( rm = \left(\frac{h_r}{h_c}\right)^2(3 - 2\frac{h_r}{h_c})\))

import numpy as np
import ipywidgets as widgets
from IPython.display import display, clear_output

# 🌊 Physical constants
g = 9.81
rho = 1025
reflection_coeff = 1.0

def wave_number(T, d, tol=1e-6, max_iter=100):
    omega = 2 * np.pi / T
    k = omega**2 / g
    for _ in range(max_iter):
        k_new = omega**2 / (g * np.tanh(k * d))
        if abs(k_new - k) < tol:
            break
        k = k_new
    return k

def clapotis_elevation(H_i, T, d):
    k = wave_number(T, d)
    L = 2 * np.pi / k
    h0 = (H_i / 2) * (1 / np.tanh(2 * np.pi * d / L))
    crest = d + h0 + ((1 + reflection_coeff) * H_i / 2)
    trough = d + h0 - ((1 + reflection_coeff) * H_i / 2)
    return crest, trough, h0

def wave_force_spm(H_i, T, d, method):
    Hi_gT2 = H_i / (g * T**2)
    Hi_d = H_i / d
    method = method if method != 'auto' else 'Sainflou' if H_i < 2.5 else 'Mich-Rundgren'
    C_F = (0.5 + 1.2 * Hi_gT2 + 0.8 * Hi_d) if method == 'Sainflou' else (0.7 + 1.5 * Hi_gT2 + 1.0 * Hi_d)
    return C_F * rho * g * H_i**2, method

def wave_moment_spm(H_i, T, d, method):
    Hi_gT2 = H_i / (g * T**2)
    Hi_d = H_i / d
    method = method if method != 'auto' else 'Sainflou' if H_i < 2.5 else 'Mich-Rundgren'
    C_M = (0.3 + 1.0 * Hi_gT2 + 0.6 * Hi_d) if method == 'Sainflou' else (0.5 + 1.3 * Hi_gT2 + 0.9 * Hi_d)
    return C_M * rho * g * H_i**2 * d

# 🔁 Interactive update
def update_wave_rubble(H_i, T, d, method, mound_height):
    clear_output(wait=True)

    crest, trough, h0 = clapotis_elevation(H_i, T, d)
    hc = crest
    hr = mound_height

    # Correction factors based on mound height
    rf_rubble = rm_rubble = 0.0
    if hr < hc:
        alpha = hr / hc
        rf_rubble = alpha * (2 - alpha)
        rm_rubble = alpha**2 * (3 - 2 * alpha)

    F, method_used = wave_force_spm(H_i, T, d, method)
    M = wave_moment_spm(H_i, T, d, method)

    F_corrected = (1 - rf_rubble) * F
    M_corrected = (1 - rm_rubble) * M

    # 🖨️ Output
    print(f"🔍 Method: {method_used}")
    print(f"🌊 H_i = {H_i:.2f} m | T = {T:.2f} s | d = {d:.2f} m")
    print(f"📏 Clapotis Crest = {hc:.2f} m | Rubble Mound Height = {hr:.2f} m")
    print(f"🔧 Reduction Factors: rf = {rf_rubble:.3f} | rm = {rm_rubble:.3f}")
    print(f"📐 Original Force: {F:,.2f} N/m → Corrected: {F_corrected:,.2f} N/m")
    print(f"📐 Original Moment: {M:,.2f} Nm/m → Corrected: {M_corrected:,.2f} Nm/m")

# 🎚️ Controls
interactive_ui = widgets.interactive(
    update_wave_rubble,
    H_i=widgets.FloatSlider(value=2.5, min=0.5, max=6.0, step=0.1, description='Wave Height'),
    T=widgets.FloatSlider(value=8.0, min=4.0, max=12.0, step=0.5, description='Wave Period'),
    d=widgets.FloatSlider(value=6.0, min=1.0, max=15.0, step=0.5, description='Water Depth'),
    method=widgets.Dropdown(options=['auto', 'Sainflou', 'Mich-Rundgren'], value='auto', description='Method'),
    mound_height=widgets.FloatSlider(value=2.5, min=0.0, max=15.0, step=0.5, description='Rubble Mound Height')
)

display(interactive_ui)

5. Self-Assessment#

Reflective & Conceptual Questions#

Understanding the Method#

  1. What assumptions does Sainflou’s method make about wave behavior and structure geometry?
    How might these assumptions limit its applicability in real-world coastal environments?

  2. Why is the wave pressure highest near the still water level and decreases with depth?
    Explain this trend using the physics of wave motion and pressure distribution.

  3. How does the reflection coefficient ( c ) influence the pressure amplitude at the wall?
    What physical conditions correspond to ( c = 0 ), ( c = 1 ), and values in between?


Engineering Implications#

  1. Why is it important to apply correction factors for structure slope, wave angle, and overtopping?
    What risks might arise if these factors are ignored in design calculations?

  2. How does overtopping reduce the effective wave force on a structure?
    Is overtopping always beneficial from a structural loading perspective? Why or why not?

  3. What are the potential consequences of underestimating the overturning moment in coastal structure design?
    How might this affect long-term stability and safety?


Design Sensitivity#

  1. How does increasing the structure slope affect the wave pressure distribution and total moment?
    Would a more inclined structure always result in lower forces?

  2. How does wave approach angle influence the loading on the structure?
    Why is the cosine of the angle used as a correction factor?

  3. If the wave height exceeds the structure height, how should the design approach change?
    Should the structure be redesigned to prevent overtopping, or can overtopping be safely accommodated?


Application & Extension#

  1. How could this model be extended to account for wave breaking or nonlinear wave effects?
    What additional parameters or methods would be needed?

  2. What are the limitations of using linear wave theory (Airy theory) in coastal engineering design?
    When might you need to switch to more advanced models like Boussinesq or CFD?

  3. How would you validate the results of this model against physical experiments or field data?
    What measurements would be most critical to collect?