File: CHANGELOG

package info (click to toggle)
opm-models 2022.10%2Bds-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 6,216 kB
  • sloc: cpp: 37,910; ansic: 1,897; sh: 277; xml: 182; makefile: 10
file content (579 lines) | stat: -rw-r--r-- 30,285 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
Changes in opm-models 2019.10 (formerly known as ewoms)
=====================================================

- The module has been renamed to opm-models and some files
  have been moved to opm-simulators.
  - namspace Ewoms renamed to Opm.
  - header directories renamed (ewoms/models->opm/models,
    ewoms/io->opm/models/io, ewoms/linear->opm/models/linear,
    ewoms/common->opm/models/utils,
    ewoms/disc->opm/models/discretization)
    parts of ewoms/linear moved to opm-simulators
    (opm/simulators/linalg) 
- Removed usage and dependency on libecl
- Added support for ROCKCOMP
- Added support for one phase simulations
- Added support for DUNE 2.7.0
- Added experimental foam module.
- Various bugfixes and improvements (polymer, time stepping, dim/dim
  world, parameter system, maximum oil saturations)
  
Changes in eWoms 2018.10
========================

- Major improvements to the parameter system:
  - Support for positional command line parameters.
  - Possibility to hide parameters in the usage message. This is
    useful if parameters are there but not actually used, as is the
    case for some parameters of the `flow` simulator from opm-simulators.
  - The `Dune::ParameterTreeParser` class has been replaced by custom
    code. The rationale is that this allows to use the same syntax for
    parameters in INI-style files as for command line arguments.
  - Better formating of the usage message with more sophisticated handling
    of line breaks.
  - The default values of parameters are now printed in the usage
    message and when outputting the list of parameters.
- Various ebos improvements:
  - The update procedure for Newton-Raphson iterations of the blackoil
    model has been significantly improved.
  - Improvements to the handling of wells: It is now possible to
    specify the well model externally -- i.e., from `flow` -- yet let
    the object be completely managed by `ebos`.
  - Better support for restarts from ECL-formatted files.
  - Support to specify the input deck as a positional parameter and
    only using the name of the deck instead of the complete filename,
    e.g., the command

      ebos SPE1

    instead of

      ebos --ecl-deck-filename=SPE1.DATA

    is now valid.
  - Printing of fluid-in-place (FIP) results can now be forced to be
    suppressed using a command line parameter even if they are
    requested by the deck. This can significantly reduce visual noise
    during development.
  - Various smaller bugfixes and improvements.
- Better support for Schur complements. This feature is already useful
  but it is not yet complete.
- Support for writing VTK output asynchronously (in most cases).
- Performance improvements in the VTK output writing code.
- Introduction of the BEGIN_PROPERTIES and END_PROPERTIES macros in
  the property system: This avoids having to explicitly specify the
  namespace where properties are located. Usage of these macros is
  currently completely optional.
- The compositional model based on non-linear complementarity problems
  (NCP) now works in conjunction with adaptive grid refinement.
- Various minor fixes and improvements.

Changes in eWoms 2018.04
========================

- Significant improvements to the black-oil flow model and to ebos,
  the Ecl Black-Oil Simulator:
  - An extension for energy conservation similar to the "solvent" and
    "polymer" extensions was added to the black-oil model
  - The DRSDT and DRVDT keywords are now implemented and fully
    supported by ebos
  - The ECL output writing code has been overhauled and now uses the
    infrastructure from opm-common instead of calling libecl directly.
  - The code for computing hydrostatic equilibrium for the initial
    condition has been moved in from opm-core and cleaned up.
- The "GridManager" classes have been renamed to "Vanguard".
- "Tasklets", an asynchronous work execution mechanism, have been added
  and are used to write VTK and ECL output without blocking the main
  thread.
- The boundary condition handling has been refactored: Instead of
  assuming a "minimal" fluid state with only fluid pressures,
  temperatures and saturations defined, the boundary code now assumes
  that all quantities of the passed fluid state are defined. In
  particular, this means that fluid viscosities, densities and
  enthalpies can no longer be left undefined for boundary fluid
  states.
- Handling thermal conduction and heat capacity of the solid matrix
  has been overhauled in step with opm-material.
- eWoms is now compatible with DUNE 2.6 and the latest DUNE
  development version of 2.7. The minimum required DUNE version stays
  DUNE 2.4.
- Building eWoms without the opm-common module is now possible if the
  alternative build system as described in the INSTALL file is
  used. In this case, ebos is unavailable.
- Many smaller bug fixes and cleanups


Changes in eWoms 2017.10
========================

- Many improvements to the black-oil flow model and to ebos, the Ecl
  Black-Oil Simulator:
  - Fixes for several parallelization issues
  - Improved performance for two-phase runs
  - Possibility to simulate gas-oil cases in addition to oil-water
    cases
  - Overhauled primary variable switching logic
  - Implementation of solvent and polymer extensions
  - Option to conserve surface volume of the fluids instead of
    component mass
- The vertex centered finite volume discretization now works with
  automatic differentiation
- The model for the Stokes equations has been removed: This model
  never worked well and was very prone to breakdowns and numerical
  oscillations
- The minimum version of DUNE is now 2.4
- The C++ compiler is now assumed to be fully C++-2011 compliant. GCC
  >= 4.8.2 and clang > 3.3 should work
- Many smaller bug fixes and cleanups

Changes in eWoms 2017.04
========================

- Re-implementation of the BiCGSTAB linear solver to avoid potential
  copyright issues with dune-istl while retaining the performance
  improvement due to custom convergence criteria.
- Support for using a different floating point precision in the linear
  solver than in the linearization.
- Various cleanups in the linear solver backends.
- Various changes in ebos to use it as an upstream framework. These
  are primarily motivated by flow_ebos, a new simulator for ECL
  problems that is part of the opm-simulators module.
- Support for passing the transmissibilities as edge weights for
  partitioning the grid in ebos.
- Support for two-phase blackoil simulations.
- Support for explicit prefetching and addition of PffGridVector, a
  prefetch-friendly container class.
- Better support for non-Linux unix systems like MacOS X.
- Many bugfixes all over the place.

Changes in eWoms 2016.04 and eWoms 2016.10
==========================================

- Support for Dune 2.2 has been removed: Dune 2.3 has been released in
  February 2014, so it should be old enough to be available everywhere
  where the latest eWoms release is supposed to be used.
- Support for the legacy ALUGrid Dune grid provided by old versions of
  the dune-grid module has been removed. the stand-alone dune-alugrid
  module can be used as a drop-in replacement.
- The Navier-Stokes test has been removed: It did not work properly
  and earlier releases of eWoms just hid the issues.
- The dune-localfunctions module is now an optional instead of a
  required dependency. If it is not available, the vertex-centered
  finite volume method (VCFV) cannot be used with P1 finite element
  gradients, i.e., it only supports two-point gradients in that case.
- An explicitly as an optional dependency has been added on opm-parser
  module. So far, the opm-parser dependency was implicitly inherited
  from the optional opm-grid module.
- Many improvements of ebos (the Ecl Black-Oil Simulator):
 - Treatment of wells can be completely disabled at compile time. This
   is useful if eWoms is used as a simulation framework and an
   external well model shall be used ECL simulations.
 - Consistent determination of the upstream direction: So far, it was
   possible that the upstream direction differed depending on which
   side an intersection was used if the pressure gradient over the
   intersection was zero.
 - The calculated transmissibilities and threshold pressures are now
   the same as those calculated by the `flow` simulator from
   opm-autodiff.
 - Support for the VAPPARS keyword.
 - Proper support for specifying the pore volume directly (using the
   ECL "PORV" keyword), minimum pore volume ("MINPV") and the most
   common pore volume modifier keywords ("NGT", "MULTPV" and
   "MULTREGP")
 - Support for simple geology changes during the simulation, e.g., the
   "MULTFLT" keyword can now occur in the "SCHEDULE" section.
- Support for caching the initial storage term of time steps for
  better performance.
- Support for lockless multithreaded linearization. This code only
  works for spatial discretizations that guarantee that the
  linearization for a degree of freedom is only written to by a single
  thread. Most prominently, this property holds for the element
  centered finite volume discretization (ECFV).
- Improvements to the update procedure of the Newton-Raphson method:
  In particular, a linearized system of of equations does not need to
  be solved anymore if the solution is deemed to be converged.
- The residual of the "phase presence" equations is not considered for
  convergence by the NCP model anymore. This should make the behavior
  of the NCP model identical to that exhibited by the PVS model.
- Many minor bugfixes and improvements.


Notable Differences Between eWoms 2015.04 and eWoms 2015.10
===========================================================

