Skip to content
Snippets Groups Projects
CHANGELOG 12.2 KiB
Newer Older
Differences Between DuMuX 2.1 and DuMuX 2.2
===================================================

  - Two new fully implicit models dedicated to simulate compositional
    (non-isothermal) CO2-brine systems have been added, together with 
    corresponding components and a fluid system. See test/boxmodels/co2(ni) 
    for details. These tests also illustrate the usage of element and vertex 
    parameters as well as boundary ids provided by DGF files for setting 
    permeability and porosity as well as boundary conditions.

  - Decoupled Models: An h-adaptive model using an MPFA L-method was added
    that simulates 2p and 2p2c flow on irregular grids in two dimensions. 
    See test/decoupled/2p(2c) for details.

  - The Stokes models are capable of simulating the full Navier-Stokes 
    equations for momentum transport. See test/freeflow/navierstokes 
    for details.
* IMMEDIATE INTERFACE CHANGES not allowing a deprecation period: 
  - Implicit models: TwoPIndices, TwoPNIIndices, and RichardsIndices additionally 
    get TypeTag as template parameter. If the Indices are not obtained via the 
    property, this has to be adapted.

  - Implicit models: All model-specific computeFlux functions in 
    ...localresidual.hh have to get an additional bool parameter onBoundary, 
    which is by default set to false. If outflow conditions should 
    be properly implemented, also the constructor of the flux variables in 
    ...fluxvariables.hh has to get the additional argument and the 
    class has to be adapted to deal with boundary faces. See FS#117 and #99
    for details.
* Deprecated CLASSES/FILES, to be removed after 2.2:
  - Model specific base box problems: The common functionality has been collected 
    in PorousMediaBoxProblem in dumux/boxmodels/common/porousmediaboxproblem.hh. 
    The problem can be derived from PorousMediaBoxProblem, instead of the model 
    specific base problem: 
    OnePBoxProblem, dumux/boxmodels/1p/1pproblem.hh,
    OnePTwoCBoxProblem, dumux/boxmodels/1p2c/1p2cproblem.hh,
    TwoPProblem, dumux/boxmodels/2p/2pproblem.hh,
    TwoPNIProblem, dumux/boxmodels/2pni/2pniproblem.hh,
    TwoPTwoCProblem, dumux/boxmodels/2p2c/2p2cproblem.hh,
    TwoPTwoCNIProblem, dumux/boxmodels/2p2cni/2p2cniproblem.hh,
    ThreePThreeCProblem, dumux/boxmodels/3p3c/3p3cproblem.hh,
    ThreePThreeCNIProblem, dumux/boxmodels/3p3cni/3p3cniproblem.hh,
    MPNCProblem, dumux/boxmodels/mpnc/mpncproblem.hh.
    
  - All "...SpatialParameters" base classes have been replaced by 
    "...SpatialParams" classes:
    BoxSpatialParameters, dumux/material/spatialparameters/boxspatialparameters.hh,
    BoxSpatialParametersOneP, dumux/material/spatialparameters/boxspatialparameters1p.hh,
    FVSpatialParameters, dumux/material/spatialparameters/fvspatialparameters.hh,
    FVSpatialParametersOneP, dumux/material/spatialparameters/fvspatialparameters1p.hh.

  - Due to the unification of flux variables for the fully implicit models, 
    some model-specific flux variables have become obsolete: 
    OnePFluxVariables, dumux/boxmodels/1p/1pfluxvariables.hh,
    TwoPFluxVariables, dumux/boxmodels/2p/2pfluxvariables.hh,
    RichardsFluxVariables, dumux/boxmodels/richards/richardsfluxvariables.hh.

  - Two components have new names and locations in dumux/material/components: 
    SimpleDNAPL, simplednapl.hh -> DNAPL, napl.hh
    Oil, oil.hh -> LNAPL, lnapl.hh

  - Some MPFA-O method files/classes have been moved to a new subdirectory "omethod"
    in dumux/decoupled/2p/diffusion/fvmpfa: 
    fvmpfaopressure2p.hh, fvmpfaovelocity2p.hh, fvmpfaopressureproperties2p.hh

  - DUMUX_UNUSED is deprecated and will be removed after 2.2. It should be replaced 
    by the upstream version DUNE_UNUSED.
  
  - DUMUX_DEPRECATED_MSG is deprecated and will be removed after 2.2. It should be 
    replaced by the upstream version DUNE_DEPRECATED_MSG.

