Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
dumux
Manage
Activity
Members
Labels
Plan
Issues
77
Issue boards
Milestones
Wiki
Code
Merge requests
77
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
dumux-repositories
dumux
Merge requests
!3580
[doc] Feature/doc dissolve handbook (partial)
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
[doc] Feature/doc dissolve handbook (partial)
feature/doc-dissolve-handbook
into
master
Overview
0
Commits
6
Pipelines
3
Changes
9
Merged
Timo Koch
requested to merge
feature/doc-dissolve-handbook
into
master
1 year ago
Overview
0
Commits
6
Pipelines
3
Changes
9
Expand
👍
0
👎
0
Merge request reports
Compare
master
version 2
bfae1b11
1 year ago
version 1
9464ebca
1 year ago
master (base)
and
latest version
latest version
269082b5
6 commits,
1 year ago
version 2
bfae1b11
6 commits,
1 year ago
version 1
9464ebca
6 commits,
1 year ago
9 files
+
224
−
285
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
9
Search (e.g. *.vue) (Ctrl+P)
doc/doxygen/pages/developing.md
0 → 100644
+
87
−
0
Options
# Developing DuMux
## Communicate with DuMux Developers
### Issues and Bug Tracking
The bug-tracking system via
[
GitLab Issues
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/issues
)
offers the possibility to report bugs, discuss new development requests, or ask questions.
Feel free to register (if you don't have an account yet) and to contribute by opening an issue.
### Commits, Merges requests
To be up-to-date with the latest changes made to any git-repository, you can use RSS Feeds.
Simply navigate to
[
Issues
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/issues
)
or
[
Activity
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/activity
)
and hit the RSS subscribe button on the top right.
### Automatic Testing
The automatic testing using
`Gitlab-CI`
helps to constantly check the
DuMux problems for compiling and running correctly. An overview over
[
recently run pipelines is available on GitLab
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/pipelines
)
.
`Gitlab-CI`
is configured via the
`.gitlab-ci.yml`
file in the project root directory.
### Mailing List
If you have questions, specific problems (which you really struggle to solve on your own),
or hints for the DuMux-developers, please contact the mailing list
`dumux@iws.uni-stuttgart.de`
.
You can
[
subscribe to the mailing list
](
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
)
to be informed about upcoming releases, events, and see other peoples questions and answers.
### Coding Guidelines
Writing code in a readable manner is very important, especially
for future code developers (e.g. for adding features, debugging, etc.).
Therefore, we have a
[
contribution guide
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/CONTRIBUTING.md
)
iuncluding a
[
style guide
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/doc/styleguide.md
)
and tips on how to contribute effectively.
## Various tips and tricks
In the following, we mention a couple of tips & tricks. There is also
a
[
small Wiki
](
https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/wikis/home
)
containing more.
### Optimized computation vs debugging
Dune and DuMux are built with the help of
`dunecontrol`
.
Per default, DuMux is compiled using optimization options, which leads to faster runtimes but is unsuitable
for debugging. For debug opts you can set
`CMAKE_BUILD_TYPE`
to
`Debug`
or
`RelWithDebInfo`
in your options file. You can also do this in any of the
`CMakeLists.txt`
in DuMux by adding the line
```
cmake
set
(
CMAKE_BUILD_TYPE Debug
)
```
Afterwards rerun
`cmake <path-to-build-dir>`
.
### Dunecontrol for selected modules
A complete build using
`dunecontrol`
takes some time. In many cases not all modules need to be re-built.
Pass the flag
`--only=dumux`
to
`dunecontrol`
for configuring or building only DuMux. A more
complex example would be a case in which you have to configure and build only e.g.
`dune-grid`
and DuMux. This is achieved by adding
`--only=dune-grid,dumux`
.
### Using Dune Debug Streams
Dune provides a helpful feature for keeping your debug-output organized.
It uses simple streams like
`std::cout`
, but they can be switched on and off
for the whole project. You can choose five different levels of severity:
```
5 - grave (dgrave)
4 - warning (dwarn)
3 - info (dinfo)
2 - verbose (dverb)
1 - very verbose (dvverb)
```
They are used as shown in the following example
```
cpp
#include
<dune/common/debugstream.hh>
// define the minimal debug level somewhere in your code
#define DUNE_MINIMAL_DEBUG_LEVEL 4
Dune
::
dgrave
<<
"message"
;
// will be printed
Dune
::
dwarn
<<
"message"
;
// will be printed
Dune
::
dinfo
<<
"message"
;
// will NOT be printed
```
### Make headercheck
When developing C++ it is important to always include what you use and not to rely on transitive includes.
To check one header file for all necessary includes to compile the contained code, use
`make headercheck`
.
Include the option
`-DENABLE_HEADERCHECK=1`
in your opts file and run
`dunecontrol`
.
Then go to the top level in your build-directory and type
`make headercheck`
to check all headers
or use bash auto-completion to find the target to build.
Loading