mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
using legacyDepth_ for the perfoation depth
for StandardWell. It turns out that it can be different with the grid.getCellDepth() from the parser.
This commit is contained in:
parent
6e0da756dc
commit
4f716a633d
@ -116,6 +116,7 @@ namespace Opm
|
|||||||
virtual void init(const PhaseUsage* phase_usage_arg,
|
virtual void init(const PhaseUsage* phase_usage_arg,
|
||||||
const std::vector<bool>* active_arg,
|
const std::vector<bool>* active_arg,
|
||||||
const VFPProperties* vfp_properties_arg,
|
const VFPProperties* vfp_properties_arg,
|
||||||
|
const std::vector<double>& depth_arg,
|
||||||
const double gravity_arg,
|
const double gravity_arg,
|
||||||
const int num_cells);
|
const int num_cells);
|
||||||
|
|
||||||
|
@ -45,12 +45,19 @@ namespace Opm
|
|||||||
init(const PhaseUsage* phase_usage_arg,
|
init(const PhaseUsage* phase_usage_arg,
|
||||||
const std::vector<bool>* active_arg,
|
const std::vector<bool>* active_arg,
|
||||||
const VFPProperties* vfp_properties_arg,
|
const VFPProperties* vfp_properties_arg,
|
||||||
|
const std::vector<double>& depth_arg,
|
||||||
const double gravity_arg,
|
const double gravity_arg,
|
||||||
const int num_cells)
|
const int num_cells)
|
||||||
{
|
{
|
||||||
WellInterface<TypeTag>::init(phase_usage_arg, active_arg,
|
WellInterface<TypeTag>::init(phase_usage_arg, active_arg,
|
||||||
vfp_properties_arg, gravity_arg, num_cells);
|
vfp_properties_arg, depth_arg,
|
||||||
|
gravity_arg, num_cells);
|
||||||
|
|
||||||
|
perf_depth_.resize(numberOfPerforations(), 0.);
|
||||||
|
for (int perf = 0; perf < numberOfPerforations(); ++perf) {
|
||||||
|
const int cell_idx = wellCells()[perf];
|
||||||
|
perf_depth_[perf] = depth_arg[cell_idx];
|
||||||
|
}
|
||||||
|
|
||||||
// setup sparsity pattern for the matrices
|
// setup sparsity pattern for the matrices
|
||||||
//[A C^T [x = [ res
|
//[A C^T [x = [ res
|
||||||
|
@ -84,7 +84,7 @@ namespace Opm {
|
|||||||
// TODO: to see whether we can postpone of the intialization of the well containers to
|
// TODO: to see whether we can postpone of the intialization of the well containers to
|
||||||
// optimize the usage of the following several member variables
|
// optimize the usage of the following several member variables
|
||||||
for (auto& well : well_container_) {
|
for (auto& well : well_container_) {
|
||||||
well->init(&phase_usage_, &active_, vfp_properties_, gravity_, nc);
|
well->init(&phase_usage_, &active_, vfp_properties_, depth_arg, gravity_, nc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,6 +134,7 @@ namespace Opm
|
|||||||
virtual void init(const PhaseUsage* phase_usage_arg,
|
virtual void init(const PhaseUsage* phase_usage_arg,
|
||||||
const std::vector<bool>* active_arg,
|
const std::vector<bool>* active_arg,
|
||||||
const VFPProperties* vfp_properties_arg,
|
const VFPProperties* vfp_properties_arg,
|
||||||
|
const std::vector<double>& depth_arg,
|
||||||
const double gravity_arg,
|
const double gravity_arg,
|
||||||
const int num_cells);
|
const int num_cells);
|
||||||
|
|
||||||
@ -262,6 +263,7 @@ namespace Opm
|
|||||||
// well index for each perforation
|
// well index for each perforation
|
||||||
std::vector<double> well_index_;
|
std::vector<double> well_index_;
|
||||||
|
|
||||||
|
// TODO: it might should go to StandardWell
|
||||||
// depth for each perforation
|
// depth for each perforation
|
||||||
std::vector<double> perf_depth_;
|
std::vector<double> perf_depth_;
|
||||||
|
|
||||||
|
@ -83,16 +83,6 @@ namespace Opm
|
|||||||
std::copy(wells->sat_table_id + perf_index_begin,
|
std::copy(wells->sat_table_id + perf_index_begin,
|
||||||
wells->sat_table_id + perf_index_end,
|
wells->sat_table_id + perf_index_end,
|
||||||
saturation_table_number_.begin() );
|
saturation_table_number_.begin() );
|
||||||
|
|
||||||
|
|
||||||
// TODO: not sure about the processing of depth for perforations here
|
|
||||||
// Will revisit here later. There are different ways and the definition for different wells
|
|
||||||
// can be different, it is possible that we need to remove this from the WellInterface
|
|
||||||
perf_depth_.resize(number_of_perforations_, 0.);
|
|
||||||
const auto& completion_set = well->getCompletions(time_step);
|
|
||||||
for (int i = 0; i < number_of_perforations_; ++i) {
|
|
||||||
perf_depth_[i] = completion_set.get(i).getCenterDepth();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
well_efficiency_factor_ = 1.0;
|
well_efficiency_factor_ = 1.0;
|
||||||
@ -108,6 +98,7 @@ namespace Opm
|
|||||||
init(const PhaseUsage* phase_usage_arg,
|
init(const PhaseUsage* phase_usage_arg,
|
||||||
const std::vector<bool>* active_arg,
|
const std::vector<bool>* active_arg,
|
||||||
const VFPProperties* vfp_properties_arg,
|
const VFPProperties* vfp_properties_arg,
|
||||||
|
const std::vector<double>& /* depth_arg */,
|
||||||
const double gravity_arg,
|
const double gravity_arg,
|
||||||
const int /* num_cells */)
|
const int /* num_cells */)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user