IncompTpfaPolymer.hpp
Go to the documentation of this file.
1 /*
2  Copyright 2012 SINTEF ICT, Applied Mathematics.
3 
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef OPM_INCOMPTPFAPOLYMER_HEADER_INCLUDED
21 #define OPM_INCOMPTPFAPOLYMER_HEADER_INCLUDED
22 
23 
24 #include <opm/core/pressure/IncompTpfa.hpp>
25 #include <vector>
26 
27 struct UnstructuredGrid;
28 struct Wells;
29 struct FlowBoundaryConditions;
30 
31 namespace Opm
32 {
33 
34  class IncompPropertiesInterface;
35  class RockCompressibility;
36  class PolymerProperties;
37  class LinearSolverInterface;
38  class PolymerState;
39  class WellState;
40 
48  class IncompTpfaPolymer : public IncompTpfa
49  {
50  public:
51 
72  IncompTpfaPolymer(const UnstructuredGrid& grid,
73  const IncompPropertiesInterface& props,
74  const RockCompressibility* rock_comp_props,
75  const PolymerProperties& poly_props,
76  LinearSolverInterface& linsolver,
77  const double residual_tol,
78  const double change_tol,
79  const int maxiter,
80  const double* gravity,
81  const Wells* wells,
82  const std::vector<double>& src,
83  const FlowBoundaryConditions* bcs);
84 
85 
93  void solve(const double dt,
94  PolymerState& state,
95  WellState& well_state);
96 
97  private:
98  virtual void computePerSolveDynamicData(const double dt,
99  const TwophaseState& state,
100  const WellState& well_state);
101  private:
102  // ------ Data that will remain unmodified after construction. ------
103  const PolymerProperties& poly_props_;
104  // ------ Data that will be updated every solve() call. ------
105  const std::vector<double>* c_;
106  const std::vector<double>* cmax_;
107  };
108 
109 } // namespace Opm
110 
111 #endif // OPM_INCOMPTPFAPOLYMER_HEADER_INCLUDED
Definition: CompressibleTpfaPolymer.hpp:32
Simulator state for a two-phase simulator with polymer.
Definition: PolymerState.hpp:32
Definition: PolymerProperties.hpp:34
IncompTpfaPolymer(const UnstructuredGrid &grid, const IncompPropertiesInterface &props, const RockCompressibility *rock_comp_props, const PolymerProperties &poly_props, LinearSolverInterface &linsolver, const double residual_tol, const double change_tol, const int maxiter, const double *gravity, const Wells *wells, const std::vector< double > &src, const FlowBoundaryConditions *bcs)
Definition: IncompTpfaPolymer.hpp:48
void solve(const double dt, PolymerState &state, WellState &well_state)