24#ifndef DUMUX_TEST_IMPES_PROBLEM_HH
25#define DUMUX_TEST_IMPES_PROBLEM_HH
27#include <dune/grid/yaspgrid.hh>
50template<
class TypeTag>
51class IMPESTestProblem;
87template<
class TypeTag>
119template<
class TypeTag>
124using Grid =
typename GridView::Grid;
126using Indices =
typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
128using WettingPhase =
typename GET_PROP(TypeTag, FluidSystem)::WettingPhase;
130using TimeManager =
typename GET_PROP_TYPE(TypeTag, TimeManager);
134 dim = GridView::dimension, dimWorld = GridView::dimensionworld
139 nPhaseIdx = Indices::nPhaseIdx,
140 pwIdx = Indices::pwIdx,
141 swIdx = Indices::swIdx,
142 eqIdxPress = Indices::pressureEqIdx,
143 eqIdxSat = Indices::satEqIdx
148using Element =
typename GridView::Traits::template Codim<0>::Entity;
149using GlobalPosition =
typename Element::Geometry::GlobalCoordinate;
151using BoundaryTypes =
typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
152using SolutionTypes =
typename GET_PROP(TypeTag, SolutionTypes);
153using PrimaryVariables =
typename SolutionTypes::PrimaryVariables;
159 name_ = getParam<std::string>(
"Problem.Name");
200void source(PrimaryVariables &values,
const Element& element)
const
214 if (globalPos[0] < eps_)
216 bcTypes.setAllDirichlet();
218 else if (globalPos[0] > this->
bBoxMax()[0] - eps_)
220 bcTypes.setNeumann(eqIdxPress);
221 bcTypes.setOutflow(eqIdxSat);
226 bcTypes.setAllNeumann();
231void dirichletAtPos(PrimaryVariables &values,
const GlobalPosition& globalPos)
const
234 if (globalPos[0] < eps_)
236 if (getParam<bool>(
"Problem.EnableGravity"))
241 values[pwIdx] = (2e5 + (this->
bBoxMax()[dim-1] - globalPos[dim-1])
259void neumannAtPos(PrimaryVariables &values,
const GlobalPosition& globalPos)
const
262 if (globalPos[0] > this->
bBoxMax()[0] - eps_)
264 values[nPhaseIdx] = 3e-4;
269 const Element& element)
const
277static constexpr Scalar eps_ = 1e-6;
#define GET_PROP(TypeTag, PropTagName)
Definition: propertysystemmacros.hh:281
#define GET_PROP_TYPE(TypeTag, PropTagName)
Definition: propertysystemmacros.hh:283
#define NEW_TYPE_TAG(...)
Definition: propertysystemmacros.hh:130
A liquid phase consisting of a single component.
A much simpler (and thus potentially less buggy) version of pure water.
Cfl-flux-function to evaluate a Cfl-Condition after Coats 2003.
Class for defining the gravity term of a two-phase flow saturation equation.
Class for defining the diffusive capillary pressure term of a 2p saturation equation.
Provides a parallel linear solver based on the ISTL AMG preconditioner and the ISTL BiCGSTAB solver.
spatial parameters for the sequential 2p test
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
SET_TYPE_PROP(FVPressureOneP, Velocity, FVVelocity1P< TypeTag >)
Set velocity reconstruction implementation standard cell centered finite volume schemes as default.
Type tag FVPressureOneP INHERITS_FROM(PressureOneP))
The type tag for the one-phase problems using a standard finite volume model.
Property tag EvalCflFluxFunction
Type of the evaluation of the CFL-condition.
Definition: transportproperties.hh:50
std::string density(int phaseIdx) noexcept
I/O name of density for multiphase systems.
Definition: name.hh:65
The DUNE grid type.
Definition: common/properties.hh:57
Property to specify the type of a problem which has to be solved.
Definition: common/properties.hh:69
TODO: Remove this property as soon as the decoupled models are integrated.
Definition: common/properties.hh:95
The type of the fluid system to use.
Definition: common/properties.hh:223
A linear solver based on the ISTL AMG preconditioner and the ISTL BiCGSTAB solver.
Definition: amgbackend.hh:81
A liquid phase consisting of a single component.
Definition: 1pliquid.hh:46
A fluid system for two-phase models assuming immiscibility and thermodynamic equilibrium.
Definition: 2pimmiscible.hh:59
Base class for all 2-phase problems which use an IMPES algorithm.
Definition: dumux/porousmediumflow/2p/sequential/impes/problem.hh:41
const GravityVector & gravity() const
Returns the acceleration due to gravity.
Definition: dumux/porousmediumflow/2p/sequential/impes/problem.hh:167
Cfl-flux-function to evaluate a Cfl-Condition after Coats 2003.
Definition: evalcflfluxcoats.hh:40
base class for problems using a sequential implicit-explicit strategy
Definition: impetproblem.hh:46
TimeManager & timeManager()
Returns TimeManager object used by the simulation.
Definition: impetproblem.hh:663
const GlobalPosition & bBoxMax() const
The coordinate of the corner of the GridView's bounding box with the largest values.
Definition: impetproblem.hh:655
Grid & grid()
Returns the current grid which used by the problem.
Definition: impetproblem.hh:581
test problem for the sequential 2p model
Definition: test_impesproblem.hh:121
void initial(PrimaryVariables &values, const Element &element) const
return initial solution -> only saturation values have to be given!
Definition: test_impesproblem.hh:268
bool shouldWriteRestartFile() const
Definition: test_impesproblem.hh:177
void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const
set neumann condition for phases (flux, [kg/(m^2 s)])
Definition: test_impesproblem.hh:259
void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const
set dirichlet condition (pressure [Pa], saturation [-])
Definition: test_impesproblem.hh:231
const std::string name() const
The problem name.
Definition: test_impesproblem.hh:172
void source(PrimaryVariables &values, const Element &element) const
Definition: test_impesproblem.hh:200
IMPESTestProblem(TimeManager &timeManager, Grid &grid)
Definition: test_impesproblem.hh:156
void boundaryTypesAtPos(BoundaryTypes &bcTypes, const GlobalPosition &globalPos) const
Returns the type of boundary condition.
Definition: test_impesproblem.hh:212
Scalar referencePressureAtPos(const GlobalPosition &globalPos) const
Returns the reference pressure for evaluation of constitutive relations.
Definition: test_impesproblem.hh:195
Scalar temperatureAtPos(const GlobalPosition &globalPos) const
Returns the temperature within the domain.
Definition: test_impesproblem.hh:187
typename GET_PROP_TYPE(TypeTag, Scalar) Scalar
Definition: test_impesproblem.hh:90
spatial parameters for the sequential 2p test
Definition: test_impesspatialparams.hh:65
Specifies the properties for immiscible 2p transport.
Base class for all 2-phase problems which use an IMPES algorithm.
Defines the properties required for finite volume pressure models in a two-phase sequential model.