diff --git a/dynawaltz.ipynb b/dynawaltz.ipynb
new file mode 100644
index 0000000..a690d23
--- /dev/null
+++ b/dynawaltz.ipynb
@@ -0,0 +1,171 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Pypowsybl dynawaltz simulation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import logging\n",
+ "import pypowsybl as pp\n",
+ "import pypowsybl.dynamic as dyn\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "network = pp.network.load(\"./dynawaltz/IEEE14.iidm\")"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "You can add dynamic mappings with dataframes like this :"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_alpha_beta = pd.DataFrame.from_dict({\"static_id\": [network.get_loads().loc[l].name for l in network.get_loads().index],\n",
+ " \"parameter_set_id\": [\"LAB\" for l in network.get_loads().index]})\n",
+ "df_GSTWPR = pd.DataFrame.from_dict({\"static_id\": [network.get_generators().loc[l].name for l in network.get_generators().index],\n",
+ " \"parameter_set_id\": [\"GSTWPR\" for l in network.get_generators().index]})"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Don't forget to index the dataframe on the network element id column"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model_mapping = dyn.ModelMapping()\n",
+ "model_mapping.add_all_dynamic_mappings(dyn.DynamicMappingType.ALPHA_BETA_LOAD, df_alpha_beta.set_index(\"static_id\"))\n",
+ "model_mapping.add_all_dynamic_mappings(dyn.DynamicMappingType.GENERATOR_SYNCHRONOUS_THREE_WINDINGS_PROPORTIONAL_REGULATIONS, df_GSTWPR.set_index(\"static_id\"))"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Adding events"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "events = dyn.EventMapping()\n",
+ "events.add_event(\"EQD\", dyn.EventType.BRANCH_DISCONNECTION, \"_BUS____1-BUS____5-1_AC\")"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Adding curves, you can batch curves creation for a given id"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "timeseries = dyn.CurveMapping()\n",
+ "timeseries.add_curves(\"_LOAD___2_EC\", [\"load_PPu\", \"load_QPu\"])"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Running the simulation (will load the default config file in ~/.itools folder)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sim = dyn.Simulation()\n",
+ "res = sim.run(network, model_mapping, events, timeseries, 0, 30)"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Display data of the run:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "res.status()\n",
+ "res.curves()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.10"
+ },
+ "orig_nbformat": 4,
+ "vscode": {
+ "interpreter": {
+ "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a"
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/dynawaltz/IEEE14.iidm b/dynawaltz/IEEE14.iidm
new file mode 100644
index 0000000..df38208
--- /dev/null
+++ b/dynawaltz/IEEE14.iidm
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dynawaltz/config.yaml b/dynawaltz/config.yaml
new file mode 100644
index 0000000..7b5176b
--- /dev/null
+++ b/dynawaltz/config.yaml
@@ -0,0 +1,18 @@
+# copy to ~/.itools/config.yaml
+dynamic-simulation-default-parameters:
+ startTime: 0
+ stopTime: 30
+
+dynawaltz:
+ homeDir: PATH/TO/DYNAWO # root directory of dynawo installation
+ debug: true
+
+dynawaltz-default-parameters:
+ # All the pathes can be relative to the root directory
+ parametersFile: ./dynawaltz/models.par
+ network.parametersFile: ./dynawaltz/network.par
+ network.parametersId: "1"
+ solver.type: IDA
+ solver.parametersFile: ./dynawaltz/solver.par
+ solver.parametersId: "1"
+
diff --git a/dynawaltz/models.par b/dynawaltz/models.par
new file mode 100644
index 0000000..6054bdd
--- /dev/null
+++ b/dynawaltz/models.par
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dynawaltz/network.par b/dynawaltz/network.par
new file mode 100644
index 0000000..91c6cda
--- /dev/null
+++ b/dynawaltz/network.par
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dynawaltz/solver.par b/dynawaltz/solver.par
new file mode 100644
index 0000000..339c440
--- /dev/null
+++ b/dynawaltz/solver.par
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+