SWIM
An open-source software package for static modeling and prediction of surface water and urban flooding based on analysis of terrain topography.
https://github.com/sintefmath/surfacewaterintegratedmodeling.jl
Category: Hydrosphere
Sub Category: Freshwater and Hydrology
Keywords from Contributors
automatic-differentiation blackoil co2-sequestration compositional finite-volume multiscale porous-media-flow reservoir-simulation
Last synced: about 13 hours ago
JSON representation
Repository metadata
SWIM - Surface Water Integrated Modeling
- Host: GitHub
- URL: https://github.com/sintefmath/surfacewaterintegratedmodeling.jl
- Owner: sintefmath
- License: apache-2.0
- Created: 2024-03-08T13:19:20.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-29T09:33:48.000Z (15 days ago)
- Last Synced: 2026-02-06T09:15:15.232Z (7 days ago)
- Language: Julia
- Size: 126 MB
- Stars: 18
- Watchers: 9
- Forks: 2
- Open Issues: 0
- Releases: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Citation: CITATION.cff
README.md
SWIM - Surface Water Integrated Modeling
SWIM is an open-source software package for static modeling and prediction of
surface water and urban flooding based on analysis of terrain topography. It is
developed and maintained by the Applied Computational
Science
research group at SINTEF Digital.
SWIM consists of a collection of algorithms for analysing terrain, identifying
watershed boundaries, and providing a better understanding of how water
accumulates and moves through the landscape. This is valuable for various
purposes, such as water resource management, flood modeling, and environmental
planning.
Our algorithms originate from work on CO2 storage and are based on an assumption
of infinitesimal flow. These so-called spill-point analyses were later modified
to model flooding in urban areas. Spill-point analyses are highly
computationally efficient compared to tools based on numerical simulation. This
makes it easy to work interactively and test out various scenarios and
measures. SWIM offers some unique functionality, such as simplified infiltration
models (both permeable and impermeable surfaces) and the calculation of time
series that models how water accumulates or drains over time, without having to
resort to computationally intensive numerical time-stepping approaches.
Functionality
SWIM is a set of tools that is intended to provide a flexible foundation for
further development. Current functionality includes:
- Static surface models
- Calculation of catchment areas, waterways, and hierarchical networks of
intermittent streams, ponds and lakes - Accumulation areas for water, topological network of ponds, and how they
connect and merge together - Permanent water volumes such as rivers, lakes, and seas
- Calculation of catchment areas, waterways, and hierarchical networks of
- Dynamic analysis
- Terrain response to precipitation events and infiltration over time
- Routing of water as ponds overflow
- Terrain characteristics and infrastructure
- Buildings, obstacles, drainage, and measures
- Simplified infiltration model that supports both permeable and impermeable
surfaces
- Basic IO and visualization routines

System of lakes and rivers identified in the watershed analysis.
Learn more
The best way to get introduced to SWIM is to have a look at the provided
examples:
- The Urban landscape
example provides an introduction to key SWIM functionality applied to a real
dataset of a district in central Oslo. - The Simple synthetic example
uses an extremely simplified surface to explain and demonstrate some key concepts. - The Handling flat areas
example is a small example to show how large, flat water bodies can be
identified and kept separate from the analysis.
Installation
The package is registered in the Julia package registry, and can be installed
using:
julia> using Pkg
(@1.11) pkg> add SurfaceWaterIntegratedModeling
Note on running the examples
The scripts found in the example directory have their own Project.toml
file. This environment should be activated before trying to run the
examples. Here is a step-by-step guide to how you can make the examples run:
- In your terminal, go to the
exampledirectory and start up Julia. - Go to the package mode by typing
]and activate the current directory by
runningactivate . - If you want to run the example using the lastest SWIM package, run
instantiate
to ensure it is installed. On the other hand, if you rather want to use the
currently checked out code, rundev ..(while still in package mode). - Exit package mode. Now you should be able to run the examples.
Note: It is recommended that you run the examples block-by-block in an IDE,
rather than having them run through in one go by includeing them, in order
to properly see all generated figures before they are updated/changed.
For inquiries, you can get in touch with the contact person listed at
https://www.sintef.no/en/software/swim/.
Contributing
Please refer to CONTRIBUTING.md for instructions on how to report problems or
suggest changes.
License information
Copyright (c) 2024 SINTEF Digital
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Citation (CITATION.cff)
cff-version: "1.2.0"
authors:
- family-names: Andersen
given-names: Odd A.
orcid: "https://orcid.org/0000-0002-2245-9512"
doi: 10.5281/zenodo.15306692
message: If you use this software, please cite our article in the
Journal of Open Source Software.
preferred-citation:
authors:
- family-names: Andersen
given-names: Odd A.
orcid: "https://orcid.org/0000-0002-2245-9512"
date-published: 2025-05-01
doi: 10.21105/joss.07785
issn: 2475-9066
issue: 109
journal: Journal of Open Source Software
publisher:
name: Open Journals
start: 7785
title: Topography-based surface water modeling in Julia, with support
for infiltration and temporal developments
type: article
url: "https://joss.theoj.org/papers/10.21105/joss.07785"
volume: 10
title: Topography-based surface water modeling in Julia, with support
for infiltration and temporal developments
Owner metadata
- Name: SINTEF Digital - Mathematics and Cybernetics
- Login: sintefmath
- Email: TrondRunar.Hagen@sintef.no
- Kind: organization
- Description:
- Website: https://www.sintef.no/en/digital/departments-new/applied-mathematics/
- Location: Oslo, Norway
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/1901550?v=4
- Repositories: 48
- Last ynced at: 2024-04-16T16:10:52.176Z
- Profile URL: https://github.com/sintefmath
GitHub Events
Total
- Create event: 4
- Commit comment event: 12
- Release event: 3
- Pull request event: 12
- Fork event: 2
- Issues event: 2
- Watch event: 15
- Issue comment event: 4
- Push event: 67
- Pull request review event: 2
Last Year
- Create event: 1
- Commit comment event: 1
- Release event: 1
- Pull request event: 12
- Fork event: 2
- Watch event: 4
- Issue comment event: 2
- Push event: 36
- Pull request review event: 2
Committers metadata
Last synced: 3 months ago
Total Commits: 58
Total Committers: 5
Avg Commits per committer: 11.6
Development Distribution Score (DDS): 0.121
Commits in past year: 37
Committers in past year: 3
Avg Commits per committer in past year: 12.333
Development Distribution Score (DDS) in past year: 0.135
| Name | Commits | |
|---|---|---|
| Odd | o****n@s****o | 51 |
| Mark Kittisopikul | k****m@j****g | 4 |
| ellingsvee | e****e@g****m | 1 |
| Olav Møyner | o****r@g****m | 1 |
| Odd Andersen | o****n@g****m | 1 |
Committer domains:
- janelia.hhmi.org: 1
- sintef.no: 1
Issue and Pull Request metadata
Last synced: about 1 month ago
Total issues: 1
Total pull requests: 10
Average time to close issues: less than a minute
Average time to close pull requests: about 20 hours
Total issue authors: 1
Total pull request authors: 2
Average comments per issue: 1.0
Average comments per pull request: 0.2
Merged pull request: 10
Bot issues: 0
Bot pull requests: 0
Past year issues: 0
Past year pull requests: 10
Past year average time to close issues: N/A
Past year average time to close pull requests: about 20 hours
Past year issue authors: 0
Past year pull request authors: 2
Past year average comments per issue: 0
Past year average comments per pull request: 0.2
Past year merged pull request: 10
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- JuliaTagBot (1)
Top Pull Request Authors
- mkitti (8)
- jbytecode (2)
Top Issue Labels
Top Pull Request Labels
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 3
juliahub.com: SurfaceWaterIntegratedModeling
SWIM - Surface Water Integrated Modeling
- Homepage:
- Documentation: https://docs.juliahub.com/General/SurfaceWaterIntegratedModeling/stable/
- Licenses: Apache-2.0
- Latest release: 1.0.3 (published 11 months ago)
- Last Synced: 2026-01-26T18:19:46.332Z (18 days ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 3.227%
- Average: 9.767%
- Dependent packages count: 16.308%
Dependencies
- ArchGDAL *
- ColorSchemes *
- GLMakie *
- GeometryBasics *
- Graphs *
- Images *
- Makie *
- SurfaceWaterIntegratedModeling *
- actions/checkout v2 composite
- codecov/codecov-action v2 composite
- julia-actions/cache v1 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-docdeploy v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
- ColorSchemes *
- Colors *
- DelimitedFiles *
- DifferentialEquations *
- GeometryBasics *
- Graphs *
- Interpolations *
- LazyArtifacts *
- Makie *
- OffsetArrays *
- Roots *
- SparseArrays *
- ArchGDAL *
- CairoMakie *
- ColorSchemes *
- Documenter *
- GeometryBasics *
- Graphs *
- Images *
- LazyArtifacts *
- Literate *
- NonlinearSolve *
- SurfaceWaterIntegratedModeling *
Score: -Infinity