# 🌍 UFFFS – Urban Flood Forecasting Framework
> Reproducible, scalable workflow for building and running urban flood models using **Snakemake + HydroMT + SFINCS**
---
## 🚀 Overview
UFFFS provides a **fully configuration-driven workflow** for:
- đź§± Building base SFINCS model schematisations
- 🌧️ Running flood events with different forcing scenarios
- 🗺️ Postprocessing and merging floodmaps
- đź§© Comparing model configurations (e.g. baseline vs lidar)
The framework is designed for:
- reproducibility âś…
- scalability across cities âś…
- efficient reuse of models âś…
---
## đź§ Workflows
UFFFS consists of two main workflows:
---
### đź§± Build workflow
Builds reusable **base SFINCS models** using HydroMT.
- Reads configuration from `config/cities.yml`
- Generates model schematisations
- Writes outputs to:
```
outputs/{city}/{sfmodel}/sfincs_base/
```
đź“– See:
👉 `docs/build_workflow.md`
---
### 🌧️ Event workflow
Runs **event simulations** on top of base models.
- Updates forcing (ERA5 / synthetic)
- Runs SFINCS
- Postprocesses floodmaps
- Merges results **per model group**
Outputs:
```
outputs/{city}/events/{event}/
{city}_{event}_{group}_floodmap.tif
```
đź“– See:
👉 `docs/events_workflow.md`
---
## 🗂️ Repository structure
```
├── config/
│ ├── cities.yml # Model definitions (incl. groups)
│ ├── events.yml # Event configuration
│ └── templates/
│ └── sfincs/
│ └── build_base.yml
│
├── workflows/
│ ├── Snakefile # Build workflow
│ ├── Snakefile_events # Event workflow
│ └── scripts/
│ ├── build_sfincs.py
│ ├── update_sfincs_forcing.py
│ ├── postprocess_sfincs.py
│ └── merge_floodmaps.py
│
├── docs/
│ ├── build_workflow.md
│ └── events_workflow.md
│
├── outputs/ # Generated models and results
├── logs/ # Log files
```
---
## ⚙️ Configuration
### Base models
Defined in:
```
config/cities.yml
```
Inclu …