Repository navigation
Leeside Armor Damage Progression LCS CSR
Source: CHESS_Library/Structure_Reponses/Equations/leeside_armor_stone_damage.m, called from CHESS_Library/Structure_Reponses/LCS_CSR/chess_csr_dpa.m inside the per-timestep, per-life-cycle loop. Depends on Wave Runup Exceedance z1p and Crest Velocity Exceedance u1p (z1p_calc.m and u1p_calc.m).
Applies to: struc_type = 3 (Rubblemound) only. This is the LCS Coastal Structure Reliability — Damage Progression Analysis (CSR-DPA) workflow, a distinct code path from the PROS/RB dispatch documented on Van Gent Leeside Armor Stone Stability Dn50.
Enable flag: config.csr_call_dpa (activates the CSR-DPA module); config.csr_compute_S_submerged additionally gates the (currently unimplemented) submerged-crest handling within this function.
This equation tracks the cumulative leeside (rear-side) armor damage number S for a structure with an already-specified leeside stone size, across the overtopping-driven crest flow generated by each storm timestep in a simulated life cycle. It is the damage-accumulation counterpart to Van Gent Leeside Armor Stone Stability Dn50, which instead solves for the required stone size at a target damage level.
Note on recent changes: this file (and its caller, chess_csr_dpa.m) was modified in commit c9d6466 ("Fixed wave period inputs for response equations") to correct a wave-period variable-naming issue — the function signature explicitly documents that the period input arrives already converted to the spectral mean period Tm-1,0 by the caller (see in-code comment: "Inside CHESS the input for period is already converted with parent code chess_csr_dpa.m /1.1"). It was further modified in a later commit (c639475, "Fixed missing seaward slope input for z1% & u1%") to add a dedicated seaside-slope parameter Sslp to the function signature; see the equation section below for what that fixed.
-
Loaded by overtopping flow. As in Van Gent Leeside Armor Stone Stability Dn50: the 1% run-up overshoots the crest, the overtopping flow reaches the landward edge at velocity
u1%, and that flow moves the rear-side stones (LDnfromleeside_mass). -
Initiation versus progression. On an undamaged rear side the damage law uses the exponent
r = 6(constant wave conditions); once damage exists (S > 0) it switches tor = 1withK_ls2 = 0.04, so damage on an already-damaged rear side grows more readily. - Square root of time. As on the seaside, each time step's waves are added to the equivalent number of waves that would have produced the current damage.
-
No overtopping, no damage. When the run-up does not reach the crest (
z1% ≤ Rc) or the crest velocity is zero, damage is carried over. A submerged crest (Rc < 0withcsr_compute_S_submerged = 1) also carries damage over. -
Cutoff correction. With
csr_apply_cutoff_correction = 1,z1%andu1%are computed for a crest raised bycsr_cutoff_offset. -
Repairs follow the seaside rule with the leeside limits (
leeside_design_S,leeside_S_uls); see Seaside Armor Damage Progression LCS CSR and CHESS LCS.