- An automatic differentiation framework has been added. Compared to
  the default linearization method (i.e., finite differences)
  automatic differentiation is about 20% faster and is also slightly
  more accurate. Due to technical reasons, it can only be used with
  the element-centered finite volume discretization (ECFV) at the
  moment. Automatic differentiation can be used by adding the line

  SET_TAG_PROP(YourProblemTypeTag, LocalLinearizerSplice, AutoDiffLocalLinearizer);

  to the problem file.
- The ECL material relations have received a significant
  overhaul. Advanced features like end-point scaling and
  runtime-selectable saturation functions are now supported.
- The ECL Black-Oil Simulator (ebos) has received many bug fixes and
  new features. Amongst others, it now uses automatic differentiation,
  supports specififying the the steady-state of the reservoir as
  initial condition (using the EQUIL) keyword and it supports scenarios
  involving wet-gas and dry-oil.

Notable Differences Between eWoms 2013.10 and eWoms 2015.04
===========================================================

- The eWoms property system now supports "splices", a mechanism for
  "deferred inheritance": It allows to specify the type tags from
  which a base type tag derives from at a later time. A typical
  use-case for this functionality is to specify the spatial
  discretization which is be used at the problem level instead of for
  the type tag of the physical model.
- eWoms now supports multiple spatial discretizations. So far, only an
  element-centered finite volume method has been implemented.

  To specify that a problem should use the element-centered finite volume
  discretization, include the file "ewoms/disc/ecfv/ecfvdiscretization.hh"
  and set the "SpatialDiscretizationSplice" property to
  "EcfvDiscretization". The latter is achieved by adding the line

  SET_TAG_PROP(YourProblemTypeTag, SpatialDiscretizationSplice, EcfvDiscretization);

  to your problem file.
- ebos, a fully-implicit black oil simulator for datasets specified
  using the ECL data format, has been added. The results for various
  widely used benchmark datasets (i.e., SPE-1, SPE-3 and SPE-9) are
  very similar to the ones produced by the commercial standard
  simulator which is used by the crude oil industry.
- Stability, performance and consistency improvements across the
  board.

Notable Differences Between eWoms 2.3 and eWoms 2013.10
=======================================================

- The semi implicit ("decoupled", "IMPET") models have been removed
  due to a lack of interest and the slowly increasing maintenance
  burden as the Dumux and eWoms code bases continue to diverge.
- The custom CMake-based and the autotools based DUNE build systems
  have been removed and replaced by the CMake based build system of
  the Open Porous Media Initiative.
- The material laws framework has evolved into a separate module,
  "opm-material". This means that this module must be also present
  when compiling eWoms.
- The property system has been moved to opm-core, along with some
  support code. As a consequence, all parameters must now be defined
  in the namespace Opm::Properties instead of Ewoms::Properties

Notable Differences Between eWoms 2.2 and eWoms 2.3
===================================================

- The namespace for all eWoms classes has been changed from "Dumux" to
  "Ewoms". This makes it easy to provide distribution packages for
  both, Dumux and eWoms that do not clash. Also, it allows to use
  Dumux and eWoms classes within the same piece of code. Finally, this
  helps to avoid mental confusion when it comes to relation between
  Dumux and eWoms. To adapt your code to the change, you may follow
  the procedure below:

  - MAKE A BACKUP OF YOUR PROJECT. Although the following steps should
    usually work without manual intervention, there might still be
    unforseen problems!
  - Go to the root directory of your project:

     cd $YOUR_PROJECT_ROOT

  - Rename the 'dumux' directory (if existent) to 'ewoms'. If you use
    git for revision control of your project, this should be done
    using

     git mv dumux ewoms

  - Run the following to adapt the contents of the files of your
    project:

     # adapt c++ sources
     find -name "*.hh" -o -name "*.cc" | \
       xargs sed -i "
         s/Dumux::/Ewoms::/g;
         s/namespace Dumux/namespace Ewoms/;
         s/\(include.*\)dumux\(.*\)/\1ewoms\2/;
         s/DUMUX/EWOMS/"
     # adapt the build system
     find -name "Makefile.am" -o -name "configure.ac" | \
       xargs sed -i "s/dumux/ewoms/g"

  - Run dunecontrol for your project and re-compile.
