7. Breakwater types

There are several types of breakwaters, the different types can be divided into two categories. Rubble mound breakwaters which are made out of large heaps of loose elements, and monolithic breakwaters which have a cross section acting as one block, for instance a caisson. Figure 7.1 depicts the representative cross sections for all breakwater types defined by CIRIA, CUR, CETMEF (2007, p. 781).

Representative cross section of various types of breakwaters

Figure 7.1: Representative cross section of various types of breakwaters, Rubble mound types on the left and the monolithic types on the right. Redrawn from CIRIA, CUR, CETMEF (2007, p. 781).

The following breakwater types from Figure 7.1 have been implemented: conventional rubble mound breakwater, caisson breakwater and the vertically composite breakwater. For each of these structures a class is defined with which a conceptual design can be made. These classes automatically use the functions and classes from the breakwater.core, see Figure 7.2.

Implementation of the core into the design classes

Figure 7.2: Implementation of the breakwater.core, all functions and classes from Chapters 8 to 11, in the design classes.

7.1. Conventional Rubble Mound

As mentioned in the introduction a rubble mound breakwater is made out of large heaps of loose elements, the armour layer of these types are made with either rock or concrete armour units such as Xbloc or XblocPlus. Both types of armour layer can be used to design a breakwater. Figure 7.3 depicts the used definition of a conventional rubble mound breakwater, for both types of armour layer.

definitions of a rubble mound breakwater

Figure 7.3: Definitions for a rubble mound breakwater

7.1.1. Rock

class breakwater.rubble.RockRubbleMound(slope, slope_foreshore, rho_w, B, N, LimitState, Grading, Dn50_core, safety=1, slope_toe=(2, 3), B_toe=None, beta=0, layers=2, layers_underlayer=2, vdm='max', Soil=None, phi=40, id=None, **kwargs)[source]

Design a breakwater with Rock as armour layer

Makes a conceptual design for a conventional rubble mound breakwater with rock as the armour layer, for one or several limit states. The following computations are performed:

  • The armour layer is designed with the Van der Meer formulas for deep and shallow water (van der Meer, 1988; van Gent et al., 2003).
  • The underlayer is designed by using the rules for the underlayer
  • A filter layer is designed if one is needed, depends on Dn50_core
  • The toe is designed with the toe stability formula of Van der Meer (1998).
  • The crest freeboard is computed with the formula from EurOtop (2018)
  • The required width of the scour protection with Sumer and Fredsoe (2000)
  • If a Soil is specified, a slip circle analysis is performed with Bishop

Note

Depending on the input it might be that more rock classes are possible for the underlayer (and filter layer). In case the upper bound of the underlayer rule results in a different rock class as the lower bound, a new variant is generated. See variantIDs for a list of generated variants.

Note

The notional permeability, P, in the van der Meer formula is set to a constant value of 0.4. This is due to the fact that the substructure of the breakwater will always have an underlayer.

Parameters:
  • slope (tuple) – Slope of the armour layer (V, H). For example a slope of 3V:4H is defined as (3, 4)
  • slope_foreshore (tuple) – slope of the foreshore (V, H). For example a slope of 1:100 is defined as (1, 100)
  • rho_w (float) – density of water [kg/m³]
  • B (float) – Crest width [m]
  • N (int) – Number of incident waves at the toe of the structure [-]
  • LimitState (LimitState or list of LimitState) – ULS, SLS or another limit state defined with LimitState
  • Grading (RockGrading) – standard rock grading defined in the NEN-EN 13383-1 or a user defined rock grading
  • Dn50_core (float) – nominal diameter for the stones in the core of the breakwater [m]
  • safety (float, optional, default: 1) – safety factor of design (number of standard deviations from the mean)
  • slope_toe (tuple, optional, default: (2,3)) – slope of the toe
  • B_toe (float, optional, default: None) – width of the top of the toe in meters. By default the width of toe is taken as 3 * Dn50_toe.
  • beta (float, optional, default: 0) – angle between direction of wave approach and a line normal to the breakwater (degrees).
  • layers (int, optional, default: 2) – number of layers in the armour layer
  • layers_underlayer (int, optional, default: 2) – number of layers in the underlayer
  • vdm ({min, max, avg}, optional, default: max) – value to return in case both the deep and shallow water formula are valid. min for the lowest value, max for the highest value and avg for the average value, default is max.
  • Soil (Soil, optional, default: None) – by default Soil is None, which means that the geotechnical checks are not performed. By specifying a Soil object, the geotechnical checks are automatically performed.
  • phi (float, optional, default: 40) – internal friction angle of rock [degrees]
  • id (int, optional, default: None) – add a unique id to the breakwater
logger

dict of warnings and messages

Type:dict
structure

dictionary with the computed Dn50, rock class, and average Dn50 of the rock class for each layer and the toe. This dictionary includes all variants, use get_variant() to get the parameters of one specific variant. Alternatively, print_variant() can be used to print the details of one, multiple or all variants.

Type:dict
alpha

slope of the structure in radians

Type:float
id

unique id of the breakwater

Type:int
variantIDs

list with the IDs of the variants generated for this rubble mound breakwater.

Type:list
Rc

the crest freeboard of the structure [m]

Type:float
width_scour

the required length of the scour protection [m]

Type:float
area(variantID)

Compute the area of all layers

Method computes the area of each layer using Gauss’s area formula. Which is given by the following formula:

\[\mathbf{A}=\frac{1}{2} | \sum_{i=1}^{n-1} x_{i} y_{i+1} +x_{n} y_{1}-\sum_{i=1}^{n-1} x_{i+1} y_{i}-x_{1} y_{n} |\]
Parameters:variantID (str) – identifier of the variant, see variantIDs for a list of all generated variants.
Returns:dict – dict with the area of each layer
check_validity(decimals=3)[source]

Check if the used parameters are within the validity range

The Van der Meer equations for deep and shallow water are empirical equations, meaning that they are based on experiments. Therefore, the Van der Meer equations are, strictly speaking, only valid if the parameters are within the range of the parameters from the experiments. This method prints a table from which the validity range, used value and if the parameter is within validity range can be read.

Parameters:decimals (int, optional, default: 3) – number of decimals
cost(*variants, core_price, transport_cost=None, output='variant')[source]

Compute the cost per meter for each variant

Method to compute the cost of each generated variant, the cost is computed per meter. The cost of the rocks must be specified in the RockGrading. If transport cost are not included in the price of rocks or core_price it can be given with the argument transport_cost.

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • core_price (float) – cost of the core material per m³
  • transport_cost (float, optional, default: None) – the cost to transport a m³ of rock from the quarry to the project location
  • output ({variant, layer, average}) – format of the output dict, variant returns the total cost of each variant, layer the cost of each layer for each variant and average returns the average cost.
Returns:

dict – the cost

Raises:

RockGradingError – if no pricing is included in the given RockGrading

get_variant(variantID)

Get the dimensions for the specified variant

Parameters:variantID (str) – identifier of the variant, see variantIDs for a list of all generated variants.
Returns:dict – Parameters and values (Dn50, Rock class) for one variant
Raises:KeyError – If there is no variant with the given identifier
plot(*variants, wlev=None, save_name=None)

Plot the cross section of the specified breakwater(s)

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • wlev (str, optional, default: None) – label of the LimitState from which the water level will be plotted. If no value is specified the water level from the normative limit state is used, which is the normative LimitState from the crest freeboard computation.
  • save_name (str, optional, default: None) – if given the cross section is not shown but saved with the given name
Raises:
  • InputError – If no variants are specified or if the label of wlev is not a valid label of a LimitState
  • KeyError – If there is no variant with the given identifier
print_logger(level='warnings')

Print messages and warnings from the logger

Parameters:msg_level ({'info', 'warnings'}, optional, default: 'warnings') – specify print level, highest level is warnings and lowest level is info. Note that the info level will also print all warnings
print_variant(*variants, decimals=3)

Print the details for the specified variant(s)

This method will print the computed Dn50, rock class, average Dn50 of the class, normative LimitState for all layers and specified variants.

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • decimals (int, optional, default: 3) – number of decimal places to round to
Raises:
  • InputError – If no arguments are specified
  • KeyError – If there is no variant with the given identifier

7.1.2. Armour Units

class breakwater.rubble.ConcreteRubbleMound(slope, slope_foreshore, B, rho_w, LimitState, ArmourUnit, Grading, Dn50_core, safety=1, slope_toe=(2, 3), B_toe=None, beta=0, layers=1, layers_underlayer=2, filter_rule=None, Soil=None, phi=40, id=None, **kwargs)[source]

Design a breakwater with concrete armour units as armour layer

Makes a conceptual design for a conventional rubble mound breakwater with armour units as the armour layer, for one or several limit states. The following computations are performed:

  • The armour layer is designed with the Hudson formula (Hudson, 1959), with \(H_{1/3}\) as wave height, in accordance with the design guidelines for Xbloc and XblocPlus (Delta Marine Consultants, 2018).
  • The underlayer is designed by using the rules for the underlayer
  • A filter layer is designed if one is needed, depends on Dn50_core
  • The toe is designed with the toe stability formula of Van der Meer (1998).
  • The crest freeboard is computed with the formula from EurOtop (2018)
  • The required width of the scour protection with Sumer and Fredsoe (2000)
  • If a Soil is specified, a slip circle analysis is performed with Bishop

Note

Depending on the input it might be that more rock classes are possible for the underlayer (and filter layer). In case the upper bound of the underlayer rule results in a different rock class as the lower bound, a new variant is generated. See variantIDs for a list of generated variants.

Warning

Currently only the rules for the underlayer of Rock, Xbloc and XblocPlus have been implemented. However, it is possible to design with another type of armour units. In this case the filter rule must manually be set to Rock, Xbloc or XblocPlus.

Parameters:
  • slope (tuple) – Slope of the armour layer (V, H). For example a slope of 3V:4H is defined as (3, 4)
  • slope_foreshore (tuple) – slope of the foreshore (V, H). For example a slope of 1:100 is defined as (1, 100)
  • B (float) – Crest width [m]
  • rho_w (float) – density of water [kg/m³]
  • LimitState (LimitState or list of LimitState) – ULS, SLS or another limit state defined with LimitState
  • ArmourUnit (obj) – armour unit class which inherits from ConcreteArmour, for instance Xbloc or XblocPlus
  • Grading (RockGrading) – standard rock grading defined in the NEN-EN 13383-1 or a user defined rock grading
  • Dn50_core (float) – nominal diameter for the stones in the core of the breakwater [m]
  • safety (float, optional, default: 1) – safety factor of design (number of standard deviations from the mean)
  • slope_toe (tuple, optional, default: (2,3)) – slope of the toe
  • B_toe (float, optional, default: None) – width of the top of the toe in meters. By default the width of toe is taken as 3 * Dn50_toe.
  • beta (float, optional, default: 0) – angle between direction of wave approach and a line normal to the breakwater (degrees).
  • layers (int, optional, default: 1) – number of layers in the armour layer
  • layers_underlayer (int, optional, default: 2) – number of layers in the underlayer
  • filter_rule ({'Rock', 'Xbloc', 'XblocPlus'}, optional, default: None) – filter rule to use for the substructure of the breakwater, for Rock, Xbloc and XblocPlus the correct filter rule is automatically selected. In case another type of armour layer is used one of these filter rules must be chosen.
  • Soil (Soil, optional, default: None) – by default Soil is None, which means that the geotechnical checks are not performed. By specifying a Soil object, the geotechnical checks are automatically performed.
  • phi (float, optional, default: 40) – internal friction angle of rock [degrees]
  • id (int, optional, default: None) – add a unique id to the breakwater
logger

dict of warnings and messages

Type:dict
structure

dictionary with the computed Dn50, rock class, and average Dn50 of the rock class for each layer and the toe. This dictionary includes all variants, use get_variant() to get the parameters of one specific variant. Alternatively, print_variant() can be used to print the details of one, multiple or all variants.

Type:dict
alpha

slope of the structure in radians

Type:float
id

unique id of the breakwater

Type:int
variantIDs

list with the IDs of the variants generated for this rubble mound breakwater.

Type:list
Rc

the crest freeboard of the structure [m]

Type:float
width_scour

the required length of the scour protection [m]

Type:float
area(variantID)

Compute the area of all layers

Method computes the area of each layer using Gauss’s area formula. Which is given by the following formula:

\[\mathbf{A}=\frac{1}{2} | \sum_{i=1}^{n-1} x_{i} y_{i+1} +x_{n} y_{1}-\sum_{i=1}^{n-1} x_{i+1} y_{i}-x_{1} y_{n} |\]
Parameters:variantID (str) – identifier of the variant, see variantIDs for a list of all generated variants.
Returns:dict – dict with the area of each layer
cost(*variants, core_price, unit_price, transport_cost=None, output='variant')[source]

Compute the cost per meter for each variant

Method to compute the cost of each generated variant, the cost is computed per meter. The cost of the rocks in the substructure must be specified in the RockGrading. If transport cost are not included in the price of rocks or core_price it can be given with the argument transport_cost.

Note

The transport_cost are not added to the price of the armour layer. The assumption has been made that the cost of producing and transporting the armour units is included in the unit_price.

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • core_price (float) – cost of the core material per m³
  • unit_price (float) – the cost of an armour unit per m³
  • transport_cost (float, optional, default: None) – the cost to transport a m³ of rock from the quarry to the project location
  • output ({variant, layer, average}) – format of the output dict, variant returns the total cost of each variant, layer the cost of each layer for each variant and average returns the average cost.
Returns:

dict – the cost

Raises:

RockGradingError – if no pricing is included in the given RockGrading

get_variant(variantID)

Get the dimensions for the specified variant

Parameters:variantID (str) – identifier of the variant, see variantIDs for a list of all generated variants.
Returns:dict – Parameters and values (Dn50, Rock class) for one variant
Raises:KeyError – If there is no variant with the given identifier
plot(*variants, wlev=None, save_name=None)

Plot the cross section of the specified breakwater(s)

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • wlev (str, optional, default: None) – label of the LimitState from which the water level will be plotted. If no value is specified the water level from the normative limit state is used, which is the normative LimitState from the crest freeboard computation.
  • save_name (str, optional, default: None) – if given the cross section is not shown but saved with the given name
Raises:
  • InputError – If no variants are specified or if the label of wlev is not a valid label of a LimitState
  • KeyError – If there is no variant with the given identifier
print_logger(level='warnings')

Print messages and warnings from the logger

Parameters:msg_level ({'info', 'warnings'}, optional, default: 'warnings') – specify print level, highest level is warnings and lowest level is info. Note that the info level will also print all warnings
print_variant(*variants, decimals=3)

Print the details for the specified variant(s)

This method will print the computed Dn50, rock class, average Dn50 of the class, normative LimitState for all layers and specified variants.

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • decimals (int, optional, default: 3) – number of decimal places to round to
Raises:
  • InputError – If no arguments are specified
  • KeyError – If there is no variant with the given identifier

7.2. (Composite) vertical

The caisson type and vertical composite breakwater are included in one design class as they are basically the same structures. The main difference is the water depth immediately in front of the caisson. In this package the classification criteria from EurOtop (2018) is used, which classifies a vertical breakwater as vertical if \(\frac{d}{h} > 0.6\), else the breakwater is classified as a vertically composite breakwater. In Figure 7.4 the definition of all parameters is depicted.

definitions for a (composite) vertical breakwater

Figure 7.4: Definitions for a (composite) vertical breakwater

class breakwater.caisson.Caisson(Pc, rho_c, rho_fill, rho_w, Bm, hb, layers, BermMaterial, LimitState, slope_foreshore, mu, safety=1, SF_sliding=1.2, SF_turning=1.2, beta=0, slope_foundation=(2, 3), lambda_=[1, 1, 1], pe_max=500, filter_rule=None, Grading=None, Soil=None, id=None, **kwargs)[source]

