20 #ifndef OPM_MISCUTILITIES_HEADER_INCLUDED 21 #define OPM_MISCUTILITIES_HEADER_INCLUDED 27 struct UnstructuredGrid;
32 class IncompPropertiesInterface;
33 class BlackoilPropertiesInterface;
34 class RockCompressibility;
40 void computePorevolume(
const UnstructuredGrid& grid,
41 const double* porosity,
42 std::vector<double>& porevol);
50 void computePorevolume(
int number_of_cells,
52 const double* porosity,
53 std::vector<double>& porevol);
61 void computePorevolume(
const UnstructuredGrid& grid,
62 const double* porosity,
63 const RockCompressibility& rock_comp,
64 const std::vector<double>& pressure,
65 std::vector<double>& porevol);
75 void computePorevolume(
int number_of_cells,
77 const double* porosity,
78 const RockCompressibility& rock_comp,
79 const std::vector<double>& pressure,
80 std::vector<double>& porevol);
88 void computePorosity(
const UnstructuredGrid& grid,
89 const double* porosity_standard,
90 const RockCompressibility& rock_comp,
91 const std::vector<double>& pressure,
92 std::vector<double>& porosity);
101 void computeSaturatedVol(
const std::vector<double>& pv,
102 const std::vector<double>& s,
113 void computeAverageSat(
const std::vector<double>& pv,
114 const std::vector<double>& s,
130 void computeInjectedProduced(
const IncompPropertiesInterface& props,
131 const std::vector<double>& s,
132 const std::vector<double>& src,
143 const std::vector<int>& cells,
144 const std::vector<double>& s,
145 std::vector<double>& totmob);
154 const std::vector<int>& cells,
155 const std::vector<double>& s,
156 std::vector<double>& totmob,
157 std::vector<double>& omega);
166 const std::vector<int>& cells,
167 const std::vector<double>& s ,
168 std::vector<double>& pmobc);
177 const std::vector<int>& cells,
178 const std::vector<double>& saturations,
179 std::vector<double>& fractional_flows);
199 void computeTransportSource(
const UnstructuredGrid& grid,
200 const std::vector<double>& src,
201 const std::vector<double>& faceflux,
202 const double inflow_frac,
204 const std::vector<double>& well_perfrates,
205 std::vector<double>& transport_src);
212 void estimateCellVelocity(
const UnstructuredGrid& grid,
213 const std::vector<double>& face_flux,
214 std::vector<double>& cell_velocity);
225 template<
class CC,
class FC,
class FC1,
class CV>
226 void estimateCellVelocity(
int number_of_cells,
228 FC begin_face_centroids,
230 CC begin_cell_centroids,
231 CV begin_cell_volumes,
233 const std::vector<double>& face_flux,
234 std::vector<double>& cell_velocity);
238 void toWaterSat(
const std::vector<double>& sboth,
239 std::vector<double>& sw);
243 void toBothSat(
const std::vector<double>& sw,
244 std::vector<double>& sboth);
249 void wellsToSrc(
const Wells& wells,
const int num_cells, std::vector<double>& src);
262 void computeWDP(
const Wells& wells,
const UnstructuredGrid& grid,
const std::vector<double>& saturations,
263 const double* densities,
const double gravity,
const bool per_grid_cell,
264 std::vector<double>& wdp);
279 void computeWDP(
const Wells& wells,
int number_of_cells, T begin_cell_centroids,
280 const std::vector<double>& saturations,
281 const double* densities,
const double gravity,
const bool per_grid_cell,
282 std::vector<double>& wdp);
289 void computeFlowRatePerWell(
const Wells& wells,
const std::vector<double>& flow_rates_per_cell,
290 std::vector<double>& flow_rates_per_well);
298 void computePhaseFlowRatesPerWell(
const Wells& wells,
299 const std::vector<double>& flow_rates_per_well_cell,
300 const std::vector<double>& fractional_flows,
301 std::vector<double>& phase_flow_per_well);
320 void push(
double time,
double fraction,
double produced);
323 void write(std::ostream& os)
const;
325 std::vector<double> data_;
356 const std::vector<double>& saturation,
358 const std::vector<double>& well_bhp,
359 const std::vector<double>& well_perfrates);
371 const std::vector<double>& p,
372 const std::vector<double>& z,
373 const std::vector<double>& s,
375 const std::vector<double>& well_bhp,
376 const std::vector<double>& well_perfrates);
379 void write(std::ostream& os)
const;
381 std::vector<std::vector<double> > data_;
386 #include "miscUtilities_impl.hpp" 387 #endif // OPM_MISCUTILITIES_HEADER_INCLUDED void push(const IncompPropertiesInterface &props, const Wells &wells, const std::vector< double > &saturation, const double time, const std::vector< double > &well_bhp, const std::vector< double > &well_perfrates)
Add a report point.
Definition: miscUtilities.cpp:546
A simple flow reporting utility, encapsulating the watercut curves.
Definition: miscUtilities.hpp:313
void write(std::ostream &os) const
Write report to a stream.
Definition: miscUtilities.cpp:662
Definition: AnisotropicEikonal.cpp:446
Data structure aggregating static information about all wells in a scenario.
Definition: wells.h:50
void write(std::ostream &os) const
Write report to a stream.
Definition: miscUtilities.cpp:535
Abstract base class for blackoil fluid and reservoir properties.
Definition: BlackoilPropertiesInterface.hpp:37
void push(double time, double fraction, double produced)
Add a report point.
Definition: miscUtilities.cpp:528
Well reporting utility.
Definition: miscUtilities.hpp:344
Abstract base class for incompressible fluid and reservoir properties.
Definition: IncompPropertiesInterface.hpp:35