Base class for all problems which use a finite volume spatial discretization. More...

#include <fvbaseproblem.hh>

Inheritance diagram for Ewoms::FvBaseProblem< TypeTag >:
Inheritance graph

Public Member Functions

 FvBaseProblem (Simulator &simulator)
 
void finishInit ()
 Called by the Ewoms::Simulator in order to initialize the problem. More...
 
Scalar solveTime () const
 Returns the total wall time spend on solving the system [s]. More...
 
Scalar updateTime () const
 Returns the total wall time spend on updating the iterative solutions [s]. More...
 
template<class Context >
void boundary (BoundaryRateVector &values, const Context &context, int spaceIdx, int timeIdx) const
 Evaluate the boundary conditions for a boundary segment. More...
 
template<class Context >
void constraints (Constraints &constraints, const Context &context, int spaceIdx, int timeIdx) const
 Evaluate the constraints for a control volume. More...
 
template<class Context >
void source (RateVector &rate, const Context &context, int spaceIdx, int timeIdx) const
 Evaluate the source term for all phases within a given sub-control-volume. More...
 
template<class Context >
void initial (PrimaryVariables &values, const Context &context, int spaceIdx, int timeIdx) const
 Evaluate the initial value for a control volume. More...
 
template<class Context >
Scalar extrusionFactor (const Context &context, int spaceIdx, int timeIdx) const
 Return how much the domain is extruded at a given sub-control volume. More...
 
Scalar extrusionFactor () const
 
void initialSolutionApplied ()
 Callback used by the model to indicate that the initial solution has been determined for all degrees of freedom. More...
 
void beginEpisode ()
 Called at the beginning of an simulation episode. More...
 
void beginTimeStep ()
 Called by the simulator before each time integration. More...
 
void beginIteration ()
 Called by the simulator before each Newton-Raphson iteration. More...
 
void endIteration ()
 Called by the simulator after each Newton-Raphson update. More...
 
void endTimeStep ()
 Called by the simulator after each time integration. More...
 
void endEpisode ()
 Called when the end of an simulation episode is reached. More...
 
void finalize ()
 Called after the simulation has been run sucessfully. More...
 
void timeIntegration ()
 Called by Ewoms::Simulator in order to do a time integration on the model. More...
 
Scalar nextTimeStepSize ()
 Called by Ewoms::Simulator whenever a solution for a time step has been computed and the simulation time has been updated. More...
 
bool shouldWriteRestartFile () const
 Returns true if a restart file should be written to disk. More...
 
bool shouldWriteOutput () const
 Returns true if the current solution should be written to disk (i.e. as a VTK file) More...
 
void advanceTimeLevel ()
 Called by the simulator after everything which can be done about the current time step is finished and the model should be prepared to do the next time integration. More...
 
std::string name () const
 The problem name. More...
 
const GridView & gridView () const
 The GridView which used by the problem. More...
 
const GlobalPosition & boundingBoxMin () const
 The coordinate of the corner of the GridView's bounding box with the smallest values. More...
 
const GlobalPosition & boundingBoxMax () const
 The coordinate of the corner of the GridView's bounding box with the largest values. More...
 
const VertexMapper & vertexMapper () const
 Returns the mapper for vertices to indices. More...
 
const ElementMapper & elementMapper () const
 Returns the mapper for elements to indices. More...
 
Simulatorsimulator ()
 Returns Simulator object used by the simulation. More...
 
const Simulatorsimulator () const
 Returns Simulator object used by the simulation. More...
 
Model & model ()
 Returns numerical model used for the problem. More...
 
const Model & model () const
 Returns numerical model used for the problem. More...
 
NewtonMethodnewtonMethod ()
 Returns object which implements the Newton method. More...
 
const NewtonMethodnewtonMethod () const
 Returns object which implements the Newton method. More...
 
template<class Restarter >
void serialize (Restarter &res)
 This method writes the complete state of the problem to the harddisk. More...
 
template<class Restarter >
void deserialize (Restarter &res)
 This method restores the complete state of the problem from disk. More...
 
void writeOutput (bool verbose=true)
 Write the relevant secondary variables of the current solution into an VTK output file. More...
 
VtkMultiWriterdefaultVtkWriter () const
 Method to retrieve the VTK writer which should be used to write the default ouput after each time step to disk. More...
 

Static Public Member Functions

static void registerParameters ()
 Registers all available parameters for the problem and the model. More...
 

Detailed Description

template<class TypeTag>
class Ewoms::FvBaseProblem< TypeTag >

Base class for all problems which use a finite volume spatial discretization.

