Chapter 5 Coastal Engineering: Depth of Closure#
1. Introduction#

Fig. 31 **Figure 5.12 **: Dept of Closure.#
🌊 Depth of Closure#
The depth of closure (DoC) is the depth beyond which significant sediment transport does not occur. It is a critical concept in coastal engineering for determining the limits of active beach profile changes. This depth is influenced by wave energy and sediment characteristics.
This module calculates and compares the depth of closure using several well-known empirical models. The DoC is a key parameter in:
Coastal zone management
Beach nourishment design
Shoreline evolution modeling
⚙️ Input Parameters#
H_s
: Significant wave height (in meters)T_s
: Significant wave period (in seconds)g
: Acceleration due to gravity (9.81 m/s²)
🧪 Methods Implemented#
1. Hallermeier Inner Limit (1978, 1981)#
Estimates DoC based on energetic but non-extreme wave conditions:
2. Hallermeier Outer Limit#
Represents the maximum depth where sediment transport from storm waves may occur:
3. Birkemeier (1985)#
Refined for U.S. East Coast field data:
4. Kraus et al. (1998)#
Matches the structure of Hallermeier’s inner formulation, emphasizing long-term changes:
References#
[Wise, 1998] provides operational guidance for estimating the depth of closure (DoC) in the context of beach nourishment projects. The DoC is essential for determining the volume of fill required and the extent of profile adjustment over time. [U.S. Army Corps of Engineers, 2011] also provides a clear and formal description of depth of closure (DoC), particularly in Part VI – Design of Coastal Structures.
2. Simulation#
🌊 Depth of Closure Estimation — Coastal Morphodynamics Tool#
This Python script estimates the depth of closure (DoC)—the seaward limit of significant sediment movement—using four empirical methods from coastal engineering literature.
🧠 What It Does#
Inputs:
H_s
: Significant wave height (m)T_s
: Significant wave period (s)g
: Gravity constant (m/s²)
Methods used:
Hallermeier (Inner & Outer) — Based on wave energy thresholds
Birkemeier — Developed from field observations
Kraus et al. — Matches Hallermeier Inner formulation
Outputs:
Estimated depth of closure for each method
Bar chart comparing all results visually
🧮 Computed Outputs#
Method |
Formula Highlights |
Output Meaning |
---|---|---|
Hallermeier Inner |
Energy-based threshold for seasonal DoC |
Conservative baseline for sediment motion |
Hallermeier Outer |
Empirical multiplier of wave height |
Represents maximum observed sediment reach |
Birkemeier |
Minor period correction + height scaling |
Field-tuned estimate for moderate energy coasts |
Kraus et al. |
Same as Hallermeier Inner |
Re-validation of existing formulation |
📈 How to Interpret Results#
Shallower DoC → sediment affected closer to shore
Deeper DoC → design needs to consider subtidal sediment transport
Variability across methods shows:
Importance of local calibration
Sensitivity to wave period and height
Use these values to inform beach nourishment depth, sediment transport models, or coastal stability design.
import numpy as np
import matplotlib.pyplot as plt
import ipywidgets as widgets
from IPython.display import display, Markdown, clear_output
# Gravity constant
g = 9.81
# Hallermeier (1978, 1981)
def hallermeier_inner(H_s, T_s):
return 2.28 * H_s - 68.5 * (H_s**2 / (g * T_s**2))
def hallermeier_outer(H_s):
return 1.75 * H_s
# Birkemeier (1985)
def birkemeier(H_s, T_s):
return 1.57 * H_s - 0.005 * (H_s**2 / (g * T_s**2))
# Kraus et al. (1998)
def kraus(H_s, T_s):
return 2.28 * H_s - 68.5 * (H_s**2 / (g * T_s**2))
# Interactive function
def interactive_doc(H_s, T_s):
doc_hi = hallermeier_inner(H_s, T_s)
doc_ho = hallermeier_outer(H_s)
doc_bi = birkemeier(H_s, T_s)
doc_kr = kraus(H_s, T_s)
methods = ['Hallermeier Inner', 'Hallermeier Outer', 'Birkemeier', 'Kraus et al.']
values = [doc_hi, doc_ho, doc_bi, doc_kr]
clear_output(wait=True)
display(Markdown(f"""
### 🌊 Depth of Closure Estimates
- **Hallermeier Inner**: `{doc_hi:.2f}` m
- **Hallermeier Outer**: `{doc_ho:.2f}` m
- **Birkemeier**: `{doc_bi:.2f}` m
- **Kraus et al.**: `{doc_kr:.2f}` m
"""))
plt.figure(figsize=(8, 4))
plt.bar(methods, values, color='skyblue')
plt.ylabel('Depth of Closure (m)')
plt.title('Depth of Closure by Method')
plt.xticks(rotation=45)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
# Widgets
wave_height_slider = widgets.FloatSlider(value=2.0, min=0.5, max=5.0, step=0.1, description='Wave Height (m)')
wave_period_slider = widgets.FloatSlider(value=8.0, min=4.0, max=12.0, step=0.5, description='Wave Period (s)')
ui = widgets.VBox([wave_height_slider, wave_period_slider])
out = widgets.interactive_output(interactive_doc, {
'H_s': wave_height_slider,
'T_s': wave_period_slider
})
display(ui, out)
3. Self-Assessment#
Conceptual Understanding of Depth of Closure#
Define wave runup.
Why is predicting runup height important in coastal engineering?Key Parameters
What are the three main parameters used in most empirical runup models?Formula Interpretation
In the general empirical formula
[ R = C \left( a \beta \sqrt{HL} + \sqrt{ \frac{HL (b \beta^2 + c)}{2} } \right) ]
what do the two terms inside the brackets represent physically?Energy Representation
Why is the product ( H \times L ) used in estimating runup energy?Coefficient Meaning
What does the coefficient ( C ) generally reflect in each model?Conceptual Understanding
What does “depth of closure” refer to in coastal morphodynamics, and why is it important?
Which two input parameters are required for calculating depth of closure in most empirical formulas in your code?
Why is gravity g explicitly included in the formulations for Hallermeier, Birkemeier, and Kraus methods?
Quiz: Depth of Closure#
from jupyterquiz import display_quiz
quiz = [
{
"question": "Which two methods use the same formula for depth of closure?",
"type": "many_choice",
"answers": [
{"answer": "Hallermeier Inner & Kraus", "correct": True, "feedback": "✅ Correct! They share the same structure."},
{"answer": "Hallermeier Outer & Birkemeier", "correct": False, "feedback": "❌ Not quite."},
{"answer": "Birkemeier & Kraus", "correct": False, "feedback": "❌ These differ in coefficients."}
]
},
{
"question": "What does the term Hs² / (g × Ts²) represent?",
"type": "many_choice",
"answers": [
{"answer": "Wave orbital energy", "correct": True, "feedback": "✅ Yes! It reflects wave energy at depth."},
{"answer": "Sediment porosity", "correct": False, "feedback": "❌ Not related to porosity."},
{"answer": "Tidal range", "correct": False, "feedback": "❌ Tidal range is not part of this term."}
]
}
]
display_quiz(quiz)