00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_WELLDENSITYSEGMENTED_HEADER_INCLUDED
00021 #define OPM_WELLDENSITYSEGMENTED_HEADER_INCLUDED
00022
00023 #include <vector>
00024
00025 struct Wells;
00026
00027 namespace Opm
00028 {
00029
00030 class WellStateFullyImplicitBlackoil;
00031 class WellStateFullyImplicitBlackoilSolvent;
00032 struct PhaseUsage;
00033
00034
00040 class WellDensitySegmented
00041 {
00042 public:
00052 static std::vector<double> computeConnectionDensities(const Wells& wells,
00053 const PhaseUsage& phase_usage,
00054 const std::vector<double>& perfComponentRates,
00055 const std::vector<double>& b_perf,
00056 const std::vector<double>& rsmax_perf,
00057 const std::vector<double>& rvmax_perf,
00058 const std::vector<double>& surf_dens_perf);
00059
00060
00061
00071 static std::vector<double> computeConnectionDensities(const Wells& wells,
00072 const WellStateFullyImplicitBlackoilSolvent& wstate,
00073 const PhaseUsage& phase_usage,
00074 const std::vector<double>& b_perf,
00075 const std::vector<double>& rsmax_perf,
00076 const std::vector<double>& rvmax_perf,
00077 const std::vector<double>& surf_dens_perf);
00078
00079
00080
00081
00088 static std::vector<double> computeConnectionPressureDelta(const Wells& wells,
00089 const std::vector<double>& z_perf,
00090 const std::vector<double>& dens_perf,
00091 const double gravity);
00092 };
00093
00094 }
00095
00096 #endif // OPM_WELLDENSITYSEGMENTED_HEADER_INCLUDED