CHANGELOG.md 8.85 KB
Newer Older
Lukas Riedel's avatar
Lukas Riedel committed
1 2
# DORiE Changelog

Lukas Riedel's avatar
Lukas Riedel committed
3

Lukas Riedel's avatar
Lukas Riedel committed
4 5
## Unreleased

Lukas Riedel's avatar
Lukas Riedel committed
6
### Added
Lukas Riedel's avatar
Lukas Riedel committed
7 8
* DORiE now depends on [`yaml-cpp`](https://github.com/jbeder/yaml-cpp/), a
    library for reading YAML files. The version required is >=5.2.0.
Lukas Riedel's avatar
Lukas Riedel committed
9 10
* Added an abstract base class
    [`SimulationBase`](dune/dorie/interface/base_simulation.hh) 
Santiago Ospina's avatar
Santiago Ospina committed
11 12
    that models the concept of simulation steps so that they 
    can be later coupled with other simulations.
Lukas Riedel's avatar
Lukas Riedel committed
13 14 15
* New classes representing parameterizations. Every parameterization must now
    derive from `RichardsParameterization`, and return function objects
    representing parameterization functions.
Lukas Riedel's avatar
Lukas Riedel committed
16 17 18 19 20 21 22
* CMake module `DorieTesting.cmake`. The module contains multiple functions
    which facilitate registering tests in the two new testing categories:
    System tests and Unit tests. Unit tests are compiled with appropriate flags
    for code coverage reports.
* Code coverage reports for unit tests. Detailed reports can be retrieved from
    the artifacts of the `test:unit-tests` test in the folder
    `build-cmake/test/coverage`. The total coverage is reported to GitLab.
23
* New class [`SimulationTransport`](dune/dorie/interface/transport_simulation.hh)
24 25
    which solves the transport equation with a finite volume scheme for give
    grid functions of saturation and velocity.
Lukas Riedel's avatar
Lukas Riedel committed
26 27

### Changed
Lukas Riedel's avatar
Lukas Riedel committed
28 29 30 31 32
* `Simulation` is renamed `RichardsSimulation` and moved to 
	[richards_simulation.hh](dune/dorie/interface/richards_simulation.hh).
* `RichardsSimulation` now has its own `RichardsSimulationTraits` derived from
    `BaseTraits`, which defines all its member types. `BaseTraits` now have
    reduced content and are intended to be shared between models/simulations.
33 34 35
* Grid adaptation now is done in two steps: (1) mark entities of the grid to 
    refine/coarse and (2) adapt the grid and project the degrees of freedom on 
    the new grid.
Lukas Riedel's avatar
Lukas Riedel committed
36 37 38 39 40 41 42
* Data structures for storing and accessing parameters. The new class
    `FlowParameters` maps parameter sets and scaling factors to every grid cell
    on the coarsest grid level, and only stores one set of parameters for
    each soil layer. Before querying the parameterization functions, users need
    to call `FlowParameters::bind` with a grid entity to cache the appropriate
    data. All classes and functions querying parameter data have been updated.
    
Lukas Riedel's avatar
Lukas Riedel committed
43
    The old parameterization classes have been removed.
Santiago Ospina's avatar
Santiago Ospina committed
44 45 46 47 48 49
* `RichardsSimulation` now uses one vector of coefficients instead of two, which
    now is a `shared_ptr` instead a `unique_ptr`.
* Every `VTKAdapter` is now able to be used as `GridFunctionAdapter` of the
    solution vector.
* `GradientFluxAdapter` was reimplemented and renamed `WaterFluxAdapter`.
* Every grid function adapter has its own file and are gathered in the 
50
    subdirectory [dune/dorie/solver/adapters](dune/dorie/solver/adapters).
Santiago Ospina's avatar
Santiago Ospina committed
51 52 53
* `VTKAdapters` are now managed with `shared_ptr` instead of references.
* `OutputWriter` class is deprecated in favor of an minimal extension of the 
    usual `VTKSequenceWriter` for grid functions called
Santiago Ospina's avatar
Santiago Ospina committed
54
    `GridFunctionVTKSequenceWriter`.
55 56 57 58 59 60 61 62
* `RichardsSimulation` now models the `SimulationBase` class (See details in
    https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues/94). For this, 
    several methods were renamed with basically no change in behaviour.
* `RichardsSimulation` and `TimeController` are able to receive a suggestion for
    the next timestep.
* Static const `bool`s for adaptivity and output writing in `BaseTraits` were 
    removed in favor of run-time policies (See details in
    https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues/94).
63
* Swich to the stable release branch `releases/2.6` of `dune-testtools`.
Lukas Riedel's avatar
Lukas Riedel committed
64 65 66
* The `build` CI stage now explicitly builds system tests and unit tests. The
    job `build:main` has been removed. The `build:debug` jobs now build the
    unit test targets.
Lukas Riedel's avatar
Lukas Riedel committed
67
* Merge Python packages into single new package `dorie`.
68
* Executables and files of unit-tests and system-tests are now located in 
69
    [`dune/dorie/test/`](dune/dorie/test/) and [`test/`](test/) respectively.
Lukas Riedel's avatar
Lukas Riedel committed
70 71 72
* The `dorie` CLI has been moved into the DORiE Python package. It can now only
    be invoked after activating the DUNE virtual environment. The usage
    instructions in docs and `README.md` have been updated accordingly.
Lukas Riedel's avatar
Lukas Riedel committed
73
* Soil architecture and parameter input has been completely revised.
Lukas Riedel's avatar
Lukas Riedel committed
74

Lukas Riedel's avatar
Lukas Riedel committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
    DORiE now expects a YAML file containing parameterization data and separate
    domain mapping data which can be supplied through the input GMSH file, or as
    H5 dataset. See the documentation for more information. Several keys in the
    main routine config file have been changed.

    See [#86](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues/86).

* The Parameter Field Generator (PFG) module has been revised and does not
    write parameterization data anymore.
    
    It can be used to create mappings for heterogeneous media through the
    binary converter, or continuous scaling fields (feature pending).
    Several keys in the PFG config file have been changed.

    See [#86](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues/86).
Lukas Riedel's avatar
Lukas Riedel committed
90

Lukas Riedel's avatar
Lukas Riedel committed
91 92 93 94 95
* Improved and refurbished `Dorie::H5File`.

    The source file was renamed to `dune/dorie/solver/util_h5file.hh`. The
    `read_dataset` function is now capable of directly opening dataset paths
    that contain groups.
Lukas Riedel's avatar
Lukas Riedel committed
96 97 98 99 100

### Deprecated
* The configuration file key `[parameters.interpolation]` is deprecated due to
    the new scheme for storing parameterization data. DORiE now only supports 
    nearest-neighbor interpolation of parameters and scaling factors.
Lukas Riedel's avatar
Lukas Riedel committed
101

Lukas Riedel's avatar
Lukas Riedel committed
102 103 104
### Removed
* The class `H5File::AttributeReader` was completely removed.

Lukas Riedel's avatar
Lukas Riedel committed
105 106 107 108 109 110 111 112 113 114

## 1.1.1 (2018-08-21)

### Added
* Documentation of Docker images and their usage in the CI/CD pipeline.

### Changed
* Rebuilds of the DUNE environment Docker image are now triggered by setting the
    CI variable `REBUILD_BASE_IMAGE` to a non-empty value. Previously, the
    builds in stage `setup` where triggered by any manual pipeline run.
Lukas Riedel's avatar
Lukas Riedel committed
115
* The test system folder was renamed from `testing` to [`test`](test).
116 117
* File `operator_DG.hh` is renamed  
    [`richards_operator_DG.hh`](dune/dorie/solver/richards_operator_DG.hh)
Lukas Riedel's avatar
Lukas Riedel committed
118

Lukas Riedel's avatar
Lukas Riedel committed
119 120 121 122
### Fixed
* Removed VTK output from `dorie_mass_conservation` executable, which would
    cause the corresponding test to fail if the designated output directory did
    not exist.
Lukas Riedel's avatar
Lukas Riedel committed
123
* Removed CI artifacts of `test` stage from `deploy` jobs.
Lukas Riedel's avatar
Lukas Riedel committed
124 125 126
* Correctly estimate the number of row entries in the matrix backend based on
    the DG discretization and proper static blocking. This can lead to a
    performance improvement for large problems.
Lukas Riedel's avatar
Lukas Riedel committed
127 128 129
* VTK output is now written _before_ the grid is adapted. Previously, the output
    displayed the adapted grid and not the one the solution was computed on.
* Grid adaptation is skipped after computing the final solution.
Lukas Riedel's avatar
Lukas Riedel committed
130 131
* Path to Pipeline artifacts for `test` stage. The artifacts are now correctly
    captured and can be viewed and downloaded from the GitLab web interface.
Lukas Riedel's avatar
Lukas Riedel committed
132 133
* Fix a bug in the boundary condition evaluation where an `end()` iterator
    was dereferenced without error.
Lukas Riedel's avatar
Lukas Riedel committed
134 135
* Re-introduced deployment of the documentation which can now be found online
    at https://dorie-doc.netlify.com/.
Lukas Riedel's avatar
Lukas Riedel committed
136

Lukas Riedel's avatar
Lukas Riedel committed
137

Lukas Riedel's avatar
Lukas Riedel committed
138
## 1.1.0 (2018-07-27)
Lukas Riedel's avatar
Lukas Riedel committed
139

Lukas Riedel's avatar
Lukas Riedel committed
140
### Added
Lukas Riedel's avatar
Lukas Riedel committed
141 142
* DORiE now employs a `SubsamplingVTKWriter` for higher output precision.
    Subsampling levels are controlled via the new key `output.subsamplingLevel`.
Santiago Ospina's avatar
Santiago Ospina committed
143 144 145
* Automatic deployment of `devel` and stable DORiE Docker Images to Docker Hub.
* Automatic update of the DUNE environment Docker Image for `master` builds.
* CI pipeline now also compiles a Debug build with the LLVM Clang compiler.
Lukas Riedel's avatar
Lukas Riedel committed
146
* Add `.gitattributes` for `CHANGELOG.md` to reduce merge conflicts with
Santiago Ospina's avatar
Santiago Ospina committed
147
    `merge=union`.
Lukas Riedel's avatar
Lukas Riedel committed
148
* Public API definition in documentation.
Lukas Riedel's avatar
Lukas Riedel committed
149

Lukas Riedel's avatar
Lukas Riedel committed
150
### Changed
Santiago Ospina's avatar
Santiago Ospina committed
151
* Update code base to *DUNE v2.6*.
Lukas Riedel's avatar
Lukas Riedel committed
152
* Raise software requirements to versions available on Ubuntu 18.04 LTS
Santiago Ospina's avatar
Santiago Ospina committed
153 154
    (Bionic Beaver).
* Switch VTK output from conforming to non-conforming.
Lukas Riedel's avatar
Lukas Riedel committed
155
* Use `multicore` build tag only for `test:parallel` build because the current
Santiago Ospina's avatar
Santiago Ospina committed
156
    GitLab Runner cannot handle the load.
Lukas Riedel's avatar
Lukas Riedel committed
157 158
* Use the `OVLP_AMG_4_DG` linear solver for all computations, including
    sequential ones. This significantly improves performance for large problems.
Lukas Riedel's avatar
Lukas Riedel committed
159
* Change compilation order which reduces RAM usage when compiling in parallel.
Santiago Ospina's avatar
Santiago Ospina committed
160
* Decentralization of the header system so that in most of the header files are 
Santiago Ospina's avatar
Santiago Ospina committed
161
	independent of each other.
Lukas Riedel's avatar
Lukas Riedel committed
162 163 164 165 166

### Deprecated
* `output.subsamplingLevel` is optional and defaults to 0 if not given
    explicitly in the config file. The key will become mandatory in future
    versions.
Lukas Riedel's avatar
Lukas Riedel committed
167

Lukas Riedel's avatar
Lukas Riedel committed
168 169
### Removed
* Complete doxygen documentation from Sphinx docs.
Lukas Riedel's avatar
Lukas Riedel committed
170

Lukas Riedel's avatar
Lukas Riedel committed
171
### Fixed
Lukas Riedel's avatar
Lukas Riedel committed
172 173
* The source code is now compatible to the Clang LLVM compiler.
    DORiE can now be compiled with the onboard compiler on macOS.
Lukas Riedel's avatar
Lukas Riedel committed
174 175
* Fix finite element map used for simplex grids. The old one did not implement
    a discontinuous function space.
Lukas Riedel's avatar
Lukas Riedel committed
176
* Allow warnings on ParMETIS not being available for parallel computations.
Lukas Riedel's avatar
Lukas Riedel committed
177 178


Lukas Riedel's avatar
Lukas Riedel committed
179 180
## 1.0.0 (2018-03-28)

Santiago Ospina's avatar
Santiago Ospina committed
181
First stable version.