24#ifndef DUMUX_IMPETPROBLEM_2P2C_HH
25#define DUMUX_IMPETPROBLEM_2P2C_HH
41template<
class TypeTag>
50 using Grid =
typename GridView::Grid;
53 using Element =
typename GridView::Traits::template Codim<0>::Entity;
60 adaptiveGrid = getPropValue<TypeTag, Properties::AdaptiveGrid>()
63 dimWorld = Grid::dimensionworld
66 using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
108 if (this->adaptiveGrid)
113 asImp_().pressureModel().updateMaterialLaws(
false);
129 asImp_().pressureModel().updateMaterialLaws(
true);
146 return asImp_().initSatAtPos(element.geometry().center());
157 DUNE_THROW(Dune::NotImplemented,
"please specify initial saturation in the problem"
158 " using an initSatAtPos() method!");
172 return asImp_().initConcentrationAtPos(element.geometry().center());
183 DUNE_THROW(Dune::NotImplemented,
"please specify initial Concentration in the problem"
184 " using an initConcentrationAtPos() method!");
190 Implementation &asImp_()
191 {
return *
static_cast<Implementation *
>(
this); }
194 const Implementation &asImp_()
const
195 {
return *
static_cast<const Implementation *
>(
this); }
201 if (equation == Indices::pressureEqIdx)
203 values[Indices::pressureEqIdx] = 0.;
205 else if(equation == Indices::contiNEqIdx)
206 values[Indices::contiNEqIdx] =0.;
207 else if(equation == Indices::contiWEqIdx)
208 values[Indices::contiWEqIdx] =0.;
209 else if (equation == -1)
212 for (
unsigned int i = 0; i < values.size(); i++)
216 DUNE_THROW(Dune::InvalidStateException,
"vector of primary variables can not be set properly");
Base class holding the variables for sequential models.
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:150
Base class for all 2-phase problems which use an IMPES algorithm.
Definition: porousmediumflow/2p/sequential/impes/problem.hh:41
SpatialParams & spatialParams()
Returns the spatial parameters object.
Definition: porousmediumflow/2p/sequential/impes/problem.hh:173
Base class for all compositional 2-phase problems which use an impet algorithm.
Definition: porousmediumflow/2p2c/sequential/problem.hh:43
Scalar initSat(const Element &element) const
Saturation initial condition (dimensionless)
Definition: porousmediumflow/2p2c/sequential/problem.hh:144
void postTimeStep()
Called by the time manager after everything which can be done about the current time step is finished...
Definition: porousmediumflow/2p2c/sequential/problem.hh:126
IMPETProblem2P2C(TimeManager &timeManager, Grid &grid, const GridView &gridView)
Definition: porousmediumflow/2p2c/sequential/problem.hh:79
void preTimeStep()
Called by TimeManager just before the time integration.
Definition: porousmediumflow/2p2c/sequential/problem.hh:104
IMPETProblem2P2C(TimeManager &timeManager, Grid &grid)
The standard constructor.
Definition: porousmediumflow/2p2c/sequential/problem.hh:75
void setZero(GetPropType< TypeTag, Properties::PrimaryVariables > &values, const int equation=-1) const
Sets entries of the primary variable vector to zero.
Definition: porousmediumflow/2p2c/sequential/problem.hh:199
Scalar initConcentration(const Element &element) const
Concentration initial condition (dimensionless)
Definition: porousmediumflow/2p2c/sequential/problem.hh:170
IMPETProblem2P2C(TimeManager &timeManager, Grid &grid, SpatialParams &spatialParams)
The constructor for given spatialParams.
Definition: porousmediumflow/2p2c/sequential/problem.hh:92
Scalar initConcentrationAtPos(const GlobalPosition &globalPos) const
Concentration initial condition (dimensionless)
Definition: porousmediumflow/2p2c/sequential/problem.hh:181
Scalar initSatAtPos(const GlobalPosition &globalPos) const
Saturation initial condition (dimensionless) at given position.
Definition: porousmediumflow/2p2c/sequential/problem.hh:155
base class for problems using a sequential implicit-explicit strategy
Definition: impetproblem.hh:46
const GridView & gridView() const
The GridView which used by the problem.
Definition: impetproblem.hh:573
GridAdaptModel & gridAdapt()
Returns adaptivity model used for the problem.
Definition: impetproblem.hh:602
TimeManager & timeManager()
Returns TimeManager object used by the simulation.
Definition: impetproblem.hh:663
void postTimeStep()
Called by TimeManager whenever a solution for a timestep has been computed and the simulation time ha...
Definition: impetproblem.hh:416
Grid & grid()
Returns the current grid which used by the problem.
Definition: impetproblem.hh:581
Defines the properties required for the sequential 2p2c models.
Base class for all 2-phase problems which use an IMPES algorithm.