Note
All quantities are specified assuming a threedimensional world. Problems discretized using 2D grids are assumed to be extruded by $1 m$ and 1D grids are assumed to have a cross section of $1m \times 1m$.

Constructor & Destructor Documentation

template<class TypeTag >
Ewoms::FvBaseProblem< TypeTag >::FvBaseProblem ( Simulator simulator)
inline

Parameters
simulatorThe time manager of the simulation
gridViewThe view on the DUNE grid which ought to be used (normally the leaf grid view)

References Ewoms::FvBaseProblem< TypeTag >::name().

Member Function Documentation

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::advanceTimeLevel ( )
inline

Called by the simulator after everything which can be done about the current time step is finished and the model should be prepared to do the next time integration.

References Ewoms::FvBaseProblem< TypeTag >::model().

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::beginEpisode ( )
inline

Called at the beginning of an simulation episode.

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::beginIteration ( )
inline

Called by the simulator before each Newton-Raphson iteration.

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::beginTimeStep ( )
inline

Called by the simulator before each time integration.

template<class TypeTag >
template<class Context >
void Ewoms::FvBaseProblem< TypeTag >::boundary ( BoundaryRateVector &  values,
const Context &  context,
int  spaceIdx,
int  timeIdx 
) const
inline

Evaluate the boundary conditions for a boundary segment.

Parameters
valuesStores the fluxes over the boundary segment.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization
template<class TypeTag >
const GlobalPosition& Ewoms::FvBaseProblem< TypeTag >::boundingBoxMax ( ) const
inline

The coordinate of the corner of the GridView's bounding box with the largest values.

template<class TypeTag >
const GlobalPosition& Ewoms::FvBaseProblem< TypeTag >::boundingBoxMin ( ) const
inline

The coordinate of the corner of the GridView's bounding box with the smallest values.

template<class TypeTag >
template<class Context >
void Ewoms::FvBaseProblem< TypeTag >::constraints ( Constraints &  constraints,
const Context &  context,
int  spaceIdx,
int  timeIdx 
) const
inline

Evaluate the constraints for a control volume.

Parameters
constraintsStores the values of the primary variables at a given spatial and temporal location.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization
template<class TypeTag >
VtkMultiWriter& Ewoms::FvBaseProblem< TypeTag >::defaultVtkWriter ( ) const
inline

Method to retrieve the VTK writer which should be used to write the default ouput after each time step to disk.

template<class TypeTag >
template<class Restarter >
void Ewoms::FvBaseProblem< TypeTag >::deserialize ( Restarter &  res)
inline

This method restores the complete state of the problem from disk.

It is the inverse of the serialize() method.

Template Parameters
RestarterThe deserializer type
Parameters
resThe deserializer object

References Ewoms::VtkMultiWriter< GridView, vtkFormat >::deserialize().

template<class TypeTag >
const ElementMapper& Ewoms::FvBaseProblem< TypeTag >::elementMapper ( ) const
inline

Returns the mapper for elements to indices.

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::endEpisode ( )
inline

Called when the end of an simulation episode is reached.

Typically, a new episode is started in this method.

References Ewoms::Simulator< TypeTag >::episodeIndex(), and Ewoms::FvBaseProblem< TypeTag >::simulator().

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::endIteration ( )
inline

Called by the simulator after each Newton-Raphson update.

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::endTimeStep ( )
inline

Called by the simulator after each time integration.

This method is intended to do some post processing of the solution. (e.g., some additional output)

template<class TypeTag >
template<class Context >
Scalar Ewoms::FvBaseProblem< TypeTag >::extrusionFactor ( const Context &  context,
int  spaceIdx,
int  timeIdx 
) const
inline

Return how much the domain is extruded at a given sub-control volume.

This means the factor by which a lower-dimensional (1D or 2D) entity needs to be expanded to get a full dimensional cell. The default is 1.0 which means that 1D problems are actually thought as pipes with a cross section of 1 m^2 and 2D problems are assumed to extend 1 m to the back.

Parameters
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization
template<class TypeTag >
Scalar Ewoms::FvBaseProblem< TypeTag >::extrusionFactor ( ) const
inline
template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::finishInit ( )
inline

Called by the Ewoms::Simulator in order to initialize the problem.

If you overload this method don't forget to call ParentType::finishInit()

template<class TypeTag >
const GridView& Ewoms::FvBaseProblem< TypeTag >::gridView ( ) const
inline
template<class TypeTag >
template<class Context >
void Ewoms::FvBaseProblem< TypeTag >::initial ( PrimaryVariables &  values,
const Context &  context,
int  spaceIdx,
int  timeIdx 
) const
inline

