diff --git a/test/implicit/2p/Makefile.am b/test/implicit/2p/Makefile.am index 7d69c94379297fad9577756be89fdee2dde026cc..890f94bff76fcfb03658b6cf730111768c650b9d 100644 --- a/test/implicit/2p/Makefile.am +++ b/test/implicit/2p/Makefile.am @@ -1,8 +1,9 @@ -check_PROGRAMS = test_2p +check_PROGRAMS = test_2p test_cc2p noinst_HEADERS = *.hh EXTRA_DIST=*reference.vtu *.input grids/*.dgf CMakeLists.txt test_2p_SOURCES = test_2p.cc +test_cc2p_SOURCES = test_cc2p.cc include $(top_srcdir)/am/global-rules diff --git a/test/implicit/2p/lensccproblem.hh b/test/implicit/2p/lensccproblem.hh new file mode 100644 index 0000000000000000000000000000000000000000..f8dff793dd051b12be157ecadc5dd4f7452b804f --- /dev/null +++ b/test/implicit/2p/lensccproblem.hh @@ -0,0 +1,392 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * Copyright (C) 2007-2008 by Klaus Mosthaf * + * Copyright (C) 2007-2008 by Bernd Flemisch * + * Copyright (C) 2008-2009 by Andreas Lauser * + * Institute for Modelling Hydraulic and Environmental Systems * + * University of Stuttgart, Germany * + * email: <givenname>.<name>@iws.uni-stuttgart.de * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief Soil contamination problem where DNAPL infiltrates a fully + * water saturated medium. + */ + +#ifndef DUMUX_LENSPROBLEM_HH +#define DUMUX_LENSPROBLEM_HH + +#if HAVE_UG +#include <dune/grid/uggrid.hh> +#endif + +#include <dune/grid/yaspgrid.hh> +#include <dune/grid/sgrid.hh> + +#include <dumux/implicit/cellcentered/ccpropertydefaults.hh> +#include <dumux/implicit/cellcentered/porousmediaccproblem.hh> +#include <dumux/implicit/2p/2pmodel.hh> +#include <dumux/material/components/simpleh2o.hh> +#include <dumux/material/components/dnapl.hh> + +#include <dumux/material/fluidsystems/h2on2fluidsystem.hh> + +#include "lensccspatialparams.hh" + +namespace Dumux +{ + +template <class TypeTag> +class LensProblem; + +////////// +// Specify the properties for the lens problem +////////// +namespace Properties +{ +NEW_TYPE_TAG(LensProblem, INHERITS_FROM(CCTwoP, LensSpatialParams)); + +// Set the grid type +#if 0//HAVE_UG +SET_TYPE_PROP(LensProblem, Grid, Dune::UGGrid<2>); +#else +SET_TYPE_PROP(LensProblem, Grid, Dune::YaspGrid<2>); +#endif + +// Set the problem property +SET_TYPE_PROP(LensProblem, Problem, Dumux::LensProblem<TypeTag>); + +// TODO: remove this macro switch +#if 1 +// Set the wetting phase +SET_PROP(LensProblem, WettingPhase) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; +public: + typedef Dumux::LiquidPhase<Scalar, Dumux::SimpleH2O<Scalar> > type; +}; + +// Set the non-wetting phase +SET_PROP(LensProblem, NonwettingPhase) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; +public: + typedef Dumux::LiquidPhase<Scalar, Dumux::DNAPL<Scalar> > type; +}; +#else +// OR: set the fluid system +SET_TYPE_PROP(LensProblem, FluidSystem, H2ON2FluidSystem<TypeTag>); +#endif + +// Enable partial reassembly of the jacobian matrix? +SET_BOOL_PROP(LensProblem, ImplicitEnablePartialReassemble, true); + +// Enable reuse of jacobian matrices? +SET_BOOL_PROP(LensProblem, ImplicitEnableJacobianRecycling, true); + +// Write the solutions of individual newton iterations? +SET_BOOL_PROP(LensProblem, NewtonWriteConvergence, false); + +// Use forward differences instead of central differences +SET_INT_PROP(LensProblem, ImplicitNumericDifferenceMethod, +1); + +// Linear solver settings +SET_TYPE_PROP(LensProblem, LinearSolver, Dumux::BoxBiCGStabILU0Solver<TypeTag> ); +SET_INT_PROP(LensProblem, LinearSolverVerbosity, 0); +SET_INT_PROP(LensProblem, LinearSolverPreconditionerIterations, 1); +SET_SCALAR_PROP(LensProblem, LinearSolverPreconditionerRelaxation, 1.0); + +// Enable gravity +SET_BOOL_PROP(LensProblem, ProblemEnableGravity, true); +} + +/*! + * \ingroup TwoPCCModel + * \ingroup CCTestProblems + * \brief Soil contamination problem where DNAPL infiltrates a fully + * water saturated medium. + * + * The domain is sized 6m times 4m and features a rectangular lens + * with low permeablility which spans from (1 m , 2 m) to (4 m, 3 m) + * and is surrounded by a medium with higher permability. Note that + * this problem is discretized using only two dimensions, so from the + * point of view of the two-phase model, the depth of the domain + * implicitly is 1 m everywhere. + * + * On the top and the bottom of the domain neumann boundary conditions + * are used, while dirichlet conditions apply on the left and right + * boundaries. + * + * DNAPL is injected at the top boundary from 3m to 4m at a rate of + * 0.04 kg/(s m^2), the remaining neumann boundaries are no-flow + * boundaries. + * + * The dirichlet boundaries on the left boundary is the hydrostatic + * pressure scaled by a factor of 1.125, while on the right side it is + * just the hydrostatic pressure. The DNAPL saturation on both sides + * is zero. + * + * This problem uses the \ref TwoPCCModel. + * + * This problem should typically be simulated until \f$t_{\text{end}} + * \approx 20\,000\;s\f$ is reached. A good choice for the initial time step + * size is \f$t_{\text{inital}} = 250\;s\f$. + * + * To run the simulation execute the following line in shell: + * <tt>./test_2p -parameterFile test_2p.input</tt> + */ +template <class TypeTag > +class LensProblem : public PorousMediaCCProblem<TypeTag> +{ + typedef PorousMediaCCProblem<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; + + typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; + + typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; + typedef typename GET_PROP_TYPE(TypeTag, WettingPhase) WettingPhase; + typedef typename GET_PROP_TYPE(TypeTag, NonwettingPhase) NonwettingPhase; + + enum { + + // primary variable indices + pwIdx = Indices::pwIdx, + SnIdx = Indices::SnIdx, + + // equation indices + contiNEqIdx = Indices::contiNEqIdx, + + // phase indices + wPhaseIdx = Indices::wPhaseIdx, + nPhaseIdx = Indices::nPhaseIdx, + + + // Grid and world dimension + dim = GridView::dimension, + dimWorld = GridView::dimensionworld + }; + + + typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; + typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; + typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; + +public: + /*! + * \brief The constructor + * + * \param timeManager The time manager + * \param gridView The grid view + */ + LensProblem(TimeManager &timeManager, + const GridView &gridView) + : ParentType(timeManager, gridView) + { + eps_ = 3e-6; + temperature_ = 273.15 + 20; // -> 20°C + } + + /*! + * \name Problem parameters + */ + // \{ + + /*! + * \brief The problem name. + * + * This is used as a prefix for files generated by the simulation. + */ + const char *name() const + { return "lens"; } + + /*! + * \brief Called directly after the time integration. + */ + void postTimeStep() + { + // Calculate storage terms + PrimaryVariables storage; + this->model().globalStorage(storage); + + // Write mass balance information for rank 0 + if (this->gridView().comm().rank() == 0) { + std::cout<<"Storage: " << storage << std::endl; + } + } + + /*! + * \brief Returns the temperature within the domain. + * + * This problem assumes a uniform temperature of 10 degrees Celsius. + */ + Scalar temperature() const + { return temperature_; }; + + + void sourceAtPos(PrimaryVariables &values, + const GlobalPosition &globalPos) const + { + values = 0; + } + + // \} + + /*! + * \name Boundary conditions + */ + // \{ + + /*! + * \brief Specifies which kind of boundary condition should be + * used for which equation on a given boundary control volume. + * + * \param values The boundary types for the conservation equations + * \param globalPos The position of the center of the finite volume + */ + void boundaryTypesAtPos(BoundaryTypes &values, + const GlobalPosition &globalPos) const + { + if (onLeftBoundary_(globalPos) || onRightBoundary_(globalPos)) { + values.setAllDirichlet(); + } + else { + values.setAllNeumann(); + } + } + + /*! + * \brief Evaluate the boundary conditions for a dirichlet + * control volume. + * + * \param values The dirichlet values for the primary variables + * \param globalPos The center of the finite volume which ought to be set. + * + * For this method, the \a values parameter stores primary variables. + */ + void dirichletAtPos(PrimaryVariables &values, + const GlobalPosition &globalPos) const + { + typename GET_PROP_TYPE(TypeTag, FluidState) fluidState; + fluidState.setTemperature(temperature_); + fluidState.setPressure(FluidSystem::wPhaseIdx, /*pressure=*/1e5); + fluidState.setPressure(FluidSystem::nPhaseIdx, /*pressure=*/1e5); + + Scalar densityW = FluidSystem::density(fluidState, FluidSystem::wPhaseIdx); + + Scalar height = 4.0;//this->bboxMax()[1] - this->bboxMin()[1]; + Scalar depth = 4.0 - globalPos[1];//this->bboxMax()[1] - globalPos[1]; + Scalar alpha = 1 + 1.5/height; + Scalar factor = (6.0*alpha + (1.0 - alpha)*globalPos[0])/6.0; + + // hydrostatic pressure scaled by alpha + values[pwIdx] = 1e5 - factor*densityW*this->gravity()[1]*depth; + values[SnIdx] = 0.0; + } + + /*! + * \brief Evaluate the boundary conditions for a neumann + * boundary segment. + * + * \param values The neumann values for the conservation equations [kg / (m^2 *s )] + * \param globalPos The position of the integration point of the boundary segment. + * + * For this method, the \a values parameter stores the mass flux + * in normal direction of each phase. Negative values mean influx. + */ + void neumannAtPos(PrimaryVariables &values, + const GlobalPosition &globalPos) const + { + values = 0.0; + if (onInlet_(globalPos)) { + values[contiNEqIdx] = -0.04; // kg / (m * s) + } + } + // \} + + /*! + * \name Volume terms + */ + // \{ + + + /*! + * \brief Evaluate the initial value for a control volume. + * + * \param values The initial values for the primary variables + * \param globalPos The center of the finite volume which ought to be set. + * + * For this method, the \a values parameter stores primary + * variables. + */ + void initialAtPos(PrimaryVariables &values, + const GlobalPosition &globalPos) const + { + Scalar depth = 4.0/*this->bboxMax()[1]*/ - globalPos[1]; + + typename GET_PROP_TYPE(TypeTag, FluidState) fluidState; + fluidState.setTemperature(temperature_); + fluidState.setPressure(FluidSystem::wPhaseIdx, /*pressure=*/1e5); + fluidState.setPressure(FluidSystem::nPhaseIdx, /*pressure=*/1e5); + + Scalar densityW = FluidSystem::density(fluidState, FluidSystem::wPhaseIdx); + + // hydrostatic pressure + values[pwIdx] = 1e5 - densityW*this->gravity()[1]*depth; + values[SnIdx] = 0.0; + } + // \} + +private: + + bool onLeftBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[0] < this->bboxMin()[0] + eps_; + } + + bool onRightBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[0] > this->bboxMax()[0] - eps_; + } + + bool onLowerBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[1] < this->bboxMin()[1] + eps_; + } + + bool onUpperBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[1] > this->bboxMax()[1] - eps_; + } + + bool onInlet_(const GlobalPosition &globalPos) const + { + Scalar width = 6.0;//this->bboxMax()[0] - this->bboxMin()[0]; + Scalar lambda = (6.0/*this->bboxMax()[0]*/ - globalPos[0])/width; + return (globalPos[1] > 4.0 - eps_) && 0.5 < lambda && lambda < 2.0/3.0; + } + + Scalar temperature_; + Scalar eps_; +}; +} //end namespace + +#endif diff --git a/test/implicit/2p/lensccspatialparams.hh b/test/implicit/2p/lensccspatialparams.hh new file mode 100644 index 0000000000000000000000000000000000000000..73eed21cb273c35ec99a01098cc8def55828068f --- /dev/null +++ b/test/implicit/2p/lensccspatialparams.hh @@ -0,0 +1,220 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * Copyright (C) 2010 by Markus Wolff * + * Copyright (C) 2007-2008 by Klaus Mosthaf * + * Copyright (C) 2007-2008 by Bernd Flemisch * + * Copyright (C) 2008-2009 by Andreas Lauser * + * Institute for Modelling Hydraulic and Environmental Systems * + * University of Stuttgart, Germany * + * email: <givenname>.<name>@iws.uni-stuttgart.de * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief The spatial parameters for the LensProblem which uses the + * twophase box model + */ +#ifndef DUMUX_LENS_SPATIAL_PARAMS_HH +#define DUMUX_LENS_SPATIAL_PARAMS_HH + +#include <dumux/material/spatialparams/boxspatialparams.hh> +#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> +#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> +#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> + +#include <dumux/implicit/2p/2pmodel.hh> + +namespace Dumux +{ + +//forward declaration +template<class TypeTag> +class LensSpatialParams; + +namespace Properties +{ +// The spatial parameters TypeTag +NEW_TYPE_TAG(LensSpatialParams); + +// Set the spatial parameters +SET_TYPE_PROP(LensSpatialParams, SpatialParams, Dumux::LensSpatialParams<TypeTag>); + +// Set the material Law +SET_PROP(LensSpatialParams, MaterialLaw) +{ +private: + // define the material law which is parameterized by effective + // saturations + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef RegularizedVanGenuchten<Scalar> EffectiveLaw; +public: + // define the material law parameterized by absolute saturations + typedef EffToAbsLaw<EffectiveLaw> type; +}; +} +/*! + * \ingroup TwoPCCModel + * \ingroup CCTestProblems + * \brief The spatial parameters for the LensProblem which uses the + * twophase box model + */ +template<class TypeTag> +class LensSpatialParams : public BoxSpatialParams<TypeTag> +{ + typedef BoxSpatialParams<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; + typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename Grid::ctype CoordScalar; + + enum { + dim=GridView::dimension, + dimWorld=GridView::dimensionworld + }; + + typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; + + typedef typename GridView::template Codim<0>::Entity Element; + typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; + +public: + //get the material law from the property system + typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; + typedef typename MaterialLaw::Params MaterialLawParams; + + LensSpatialParams(const GridView& gridView) + : ParentType(gridView) + { + try + { + lensLowerLeft_[0] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensLowerLeftX); + lensLowerLeft_[1] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensLowerLeftY); + lensUpperRight_[0] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensUpperRightX); + lensUpperRight_[1] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensUpperRightY); + } + catch (Dumux::ParameterException &e) { + std::cerr << e << ". Abort!\n"; + exit(1) ; + } + catch (...) { + std::cerr << "Unknown exception thrown!\n"; + exit(1); + } + + // residual saturations + lensMaterialParams_.setSwr(0.18); + lensMaterialParams_.setSnr(0.0); + outerMaterialParams_.setSwr(0.05); + outerMaterialParams_.setSnr(0.0); + + // parameters for the Van Genuchten law + // alpha and n + lensMaterialParams_.setVgAlpha(0.00045); + lensMaterialParams_.setVgN(7.3); + outerMaterialParams_.setVgAlpha(0.0037); + outerMaterialParams_.setVgN(4.7); + + // parameters for the linear law + // minimum and maximum pressures + // lensMaterialParams_.setEntryPC(0); +// outerMaterialParams_.setEntryPC(0); +// lensMaterialParams_.setMaxPC(0); +// outerMaterialParams_.setMaxPC(0); + + lensK_ = 9.05e-12; + outerK_ = 4.6e-10; + } + + /*! + * \brief Intrinsic permability + * + * \param element The current element + * \param fvElemGeom The current finite volume geometry of the element + * \param scvIdx The index of the sub-control volume. + * \return Intrinsic permeability + */ + Scalar intrinsicPermeability(const Element &element, + const FVElementGeometry &fvElemGeom, + int scvIdx) const + { + if (scvIdx > 0) + return intrinsicPermeability(*(fvElemGeom.neighbors[scvIdx]), fvElemGeom, 0); + + const GlobalPosition &globalPos = element.geometry().center(); + if (isInLens_(globalPos)) + return lensK_; + return outerK_; + } + + /*! + * \brief Porosity + * + * \param element The current element + * \param fvElemGeom The current finite volume geometry of the element + * \param scvIdx The index of the sub-control volume. + * \return Porosity + */ + Scalar porosity(const Element &element, + const FVElementGeometry &fvElemGeom, + int scvIdx) const + { return 0.4; } + + /*! + * \brief Function for defining the parameters needed by constitutive relationships (kr-Sw, pc-Sw, etc.). + * + * \param element The current element + * \param fvElemGeom The current finite volume geometry of the element + * \param scvIdx The index of the sub-control volume. + * \return the material parameters object + */ + const MaterialLawParams& materialLawParams(const Element &element, + const FVElementGeometry &fvElemGeom, + int scvIdx) const + { + if (scvIdx > 0) + return materialLawParams(*(fvElemGeom.neighbors[scvIdx]), fvElemGeom, 0); + + const GlobalPosition &globalPos = element.geometry().center(); + + if (isInLens_(globalPos)) + return lensMaterialParams_; + return outerMaterialParams_; + } + + +private: + bool isInLens_(const GlobalPosition &pos) const + { + for (int i = 0; i < dim; ++i) { + if (pos[i] < lensLowerLeft_[i] || pos[i] > lensUpperRight_[i]) + return false; + } + return true; + } + + GlobalPosition lensLowerLeft_; + GlobalPosition lensUpperRight_; + + Scalar lensK_; + Scalar outerK_; + MaterialLawParams lensMaterialParams_; + MaterialLawParams outerMaterialParams_; +}; + +} // end namespace +#endif + diff --git a/test/implicit/2p/test_cc2p.cc b/test/implicit/2p/test_cc2p.cc new file mode 100644 index 0000000000000000000000000000000000000000..c3b3a6d8393c2853ae37594a3614511c77af0f1a --- /dev/null +++ b/test/implicit/2p/test_cc2p.cc @@ -0,0 +1,71 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * Copyright (C) 2007-2008 by Klaus Mosthaf * + * Copyright (C) 2007-2008 by Bernd Flemisch * + * Copyright (C) 2008-2009 by Andreas Lauser * + * Institute for Modelling Hydraulic and Environmental Systems * + * University of Stuttgart, Germany * + * email: <givenname>.<name>@iws.uni-stuttgart.de * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief test for the two-phase box model + */ +#include "config.h" +#include "lensccproblem.hh" +#include <dumux/common/start.hh> + +/*! + * \brief Provides an interface for customizing error messages associated with + * reading in parameters. + * + * \param progName The name of the program, that was tried to be started. + * \param errorMsg The error message that was issued by the start function. + * Comprises the thing that went wrong and a general help message. + */ +void usage(const char *progName, const std::string &errorMsg) +{ + if (errorMsg.size() > 0) { + std::string errorMessageOut = "\nUsage: "; + errorMessageOut += progName; + errorMessageOut += " [options]\n"; + errorMessageOut += errorMsg; + errorMessageOut += "\n\nThe List of Mandatory arguments for this program is:\n" + "\t-tEnd The end of the simulation [s] \n" + "\t-dtInitial The initial timestep size [s] \n" + "\t-gridFile The file name of the file containing the grid \n" + "\t definition in DGF format\n" + "\t-SpatialParameters.lensLowerLeftX Dimension of the lens [m] \n" + "\t-SpatialParameters.lensLowerLeftY Dimension of the lens [m] \n" + "\t-SpatialParameters.lensUpperRightX Dimension of the lens [m] \n" + "\t-SpatialParameters.lensUpperRighty Dimension of the lens [m] \n" + "\n"; + + std::cout << errorMessageOut + << "\n"; + } +} + +//////////////////////// +// the main function +//////////////////////// +int main(int argc, char** argv) +{ + typedef TTAG(LensProblem) TypeTag; + return Dumux::start<TypeTag>(argc, argv, usage); +} diff --git a/test/implicit/2p/test_cc2p.input b/test/implicit/2p/test_cc2p.input new file mode 100644 index 0000000000000000000000000000000000000000..61d3a4f31d5ba107ac7d65427613ee90b7ecfc2d --- /dev/null +++ b/test/implicit/2p/test_cc2p.input @@ -0,0 +1,34 @@ +############################################################### +# Parameter file for test_2p. +# Everything behind a '#' is a comment. +# Type "./test_2p --help" for more information. +############################################################### + +############################################################### +# Mandatory arguments +############################################################### + +[TimeManager] +DtInitial = 250 # [s] +TEnd = 3000 # [s] + +[Grid] +File = ./grids/test_2p.dgf + +[SpatialParams] +LensLowerLeftX = 1.0 # [m] x-coordinate of the lower left lens corner +LensLowerLeftY = 2.0 # [m] y-coordinate of the lower left lens corner +LensUpperRightX = 4.0 # [m] x-coordinate of the upper right lens corner +LensUpperRightY = 3.0 # [m] y-coordinate of the upper right lens corner + +############################################################### +# Simulation restart +# +# DuMux simulations can be restarted from *.drs files +# Set Restart to the value of a specific file, +# e.g.: 'Restart = 27184.1' for the restart file +# name_time=27184.1_rank=0.drs +# Please comment in the two lines below, if restart is desired. +############################################################### +# [TimeManager] +# Restart = ...