Made IncompTpfa receive wells-output-arguments

This commit is contained in:
Kjetil Olsen Lye 2012-04-12 16:36:08 +02:00
parent 4150e4a184
commit ee736d8071
6 changed files with 43 additions and 8 deletions

View File

@ -10,7 +10,8 @@ namespace Opm
oil_max_rate_(-1.0),
water_production_target_(-1.0),
fluid_volume_max_rate_(-1.0),
BHP_limit_(-1.0)
BHP_limit_(-1.0),
guide_rate_(-1.0)
{
}

View File

@ -18,6 +18,11 @@ namespace Opm
{
NONE_P, RATE, WELL
};
enum GuideRateType
{
OIL, RAT
};
ProductionSpecification();
@ -30,6 +35,8 @@ namespace Opm
double BHP_limit_;
double gas_max_rate_;
double liquid_max_rate_;
double guide_rate_;
GuideRateType guide_rate_type_;
};
}

View File

@ -97,9 +97,7 @@ namespace Opm
}
}
return true;
}
WellsGroupInterface* WellNode::findGroup(std::string name_of_node)

View File

@ -527,6 +527,11 @@ namespace Opm
// We know that getLeafNodes() is ordered the same way as they're indexed in w_
node->setWellsPointer(w_, i);
}
// Set the guide rates:
if(deck.hasField("WCONPROD")) {
WCONPROD wconprod = deck.getWCONPROD();
}
}

View File

@ -91,12 +91,18 @@ namespace Opm
/// If null, noflow conditions are assumed.
/// \param[out] pressure Will contain N cell-pressure values.
/// \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.
void IncompTpfa::solve(const std::vector<double>& totmob,
const std::vector<double>& omega,
const std::vector<double>& src,
const FlowBoundaryConditions* bcs,
std::vector<double>& pressure,
std::vector<double>& faceflux)
std::vector<double>& faceflux,
std::vector<double>& well_bhp,
std::vector<double>& well_rate)
{
UnstructuredGrid* gg = const_cast<UnstructuredGrid*>(&grid_);
tpfa_eff_trans_compute(gg, &totmob[0], &htrans_[0], &trans_[0]);
@ -150,6 +156,10 @@ namespace Opm
/// \param[in] dt Timestep.
/// \param[out] pressure Will contain N cell-pressure values.
/// \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
void IncompTpfa::solve(const std::vector<double>& totmob,
const std::vector<double>& omega,
const std::vector<double>& src,
@ -158,7 +168,9 @@ namespace Opm
const std::vector<double>& rock_comp,
const double dt,
std::vector<double>& pressure,
std::vector<double>& faceflux)
std::vector<double>& faceflux,
std::vector<double>& well_bhp,
std::vector<double>& well_rate)
{
UnstructuredGrid* gg = const_cast<UnstructuredGrid*>(&grid_);
tpfa_eff_trans_compute(gg, &totmob[0], &htrans_[0], &trans_[0]);

View File

@ -72,12 +72,18 @@ namespace Opm
/// If null, noflow conditions are assumed.
/// \param[out] pressure Will contain N cell-pressure values.
/// \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
void solve(const std::vector<double>& totmob,
const std::vector<double>& omega,
const std::vector<double>& src,
const FlowBoundaryConditions* bcs,
std::vector<double>& pressure,
std::vector<double>& faceflux);
std::vector<double>& faceflux,
std::vector<double>& well_bhp,
std::vector<double>& well_rate);
/// Assemble and solve pressure system with rock compressibility (assumed constant per cell).
/// \param[in] totmob Must contain N total mobility values (one per cell).
@ -97,6 +103,10 @@ namespace Opm
/// \param[in] dt Timestep.
/// \param[out] pressure Will contain N cell-pressure values.
/// \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
void solve(const std::vector<double>& totmob,
const std::vector<double>& omega,
const std::vector<double>& src,
@ -105,7 +115,9 @@ namespace Opm
const std::vector<double>& rock_comp,
const double dt,
std::vector<double>& pressure,
std::vector<double>& faceflux);
std::vector<double>& faceflux,
std::vector<double>& well_bhp,
std::vector<double>& well_rate);
/// Expose read-only reference to internal half-transmissibility.
const ::std::vector<double>& getHalfTrans() const { return htrans_; }