My Project
Loading...
Searching...
No Matches
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.
 
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.
 
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

◆ EulerUpstream() [1/2]

template<class GI , class RP , class BC >
Opm::EulerUpstream< GI, RP, BC >::EulerUpstream ( )
inline
Todo:
Doc me

◆ EulerUpstream() [2/2]

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

◆ display()

template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::display ( )
inline
Todo:
Doc me
Parameters

◆ init() [1/2]

template<class GI , class RP , class BC >
void Opm::EulerUpstream< GI, RP, BC >::init ( const Opm::ParameterGroup &  param)
inline
Todo:
Doc me
Parameters

◆ init() [2/2]

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

◆ initObj()

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

◆ setCourantNumber()

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.

◆ transportSolve()

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: