Differences Between DuMuX 2.3 and DuMuX 2.4 =================================================== * IMPROVEMENTS and ENHANCEMENTS: - Three geomechanics models have been added, thanks to the previous PhD work of Melanie Darcis. The models are located in dumux/geomechanics, a test for each model is provided in test/geomechanics: . elastic: linear elasticity equations that account only for the solid mechanics. . el1p2c: poroelasticity equations for one solid and one fluid phase, where the fluid phase is admitted to consist of two components. . el2p: poroelasticity equations for one solid phase and two immiscible fluid phases. - The handling of Dirichlet boundary conditions for the fully-implicit cell- centered models has been improved. Now, the conditions are evaluated at the centers of the corresponding boundary faces. In general, they are incorporated into the local residual in a weak sense. Only for mixed Dirichlet/Neumann conditions and for the MPNC model, they still are incorporated in a strong sense. - All fully-implicit porous-media models now provide the possibility to write the velocities to the VTK output. This can be achieved by setting the parameter "AddVelocity" of the group "Vtk" or the corresponding property "VtkAddVelocity." See test/implicit/1p2c for an example. - Our naming rules have been refined and enforced for member functions and variables. Many inconsistencies could be removed, especially the special status of the capitalized "S" indicating saturation. See the deprecation listings below or FS#180 for details. - Misleading names in the fully-implicit models that still contained "b/Box" have been replaced by more generic ones. See the deprecation listings below or FS#194 for details. - The ...FVElementGeometry classes have been cleaned up a bit. See the deprecation listings below or FS#192 for details. * IMMEDIATE INTERFACE CHANGES not allowing/requiring a deprecation period: * Deprecated CLASSES/FILES, to be removed after 2.4: - OnePBoxModel, OnePTwoCBoxModel -> OnePModel, OnePTwoCModel * Deprecated PROPERTY NAMES, to be removed after 2.4: BEWARE: The compiler will not print any warning if a deprecated property name is used. * Deprecated CONSTANTS/ENUMS, to be removed after 2.4: BEWARE: Older compilers will not print any warning if a deprecated constant/enum is used. - saturation indices: S0Idx, SnIdx, SnOrXIdx, SOrX1Idx, SOrX2Idx, SwIdx, SwOrXIdx -> s0Idx, snIdx, snOrXIdx, sOrX1Idx, sOrX2Idx, swIdx, swOrXIdx - two-phase formulations: pnSn, pnSw, pwSn, pwSw -> pnsn, pnsw, pwsn, pwsw - DecoupledTwoPCommonIndices: pressureNW, saturationNW, velocityNW -> pressureNw, saturationNw, velocityNw - DecoupledTwoPIndices: pressEqIdx -> pressureEqIdx - MPNCIndices: NumPrimaryEnergyVars, NumPrimaryVars -> numPrimaryEnergyVars, numPrimaryVars * Deprecated public MEMBER VARIABLES, to be removed after 2.4: BEWARE: Older compilers will not print any warning if a deprecated public member variable is used. - ...FVElementGeometry: numEdges, numFaces, numFap, numVertices -> numScvf, -, numFap of each subcontrolvolume face, numScv - BoxFVElementGeometry: edgeCoord, faceCoord * Deprecated MACROS, to be removed after 2.4: BEWARE: The compiler will not print any warning if a deprecated macro is used. - DUMUX_ALWAYS_INLINE whether the according attribute is supported * Deprecated MEMBER FUNCTIONS, to be removed after 2.4: - all problems: bboxMin/Max() -> bBoxMin/Max() - ImplicitProblem: boxSDNeumann(), boxSDSource() -> solDependentNeumann(), solDependentSource() - ImplicitPorousMediaProblem: boxGravity(), boxTemperature() -> gravityAtPos(), temperatureAtPos() (different signatures!) - fluid-matrix-interactions: dkrn_dSw(), dkrw_dSw(), dpc_dSw(), pC(), dSw_dpC(), Sgr(), Snr(), SnToSne(), Sw(), Swr(), SwToSwe() -> dkrn_dsw(), dkrw_dsw(), dpc_dsw(), pc(), dsw_dpc(), sgr(), snr(), snToSne(), sw(), swr(), swToSwe() - LinearMaterial(Params): entryPC(), maxPC(), setEntryPC(), setMaxPC() -> entryPc(), maxPc(), setEntryPc(), setMaxPc() - RegularizedVanGenuchten(Params): pCHighSw(), pCLowSw() -> pcHighSw(), pcLowSw() - VanGenuchtenParams, ParkerVanGen3PParams: setVgM(), setVgN(), vgM(), vgN() -> setVgm(), setVgn(), vgm(), vgn() - ParkerVanGen3P(Params): betaGN(), betaGW(), betaNW(), pCAlpha(), pCGN(), pCGW(), pCNW(), setBeta..., setkrRegardsSnr(), Swrx() -> betaGn(), betaGw(), betaNw(), pcAlpha(), pcgn(), pcgw(), pcnw(), setBeta..., setKrRegardsSnr(), swrx() - MPLinearMaterialParams: Sreg() -> sReg() - EvalCflFlux...: getCFLFluxFunction() -> getCflFluxFunction - FVMPFAOInteractionVolume: getNTKNu_by_dF(), getNTKNu(), getNTKrKNu_by_dF(), getNTKrKNu() -> getNtkNu_df(), getNtkNu(), getNtkrkNu_df(), getNtkrkNu() - TwoPDFMVolumeVariables: dSM_dSF() -> dsm_dsf() - Stokes...Variables: viscosity() -> dynamicViscosity() - IAPWS water: ddgamma_ddpi, ddgamma_ddtau, ddgamma_dtaudpi, dgamma_dpi, dgamma_dtau, dp_dpi, dpi_dp, dtau_dt -> ddGamma_ddPi, ddGamma_ddTau, ddGamma_dTaudPi, dGamma_dPi, dGamma_dTau, dp_dPi, dPi_dp, dTau_dt * DELETED classes/files, property names, constants/enums, member functions/variables, which have been deprecated in DuMuX 2.3: Everything listed as deprecated below has been removed. Differences Between DuMuX 2.2 and DuMuX 2.3 =================================================== * IMPROVEMENTS and ENHANCEMENTS: - A fully implicit two-phase discrete-fracture-matrix model has been added, see test/implicit/2pdfm. - Almost all porous media fully implicit models now can either use a vertex-centered (box) or a cell-centered spatial discretization. The choice of the spatial discretization method is controlled by deriving the problem type tag either from BoxModel or CCModel. This allows for a uniform problem description, as long as the boundaryTypesAtPos and dirichletAtPos methods can be used. By evaluating the compile-time property ImplicitIsBox, it is easily possible to separately handle the different discretizations inside am common method. See the tests in test/implicit for examples. Correspondingly, the directory structure has been adapted. Old: New: dumux/ dumux/ boxmodels/ implicit/ common/ common/ 1p/ box/ 1p2c/ cellcentered/ 2p/ 1p/ ... ... test/ test/ boxmodels/ implicit/ 1p/ 1p/ test_1p test_box1p ... test_cc1p ... - A backend for the ISTL AMG solver has been included, based on the corresponding DUNE-PDELab backends. It can be used for the fully implicit and the decoupled models, see test_*1pwithamg in test/implicit/1p and test_impeswithamg in test/decoupled/2p. DUNE-PDELab and possibly DUNE-ISTL have to be patched, see the file README in the patches directory. - The decoupled models have been parallelized, see test_impeswithamg in test/decoupled/2p. They work in parallel only if the AMGBackend is used as linear solver. No dynamic loadbalancing can be done yet. - The MPNC model can use either the most wetting or the most non-wetting phase pressure as primary variable. This is controlled via the property "PressureFormulation." - The table of available parameters has been improved, see http://www.dumux.org/doxygen-stable/html-2.2/a00838.php - Improved handling of the conductive heat fluxes in the non-isothermal implicit two-phase models, see the problem files in test/implicit/2p(2c)ni. - Introduced new selection of start/stop messages. * IMMEDIATE INTERFACE CHANGES not allowing/requiring a deprecation period: - The property Salinity used in the BrineCO2FluidSystem has been renamed to ProblemSalinity. - The matrixHeatFlux(...) and boundaryMatrixHeatFlux(...) methods in the spatial parameters of nonisothermal implicit twophase models have been removed. Instead, the computation of the effective thermal conductivity has been sourced out to the fluidmatrixinteractions in a separate file dumux/material/fluidmatrixinteractions/thermalconductivitysomerton.hh, which can be exchanged. The spatial parameters file needs a method thermalConductivitySolid(...), where the thermal conductivity of the solid material only is specified. The rest is computed in the respective flux variables. * Deprecated CLASSES/FILES, to be removed after 2.3: - The following headers in dumux/boxmodels/ have been deprecated and forward to the corresponding headers in dumux/implicit/box: boxassembler.hh, boxelementvolumevariables.hh, boxlocalresidual.hh, boxpropertydefaults.hh, boxelementboundarytypes.hh, boxfvelementgeometry.hh, boxproperties.hh, intersectiontovertexbc.hh - All headers in the following subdirectories of dumux/boxmodels have been deprecated and forward to the headers in the corresponding subdirectories of dumux/implicit: 1p, 1p2c, 2p, 2p2c, 2p2cni, 2pdfm, 2pni, 3p3c, 3p3cni, co2, co2ni, mpnc, richards - Some box-specific classes "Box..." in dumux/boxmodels/common could be completely replaced by unified "Implicit..." classes in dumux/implicit/common: ...DarcyFluxVariables, ...darcyfluxvariables.hh ...ForchheimerFluxVariables, ...forchheimerfluxvariables.hh ...LocalJacobian, ...localjacobian.hh ...Model, ...model.hh ...PorousMediaProblem, ...porousmediaproblem.hh ...Problem, ...problem.hh ...VolumeVariables, ...volumevariables.hh - The box-specific spatial parameter classes BoxSpatialParams... in dumux/material/boxspatialparams....hh have been deprecated in favor of ImplicitSpatialParams... in dumux/material/implicitspatialparams....hh. - The GridCreatorheaders from dumux/common have been moved to dumux/io: cubegridcreator.hh, dgfgridcreator.hh, simplexgridcreator.hh * Deprecated PROPERTY NAMES, to be removed after 2.3: BEWARE: The compiler will not print any warning if a deprecated property name is used. - CompositionFromFugacitiesSolver has been renamed to Constraintsolver. * Deprecated public MEMBER VARIABLES, to be removed after 2.3: BEWARE: The compiler will not print any warning if a deprecated public member variable is used. - numFAP and numSCV in Box(CC)FVElementGeometry have been renamed to numFap and numScv, respectively. * Deprecated MEMBER FUNCTIONS, to be removed after 2.3: - boundaryMatrixHeatFlux, markVertexRed and relativeErrorVertex from ImplicitSpatialParams, ImplicitAssembler and ImplicitModel, respectively. In favor of using thermalConductivitySolid (see above), markDofRed and relativeErrorDof, respectively. * DELETED classes/files, property names, constants/enums, member functions, which have been deprecated in DuMuX 2.2: Everything listed as deprecated below has been removed. Differences Between DuMuX 2.1 and DuMuX 2.2 =================================================== * IMPROVEMENTS and ENHANCEMENTS: - 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 unstructured grids with hanging nodes in two dimensions. See test/decoupled/2p(2c) for details. - All fully implicit porous media models are now capable of employing the Forchheimer equation as an alternative to the commonly used Darcy law. See test_forchheimer*p in test/boxmodels/mpnc for details. - The Stokes models are now able to simulate the full Navier-Stokes equations for momentum transport. See test/freeflow/navierstokes for details. - The fully implicit models have been (partially) generalized to allow for a cell-centered discretization in addition to the default vertex-centered (box) one. Cell-centered fully implicit 2p and 2p2c models are already available in the developers part of Dumux. Further generalizations and the inclusion in the stable part are planned for Dumux 2.3. - Several model-specific features and classes have been unified, like the calculation of the Darcy velocity for the fully implicit flux variables, or the temperature, gravity, and spatial parameter functionalities of the fully implicit problems. Moreover, many names have been made more consistent. This includes the naming and grouping of several parameters and corresponding properties, the indexing of phases and components, and the preference of the partial name "params" over "parameters." For details, see also the deprecations listed below. - Added compiler support for GCC 4.7 and Clang 3.1. * IMMEDIATE INTERFACE CHANGES not allowing a deprecation period: - From Dune 2.2 on, FieldVector::size is a method rather than an enum value. It is mandatory to add the flag --enable-fieldvector-size-is-method to the CONFIGURE_FLAGS. An example is given in the opts file dumux/debug.opts. - 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". boxmodels/2p2c/...: "l", "g" pre/suffixes have been replaced by "w", "n". boxmodels/3p3c/...: "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 ¶ms, 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. - 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.