5. Material

The most important construction materials for breakwaters are quarry stone and concrete, as this is the material used in the armour layer. Both types can be used for designing breakwaters, the rock grading is defined in the first section, whereafter the concrete armour units are defined.

5.1. Rock

class breakwater.material.RockGrading(grading=None, rho=2650, y_NLL=0.06, y_NUL=0.9)[source]

Standard rock grading of the standard NEN-EN 13383-1 (2002)

Create a Rock Grading to determine the rock class in RockRubbleMound, ConcreteRubbleMound, RubbleMound or Caisson. By default the standard rock grading of the NEN-EN 13383-1 (2002) is used. However, it is possible to change the grading to a user defined custom grading by giving one in the arguments.

Parameters:
  • grading (dict, optional, default: None) – If specified the custom grading will replace the default rock grading of the NEN-EN 13383-1. The custom grading must be formatted as {str: {‘M50’: [float, float], ‘NLL’: float, ‘NUL’: float}}, with str the rock class and a lower and upper bound for M50. Furthermore, the NLL and NUL mass must be specified.
  • rho (float, optional, default: 2650) – density of the armourstone [kg/m³]
  • y_NLL (float, optional, default: 0.06) – the fraction passing at the nominal lower limit mass (NLL) of a grading
  • y_NUL (float, optional, default: 0.9) – the fraction passing at the nominal upper limit mass (NUL) of a grading
grading

dictionary of the chosen rock grading

Type:dict
rho

density of the armourstone

Type:float
y_NLL

the fraction passing at the nominal lower limit mass (NLL)

Type:float
y_NUL

the fraction passing at the nominal upper limit mass (NUL)

Type:float
add_cost(cost)[source]

Add cost per m³ of each Rock Class

Add the cost per m³ of each Rock Class to the grading

Parameters:

cost (dict) – cost of each Rock Class, keys must be identical to the name of the rock class

Raises:
  • KeyError – if a rock class of the given cost is not in the grading
  • InputError – if a rock class of the grading has no price
get_class(Dn50)[source]

Get the rock class for a given Dn50

Parameters:Dn50 (float) – nominal diameter of the armourstone [m]
Returns:str – Rock class
Raises:RockGradingError – If the computed Dn50 of the armour layer is out of range for the specified rock grading
get_class_dn50(class_)[source]

Get the average Dn50 of a rock class

Parameters:class (str) – Rock class
Returns:Dn50 (float) – nominal diameter of the armourstone [m]
Raises:KeyError – If the specified rock class is not in the rock grading
plot_rosin_rammler(class_)[source]

plot the Rosin-Rammler curve for an idealised gradings

Parameters:class (str) – Rock class
Raises:KeyError – If the specified rock class is not in the rock grading
rosin_rammler(class_, y)[source]

Compute the Rosin-Rammler curve for an idealised gradings

The Rosin-Rammler curve can be used to interpolate between the limits of standard gradings (CIRIA, CUR, CETMEF, 2007). Given that two fixed point on the curve are known, for instance the NLL and NUL limits, M50 and the uniformity coefficient, n_RRM, can be computed. These values are subsequently used to compute My.

\[M_{y} = M_{50} \left(\frac{\ln{(1 - y)}}{\ln{(0.5)}} \right)^{1/n_{RRM}}\]
Parameters:
  • class (str) – Rock class
  • y (float) – the fraction passing value
Returns:

My (float) – the mass corresponding to that value using a percentage subscript to express that fraction [kg]

Raises:

KeyError – If the specified rock class is not in the rock grading

5.2. Concrete Armour Units

The availability of rock is limited. Furthermore, natural blocks weighing more than 10 tons are very rare. However, sometimes a block larger than 10 tons is needed or a breakwater is constructed in an area with limited availability of rock. In these cases artificial blocks, made of concrete, are used.

Several types of concrete armour units have been developed over the years. Currently only Xbloc and XblocPlus from Delta Marine Consultants have been incorporated in the package. However, it is possible to define another type of concrete armour unit by using ConcreteArmour.

5.2.1. General

class breakwater.material.ConcreteArmour(kd, units, name=None, rho=2400)[source]

Define concrete armour units

