CHANGELOG.md 13.2 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 11
* New classes representing parameterizations. Every parameterization must now
    derive from `RichardsParameterization`, and return function objects
    representing parameterization functions.
Santiago Ospina's avatar
Santiago Ospina committed
12 13 14
* Added a abstract base class [`SimulationBase`](dune/dorie/interface/base_simulation.hh) 
    that models the concept of simulation steps so that they 
    can be later coupled with other simulations.
Lukas Riedel's avatar
Lukas Riedel committed
15
* Added an abstract base class
16
    [`SimulationBase`](dune/dorie/common/simulation_base.hh)
Santiago Ospina's avatar
Santiago Ospina committed
17 18
    that models the concept of simulation steps so that they 
    can be later coupled with other simulations.
Lukas Riedel's avatar
Lukas Riedel committed
19 20 21
* 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
22 23 24 25 26 27 28
* 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.
29
* New class [`SimulationTransport`](dune/dorie/interface/transport_simulation.hh)
30
    which solves the transport equation with a finite volume scheme for give
31
    grid functions of water content and velocity.
Lukas Riedel's avatar
Lukas Riedel committed
32
* Grid function container to store transient grid functions !115
Lukas Riedel's avatar
Lukas Riedel committed
33
* Infrastructure for the input of Miller scaling fields. !110
Lukas Riedel's avatar
Lukas Riedel committed
34
* Add logging framework 'spdlog' as submodule !106
Lukas Riedel's avatar
Lukas Riedel committed
35
* Support input of boundary segmentations !119
Lukas Riedel's avatar
Lukas Riedel committed
36
* Reconstruction of continuous fluxes using RT finite elements !105
Lukas Riedel's avatar
Lukas Riedel committed
37
* Custom DG finite element map for simplices based on Pk polynomials !125
Lukas Riedel's avatar
Lukas Riedel committed
38 39
* Initial conditions expressed as analytic functions using
    [muparser](http://beltoforion.de/article.php?a=muparser) !131
Lukas Riedel's avatar
Lukas Riedel committed
40
* Coupling between transient models for water flow and solute transport !96
Lukas Riedel's avatar
Lukas Riedel committed
41
* Initial conditions generated from H5 input data !130
Lukas Riedel's avatar
Lukas Riedel committed
42
* Generic Python VTK file reader !143
43
* Linear interpolator for initial conditions and scaling fields !145, !156
Lukas Riedel's avatar
Lukas Riedel committed
44
* Parameterizations for hydrodynamic dispersion in solute transport !141
Lukas Riedel's avatar
Lukas Riedel committed
45
* Generic Python VTK file reader !143, !150
46
* Define compile-time settings via CPP macros !144
47 48
* [Google Test](https://github.com/google/googletest) unit test framework
    as Git Submodule !159
49
* Upwinding options for Richards finite volume local operator !161
Lukas Riedel's avatar
Lukas Riedel committed
50
* Cookbook tutorial on infiltration into homogeneous sand !157
51
* GitLab Description Templates for Releases !166
Lukas Riedel's avatar
Lukas Riedel committed
52 53

### Changed
Lukas Riedel's avatar
Lukas Riedel committed
54
* `Simulation` is renamed `RichardsSimulation` and moved to 
55
	[richards.hh](dune/dorie/model/richards/richards.hh).
Lukas Riedel's avatar
Lukas Riedel committed
56 57 58
* `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.
Lukas Riedel's avatar
Lukas Riedel committed
59 60 61 62 63 64 65 66 67 68 69 70 71
* 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.
    
    The old parameterization classes located in
    [`param_base.hh`](dune/dorie/solver/param_base.hh),
    [`param_factory.hh`](dune/dorie/solver/param_factory.hh), and
    [`param_van_genuchten.hh`](dune/dorie/solver/param_van_genuchten.hh)
    are still used for reading in data for the new storage scheme.
    The respective objects are freed once a simulation commences.
72 73 74
* 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
75
    The old parameterization classes have been removed.
Lukas Riedel's avatar
Lukas Riedel committed
76 77 78 79 80 81
* `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 
82 83
    subdirectory
    [dune/dorie/model/richards/adapters](dune/dorie/model/richards/adapters).
Lukas Riedel's avatar
Lukas Riedel committed
84 85 86 87
* `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
    `GridFunctionVTKSequenceWriter`.
88 89 90 91 92 93 94 95
* `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).
96
* Swich to the stable release branch `releases/2.6` of `dune-testtools`.
Lukas Riedel's avatar
Lukas Riedel committed
97 98 99
* 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
100
* Merge Python packages into single new package `dorie`.
101
* Executables and files of unit-tests and system-tests are now located in 
102
    [`dune/dorie/test/`](dune/dorie/test/) and [`test/`](test/) respectively.
Lukas Riedel's avatar
Lukas Riedel committed
103 104 105
* 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
106
* Soil architecture and parameter input has been completely revised.
Lukas Riedel's avatar
Lukas Riedel committed
107

Lukas Riedel's avatar
Lukas Riedel committed
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
    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
123

Lukas Riedel's avatar
Lukas Riedel committed
124 125
* Improved and refurbished `Dorie::H5File`.

126
    The source file was renamed to `dune/dorie/common/util_h5file.hh`. The
Lukas Riedel's avatar
Lukas Riedel committed
127 128
    `read_dataset` function is now capable of directly opening dataset paths
    that contain groups.
Lukas Riedel's avatar
Lukas Riedel committed
129

130 131 132
* The following changes were done in order to have a consistent API to support 
    different models:

133 134 135
    * Folder structure has changed to a model based structure: in the main
        [C++ source directory](dune/dorie/) there now is a `common` folder, and
        a folder for `model` containing the source files for each model.
136 137 138

    * The API has been updated to support several models: from now, categories 
        that  target a specific model has to be preceded by a keyword 
139 140
        identifying the  corresponding model (e.g. `richards.initial`,
        `richards.output`, etc.), while common categories stay with no prefix
141 142 143 144
        at all (e.g. `grid`, `adaptivity`, etc.).

    * The parameter scraper now accepts the argument `--model <model>` which
        adds the prefix `<model>.` to every category in the scraper. This helps
145 146 147
        to be able to use the method `sub()` from the `ParameterTree` object.
        It dumps its data into a YAML file which is then loaded for writing
        the default configuration files and the cheat sheet.
148

Lukas Riedel's avatar
Lukas Riedel committed
149
* Use logging framework 'spdlog' for all terminal output !106
150
* DORiE now writes vertex data by default. #129
Lukas Riedel's avatar
Lukas Riedel committed
151
* Switch license from MIT to GPLv3 !135
Lukas Riedel's avatar
Lukas Riedel committed
152
* Specifying scaling field `extensions` and `offset` is now optional !133
Lukas Riedel's avatar
Lukas Riedel committed
153
* Generalized initial condition specification in config file !129
Lukas Riedel's avatar
Lukas Riedel committed
154
* Structure and setup of Sphinx user docs !126
Lukas Riedel's avatar
Lukas Riedel committed
155 156
* Switch to stable `dune-randomfield` release branch !151, !153
* System tests for executing `dorie pfg` module !153
Lukas Riedel's avatar
Lukas Riedel committed
157
* Finite volume solver for the Richards equation !132
158
* Build independent library and executable for each compile-time setting !144
159
* `SimulationBase` unit test now uses Google Test !159
160
* Deploy online documentation for each branch to private server !163
Lukas Riedel's avatar
Lukas Riedel committed
161

162 163 164
### Fixed
* Solver in `RichardsSimulation` was using the wrong time variable.
   [!116](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/merge_requests/116)
Lukas Riedel's avatar
Lukas Riedel committed
165
* Shape of input datasets was flipped when loading scaling factors !124
166
* `dune_add_system_test` requires target with location after bugfix !165
167
* `make all` would not build the solver application target `dorie` !167
168

Lukas Riedel's avatar
Lukas Riedel committed
169 170 171 172
### 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
173

174
* The `adaptivity.useAdaptity` keyword is deprecated, please use the new keyword
175 176
     `adaptivity.policy` (see the 
    [DORiE Configuration File Guide documentation](https://dorie-doc.netlify.com/quickstart-parameters.html#main-routine)
177 178
     for details).

Lukas Riedel's avatar
Lukas Riedel committed
179 180
### Removed
* The class `H5File::AttributeReader` was completely removed.
Lukas Riedel's avatar
Lukas Riedel committed
181
* Boundary conditions `evaporation` and `limitedInflux` !120
Lukas Riedel's avatar
Lukas Riedel committed
182 183 184 185 186 187 188 189 190 191

## 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
192
* The test system folder was renamed from `testing` to [`test`](test).
193 194
* File `operator_DG.hh` is renamed  
    [`richards_operator_DG.hh`](dune/dorie/solver/richards_operator_DG.hh)
Lukas Riedel's avatar
Lukas Riedel committed
195

Lukas Riedel's avatar
Lukas Riedel committed
196 197 198 199
### 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
200
* Removed CI artifacts of `test` stage from `deploy` jobs.
Lukas Riedel's avatar
Lukas Riedel committed
201 202 203
* 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
204 205 206
* 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
207 208
* 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
209 210
* Fix a bug in the boundary condition evaluation where an `end()` iterator
    was dereferenced without error.
Lukas Riedel's avatar
Lukas Riedel committed
211 212
* 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
213

Lukas Riedel's avatar
Lukas Riedel committed
214

Lukas Riedel's avatar
Lukas Riedel committed
215
## 1.1.0 (2018-07-27)
Lukas Riedel's avatar
Lukas Riedel committed
216

Lukas Riedel's avatar
Lukas Riedel committed
217
### Added
Lukas Riedel's avatar
Lukas Riedel committed
218 219
* 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
220 221 222
* 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
223
* Add `.gitattributes` for `CHANGELOG.md` to reduce merge conflicts with
Santiago Ospina's avatar
Santiago Ospina committed
224
    `merge=union`.
Lukas Riedel's avatar
Lukas Riedel committed
225
* Public API definition in documentation.
Lukas Riedel's avatar
Lukas Riedel committed
226

Lukas Riedel's avatar
Lukas Riedel committed
227
### Changed
Santiago Ospina's avatar
Santiago Ospina committed
228
* Update code base to *DUNE v2.6*.
Lukas Riedel's avatar
Lukas Riedel committed
229
* Raise software requirements to versions available on Ubuntu 18.04 LTS
Santiago Ospina's avatar
Santiago Ospina committed
230 231
    (Bionic Beaver).
* Switch VTK output from conforming to non-conforming.
Lukas Riedel's avatar
Lukas Riedel committed
232
* Use `multicore` build tag only for `test:parallel` build because the current
Santiago Ospina's avatar
Santiago Ospina committed
233
    GitLab Runner cannot handle the load.
Lukas Riedel's avatar
Lukas Riedel committed
234 235
* 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
236
* Change compilation order which reduces RAM usage when compiling in parallel.
Santiago Ospina's avatar
Santiago Ospina committed
237
* Decentralization of the header system so that in most of the header files are 
Santiago Ospina's avatar
Santiago Ospina committed
238
	independent of each other.
Lukas Riedel's avatar
Lukas Riedel committed
239 240 241 242 243

### 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
244

Lukas Riedel's avatar
Lukas Riedel committed
245 246
### Removed
* Complete doxygen documentation from Sphinx docs.
Lukas Riedel's avatar
Lukas Riedel committed
247

Lukas Riedel's avatar
Lukas Riedel committed
248
### Fixed
Lukas Riedel's avatar
Lukas Riedel committed
249 250
* 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
251 252
* 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
253
* Allow warnings on ParMETIS not being available for parallel computations.
Lukas Riedel's avatar
Lukas Riedel committed
254 255


Lukas Riedel's avatar
Lukas Riedel committed
256 257
## 1.0.0 (2018-03-28)

258
First stable version.