20 #ifndef OPM_TRANSPORTSOLVERCOMPRESSIBLETWOPHASEREORDER_HEADER_INCLUDED
21 #define OPM_TRANSPORTSOLVERCOMPRESSIBLETWOPHASEREORDER_HEADER_INCLUDED
23 #include <opm/core/transport/reorder/ReorderSolverInterface.hpp>
26 struct UnstructuredGrid;
31 class BlackoilPropertiesInterface;
59 void solve(
const double* darcyflux,
60 const double* pressure,
61 const double* temperature,
62 const double* porevolume0,
63 const double* porevolume,
66 std::vector<double>& saturation,
67 std::vector<double>& surfacevol);
82 void solveGravity(
const std::vector<std::vector<int> >& columns,
84 std::vector<double>& saturation,
85 std::vector<double>& surfacevol);
88 virtual void solveSingleCell(
const int cell);
89 virtual void solveMultiCell(
const int num_cells,
const int* cells);
90 void solveSingleCellGravity(
const std::vector<int>& cells,
92 const double* gravflux);
93 int solveGravityColumn(
const std::vector<int>& cells);
94 void initGravityDynamic();
97 const UnstructuredGrid& grid_;
99 std::vector<int> allcells_;
100 std::vector<double> visc_;
101 std::vector<double> A_;
102 std::vector<double> smin_;
103 std::vector<double> smax_;
107 const double* darcyflux_;
108 const double* surfacevol0_;
109 const double* porevolume0_;
110 const double* porevolume_;
111 const double* source_;
113 std::vector<double> saturation_;
114 std::vector<double> fractionalflow_;
116 const double* gravity_;
117 std::vector<double> trans_;
118 std::vector<double> density_;
119 std::vector<double> gravflux_;
120 std::vector<double> mob_;
121 std::vector<double> s0_;
124 std::vector<int> ia_upw_;
125 std::vector<int> ja_upw_;
126 std::vector<int> ia_downw_;
127 std::vector<int> ja_downw_;
130 double fracFlow(
double s,
int cell)
const;
133 void mobility(
double s,
int cell,
double* mob)
const;
138 #endif // OPM_TRANSPORTMODELCOMPRESSIBLETWOPHASE_HEADER_INCLUDED
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)
Solve for saturation at next timestep.
Definition: TransportSolverCompressibleTwophaseReorder.cpp:81
TransportSolverCompressibleTwophaseReorder(const UnstructuredGrid &grid, const Opm::BlackoilPropertiesInterface &props, const double tol, const int maxit)
Construct solver.
Definition: TransportSolverCompressibleTwophaseReorder.cpp:44
Interface for implementing reordering solvers.
Definition: ReorderSolverInterface.hpp:38
void initGravity(const double *grav)
Initialise quantities needed by gravity solver.
Definition: TransportSolverCompressibleTwophaseReorder.cpp:392
Definition: TransportSolverCompressibleTwophaseReorder.cpp:327
Definition: TransportSolverCompressibleTwophaseReorder.cpp:138
Implements a reordering transport solver for compressible, non-miscible two-phase flow...
Definition: TransportSolverCompressibleTwophaseReorder.hpp:35
Abstract base class for blackoil fluid and reservoir properties.
Definition: BlackoilPropertiesInterface.hpp:37
void solveGravity(const std::vector< std::vector< int > > &columns, const double dt, std::vector< double > &saturation, std::vector< double > &surfacevol)
Solve for gravity segregation.
Definition: TransportSolverCompressibleTwophaseReorder.cpp:510