00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_GRAVITYCOLUMNSOLVERPOLYMER_HEADER_INCLUDED
00021 #define OPM_GRAVITYCOLUMNSOLVERPOLYMER_HEADER_INCLUDED
00022
00023 #include <opm/core/grid.h>
00024 #include <vector>
00025 #include <map>
00026
00027 namespace Opm
00028 {
00029
00032 template <class FluxModel, class Model>
00033 class GravityColumnSolverPolymer
00034 {
00035 public:
00038 GravityColumnSolverPolymer(FluxModel& fmodel,
00039 const Model& model,
00040 const UnstructuredGrid& grid,
00041 const double tol,
00042 const int maxit);
00043
00049 void solve(const std::vector<std::vector<int> >& columns,
00050 const double dt,
00051 std::vector<double>& s,
00052 std::vector<double>& c,
00053 std::vector<double>& cmax);
00054
00055 private:
00056 void solveSingleColumn(const std::vector<int>& column_cells,
00057 const double dt,
00058 std::vector<double>& s,
00059 std::vector<double>& c,
00060 std::vector<double>& cmax,
00061 std::vector<double>& sol_vec
00062 );
00063 FluxModel& fmodel_;
00064 const Model& model_;
00065 const UnstructuredGrid& grid_;
00066 const double tol_;
00067 const int maxit_;
00068 };
00069
00070 }
00071
00072 #include <opm/polymer/GravityColumnSolverPolymer_impl.hpp>
00073
00074 #endif // OPM_GRAVITYCOLUMNSOLVERPOLYMER_HEADER_INCLUDED