FM2PROF (FlowFM to Profile) is a Python package that extracts 1D cross-sectional data from 2D hydrodynamic model results. It bridges the gap between detailed 2D flood modelling and efficient 1D hydraulic analysis by automatically generating cross-section geometries and roughness parameters from 2D FlowFM simulation outputs.
- Input: 2D FlowFM map files (NetCDF) + cross-section location definitions
- Processing: Spatial classification, geometry extraction, roughness calculation
- Output: 1D model files compatible with 1D hydraulic software (currently supported: D-Flow 1D, SOBEK 3)
2D FlowFM Results → FM2PROF → 1D Cross-Sections
(detailed mesh) (extraction) (efficient profiles)
pip install fm2profPython API:
from fm2prof import Project
# Load configuration and run
project = Project('config.ini')
project.run()
# Or configure programmatically
project = Project()
project.set_input_file('2DMapOutput', 'model_map.nc')
project.set_input_file('CrossSectionLocationFile', 'crosssections.csv')
project.set_output_directory('./output')
project.run()Command Line:
# Create new project
python fm2prof create MyProject
# Edit MyProject.ini with your file paths, then run
python fm2prof run MyProject --overwrite| File Type | Description | Format |
|---|---|---|
| 2D Map Output | 2D simulation results | NetCDF (.nc) |
| Cross-Section Locations | Where to extract profiles | CSV/TXT with X,Y,Branch,Chainage |
Optional:
- Region Polygons: Define floodplain vs main channel areas (GeoJSON)
- Section Polygons: Specify extraction boundaries (GeoJSON)
FM2PROF generates:
- Cross-section geometries (bed levels, widths, areas)
- Roughness tables (Manning's n values per sub-section)
- Visualisation plots for quality checking
- 📚 Full Documentation: deltares.github.io/Fm2Prof
- 🚀 Tutorial: Getting Started Guide
- 📓 Jupyter Notebooks: Interactive examples in
/notebooks - 🔧 Configuration Reference: Complete parameter documentation
- Volume-preserving 1D geometry
- Roughness weighting methods (area-based, distance-based)
- Flow-dependent storage areas
- Transition height calculations for overbank flow
- Leverages MeshKernel for fast polygon operations
- Efficient NetCDF data handling
- K-Nearest Neighbour for rapid classification
- INI-based configuration files
- Python API for programmatic control
- D-Flow 1D compatible files
- SOBEK 3 format support
- Generic CSV/JSON outputs
- Visualisation and diagnostic plots
- Run 2D FlowFM Model: Generate detailed flood simulation
- Define Cross-Sections: Specify where 1D profiles are needed
- Configure FM2PROF: Set extraction parameters and output options
- Extract Profiles: Run FM2PROF to generate cross-sectional data
- Build 1D Model: Import results into 1D hydraulic software
- Validate: Compare 1D vs 2D results for key locations
- Dutch National Flood Forecasting River Models: all river models are using
fm2profgenerated profiles and roughnesses - Maeslant barrier forecasting model: the hydraulic forecasting of the Maeslant Barrier uses
fm2profgenerated geometry and roughnesses
- Python: 3.10 or higher
- Key Dependencies: NumPy, Pandas, NetCDF4, Shapely, MeshKernel
- Supported 2D software: D-FlowFM, D-Hydro
- Supported 1D Software: D-Flow 1D, SOBEK 3
We welcome contributions! See our Contributing Guide for:
- 🐛 Bug reports and feature requests
- 💻 Code contributions and pull requests
- 📖 Documentation improvements
- 🧪 Test case submissions
- Issues: GitHub Issues
- Contact: FM2PROF development team at Deltares
- License: GPL-3.0-or-later AND LGPL-3.0-or-later
If you use FM2PROF in research, please cite:
FM2PROF Development Team (2024). FM2PROF: FlowFM to Profile Extraction Tool.
Deltares. https://github.com/Deltares/Fm2Prof