A flood model

Introduction

The following figure presents a dyke protecting industrial facilities. When the river level exceeds the dyke height, flooding occurs. The model is based on a crude simplification of the 1D hydrodynamical equations of Saint-Venant under the assumptions of uniform and constant flow rate and large rectangular sections.

flooding section

Flooding section

Four independent random variables are considered:

  • Q: flow rate [m^3 s^{-1}]

  • K_s: Strickler [m^{1/3} s^{-1}]

  • Z_v: downstream height [m]

  • Z_m: upstream height [m]

When the Strickler coefficient increases, the riverbed generates less friction.

The model depends on four parameters:

  • the height of the dyke: H_d = 3 [m],

  • the altitude of the river banks: Z_b = 55.5 [m],

  • the river length: L = 5000 [m],

  • the river width: B = 300 [m].

The altitude of the dyke is:

Z_d = Z_b + H_d

The slope \alpha of the river is assumed to be close to zero, which implies:

\alpha = \frac{Z_m - Z_v}{L},

if Z_m \geq Z_v. The water depth is:

H = \left(\frac{Q}{K_s B \sqrt{\alpha}}\right)^{0.6},

for any K_s, Q>0. The flood altitude is:

Z_c = H + Z_v.

The altitude of the surface of the water is greater than the altitude of the top of the dyke (i.e. there is a flood) if:

S = Z_c - Z_d

is greater than zero.

The following figure presents the model with more details.

flooding section details

Flooding section detail

If we substitute the parameters into the equation, we get:

S = \left(\frac{Q}{300 K_s \sqrt{\frac{Z_m - Z_v}{5000}}}\right)^{3/5} + Z_v - 58.5.

We assume that the four inputs have the following distributions:

  • Q ~ Gumbel(mode=1013, scale=558), Q > 0

  • K_s ~ Normal(mu=30.0, sigma=7.5), K_s > 0

  • Z_v ~ Uniform(a=49, b=51)

  • Z_m ~ Uniform(a=54, b=56)

Moreover, we assume that the input random variables are independent.

We want to estimate the flood probability:

P_f = P(S > 0).

Analysis of the calibration problem

In this section, we analyse why calibrating the parameters of this model may raise some difficulties.

First, the slope \alpha only depends on the difference Z_m - Z_v. This is why Z_v and Z_m cannot be identified at the same time. In algebraic terms, there is an infinite number of couples (Z_v, Z_m) which generate the same difference Z_m - Z_v.

Second, the denominator of the expression of H involves the product K_s B \sqrt{\alpha}. In algebraic terms, there is an infinite number of couples (K_s, \alpha) which generate the same product K_s \sqrt{\alpha}. This is why either K_s or \alpha can be identified separately, but not at the same time. This shows that only one parameter can be identified.

Hence, calibrating this model requires some regularization which can be done by Bayesian methods.

References

API documentation

class FloodModel(L=5000.0, B=300.0, trueKs=30.0, trueZv=50.0, trueZm=55.0)

Data class for the flood model.

Parameters:
Lfloat, optional

Length of the river. The default is 5000.0.

Bfloat, optional

Width of the river. The default is 300.0.

trueKsfloat, optional

The true value of the Ks parameter. The default is 30.0.

trueZvfloat, optional

The true value of the Zv parameter. The default is 50.0.

trueZmfloat, optional

The true value of the Zm parameter. The default is 55.0.

Examples

>>> from openturns.usecases import flood_model
>>> # Load the flood model
>>> fm = flood_model.FloodModel()
>>> print(fm.data[:5])
    [ Q ($m^3/s$) H (m)       ]
0 : [  130           0.59     ]
1 : [  530           1.33     ]
2 : [  960           2.03     ]
3 : [ 1400           2.72     ]
4 : [ 1830           2.83     ]
>>> print("Inputs:", fm.model.getInputDescription())
Inputs: [Q,Ks,Zv,Zm]
>>> print("Parameters:", fm.model.getParameterDescription())
Parameters: [B,L]
>>> print("Outputs:", fm.model.getOutputDescription())
Outputs: [H]
Attributes:
dimThe dimension of the problem

dim=4

QTruncatedDistribution of a Gumbel distribution

ot.TruncatedDistribution(ot.Gumbel(558.0, 1013.0), 0.0, ot.TruncatedDistribution.LOWER)

KsTruncatedDistribution of a Normal distribution

ot.TruncatedDistribution(ot.Normal(30.0, 7.5), 0.0, ot.TruncatedDistribution.LOWER)

ZvUniform distribution

ot.Uniform(49.0, 51.0)

ZmUniform distribution

ot.Uniform(54.0, 56.0)

modelParametricFunction

The flood model. The function has input dimension 4 and output dimension 1. More precisely, we have \vect{X} = (Q, K_s, Z_v, Z_m) and Y = H. Its parameters are \theta = (B, L).

distributionComposedDistribution

The joint distribution of the input parameters.

dataSample of size 10 and dimension 2

A data set which contains noisy observations of the flow rate (column 0) and the height (column 1).

Examples based on this use case

Compare unconditional and conditional histograms

Compare unconditional and conditional histograms

Compute SRC indices confidence intervals

Compute SRC indices confidence intervals

Estimate a flooding probability

Estimate a flooding probability

Generate flooding model observations

Generate flooding model observations

Calibrate a parametric model: a quick-start guide to calibration

Calibrate a parametric model: a quick-start guide to calibration

Calibration of the flooding model

Calibration of the flooding model

Bayesian calibration of the flooding model

Bayesian calibration of the flooding model