- The property system has received a major overhaul. The benefits of
  this are the possibility to specify type tags with an arbitrary
  number of parents and splices, a mechanism for deferred inheritance.
  The Splices of a type tag can be thought of as ordinary parent
  nodes, but these can be overwritten at a later point. This allows to
  specify things which require specific properties -- like the linear
  solver, spatial and time discretization, etc -- to be specified much
  more easily. So far, splices are only used for the linear solvers,
  but they also will be used to select the spatial and the temporal
  discretization in a modular way. Despite all this, code which only
  uses features officially supported by eWoms 2.2 is expected to work
  without any modifcation.
- The autotools based build system is now non-recursive. This makes
  parallel builds (i.e. running 'make -j$NUM_CORES check' in the
  toplevel directory of the eWoms source code) more efficent. The
  implication is that new tests need to be added to the toplevel
  Makefile.am instead of to the Makefile.am of the directory where the
  test resides.
- The implicit models have been reorganized:
  - Discretizations now reside in the ewoms/disc directory
  - The vertex-centered finite volume discretization has been renamed
    from "box" to "vcfv" to make its name more descriptive and more
    consistent with further discretizations. The names of all
    properties, classes and files which where prefixed by 'Box' are
    now prefixed by 'Vcfv'.
- The decoupled models have been parallelized. No dynamic
  load balancing can be done yet.
- The concept of Newton controllers has been abandoned. The
  functionality previously implemented has been absorbed by the
  NewtonMethod classes which now use static polymorphism. The reason
  for this change is that this makes the Newton solver use the same
  design as used by most of the other parts of eWoms, and that the
  original reason to split the policy from the algorithmic part of the
  Newton method turned out not to be used in practice. (The reason was
  to be able to implement different policies with zero overhead, but
  all implemented Newton controllers were just derived from the default
  NewtonController.) Also, the following properties have been renamed
  during the exercise:
   - NewtonRelTolerance -> NewtonRelativeTolerance
   - NewtonAbsTolerance -> NewtonAbsoluteTolerance
   - NewtonMaxSteps -> NewtonMaxIterations
   - NewtonTargetSteps -> NewtonTargetIterations
   - NewtonMaxRelError -> NewtonMaxRelativeError
   - NewtonSatisfyAbsAndRel -> NewtonSatisfyAbsoluteAndRelative
- A fully-implicit discrete 2D fracture model for two-phase problems has
  been added.
- The header file containing the eWoms parameter system has been
  renamed from "parameters.hh" to "parametersystem.hh" to make it
  consistent with the naming scheme of the property system.
- Control files for creating Debian/Ubuntu packages have been added to
  the git repositories. To build these packages, run 'debuild -us -uc'
  in the top-level directory of the source tree. (This only works for
  Debian or Ubuntu based distributions.)
- A specfile to build packages for redhat distributions (RHEL and
  Fedora) has also been added to the repositories. To build an RPM
  package, run 'rpmbuild -bi redhat/ewoms.spec' in the directory which
  contains the source tree checked out using git. For this, a tarball
  with the sources needs to be located in rpmbuild's SOURCE
  directory. (Note that the release tarballs do neither contain the
  RPM specfiles nor the control files for Debian.)


Notable Differences Between DuMuX 2.1 and eWoms 2.2
===================================================

- The minumim required version of the Dune core modules is now
  2.2. This means that eWoms will no longer compile with Dune 2.1.
- eWoms now compiles with the LLVM-CLang compiler. The minimum version
  required is CLang 3.1.
- Support for compilers that don't support the 'auto' keyword and
  initializer lists has been dropped. As a consequence eWoms will not
  compile with GCC prior to version 4.4.
- The abstractions between problems, flow models, discretization
  schemes and solvers have been overhauled for the fully-implicit models:
  - Problems only specify a given set-up. This means that problems
    usually do not manipulate primary variables or fluxes directly.
  - All "spatial parameters" classes have been merged with their
    respecitve problems. This was done because most methods of the
    problems already specified spatially dependent parameters.
- The API of the problems is not specific to any flow model or spatial
  or temporal discretization anymore. This is achived by passing
  so-called "context objects" and a space and time index to all of the
  problem's methods which are potentially dependent on space or
  time. All context objects provide a generic set of methods
  (e.g. pos() and globalSpaceIdx()), and some discreization specific
  ones. The problems and the physical models are not supposed to know
  what a given space and a time index means.
- The boundary conditions for fully-implicit models are now weakly
  imposed. For this reason, the problem's methods boundaryTypes(),
  dirichlet(), and neumann() are superseded by the method
  boundary(). This method gets an object of the new BoundaryRateVector
  class, which can be used to specify fluxes for a given boundary
  segment. It also provides methods to specify in-flow, out-flow and
  free-flow boundary conditions called setInFlow(), setOutFlow() and
  setFreeFlow() given a fluid state for the boundary segment.
- As a consequence of the previous item, Dirichlet boundary conditions
  are now not implemented as constraint degrees of freedom anymore. If
  the problem requires constraints, the "EnableConstraints" property
  needs to be set to "true" and the problem needs to overload the
  constraints() method. In contrast to the previous implementation,
  eWoms now also supports constraint degrees of freedom in the
  interior of the domain. ("Dirichlet" conditions previously where
  only possible at finite volumes adjacent to the grid boundary.)
- The parameter system has received a major overhaul: “Runtime”
  parameters have been abandoned, as have parameter groups. Runtime
  parameters have bitten the dust because of their flawed semantics
  (all parameters are always specified on run-time), groups where
  removed because they caused confusion when specifying parameters
  from the command line (e.g. the correct way to specify the relative
  tolerance of the Newton solver was ‘—newton.rel-tolerance’ instead
  of ‘—newton-rel-tolerance’). Also, all parameters must now be
  registered using the REGISTER_PARAM macro before they are
  accessed. This allows to print a canonical list with all parameters
  and their description when the program is run with “—help” and also
  allows to print a comprehensive list with the values of all
  parameters at the beginning of a simulation.
- The fully-implicit compositional models 1p2c, 2p2c(ni) and 3p3c(ni)
  are superseeded by the 'pvs' model, a generic model based on primary
  variable switching. The model supports an arbitrary number of fluid
  phases and chemical components, but it still requires that all fluid
  phases are ideal mixtures.
- The fully-implicit multi-phase models which assume immiscibility --
  i.e. 1p and 2p are superseeded by 'immiscible' model which supports
  an arbitrary number of fluid phases.
- A fully-implicit black-oil model and the corresponding fluid system
  has been added. The black-oil model is a three-phase three-component
  paritially miscible model that is widely used in petrolium
  engineering. The black-oil fluid system also allows to use
  full-fledged compositional models (Mp-Nc, 3p3c) to be used with
  black-oil parameters.
- The fully-implicit non-isothermal models (2pni, 2p2cni, 3p3cni,
  stokes2cni) have been replaced by a generic implementation of the
  energy equation. As a consequence, you have to derive your problem's
  type tag from the one of the isothermal model (i.e. BoxNcp, BoxPvs,
  BoxImmisicible or BoxStokes) and set the property ‘EnableEnergy’ to
  true. The latter can be done by adding the following line to the
  problem file:

    SET_BOOL_PROP(YourProblemTypeTag, EnableEnergy, true);

- Many bugs have been shaken out of the code for MPI parallelization
  code. As a result, the fully-implicit models should work much better
  for parallel computations. As a consequence, the parallelization is
  no longer considered experimental.
- Support for using pluggable convergence criteria has been added to
  the linear solvers. The eWoms default criterion now consideres the
  reduction of the weighted maximum defect of the linear system of
  equations instead of the reduction of the two norm of the
  defect. This leads to major performance and stability improvements
  in many cases.
- A back-end for the parallel algebraic multi-grid linear solver
  provided by DUNE-ISTL has been added for the fully implicit finite
  volume models. It is still considered to be slightly experimental
  and it can be used by specifying the property

    SET_TYPE_PROP(ProblemTypeTag, LinearSolver, Dumux::BoxParallelAmgSolver<TypeTag>);

  in the problem file.
- All fully-implicit models now use the generic M-phase material laws
  which (in principle) allow to implement capillary pressure and
  relative permeability relations depending on absolute pressure,
  temperature and phase composition. Also, these material laws do not
  require the flow model to make assumptions on the wettability of
  fluids.
- Heat conduction laws have been introduced. They work analogous to
  the capillary pressure/relative permeability laws.
- The primary variables are not "dumb" vectors anymore, but can also
  store "pseudo primary variables" like the phase state.
- 'Rate vectors' have been introduced. They allow to specify fluxes
  and source terms independent of the underlying flow model and also
  support specifying volumetric rates.
- Writing VTK output files has been centralized. This allows to
  simplify the flow models, and allows much finer granularity over
  what quantities get written to disk. Writing a quantity can be
  enabled by passing e.g. the "--vtk-write-temperature=1" parameter to
  the executable.
- Flow models now specify names for the conservation equations and
  primary variables which they use. This significantly improves the
  comprehensibility of the VTK output when the convergence behaviour of
  the Newton method is written to disk.
- Most physical models now only support a single formulation
  (i.e. choice of primary variables and conservation equations). This
  makes them more readable and improves test coverage. This change was
  motivated by the fact that, since problems can easily be specified
  independent of the flow model, supporting multiple formulations does
  not really make sense anymore.
- A h-adaptive semi-implicit model using an MPFA L-method was
  added. It simulates two-phase and two-phase, two-component flow on
  unstructured grids in two dimensions.  See test/decoupled/2p(2c) for
  an example.

Notable Differences Between DuMuX 2.0 and DuMuX 2.1
===================================================

- The thermodynamics framework has been overhauled:
  - The programming interfaces for fluid systems, fluid states and
    components has been formalized and cleaned up.
  - Fluid systems now have the option to cache computationally
    expensive parameters if they are needed for several relations.
  - Fluid systems are not charged with the computation of the
    chemical equilibrium anymore.
  - Fluid states are now centralized infrastructure instead of being
    model-specific.
  - Constraint solvers (which simplify solving thermodynamic
    constraints) have been introduced.
- Outflow boundary conditions have been implemented for the
  fully-implicit models 1p2c, 2p2c(ni) and stokes(2cni).
- The problem and spatial parameter base classes also provide optional
  model-independent interfaces. These methods only get the position in
  global coordinates as argument and are named *AtPos()
  (e.g. boundaryTypesAtPos()). This allows an easy transfer of problem
  definitions between implicit and sequential models.
- The following fully-implicit models have been added:
  - 3p3c, 3p3cni: Isothermal and non-isothermal three-phase,
    three-component models for flow and transport in porous media
    based on primary variable switching.
  - MpNc: A model for arbitrary number of phases M > 0, and components
    (N >= M - 1 >= 1) for flow and transport in porous media. This
    model also comes with an energy and a molecular diffusion module.
  - stokes, stokes2c, stokes2cni: Models for the plain Stokes
    equation as well as isothermal and non-isothermal Stokes models
    for two-component fluids.
- The sequentially-coupled models have been overhauled:
  - A common structure for cell centered standard finite volume
    implementations has been introduced.
  - The data structures where overhauled to avoid large clumps of data
    in large-scale simulations: Each cell stores data in its own
    storage object.
  - The too large assemble() methods have been split into submethods
    getStorage(), getFlux() etc. By this, inheritance of classes has
    been improved and code duplication was reduced.
  - The conceptual seperation of the "VariableClass" (central
    infrastructure), data storage, transport model and pressure model
    has been improved.
  - More of infrastructure is now shared with the implicit models
    (e.g. the BoundaryTypes). This results in significant performance
    improvements and makes debugging easier.
- The 2padaptive sequentially coupled model has been added. This model
  implements a grid-adaptive finite volume scheme for immiscible
  two-phase flow in porous media on non-conforming quadrilateral
  grids.
- The dependencies for the external dune-pdelab and boost packages
  have been removed.
- The build system has received major improvements:
  - There is now much better test coverage of build-time dependencies
    on packages for the default autotools-based build system.
  - Experimental support for building DuMuX using CMake has been much
    improved. In the long run, CMake is projected to become the
    default build system.
- All headers can now be included without any preconditions.
- DuMuX now compiles without warnings if the -pedantic flag used for GCC.
- Specifying run-time parameters is now possible. The mechanism allows
  to use parameter files or to specify parameters directly on the
  command line and fallback parameter input files have been added for
  each test application.  As a consequence, applications can be run
  now without specifying any command line arguments.
- The DuMuX property system has been fine-tuned:
  - Encapsulating property names with the PTAG() is no longer required
    for the GET_PROP* macros (but is still allowed).
  - Setting property defaults has been deprecated.
  - All properties defined for a type tag can now be printed. Also,
    their value and the location in the source where they where
    specified is included in the output.
- Using quadruple precision math has been made possible for GCC 4.6 or newer:
  - To use it, the configure option '--enable-quad' needs to be added
    and the type of scalar values needs to be changed to 'quad'. This
    can be done in the problem file using

        SET_TYPE_PROP(YourProblemTypeTag, Scalar, quad);

    It should be noted, that performance is very poor when using
    quadruple precision arithmetic. This feature is primarily meant as
    a debugging tool to quickly check whether there are machine
    precision related convergence problems.