Evaluate the initial value for a control volume.

Parameters
valuesStores the primary variables.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization
template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::initialSolutionApplied ( )
inline

Callback used by the model to indicate that the initial solution has been determined for all degrees of freedom.

template<class TypeTag >
const Model& Ewoms::FvBaseProblem< TypeTag >::model ( ) const
inline

Returns numerical model used for the problem.

References Ewoms::Simulator< TypeTag >::model().

template<class TypeTag >
std::string Ewoms::FvBaseProblem< TypeTag >::name ( ) const
inline

The problem name.

This is used as a prefix for files generated by the simulation. It is highly recommend to overwrite this method in the concrete problem which is simulated.

Referenced by Ewoms::FvBaseProblem< TypeTag >::FvBaseProblem().

template<class TypeTag >
NewtonMethod& Ewoms::FvBaseProblem< TypeTag >::newtonMethod ( )
inline
template<class TypeTag >
const NewtonMethod& Ewoms::FvBaseProblem< TypeTag >::newtonMethod ( ) const
inline

Returns object which implements the Newton method.

References Ewoms::FvBaseProblem< TypeTag >::model().

template<class TypeTag >
Scalar Ewoms::FvBaseProblem< TypeTag >::nextTimeStepSize ( )
inline

Called by Ewoms::Simulator whenever a solution for a time step has been computed and the simulation time has been updated.

References EWOMS_GET_PARAM, Ewoms::Simulator< TypeTag >::maxTimeStepSize(), Ewoms::FvBaseProblem< TypeTag >::newtonMethod(), and Ewoms::FvBaseProblem< TypeTag >::simulator().

template<class TypeTag >
static void Ewoms::FvBaseProblem< TypeTag >::registerParameters ( )
inlinestatic

Registers all available parameters for the problem and the model.

References EWOMS_REGISTER_PARAM.

Referenced by Ewoms::StokesProblem< TypeTag >::registerParameters().

template<class TypeTag >
template<class Restarter >
void Ewoms::FvBaseProblem< TypeTag >::serialize ( Restarter &  res)
inline

This method writes the complete state of the problem to the harddisk.

The file will start with the prefix returned by the name() method, has the current time of the simulation clock in it's name and uses the extension .ers. (Ewoms ReStart file.) See Ewoms::Restart for details.

Template Parameters
RestarterThe serializer type
Parameters
resThe serializer object

References Ewoms::VtkMultiWriter< GridView, vtkFormat >::serialize().

template<class TypeTag >
bool Ewoms::FvBaseProblem< TypeTag >::shouldWriteOutput ( ) const
inline

Returns true if the current solution should be written to disk (i.e. as a VTK file)

The default behavior is to write out the solution for every time step. This method is should be overwritten by the implementation if the default behavior is deemed insufficient.

template<class TypeTag >
bool Ewoms::FvBaseProblem< TypeTag >::shouldWriteRestartFile ( ) const
inline

Returns true if a restart file should be written to disk.

The default behavior is to write one restart file every 10 time steps. This method should be overwritten by the implementation if the default behavior is deemed insufficient.

References Ewoms::FvBaseProblem< TypeTag >::simulator(), and Ewoms::Simulator< TypeTag >::timeStepIndex().

template<class TypeTag >
const Simulator& Ewoms::FvBaseProblem< TypeTag >::simulator ( ) const
inline

Returns Simulator object used by the simulation.

template<class TypeTag >
Scalar Ewoms::FvBaseProblem< TypeTag >::solveTime ( ) const
inline

Returns the total wall time spend on solving the system [s].

template<class TypeTag >
template<class Context >
void Ewoms::FvBaseProblem< TypeTag >::source ( RateVector &  rate,
const Context &  context,
int  spaceIdx,
int  timeIdx 
) const
inline

Evaluate the source term for all phases within a given sub-control-volume.

Parameters
rateStores the values of the volumetric creation/anihilition rates of the conserved quantities.
contextThe object representing the execution context from which this method is called.
spaceIdxThe local index of the spatial entity which represents the boundary segment.
timeIdxThe index used for the time discretization
template<class TypeTag >
Scalar Ewoms::FvBaseProblem< TypeTag >::updateTime ( ) const
inline

Returns the total wall time spend on updating the iterative solutions [s].

template<class TypeTag >
const VertexMapper& Ewoms::FvBaseProblem< TypeTag >::vertexMapper ( ) const
inline

Returns the mapper for vertices to indices.

template<class TypeTag >
void Ewoms::FvBaseProblem< TypeTag >::writeOutput ( bool  verbose = true)
inline

The documentation for this class was generated from the following file: