Opm::TransportSolverCompressibleTwophaseReorder Class Reference

#include <TransportSolverCompressibleTwophaseReorder.hpp>

Inheritance diagram for Opm::TransportSolverCompressibleTwophaseReorder:
Inheritance graph

Public Member Functions

 TransportSolverCompressibleTwophaseReorder (const UnstructuredGrid &grid, const Opm::BlackoilPropertiesInterface &props, const double tol, const int maxit)
 
void solve (const double *darcyflux, const double *pressure, const double *temperature, const double *porevolume0, const double *porevolume, const double *source, const double dt, std::vector< double > &saturation, std::vector< double > &surfacevol)
 
void initGravity (const double *grav)
 
void solveGravity (const std::vector< std::vector< int > > &columns, const double dt, std::vector< double > &saturation, std::vector< double > &surfacevol)
 

Protected Member Functions

void reorderAndTransport (const UnstructuredGrid &grid, const double *darcyflux)
 
const std::vector< int > & sequence () const
 
const std::vector< int > & components () const
 

Detailed Description

Implements a reordering transport solver for compressible, non-miscible two-phase flow.

Constructor & Destructor Documentation

◆ TransportSolverCompressibleTwophaseReorder()

Opm::TransportSolverCompressibleTwophaseReorder::TransportSolverCompressibleTwophaseReorder ( const UnstructuredGrid &  grid,
const Opm::BlackoilPropertiesInterface props,
const double  tol,
const int  maxit 
)

Construct solver.

Parameters
[in]gridA 2d or 3d grid.
[in]propsRock and fluid properties.
[in]tolTolerance used in the solver.
[in]maxitMaximum number of non-linear iterations used.

Member Function Documentation

◆ components()

const std::vector< int > & Opm::ReorderSolverInterface::components ( ) const
protectedinherited

◆ initGravity()

void Opm::TransportSolverCompressibleTwophaseReorder::initGravity ( const double *  grav)

Initialise quantities needed by gravity solver.

Parameters
[in]gravGravity vector

◆ reorderAndTransport()

void Opm::ReorderSolverInterface::reorderAndTransport ( const UnstructuredGrid &  grid,
const double *  darcyflux 
)
protectedinherited

◆ sequence()

const std::vector< int > & Opm::ReorderSolverInterface::sequence ( ) const
protectedinherited

◆ solve()

void Opm::TransportSolverCompressibleTwophaseReorder::solve ( const double *  darcyflux,
const double *  pressure,
const double *  temperature,
const double *  porevolume0,
const double *  porevolume,
const double *  source,
const double  dt,
std::vector< double > &  saturation,
std::vector< double > &  surfacevol 
)

Solve for saturation at next timestep.

Parameters
[in]darcyfluxArray of signed face fluxes.
[in]pressureArray of cell pressures
[in]temperatureArray of cell temperatures
[in]surfacevol0Array of surface volumes at start of timestep
[in]porevolume0Array of pore volumes at start of timestep.
[in]porevolumeArray of pore volumes at end of timestep.
[in]sourceTransport source term.
[in]dtTime step.
[in,out]saturationPhase saturations.
[in,out]surfacevolSurface volume densities for each phase.

◆ solveGravity()

void Opm::TransportSolverCompressibleTwophaseReorder::solveGravity ( const std::vector< std::vector< int > > &  columns,
const double  dt,
std::vector< double > &  saturation,
std::vector< double > &  surfacevol 
)

Solve for gravity segregation. This uses a column-wise nonlinear Gauss-Seidel approach. It assumes that the input columns contain cells in a single vertical stack, that do not interact with other columns (for gravity segregation.

Parameters
[in]columnsVector of cell-columns.
[in]dtTime step.
[in,out]saturationPhase saturations.
[in,out]surfacevolSurface volume densities for each phase.

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