dumux

DuMux: an open-source simulator for flow and transport processes in porous media (repository mirrored from https://git.iws.uni-stuttgart.de/dumux-repositories/dumux.git)

https://github.com/dumux/dumux

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 15 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.1%) to scientific vocabulary

Keywords

coupled-model darcy finite-volume-methods modeling multi-physics numerical-methods partial-differential-equations pore-network porous-media porous-media-flow scientific-computing simulation
Last synced: 4 months ago · JSON representation

Repository

DuMux: an open-source simulator for flow and transport processes in porous media (repository mirrored from https://git.iws.uni-stuttgart.de/dumux-repositories/dumux.git)

Basic Info
  • Host: GitHub
  • Owner: dumux
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Homepage: https://dumux.org/
  • Size: 247 MB
Statistics
  • Stars: 36
  • Watchers: 3
  • Forks: 13
  • Open Issues: 0
  • Releases: 0
Topics
coupled-model darcy finite-volume-methods modeling multi-physics numerical-methods partial-differential-equations pore-network porous-media porous-media-flow scientific-computing simulation
Created about 6 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Authors Codemeta

README.md

dumux logo

What is DuMux?

DuMux is a simulation framework with a focus on finite volume discretization methods, model coupling for multi-physics applications, and flow and transport applications in porous media.

DuMux is based on the DUNE framework from which it uses the versatile grid interface [2, 3], vector and matrix types, geometry and local basis functions, and linear solvers. DuMux then provides

DuMux has been applied to model complex and non-linear phenomena, such as $\mathrm{CO}_2$ sequestration, soil remediation, reactive transport, and precipitation phenomena, drug delivery in cancer therapy, flow in micro-fluidics, root-soil interaction, flow in fractured porous media, atmosphere-soil flow interaction, evaporation, and more. Please have a look at our journal publications (see below: How to cite) for a more detailed description of the goals, the development history, and motivations behind DuMux.

Project Status: Active – The project has reached a stable, usable state and is being actively developed. GitLab Last Commit GitLab Release

[TOC]

Overview

The following resources are useful to get started with DuMux:

Some helpful code snippets are available in the Wiki.

Automated testing of installation: installation testing pipeline

License

REUSE status

DuMux is licensed under the terms and conditions of the GNU General Public License (GPL) version 3 or - at your option - any later version. The GPL can be read online or in the LICENSE.md file provided in the topmost directory of the DuMux source code tree.

Please note that DuMux' license, unlike DUNE's, does not feature a template exception to the GNU General Public License. This means that you must publish any source code that uses any of the DuMux header files if you want to redistribute your program to third parties. If this is unacceptable, please contact us for a commercial license.

See the file LICENSE.md for copying permissions. For a curated list of contributors, see AUTHORS.md. If you notice that a contributor is missing on the list, please contact us or open a merge request adding the name.

How to cite

DuMux is research software developed at research institutions. You can cite specific releases via DaRUS (from 3.6) or Zenodo: zenodo badge. You can also cite individual code files or even lines via SoftwareHeritage.

If you are using DuMux in scientific publications and in the academic context, please cite (at least one of) our publications:

DuMux 3 – an open-source simulator for solving flow and transport problems in porous media with a focus on model coupling. Computers & Mathematics with Applications, 81, 423-443, (2021). dumuxCAMWAbadge PDF

bib @article{Koch2021, doi = {10.1016/j.camwa.2020.02.012}, year = {2021}, volume = {81}, pages = {423--443}, publisher = {Elsevier {BV}}, author = {Timo Koch and Dennis Gläser and Kilian Weishaupt and others}, title = {{DuMux} 3 {\textendash} an open-source simulator for solving flow and transport problems in porous media with a focus on model coupling}, journal = {Computers \& Mathematics with Applications}}

DuMux: DUNE for multi-{phase,component,scale,physics,…} flow and transport in porous media. Advances in Water Resources, 34(9), 1102–1112, (2011) dumuxAWRbadge PDF

bib @article{Flemisch2011, doi = {10.1016/j.advwatres.2011.03.007}, year = {2011}, volume = {34}, number = {9}, pages = {1102--1112}, publisher = {Elsevier {BV}}, author = {B. Flemisch and others}, title = {{DuMux}: {DUNE} for multi-$\lbrace$phase, component, scale, physics, {\ldots}$\rbrace$ flow and transport in porous media}, journal = {Advances in Water Resources}}

Automated Testing / Test suite

  • GitLab Release: release build badge
  • Master branch (development / unstable): master build badge

DuMux features many tests (some unit tests and test problems) that are continuously and automatically tested in the GitLab-CI framework (see badges).

Most tests are regression tests that rely on the fieldcompare Python library. Before you run tests, we therefore recommend setting up a Python virtual environment with the fieldcompare package installed. In the dumux source directory run

bash python -m venv venv source venv/bin/activate pip install -r requirements.txt

to set up the virtual environment and install the required development Python packages.

The test suite is based on CTest and can also be built and run manually. In the build directory, you can run build and run tests by executing

bash cmake --build --target build_tests -- -j8 ctest -j8

The tests are labelled (see CMakeLists.txt of each individual test for its labels). You can build and run tests of a specific label (e.g. 2p for two-phase flow porous medium model tests) like this

bash cmake --build --target build_2p_tests -- -j8 ctest -j8 -L ^2p$

Running individual tests

To find out how to build a test inspect the CMakeLists.txt file in the respective test folder.

The dumux_add_test command specifies some important parameters: NAME sets the name of the test. There is either SOURCES or TARGET specified. If SOURCES is specified NAME, corresponds to the build target, otherwise TARGET is the build target.

You can build the test by running make REPLACE_BY_NAME_OF_BUILD_TARGET (when using GNU Makefiles (default) this is possible within the test folder in the build directory, for ninja it has to be executed in the top-most build folder level).

Some tests may depend on additional optional dependencies. You can find this by inspecting the argument CMAKE_GUARD, e.g. HAVE_UMFPACK means UMFPack is required (via installing Suitesparse), or ( "dune-foamgrid_FOUND" AND "dune-alugrid_FOUND" ) means that the test requires the additional Dune modules dune-foamgrid and dune-alugrid. For installing external dependencies, have a look at the documentation and the script dumux/bin/installexternal.py.

Test coverage

coverage report

A weekly coverage report of the test suite is created by gcovr/gcov. The report currently doesn't include non-instantiated code, so the real coverage is likely lower. However, only a few lines of code are never instantiated in the comprehensive test suite.

Contributing

Dumux support matrix list

Contributions are highly welcome. Please ask questions over the DuMux support channel on Matrix or the DuMux mailing list. Please review the contribution guidelines before opening issues and merge requests.

Bug/issue reports or vulnerabilities

For bug reports or to report any detected security vulnerabilities, contact us over the mailing list, or file an issue. For bug fixes, feature implementations open a merge request or send us formatted patches.

Releases and backward compatibility policy

For a detailed description of the backward compatibility policy, please see contribution guidelines.

DuMux releases are split into major (e.g., 2.0, 3.0) and minor (e.g., 3.1, 3.2, 3.3) releases. Major releases are not required to maintain backward compatibility (see below) but would provide a detailed guide on updating dependent modules. For each minor release, maintaining backward compatibility is strongly encouraged and recommended.

Despite the goal of maintaining backward compatibility across minor releases, for more complicated changes, this is decided upon on a case-to-case basis due to limited developer resources. If implementing full backward compatibility for an update is not feasible or would require unreasonable resources, the degree of backward compatibility can be decided by a vote in one of the monthly core developer meetings.

Owner

  • Name: DuMux
  • Login: dumux
  • Kind: organization
  • Email: dumux@listserv.uni-stuttgart.de

Simulation framework for flow and transport in porous media

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "license": "https://spdx.org/licenses/GPL-3.0+",
  "codeRepository": "git+https://git.iws.uni-stuttgart.de/dumux-repositories/dumux.git",
  "contIntegration": "https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/pipelines",
  "dateCreated": "2007-03-01",
  "datePublished": "2009-07-01",
  "dateModified": "2023-11-17",
  "downloadUrl": "https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/archive/3.8.0/dumux-3.8.0.tar.gz",
  "issueTracker": "https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues",
  "name": "DuMux",
  "version": "3.8",
  "identifier": "https://doi.org/10.18419/darus-3788",
  "description": "DuMux is short for DUNE for Multi-{Phase, Component, Scale, Physics, } flow and transport in porous media; is a free and open-source simulator for flow and transport processes in porous media; is a research code written in C++; is based on the research software framework DUNE (Distributed and Unified Numerics Environment) and technically a DUNE discretization and user module. Its main intention is to provide a sustainable and consistent framework for the implementation and application of porous media model concepts and constitutive relations.",
  "applicationCategory": "Environmental Engineering",
  "releaseNotes": "https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/releases/3.8.0",
  "developmentStatus": "active",
  "referencePublication": "https://doi.org/10.1016/j.camwa.2020.02.012",
  "keywords": [
    "porous media",
    "finite volume method",
    "multi-phase flow in porous media",
    "poromechanics",
    "flow and transport",
    "PDE solver",
    "nonlinear problems"
  ],
  "programmingLanguage": [
    "C++",
    "Python"
  ],
  "operatingSystem": [
    "Linux",
    "macOS",
    "WSL"
  ],
  "softwareRequirements": [
    "https://dumux.org/installation/"
  ],
  "relatedLink": [
    "https://dumux.org/"
  ]
}

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 months
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 months
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • ArashPartow (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

dumux/porenetwork/util/requirements.txt pypi
  • loguru *
  • openpnm *
  • porespy *
pyproject.toml pypi
requirements.txt pypi
  • black *
  • codespell *
  • fieldcompare *
  • flake8 *
  • matplotlib *
  • numpy *
  • pylint *
setup.py pypi