All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions > Class Template Reference

Class for doing simple transport by explicit Euler upstream method for general grid. More...

#include <EulerUpstream.hpp>

Public Member Functions

 EulerUpstream ()
 
 EulerUpstream (const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
 
void init (const Opm::ParameterGroup &param)
 
void init (const Opm::ParameterGroup &param, const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
 
void initObj (const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
 
void display ()
 
void setCourantNumber (double cn)
 Set the Courant number. More...
 
template<class PressureSolution >
void transportSolve (std::vector< double > &saturation, const double time, const typename GridInterface::Vector &gravity, const PressureSolution &pressure_sol, const Opm::SparseVector< double > &injection_rates) const
 Solve transport equation, evolving. More...
 
template<class PressureSolution >
void transportSolve (std::vector< double > &saturation, const double time, const typename GI::Vector &gravity, const PressureSolution &pressure_sol, const Opm::SparseVector< double > &injection_rates) const
 
template<class PressureSolution >
double computeCflTime (const std::vector< double > &, const double, const typename GI::Vector &gravity, const PressureSolution &pressure_sol) const
 
template<class PressureSolution >
void smallTimeStep (std::vector< double > &saturation, const double dt, const typename GI::Vector &gravity, const PressureSolution &pressure_sol, const Opm::SparseVector< double > &injection_rates) const
 

Protected Types

typedef GridInterface::CellIterator CIt
 
typedef CIt::FaceIterator FIt
 
typedef FIt::Vector Vector
 

Protected Member Functions

template<class PressureSolution >
double computeCflTime (const std::vector< double > &saturation, const double time, const typename GridInterface::Vector &gravity, const PressureSolution &pressure_sol) const
 
template<class PressureSolution >
void smallTimeStep (std::vector< double > &saturation, const double time, const typename GridInterface::Vector &gravity, const PressureSolution &pressure_sol, const Opm::SparseVector< double > &injection_rates) const
 
void checkAndPossiblyClampSat (std::vector< double > &s) const
 

Protected Attributes

EulerUpstreamResidual
< GridInterface,
ReservoirProperties,
BoundaryConditions > 
residual_computer_
 
bool method_viscous_
 
bool method_gravity_
 
bool method_capillary_
 
bool use_cfl_viscous_
 
bool use_cfl_gravity_
 
bool use_cfl_capillary_
 
double courant_number_
 
int minimum_small_steps_
 
int maximum_small_steps_
 
bool check_sat_
 
bool clamp_sat_
 
std::vector< double > porevol_
 
std::vector< double > residual_
 

Detailed Description

template<class GridInterface, class ReservoirProperties, class BoundaryConditions>
class Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >

Class for doing simple transport by explicit Euler upstream method for general grid.

Template Parameters

Constructor & Destructor Documentation

template<class GI , class RP , class BC >
Opm::EulerUpstream< GI, RP, BC >::EulerUpstream ( )
inline
Todo:
Doc me
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::EulerUpstream ( const GridInterface &  grid,
const ReservoirProperties &  resprop,
const BoundaryConditions &  boundary 
)
Todo:
Doc me
Parameters

Member Function Documentation

template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::display ( )
inline
Todo:
Doc me
Parameters
template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::init ( const Opm::ParameterGroup &  param)
inline
Todo:
Doc me
Parameters
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
void Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::init ( const Opm::ParameterGroup &  param,
const GridInterface &  grid,
const ReservoirProperties &  resprop,
const BoundaryConditions &  boundary 
)
Todo:
Doc me
Parameters
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
void Opm::EulerUpstream< GI, RP, BC >::initObj ( const GridInterface &  grid,
const ReservoirProperties &  resprop,
const BoundaryConditions &  boundary 
)
inline
Todo:
Doc me
Parameters
template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::setCourantNumber ( double  cn)
inline

Set the Courant number.

That is dt = dt_cfl*courant_number. For this explicit method it should be < 1.

template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
template<class PressureSolution >
void Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::transportSolve ( std::vector< double > &  saturation,
const double  time,
const typename GridInterface::Vector &  gravity,
const PressureSolution &  pressure_sol,
const Opm::SparseVector< double > &  injection_rates 
) const

Solve transport equation, evolving.

Parameters
saturationfor
timeseconds. Cfl type conditions may force many explicit timesteps to be taken, before the function returns.
Template Parameters
@param

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