Encapsulating a tpfa pressure solver for the compressible-fluid case. More...
#include <CompressibleTpfa.hpp>
Public Member Functions | |
CompressibleTpfa (const UnstructuredGrid &grid, const BlackoilPropertiesInterface &props, const RockCompressibility *rock_comp_props, const LinearSolverInterface &linsolver, const double residual_tol, const double change_tol, const int maxiter, const double *gravity, const Wells *wells) | |
Construct solver. More... | |
virtual | ~CompressibleTpfa () |
Destructor. | |
void | solve (const double dt, BlackoilState &state, WellState &well_state) |
Solve the pressure equation by Newton-Raphson scheme. More... | |
bool | singularPressure () const |
After solve(), was the resulting pressure singular. More... | |
Protected Member Functions | |
void | computeWellPotentials (const BlackoilState &state) |
Compute well potentials. | |
Protected Attributes | |
const UnstructuredGrid & | grid_ |
const BlackoilPropertiesInterface & | props_ |
const RockCompressibility * | rock_comp_props_ |
const LinearSolverInterface & | linsolver_ |
const double | residual_tol_ |
const double | change_tol_ |
const int | maxiter_ |
const double * | gravity_ |
const Wells * | wells_ |
std::vector< double > | htrans_ |
std::vector< double > | trans_ |
std::vector< int > | allcells_ |
struct cfs_tpfa_res_data * | h_ |
std::vector< double > | wellperf_wdp_ |
std::vector< double > | initial_porevol_ |
std::vector< double > | cell_A_ |
std::vector< double > | cell_dA_ |
std::vector< double > | cell_viscosity_ |
std::vector< double > | cell_phasemob_ |
std::vector< double > | cell_voldisc_ |
std::vector< double > | face_A_ |
std::vector< double > | face_phasemob_ |
std::vector< double > | face_gravcap_ |
std::vector< double > | wellperf_A_ |
std::vector< double > | wellperf_phasemob_ |
std::vector< double > | porevol_ |
std::vector< double > | rock_comp_ |
std::vector< double > | pressure_increment_ |
bool | singular_ |
Encapsulating a tpfa pressure solver for the compressible-fluid case.
Supports gravity, wells and simple sources as driving forces. Below we use the shortcuts D for the number of dimensions, N for the number of cells and F for the number of faces.
Opm::CompressibleTpfa::CompressibleTpfa | ( | const UnstructuredGrid & | grid, |
const BlackoilPropertiesInterface & | props, | ||
const RockCompressibility * | rock_comp_props, | ||
const LinearSolverInterface & | linsolver, | ||
const double | residual_tol, | ||
const double | change_tol, | ||
const int | maxiter, | ||
const double * | gravity, | ||
const Wells * | wells | ||
) |
Construct solver.
[in] | grid | A 2d or 3d grid. |
[in] | props | Rock and fluid properties. |
[in] | rock_comp_props | Rock compressibility properties. May be null. |
[in] | linsolver | Linear solver to use. |
[in] | residual_tol | Solution accepted if inf-norm of residual is smaller. |
[in] | change_tol | Solution accepted if inf-norm of change in pressure is smaller. |
[in] | maxiter | Maximum acceptable number of iterations. |
[in] | gravity | Gravity vector. If non-null, the array should have D elements. |
[in] | wells | The wells argument. Will be used in solution, is ignored if NULL. Note: this class observes the well object, and makes the assumption that the well topology and completions does not change during the run. However, controls (only) are allowed to change. |
[in] | grid | A 2d or 3d grid. |
[in] | props | Rock and fluid properties. |
[in] | linsolver | Linear solver to use. |
[in] | residual_tol | Solution accepted if inf-norm of residual is smaller. |
[in] | change_tol | Solution accepted if inf-norm of change in pressure is smaller. |
[in] | maxiter | Maximum acceptable number of iterations. |
[in] | gravity | Gravity vector. If non-null, the array should have D elements. |
[in] | wells | The wells argument. Will be used in solution, is ignored if NULL. Note: this class observes the well object, and makes the assumption that the well topology and completions does not change during the run. However, controls (only) are allowed to change. |
bool Opm::CompressibleTpfa::singularPressure | ( | ) | const |
After solve(), was the resulting pressure singular.
Returns true if the pressure is singular in the following sense: if everything is incompressible and there are no pressure conditions, the absolute values of the pressure solution are arbitrary. (But the differences in pressure are significant.)
void Opm::CompressibleTpfa::solve | ( | const double | dt, |
BlackoilState & | state, | ||
WellState & | well_state | ||
) |
Solve the pressure equation by Newton-Raphson scheme.
Solve pressure equation, by Newton iterations.
May throw an exception if the number of iterations exceed maxiter (set in constructor).