Define a type of concrete armour unit, Xbloc and XblocPlus have been predefined.

Parameters:
  • kd (int) – Stability coefficient [-]
  • units (dict) – Dictionary of the defined concrete armour units. Format must be {V: dict}, where V is the volume of the armour unit (float) and dict = {‘D’: float, ‘h’: float, ‘Vc’: float} in which D is the diameter, h is the thickness of the armour layers and Vc is the volume of concrete.
  • name (str, optional, default: None) – name of the ArmourUnit, by default the name of the armour unit is derived from the name of the class.
  • rho (float, optional, default: 2400) – density of the concrete used to make the armour units [kg/m³]
kd

Stability coefficient [-]

Type:int
units

Dictionary of the defined concrete armour units. Format must be {V: dict}, where V is the volume of the armour unit (float) and dict = {‘D’: float, ‘h’: float, ‘Vc’: float} in which D is the diameter, h is the thickness of the armour layers and Vc is the volume of concrete.

Type:dict
rho

density of the concrete used to make the armour units [kg/m³]

Type:float, optional, default: 2400
get_class(d)[source]

Get the volume of a standard concrete armour unit

Parameters:d (float) – minimal required diameter [m]
Returns:float – Volume of a standard armour unit
Raises:ArmourUnitsError – If the computed Dn of the armour layer is out of range for the specified armour units

5.2.2. Predefined types

class breakwater.material.Xbloc(rho=2400)[source]

Xbloc concrete armour units

Xbloc armour unit

Xbloc is an armour unit developed by Delta Marine Consultants (DMC). All units have been predefined in units, with the values from table 1 from Delta Marine Consultants (2018).

Parameters:rho (float, optional, default: 2400) – density of the concrete used to make the armour units
kd

Stability coefficient [-]

Type:int
units

Dictionary of the defined concrete armour units. Format is {V: dict}, where V is the volume of the Xbloc (float) and dict = {‘D’: float, ‘h’: float, ‘Vc’: float} in which D is the diameter, h is the thickness of the armour layers and Vc is the volume of concrete.

Type:dict
rho

density of the concrete used to make the armour units [kg/m³]

Type:float, optional, default: 2400
correction_factor(Hs, h, Rc, occurrence_hs, slope, slope_foreshore, permeability, logger=None, **kwargs)[source]

Determine correction factor for Xbloc

Correction factors for phenomena which require an increase in the Xbloc unit sizes. For the conceptual design of structures the correction factor must be multiplied with the volume (Delta Marine Consultants, 2018).

Parameters:
  • Hs (float) – significant wave height [m]
  • h (float) – water depth [m]
  • Rc (float) – Crest freeboard [m]
  • occurrence_hs (bool) – True if frequent occurrence of the near-design wave height during the lifetime of the structure. False if no frequent occurrence
  • slope (float) – slope of the armour layer [rad]
  • slope_foreshore (float) – slope of the foreshore [rad]
  • permeability ({'permeable', 'low', 'impermeable'}) – Permeability of the core
  • logger (dict, optional, default: None) – dict to log messages, must have keys ‘INFO’ and ‘WARNINGS’
Returns:

float – The correction factor to be applied on the volume. Returns 1 if no correction factor is needed.

get_class(d)

Get the volume of a standard concrete armour unit

Parameters:d (float) – minimal required diameter [m]
Returns:float – Volume of a standard armour unit
Raises:ArmourUnitsError – If the computed Dn of the armour layer is out of range for the specified armour units
class breakwater.material.XblocPlus(rho=2400)[source]

XblocPlus concrete armour units

XblocPlus armour unit

XblocPlus is an armour unit developed by Delta Marine Consultants (DMC). All units have been predefined in units, with the values from table 2 from Delta Marine Consultants (2018).

Parameters:rho (float, optional, default: 2400) – density of the concrete used to make the armour units
kd

Stability coefficient [-]

Type:int
units

Dictionary of the defined concrete armour units. Format is {V: dict}, where V is the volume of the XblocPlus unit (float) and dict = {‘L1’: float, ‘L2’: float, ‘L3’: float, ‘h’: float ‘Vc’: float} in which L1, L2 and L3 are the dimensions, h is the thickness of the armour layers and Vc is the volume of concrete.

Type:dict
rho

density of the concrete used to make the armour units [kg/m³]

Type:float, optional, default: 2400
correction_factor(Hs, Rc, slope_foreshore, permeability, logger=None, **kwargs)[source]

Determine correction factor for XblocPlus

Correction factors for phenomena which require an increase in the XblocPlus unit sizes. For the conceptual design of structures the correction factor must be multiplied with the volume (Delta Marine Consultants, 2018).

Parameters:
  • Hs (float) – significant wave height [m]
  • Rc (float) – Crest freeboard [m]
  • slope_foreshore (float) – slope of the foreshore [rad]
  • permeability (str) – Permeability of the core {‘permeable’, ‘low’, ‘impermeable’}
  • logger (dict, optional, default: None) – dict to log messages, must have keys ‘INFO’ and ‘WARNINGS’
Returns:

float – The correction factor to be applied on the volume. Returns 1 if no correction factor is needed.

get_class(d)

Get the volume of a standard concrete armour unit

Parameters:d (float) – minimal required diameter [m]
Returns:float – Volume of a standard armour unit
Raises:ArmourUnitsError – If the computed Dn of the armour layer is out of range for the specified armour units

5.2.3. User defined Armour Unit

As mentioned at the start of this section it is possible to define another type of Armour Unit by using the general class bw.ConcreteArmour. In this subsection an example is given how to define a custom armour unit, which can be used in bw.ConcreteRubbleMound to design a breakwater. The following code must be used to define the custom armour unit:

# define class of the armour unit which inherits from bw.ConcreteArmour
class CustomArmourUnit(bw.ConcreteArmour):
    """ Custom Armour Unit class """

    # define the init method, note that it is not required to give a
    # keyword argument.
    def __init__(self, rho=2400):
        """ See help(CustomArmourUnit) for more info """
        # define the armour units in the init method
        units = {
            1: {'D': 1, 'h': 1, 'Vc': 1},
            2: {'D': 2, 'h': 2, 'Vc': 2},
            3: {'D': 3, 'h': 3, 'Vc': 3},
            4: {'D': 4, 'h': 4, 'Vc': 4},
        }

        # call the init method of bw.ConcreteArmour with super and pass
        # the following arguments: kd factor for Hudson formula, name of
        # the armour unit for overtopping and rho for the density
        super().__init__(kd=10, units=units, name='CustomArmourUnit', rho=rho)

    # this is an optional step. It is possible to define a method
    # to compute a correction factor to be applied on the computed
    # required nominal diameter. Method must allow for kwargs input
    # as several parameters are passed to the method, it is not
    # necessary to use all of the passed parameters
    def correction_factor(self, h, Hs, Rc, **kwargs):
        # it is then possible to build logic in order to determine the
        # correction factor, for example:
        # define list to store more correction factors
        correction = []

        # check for water depth wave height relation
        if h > 2.5*Hs:
            correction.append(1.3)
        else:
            pass

        # check for low crested structure
        if Rc/Hs < 1:
            correction.append(1.5)
        else:
            pass

        # check if any correction factors have been added
        if any(correction):
            # return maximum value
            return max(correction)
        else:
            # return 1, in other words, no correction factor
            # make sure a correction_factor is always returned
            return 1

Warning

When using one of the design classes, the supported armour units are limited to the armour units for which an influence factor for the permeability and roughness of the slope has been determined.

Note

It is not required to add a method to compute a correction factor, the design classes do raise an exception if there is no method to compute a correction factor. However, in case you want to define a method to compute a correction factor the following kwargs can be used to determine the correction factor:

Argument Type Description
h float water depth
Hs float significant wave height
Rc float crest freeboard
occurrence_hs bool
frequent occurrence of the near-design wave height during the
during the lifetime of the structure
slope float slope of the armour layer in radians
slope_foreshore float slope of the foreshore in radians
permeability str permeability of the core {permeable, low, impermeable}
Dn float nominal diameter of the armour units in the armour layer
layers int number of layers in the armour layer
B float crest width
beta float
angle between direction of wave approach and a line normal to
the breakwater in degrees