Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions > Class Template Reference

#include <EulerUpstream.hpp>

Public Member Functions

 EulerUpstream ()
 
 EulerUpstream (const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
 
void init (const Opm::parameter::ParameterGroup &param)
 
void init (const Opm::parameter::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. That is dt = dt_cfl*courant_number. For this explicit method it should be < 1. 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

Member Typedef Documentation

template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
typedef GridInterface::CellIterator Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::CIt
protected
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
typedef CIt::FaceIterator Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::FIt
protected
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
typedef FIt::Vector Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::Vector
protected

Constructor & Destructor Documentation

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

Member Function Documentation

template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::checkAndPossiblyClampSat ( std::vector< double > &  s) const
inlineprotected
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
template<class PressureSolution >
double Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::computeCflTime ( const std::vector< double > &  saturation,
const double  time,
const typename GridInterface::Vector &  gravity,
const PressureSolution &  pressure_sol 
) const
protected
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
template<class PressureSolution >
double Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::computeCflTime ( const std::vector< double > &  ,
const double  ,
const typename GI::Vector &  gravity,
const PressureSolution &  pressure_sol 
) const
inline
template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::display ( )
inline
template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::init ( const Opm::parameter::ParameterGroup &  param)
inline
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
void Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::init ( const Opm::parameter::ParameterGroup &  param,
const GridInterface &  grid,
const ReservoirProperties &  resprop,
const BoundaryConditions &  boundary 
)
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
void Opm::EulerUpstream< GI, RP, BC >::initObj ( const GridInterface &  grid,
const ReservoirProperties &  resprop,
const BoundaryConditions &  boundary 
)
inline
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 >::smallTimeStep ( std::vector< double > &  saturation,
const double  time,
const typename GridInterface::Vector &  gravity,
const PressureSolution &  pressure_sol,
const Opm::SparseVector< double > &  injection_rates 
) const
protected
template<class GridInterface , class ReservoirProperties , class BoundaryConditions >
template<class PressureSolution >
void Opm::EulerUpstream< GridInterface, ReservoirProperties, BoundaryConditions >::smallTimeStep ( std::vector< double > &  saturation,
const double  dt,
const typename GI::Vector &  gravity,
const PressureSolution &  pressure_sol,
const Opm::SparseVector< double > &  injection_rates 
) const
inline
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
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 GI::Vector &  gravity,
const PressureSolution &  pressure_sol,
const Opm::SparseVector< double > &  injection_rates 
) const

Member Data Documentation

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

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