* Deprecated PROPERTY NAMES, to be removed after 2.2: BEWARE: The compiler will not 
  print any warning if a deprecated property name is used. 
  - The "SpatialParameters" property has been renamed to "SpatialParams".
  
  - The model specific "...Indices" property has been renamed to "Indices".

* Deprecated CONSTANTS/ENUMS, to be removed after 2.2: BEWARE: The compiler will not 
  print any warning if a deprecated constant/enum is used.
  - In the 2p2c/ni and 3p3c/ni models, all indices related to phase and components 
    can be pre/suffixed with "w", "n" and, for three phases, with "g". 
    dumux/boxmodels/2p2c/...: All "l", "g" pre/suffixes have been replaced by "w", "n".
    dumux/boxmodels/3p3c/...: All "c", "a" pre/suffixes have been replaced by "n", "g".

* Deprecated MEMBER FUNCTIONS, to be removed after 2.2:
  - Spatial parameters: The spatialParameters member functions of the base problems
    have been replaced by spatialParams: 
    dumux/boxmodels/common/porousmediaboxproblem.hh, 
    dumux/decoupled/1p/diffusion/diffusionproblem...hh,
    dumux/decoupled/2p/impes/impesproblem2p.hh,
    dumux/decoupled/2p/transport/transportproblem2p.hh.
  
  - Flux variables: Renaming of members 
    "...AtIP" -> "...", 
    "concentration..." -> "massFraction...",
    "molarConc..." -> "moleFraction..."
    The "massFraction..." members have been deprecated, instead 
    "moleFraction..." should be used.
    Affected files:
    dumux/boxmodels/1p2c/1p2cfluxvariables.hh, 
    dumux/boxmodels/2p2c/2p2cfluxvariables.hh,
    dumux/boxmodels/mpnc/.../...fluxvariables.hh,
    dumux/freeflow/stokes.../stokes...fluxvariables.hh.

  - Box models: The primaryVarWeight() functions are no longer used for the 
    evaluation of the relative error. 

  - Element and FVElementGeometry: The elem_() and fvElemGeom_() member function 
    of BoxLocalResidual have been replaced by element_() and fvGeometry_(). 
    
  - Primary variables: All "...primaryVar/s" member functions have been replaced by 
    "...priVar/s": 
    dumux/boxmodels/common/boxlocalresidual.hh, 
    dumux/boxmodels/common/boxvolumevariables.hh.

  - Start functionality in dumux/common/start.hh: printUsageDGF and 
    printUsageGrid are no longer needed.
  
* DELETED member functions, which have been deprecated in DuMuX 2.1: 
  - dumux/material/spatialparameters/boxspatialparameters1p.hh:
    extrusionFactorScv and extrusionFactorScvf, now part of the volume variables

  - dumux/material/idealgas.hh:
    concentration, replaced by molarDensity

  - dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh:
    pC(const Params &params, Scalar Sw, const Scalar temperature)

  - dumux/common/start.hh:
    startFromDGF, startWithGrid, startWithParameters, all replaced by start

  - dumux/common/spline.hh:
    set(const ScalarArray&, const ScalarArray&, Scalar, Scalar), replaced by setXYArrays,
    set(const PointArray&, Scalar, Scalar), replaced by setArrayOfPoints

  - dumux/common/variablelengthspline_.hh, dumux/common/fixedlengthspline_.hh:
    various set routines, replaced by more descriptive names

  - dumux/io/vtkmultiwriter.hh:
    VtkMultiWriter(const std::string&, std::string), replaced by VtkMultiWriter(const GridView&, ...),
    beginTimeStep, replaced by beginWrite,
    createField, replaced by allocateManagedBuffer,
    addVertexData, replaced by attachVertexData,
    addCellData, replaced by attachCellData,
    endTimeStep, replaced by endWrite

  - dumux/decoupled/2p2c/2p2cproblem.hh:
    IMPETProblem2P2C(const GridView&, bool) replaced by IMPETProblem2P2C(TimeManager&, ...),
    IMPETProblem2P2C(..., SpatialParameters&, ...) replaced by IMPETProblem2P2C(TimeManager&, ...),
    initSat(const GlobalPosition&, const Element&) replaced by initSat(const Element&)
    initConcentration(const GlobalPosition&, const Element&) replaced by initConcentration(const Element&)
    
  - DUMUX_DEPRECATED has been removed.
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.
Klaus Mosthaf's avatar
Klaus Mosthaf committed
  - 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.