Bepalen fragility curves
De Toolbox Continu Inzicht heeft de functionaliteit om fragility curves voor verschillende faalmechanismen uit te rekenen. Deze sectie beschrijft de beschikbare functies per type faalmechanisme. In Toolbox Continu Inzicht zijn 3 verschillende type fragility curves functies opgenomen: GEKB (Graserosie Kruin en Binnentalud), STPH (Piping en Heave) en voor alle overige faalmechanismen. Deze worden in het figuur hieronder weer gegeven.
De fragility curves voor GEKB kunnen ‘on-the-fly’ worden berekend, afhankelijk van verschillende parameters (zoals windsnelheid en windrichting) kunnen deze worden aangepast. Voor STPH is een funtionaliteit beschikbaar om de fragility curves vooraf te berekenen. Vanwege de langere rekentijden en een benodigde kwaliteitscontrole is ervoor gekozen om de fragility curves voor STPH niet ‘on-the-fly’ te berekenen. Voor alle andere faalmechanismen geldt dat er geen functionaliteit binnen de Toolbox Continu Inzicht is om de fragility te berekenen. Voor deze overige faalmechanismen geldt dat de gebruiker buiten de Toolbox Continu Inzicht een fragility curve opgesteld (“pre-processed” fragility curves) en deze in de database definieert.
Golfoverslag Erosie Kruin en Binnentalud (GEKB)
Voor het bereken van fragility curves voor GEKB wordt gebruik gemaakt van de Python module pydra-core
. Deze losstaande Python module is ontwikkeld door HKV en openbaar beschikbaar gemaakt op GitHub. De documentatie is op deze GitHub pagina te vinden.
Een fragility curve kan berekend worden door de functie FragilityCurveOvertopping
aan te roepen. Hier zijn drie DataFrames voor nodig: het eerste DataFrame met informatie over de hellingen, het tweede over het profiel en als laatste informatie over de bodem en strijklengte. In de berekening wordt modelonzekerheid meegenomen. Voor de modelonzekerheid zijn acht standaardwaardes gebruikt voor bretschneider, waarmee de golfhoogte en golfperiode worden bepaald. Deze kunnen aangepast worden als opties in de config.yaml
, zoals te zien in het voorbeeld met gh_onz_mu
. Naast onzekerheden kan ook de verhouding tussen de piekperiode van de golf ($T_p$
) en de spectrale golfperiode ($Tm_{-1,0}$
) worden aangepast met tp_tspec
(standaard 1.1). Ook zijn er rekeninstellingen waarmee wordt gerekend, waarvan vier rekeninstellingen zijn aan te passen. De probabilistische berekening wordt gemaakt voor verschillende stapgroottes van de waterstand: grof en fijn. De standaardinstelling is een fijne stapgrootte van 0.05m (hstap
) van 2m onder de kruin (upper_limit_coarse
) tot 1.01m boven de kruin (upper_limit_fine
). De standaardinstelling is een grove stapgrootte van 4m onder de kruin (lower_limit_coarse
) tot 2m onder de kruin (upper_limit_coarse
) met stappen van twee keer zo groot (2 * hstap
= 0.1). Al deze variabele zijn los te configureren. Als de gebruiker deze niet opgeeft, dan wordt uitgegaan van de genoemde standaardwaardes.
GlobalVariables:
rootdir: "data_sets"
# default waardes, kunnen worden overschreven
FragilityCurveOvertopping:
gh_onz_mu: 0.96
gh_onz_sigma: 0.27
gp_onz_mu_tp: 1.03
gp_onz_sigma_tp: 0.13
gp_onz_mu_tspec: 1.03
gp_onz_sigma_tspec: 0.13
gh_onz_aantal: 7
gp_onz_aantal: 7
tp_tspec: 1.1
lower_limit_coarse: 4.0
upper_limit_coarse: 2.0
upper_limit_fine: 1.0
hstap: 0.05
DataAdapter:
default_options:
csv:
sep: ","
slopes:
type: csv
file: "slopes.csv"
profiles:
type: csv
file: "profiles.csv"
bedlevel_fetch:
type: csv
file: "bedlevelfetch.csv"
fragility_curves:
type: csv
file: "fragility_curves.csv"
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.fragility_curves import FragilityCurveOvertopping
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = FragilityCurveOvertopping(data_adapter=data_adapter)
fragility_curve_overtopping
fragility_curve_overtopping.run(input=["slopes", "profiles", "bedlevel_fetch"],
="fragility_curves",
output )
Piping en Heave (STPH)
Voor het berekenen van de fragility curves voor piping (STPH) wordt gebruik gemaakt van de Python module probabilistic_piping
. Deze losstaande Python module is ontwikkeld door HKV en is voor de Toolbox Continu Inzicht openbaar beschikbaar gemaakt op GitHub. De documentatie van deze module is daar ook te vinden.
Disclaimer: De uitvoer van 'probabilistic-piping' geeft meer informatie of een som in de berekening is gelukt. Binnen de Toolbox Continu Inzicht wordt geen validatie gedaan. Het is aan de gebruiker om te controleren of de berekende fragility curve daadwerkelijk logisch is.
FragilityCurvePipingFixedWaterlevel
De functie FragilityCurvePipingFixedWaterlevel
rekent met de drie deelmechanismen Uplift, Heave, Sellmeijer en geeft een gecombineerde fragility curve terug. Het combineren gebeurt hier door het minimum van de kansen van de drie deelmechanismen te nemen. De fragility curves van de drie deelmechanismen zijn beschikbaar via dedf_result_uplift
, df_result_heave
, en df_result_sellmeijer
attributen.
GlobalVariables:
rootdir: "data_sets"
FragilityCurvePipingFixedWaterlevel:
debug: False
progress: True
DataAdapter:
default_options:
csv:
sep: ","
probabilistic_input:
type: excel
file: "invoer_piping.xlsx"
index_col: 0
waterlevels:
type: csv
file: "waterlevels.csv"
fragility_curve:
type: csv
file: "fragility_curves_piping.csv"
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.fragility_curves import FragilityCurvePipingFixedWaterlevel
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = FragilityCurvePipingFixedWaterlevel(data_adapter=data_adapter)
fragility_curve_piping_fixed_waterlevel
fragility_curve_piping_fixed_waterlevel.run(input=["probabilistic_input", "waterlevels"],
="fragility_curves",
output )
Combineren van fragility curves
Fragility curves kunnen op drie manieren worden gecombineerd: afhankelijk, onafhankelijk of met een gewogen gemiddelde. De tabel hieronder geeft hier een overzicht van.
Type | Functie | Formule |
---|---|---|
Afhankelijk | CombineFragilityCurvesIndependent |
\(P(fail,comb|h)=1-prod(1-P(fail,i|h))\) |
Onafhankelijk | CombineFragilityCurvesDependent |
\(P(fail,comb|h)=max(P(fail,i|h))\) |
Gewogen gemiddelde | CombineFragilityCurvesWeightedSum |
\(P(fail,comb|h)=\sum_{i=1}^{n}(w_i*P(fail,i|h))\) |
Voor drie de functies is het nodig om een lijst op te geven, met daarin de namen van de data-adapters van de fragility curves die gecombineerd moeten worden. Bij de gewogen gemiddelde functie moet de laatste data-adapter de gewichten bevatten waarmee de fragility curves worden gecombineerd. Het gewichten DataFrame moet een kolom met ‘weights’ hebben. Er is bewust geen validatie of deze gewichten optellen tot 1, zodat de fragility curve ook geschaald kan worden. De tabel hieronder geeft weer hoe de tabel met gewichten er uit moet zien.
weights |
---|
0.6 |
0.4 |
Bij het combineren van de fragility curves moeten eerst de waterstanden van de curves op elkaar afgestemd worden door middel van een gedeeld waterstandsgrid. Dit gedeelde waterstandsgrid wordt begrensd door de ondergrens en bovengrens van alle waterstanden van alle fragility curves. De stappen tussen deze grenzen worden vastgelegd met behulp van een vaste stapgrootte (refine_step_size
, standaardwaarde is 0.05).
GlobalVariables:
rootdir: "data_sets"
DataAdapter:
fragility_curve_piping_csv:
type: csv
file: "fragility_curve_piping.csv"
fragility_curve_overtopping_csv:
type: csv
file: "fragility_curve_overtopping.csv"
fragility_curves:
type: csv
file: "fragility_curve_combined.csv"
from toolbox_continu_inzicht import Config, DataAdapter
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter
from toolbox_continu_inzicht.fragility_curves import CombineFragilityCurvesIndependent
= CombineFragilityCurvesIndependent(data_adapter=data_adapter)
combine_fragility_curve
combine_fragility_curve.run(input=["fragility_curve_piping_csv", "fragility_curve_overtopping_csv"],
="fragility_curves",
output
)
from toolbox_continu_inzicht.fragility_curves import CombineFragilityCurvesDependent
= CombineFragilityCurvesDependent(data_adapter=data_adapter)
combine_fragility_curve_dep
combine_fragility_curve_dep.run(input=["fragility_curve_piping_csv", "fragility_curve_overtopping_csv"],
="fragility_curves",
output )
GlobalVariables:
rootdir: "data_sets"
DataAdapter:
fragility_curve_piping_csv:
type: csv
file: "fragility_curve_piping.csv"
fragility_curve_overtopping_csv:
type: csv
file: "fragility_curve_overtopping.csv"
weighting_factor_csv:
type: csv
file: "weighting_factor_combine.csv"
fragility_curves:
type: csv
file: "fragility_curve_combined.csv"
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.fragility_curves import CombineFragilityCurvesWeightedSum
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = CombineFragilityCurvesWeightedSum(data_adapter=data_adapter)
combine_fragility_curve
combine_fragility_curve.run(input=["fragility_curve_piping_csv", "fragility_curve_overtopping_csv", "weighting_factor_csv"],
="fragility_curves",
output )