Design a (composite) vertical breakwater

Makes a conceptual design of a vertical or composite vertical breakwater, with a caisson on a rubble mound foundation. The following computations are performed:

  • The necessary size of the armour layer of the foundation is designed with the modified Tanimoto formula (Takahashi, 2002).
  • The required stone size for the core of the foundation
  • The water depth in front of the caisson is computed based on the dimensions of the foundation and water depth
  • The crest freeboard is computed with the formulae from EurOtop (2018), vertical() is used, which automatically classifies the breakwater so that the correct formula is used.
  • The required width of the caisson is computed with the extended Goda formula (Takahasi, 2002).
  • The required width of the scour protection with Sumer and Fredsoe (2000). Note that a scour protection is only added if the width of the foundation is not sufficient.
  • If a Soil is specified the bearing capacity of the soil will also be checked with Brinch Hansen (1970).
Parameters:
  • Pc (float) – contribution of concrete to the total mass of the caisson. value between 0 and 1
  • rho_c (float) – density of concrete [kg/m³]
  • rho_fill (float) – density of the fill material [kg/m³]
  • rho_w (float) – density of water [kg/m³]
  • Bm (float) – width of the berm [m]
  • hb (float) – height of the foundation layer [m]
  • layers (int) – number of layers in the armour layer of the toe berm
  • BermMaterial (obj) – should be a RockGrading or armour unit class which inherits from ConcreteArmour, for instance Xbloc or XblocPlus
  • LimitState (LimitState or list of LimitState) – ULS, SLS or another limit state defined with LimitState
  • slope_foreshore (tuple) – slope of the foreshore (V, H). For example a slope of 1:100 is defined as (1,100)
  • mu (float) – friction factor between the caisson and the foundation [-]
  • safety (float, optional, default: 1) – safety factor of design (number of standard deviations from the mean)
  • SF_sliding (float, optional, default: 1.2) – safety factor against sliding. Default value according to Goda (2000)
  • SF_turning (float, optional, default: 1.2) – safety factor against sliding. Default value according to Goda (2000)
  • beta (float, optional, default: 0) – angle between direction of wave approach and a line normal to the breakwater [degrees]
  • slope_foundation (tuple, optional, default: (2,3)) – Slope of the armour layer (V, H). For example a slope of 2V:3H is defined as (2,3)
  • lambda (list, optional, default: [1, 1, 1]) – modification factors of Takahasi (2002) for alternative monolithic breakwater. Input must be lambda_= [\(\lambda_1, \lambda_2, \lambda_3\)].
  • pe_max (float, optional, default: 500) – maximum value of the bearing pressure at the heel of the caisson. Default value is set to 500 kPa, Goda (2000) advises a value between 400 and 500 kPa. [kPa]
  • filter_rule ({'Rock', 'Xbloc', 'XblocPlus'}, optional, default: None) – filter rule to use for the substructure of the breakwater, for rock, Xbloc and XblocPlus the correct filter rule is automatically selected. In case another type of armour layer is used one of these filter rules must be chosen.
  • Grading (RockGrading, optional, default: None) – standard rock grading defined in the NEN-EN 13383-1 or a user defined rock grading. Required if the BermMaterial is not a RockGrading.
  • Soil (Soil, optional, default: None) – by default Soil is None, which means that the geotechnical checks are not performed. By specifying a Soil object, the geotechnical checks are automatically performed.
  • id (int, optional, default: None) – unique id of the breakwater
logger

dict of warnings and messages

Type:dict
structure

dictionary with the computed Dn50, rock class, and average Dn50 of the rock class for each layer and the toe. This dictionary includes all variants, use get_variant() to get the parameters of one specific variant. Alternatively, print_variant() can be used to print the details of one, multiple or all variants.

Type:dict
id

unique id of the breakwater

Type:int
variantIDs

list with the IDs of the variants generated for this rubble mound breakwater.

Type:list
price

cost of each variant, generated when cost() or dry_dock() is used.

Type:dict
width_scour

the required length of the scour protection [m]. The distance is measured from the front of the caisson

Type:float
geotechnical

dictionary with the computed values from the Brinch Hansen equation, has keys: Fr with the resistance, N with the net downward force and UC, which is the unity check (N/Fr). This dictionary is generated when the Soil argument is specified.

Type:dict
area(variantID)[source]

Compute the area of all layers

Method computes the area of each layer using Gauss’s area formula. Which is given by the following formula:

\[\mathbf{A}=\frac{1}{2} | \sum_{i=1}^{n-1} x_{i} y_{i+1} +x_{n} y_{1}-\sum_{i=1}^{n-1} x_{i+1} y_{i}-x_{1} y_{n} |\]
Parameters:variantID (str) – identifier of the variant, see variantIDs for a list of all generated variants.
Returns:dict – dict with the area of each layer
cost(*variants, concrete_price, fill_price, unit_price=None, output='variant')[source]

Compute the cost per meter for each variant

Method to compute the cost of each generated variant, the cost is computed per meter

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • concrete_price (float) – price of concrete per m³
  • fill_price (float) – price of the fill material per m³
  • unit_price (float, optional, default: None) – the cost of an armour unit per m³, required if the armour layer of the foundation is made out of armour units
  • output ({variant, layer, average}) – format of the output dict, variant returns the total cost of each variant, layer the cost of each layer for each variant and average returns the average cost.
Returns:

dict – the cost

Raises:

RockGradingError – if no pricing is included in the given RockGrading

dry_dock(investment, length)[source]

Add the investment cost of a dry dock to the concept

This method adds the investment required to rent a dry dock to the concept. The investment cost is added to the concept by dividing the investment trough the length of the breakwater to get the required investment per running meter.

Parameters:
  • investment (float) – the investment required to rent a dry dock
  • length (float) – length of the breakwater [m]
get_variant(variantID)[source]

Get the dimensions for the specified variant

Parameters:variantID (str) – identifier of the variant, see variantIDs for a list of all generated variants.
Returns:dict – Parameters and values of the caisson (B, Rc) and the foundation layer (Dn50, Rock class) for one variant.
Raises:KeyError – If there is no variant with the given identifier
plot(*variants, wlev=None, save_name=None)[source]

Plot the cross section of the specified breakwater(s)

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • wlev (str, optional, default: None) – label of the LimitState from which the water level will be plotted. If no value is specified the water level from the normative limit state is used, which is the normative LimitState from the crest freeboard computation.
  • save_name (str, optional, default: None) – if given the cross section is not shown but saved with the given name
Raises:
  • InputError – If no variants are specified or if the label of wlev is not a valid label of a LimitState
  • KeyError – If there is no variant with the given identifier
plot_pressure()[source]

Plot pressure distribution computed extended Goda formula

Plots the pressure distribution computed with the extended Goda formula (Takahasi, 2002) together with the dimensions of the monolithic breakwater.

Warning

Do not read the dimensions of the monolithic breakwater from the axes of the figure. The correct dimensions of the monolithic breakwater are depicted in the figure, or use get_variant() or print_variant().

print_logger(level='warnings')[source]

Print messages and warnings in the logger

Parameters:msg_level ({'info', 'warnings'}, optional, default: 'warnings') – specify print level, highest level is warnings and lowest level is info. Note that the info level will also print all warnings
print_variant(*variants, decimals=3)[source]

Print the details for the specified variant(s)

This method will print the details of the structure for the specified variant(s). It prints the dimensions of the caisson (B, Rc) and the dimensions of the foundation layer (Dn50, rock class). Furthermore, from the table the normative LimitState for the design can be read.

Parameters:
  • *variants (str) – IDs of the variants to plot, see variantIDs for a list of all generated variants. If ‘all’ is in the arguments, all variants will be plotted.
  • decimals (int, optional, default: 3) – number of decimal places to round to
Raises:
  • InputError – If no arguments are specified
  • KeyError – If there is no variant with the given identifier