Source: file header states "Armor damage based on Melby revision of van Gent, M., and Pozueta, B. (2004). Proc. of Coastal Structures 2003, ASCE, Reston, VA." — this is a direct, explicit in-code citation. chess_csr_dpa.m's "RELEVANT PUBLICATIONS" list additionally cites: Van Gent, M. R. A., and B. Pozueta. 2005. "Rear-Side Stability of Rubble Mound Structures." Coastal Engineering 2004, 3481–93, and the same Melby (1999, 2009) damage-progression publications cited on Seaside Armor Damage Progression LCS CSR.
1%-exceedance run-up and crest velocity — computed via the same Wave Runup Exceedance z1p / Crest Velocity Exceedance u1p helper functions used by Van Gent Leeside Armor Stone Stability Dn50. The function signature takes both slopes separately: Lslp (leeside slope) and Sslp (seaside slope). chess_csr_dpa.m binds Sslp to structure.seaside_slope at both call sites, and the run-up/crest-velocity calc uses that seaside slope — consistent with the PROS/RB Dn50 equation on Van Gent Leeside Armor Stone Stability Dn50 and with chess_csr_dpa.m's own diagnostic pre-loop computation described below:
z1% = z1p_calc(H, Tm-1,0, Rc, cot(seaside_slope), g)
u1% = u1p_calc(crest_width, Rc, z1%, Tm-1,0, H, cot(seaside_slope), g)
(If config.csr_apply_cutoff_correction = 1, both are instead evaluated against an artificially raised freeboard, Rc_artificial = (crest_elevation + cutoff) − WL.) Lslp (leeside slope) is not used in the run-up/velocity calc — it is used further down, in the leeside damage-progression formula itself (the a_ls term below).
Separately-computed diagnostic-only z1%/u1%: before the per-timestep loop begins, chess_csr_dpa.m also computes an initial z1p/u1p pair directly (not through this function) using cot(seaside_slope) — the same slope now used inside this function. This diagnostic version is zeroed out for invalid forcing timesteps and exported into the module's diagnostics output table under the z1p column; the u1p column in that same diagnostics table gets overwritten, timestep by timestep, by this function's own return value. Since both are now computed from the same (seaside) slope, the exported diagnostic z1p and u1p columns are a consistent run-up/velocity pair.
Damage number:
r = 6 if S_last = 0 (initial/first-time damage)
r = 1, K_ls2 = 0.04 if S_last > 0 (progressive damage — coefficients change)
if Rc < 0 and compute_S_submerged = 1:
S = S_last (submerged-crest leeside damage not currently computed — see Notes)
elseif (z1% − Rc) > 0 and u1% > 0: (crest is overtopped and flow reaches the leeside armor)
a_ls = cot(leeside_slope)^(-2.5/r) · (1 + 10·exp(-Rc/H))^(1/r)
Nls = u1% · Tm-1,0 / √Δ / LDn / K_ls1
Nze = ( S_last / K_ls2 / (a_ls·Nls)^r )^2
S = K_ls2 · √(Nze + Nz) · (a_ls·Nls)^r
else:
S = S_last (no overtopping flow reaching the leeside armor this timestep)
| Symbol | Meaning | Units | Source |
|---|---|---|---|
H (Hm0) |
Zero-moment significant wave height for the current timestep | m | Sampled LC forcing, column 6 |
Tm-1,0 (Tmm1) |
Spectral mean wave period, Tp/1.1
|
s | Sampled LC forcing, column 7, pre-divided by chess_csr_dpa.m
|
Rc |
Freeboard: crest_elevation − WL
|
m |
structure.crest_elevation, LC forcing SWL |
WL |
Storm water level | m | Sampled LC forcing, column 5 |
crest_width |
Structure crest width | m | structure.crest_width |
crest_elevation |
Structure crest elevation | m | structure.crest_elevation |
cot(seaside_slope) (Sslp) |
Cotangent of the seaward slope — passed into z1p_calc/u1p_calc inside this function (see equation note above), and also used by chess_csr_dpa.m's separate, diagnostic-only pre-loop z1p/u1p computation |
— | structure.seaside_slope |
cot(leeside_slope) (Lslp) |
Cotangent of the landward slope — not used in the run-up/velocity calc; used directly in the a_ls damage-number term of the leeside damage-progression formula |
— | structure.leeside_slope |
LDn |
Existing leeside armor stone nominal diameter, from stone mass: (leeside_mass/((1+Δ)·ρw))^(1/3)
|
m |
structure.leeside_mass, structure.armor_delta, config.water_density
|
Δ (Delta) |
Armor stone immersed relative density | — | structure.armor_delta |
Nz |
Number of waves in the current timestep | — | Sampled LC forcing (storm increment duration / mean period) |
K_ls1, K_ls2
|
Empirical leeside stability coefficients (K_ls2 overridden to 0.04 once damage has initiated, S_last > 0) |
— |
emp_coeff.k_ls1 (125), emp_coeff.k_ls2 (1) |
cutoff, cutoff_switch
|
Cutoff elevation delta and enable flag for the artificial-freeboard correction | m, — |
config.csr_cutoff_offset, config.csr_apply_cutoff_correction
|
compute_S_submerged |
Whether to attempt a submerged-crest damage treatment (see Notes) | — | config.csr_compute_S_submerged |
g |
Gravitational acceleration | m/s² | config.gravity_constant |
-
Submerged-crest leeside damage is not actually computed, mirroring the seaside equation: the
Rc < 0 && compute_S_submerged == 1branch only carries the previous damage state forward (S = S_last); the referencedsubmerged_armor_stone_damage.mcall is present only as a commented-out line describing an intended (but unimplemented) "potential damage" scaling approach. - A block of additional validity-range checks (
Nz ≥ 4000,0.3 ≤ Rc/H ≤ 6,1.3 ≤ crest_width/H ≤ 1.6, stability-number bounds, relative-run-up bounds) is present in the file but entirely commented out — none of these bounds are enforced in the active calculation. - This function is called twice per timestep in
chess_csr_dpa.m— once for the "with repairs" damage track and once for the "no repairs" track — each maintaining an independent damage-state andu1p_lasthistory.
- Van Gent, M., and B. Pozueta. 2004. Cited by title "?" — the literal title field is left as an unfilled placeholder (
"?"), as is the page range (?) — in the header ofleeside_armor_stone_damage.m: "Armor damage based on Melby revision of van Gent, M., and Pozueta, B. (2004). '?,' Proc. of Coastal Structures 2003, ASCE, Reston, VA, ?." This is a direct in-code citation, but it is genuinely incomplete in the source itself (not just abbreviated here) — the title and page numbers were never filled in. - Van Gent, M. R. A., and B. Pozueta. 2005. "Rear-Side Stability of Rubble Mound Structures." Coastal Engineering 2004, 3481–93. World Scientific Publishing Company. — a complete citation, transcribed from
chess_csr_dpa.m's "RELEVANT PUBLICATIONS" list. - Melby, J. A. 1999. Damage Progression on Breakwaters. PhD dissertation. Newark, Delaware: University of Delaware. — same damage-progression methodology family cited on Seaside Armor Damage Progression LCS CSR; reproduced here since both seaside and leeside CSR-DPA functions are documented in the same
chess_csr_dpa.mheader block. - Melby, J. A. 2009. "Time-Dependent Life-Cycle Analysis of Coastal Structures." Proceedings of Coastal Structures 2007, 1842–1853. Singapore: World Scientific.
- Applied in: Gonzalez, Victor M., et al. 2020. "Alabama Barrier Island Restoration Assessment Life-Cycle Structure Response Modeling." ERDC/CHL TR-20-5. Vicksburg, MS: U.S. Army Engineer Research and Development Center.
Run-up & Overtopping
- Wave Run-up (R2%)
- Overtopping Discharge (q)
- Overtopping Volume (Q_vol)
- Overtopping Damage Classification
- Run-up Exceedance (z1%)
- Crest Velocity Exceedance (u1%)
Transmission
Wall Loads
Armor Stability
Damage Progression (LCS)
Hazard Metrics