This repository contains the model code and documentation for the paper Ginkel, Haasnoot & Botzen (2021, under review): "A framework for identifying climate change induced socio-economic tipping points".
The model is a dynamic adaptive, stylized simulation of flood risk and house prices of an archetypical coastal city, under many possible futures and dynamic adaptive flood protection strategies. It is meant to illustrate the identification of tipping points from a large number of experiments, not for detailed forecasting of the actual system state.
The main uncertainties are:
- Sea level rise scenarios
- Storm surge scenarios
- The flood protection strategy (reflected by a 'mayor')
- The time it takes to implement flood protection measures
- The behaviour of the housing market in response to the flood risk
This repository contains both:
- The code to do single (or a few) model runs, while setting the above uncertainties to selected fixed values
- The code to run many (order 100,000) experiments, and explore under what conditions tipping points occur
When using this model, please include a reference to the article and a link to this Github repository.
For any questions or feedback, do not hesitate to contact me!
Here, we take you through the basic model set-up..
The Rotty model describes a coastal city, threatened by storm surges from the sea which are aggravated by sea level rise. Residential area A is an outer-dike area with an elevation well above sea level. Residential area B is located in a polder below sea level, but is protected by a dike.
Each model run simulates the development of the flood risk over time for the residential areas of the city, for a variety of sea level rise and storm surge scenarios. Four different management strategies (mayors) can be chosen to adapt components of the city or the flood protection over time. Each mayor reflects an archetypical, different approach to flood risk management. The model runs on a yearly timestep, from 2020 to 2300. In each timestep t, the following steps are taken:
- The degree of sea level rise is drawn from the SLR scenario, and a storm surge height series is selected
- The water levels are compared to the flood protection levels, resulting in either ‘nothing happens’, a ‘near-miss wake-up call’ or a ‘flood’. When the dikes are overtopped the resulting flood depths are calculated. Failure due to fragility of the dikes is not considered here
- A (objective) flood risk assessment for the sea level and storm surge conditions is carried out to calculate the annual expected damage for the climatic conditions in the timestep. This accounts for the SLR and adaptation that already took place until that timestep, but not for future SLR or adaptation
- The recent experiences with floods (including near-misses) per residential area feed into the risk perception module, which calculates the development of the perceived or subjective flood risk as a function of the objective flood risk
- Both the objective and subjective flood risk are discounted in the house price using hedonistic price theory
- The mayor of the city evaluates the above state parameters and decides on the implementation of new measures to manage the flood risk of the city
- When their implementation time has expired, the measures contribute to the flood protection of the city.
Notebook 00 shows the model behaviour for illustrative mayors and flood protection strategies.
Notebook 02 shows the model behaviour for different implementation times.
Notebook 03 shows the model behaviour for different storm surge scenarios.
The objective of the model is to show how climate change induced socio-economic tipping points can be identified. A socio-economic tipping points is defined as: "a climate change induced, abrupt change of a socio-economic system, into a new, fundamentally different state (beyond a certain threshold that stakeholders perceive as critical).", after Van Ginkel et al., 2020.
For this purpose, the model is run many times, with the help of the EMA Workbench. After each experiment, an algorithm is run to detect tipping points in the metrics (house prices(t)).
The results of the many experiments can explored with different techniques.
Notebook 31 Shows the results of Feature Scoring
Notebook 32 Shows the results of Scenario Discovery
Notebook 33 Shows the results of Dimensional Stacking
The code is mainly object-oriented, so it can be easily adapted for other cities and adaptation strategies. On a normal pc, an experiment should run within a few seconds.
classes.py defines the generic model classes and functions. Some important classes are:
-
Model() - which contains the building blocks of each city,
-
ResidentialArea() - the neighbourhoods of the city
-
FloodProtection() - objects protecting the residential areas (such as dikes)
-
SLR_Scenario(), SurgeHeight(), and the sum of both: SurgeLevel()
-
Mayors(ABC) - defines the flood protection strategy
-
Measure() - how the model can be altered by a mayor
-
Experiment() - a unique combination of a model, mayor, SLR & surge height scenario
models.py describes the city, by setting properties of the residential areas, and the flood protection objects protecting them, and other city-specific parameters
mayors.py defines how and under what conditions mayors intervene in the system
run_model.py describes the running protocal for the model in each timestep of an experiment
001_runtest_Rotty.py is a simple model runtest without Jupyter Notebooks.
tipping.py contains specific classes and functions to identify tipping points within a metric timeseries (in this case: house prices)
210_run_TP_identification.py shows how the tipping point algorithm can be run.
21_TippingPoint_ident_manyEXP.ipynb provides a more visual approach.
workbench_version shows how the model can be run with the EMA-Workbench. This not only defines the model as one function, but also initialises the tipping point identification algorithm.
30_EMA_Workbench_run.ipynb Coordinates working with the Workbench, exploration of the results is done in the other Notebooks (3X)