This commit is contained in:
Kjetil Olsen Lye 2012-04-13 13:20:36 +02:00
commit 3058e26447
3 changed files with 14 additions and 10 deletions

View File

@ -94,8 +94,9 @@ namespace Opm
/// \param[out] faceflux Will contain F signed face flux values.
/// \param[out] well_bhp Will contain bhp values for each well passed
/// in the constructor.
/// \param[out] well_rate Will contain rate values for each well passed
/// in the constructor.
/// \param[out] well_rate Will contain rate values for each
/// connection in all wells passed in the
/// constructor
void IncompTpfa::solve(const std::vector<double>& totmob,
const std::vector<double>& omega,
const std::vector<double>& src,
@ -141,7 +142,7 @@ namespace Opm
if(wells_ != NULL) {
well_bhp.resize(wells_->number_of_wells);
well_rate.resize(wells_->number_of_wells);
well_rate.resize(wells_->well_connpos[ wells_->number_of_wells ]);
soln.well_flux = &well_rate[0];
soln.well_press = &well_bhp[0];
}
@ -169,8 +170,9 @@ namespace Opm
/// \param[out] faceflux Will contain F signed face flux values.
/// \param[out] well_bhp Will contain bhp values for each well passed
/// in the constructor
/// \param[out] well_rate Will contain rate values for each well passed
/// in the constructor
/// \param[out] well_rate Will contain rate values for each
/// connection in all wells passed in the
/// constructor
void IncompTpfa::solve(const std::vector<double>& totmob,
const std::vector<double>& omega,
const std::vector<double>& src,
@ -240,7 +242,7 @@ namespace Opm
if(wells_ != NULL) {
well_bhp.resize(wells_->number_of_wells);
well_rate.resize(wells_->number_of_wells);
well_rate.resize(wells_->well_connpos[ wells_->number_of_wells ]);
soln.well_flux = &well_rate[0];
soln.well_press = &well_bhp[0];
}

View File

@ -61,10 +61,10 @@ namespace Opm
/// Assemble and solve incompressible pressure system.
/// \param[in] totmob Must contain N total mobility values (one per cell).
/// totmob = \sum_{p} kr_p/mu_p.
/// \f$totmob = \sum_{p} kr_p/mu_p\f$.
/// \param[in] omega Must be empty if constructor gravity argument was null.
/// Otherwise must contain N mobility-weighted density values (one per cell).
/// omega = \frac{\sum_{p} mob_p rho_p}{\sum_p rho_p}.
/// \f$omega = \frac{\sum_{p} mob_p rho_p}{\sum_p rho_p}\f$.
/// \param[in] src Must contain N source rates (one per cell).
/// Positive values represent total inflow rates,
/// negative values represent total outflow rates.

View File

@ -408,6 +408,8 @@ namespace Opm
void computeWDP(const Wells& wells, const UnstructuredGrid& grid, const std::vector<double>& saturations,
const std::vector<double>& densities, std::vector<double>& wdp)
{
const size_t np = densities.size();
// Simple for now:
for(int i = 0; i < wells.number_of_wells; i++) {
double depth_ref = wells.depth_ref[i];
@ -425,9 +427,9 @@ namespace Opm
saturation_sum = 1.0;
}
double density = 0.0;
for(size_t i = 0; i < densities.size(); i++) {
for(size_t p = 0; p < np; p++) {
// Is this a smart way of doing it?
density += saturations[densities.size()*cell+i]*densities[i]/saturation_sum;
density += saturations[np*cell + p] * densities[p];
}
// Is the sign correct?