Add method WellConnections::addConnection()

This commit is contained in:
Joakim Hove
2018-06-24 14:44:58 +02:00
parent 7332ee4b18
commit d52d4cc3a6
2 changed files with 70 additions and 0 deletions

View File

@@ -29,8 +29,17 @@ namespace Opm {
class WellConnections {
public:
WellConnections() = default;
WellConnections(int headI, int headJ);
// cppcheck-suppress noExplicitConstructor
WellConnections(const WellConnections& src, const EclipseGrid& grid);
void addConnection(int i, int j , int k ,
double depth,
WellCompletion::StateEnum state ,
const Value<double>& connectionTransmissibilityFactor,
const Value<double>& diameter,
const Value<double>& skinFactor,
const int satTableId,
const WellCompletion::DirectionEnum direction = WellCompletion::DirectionEnum::Z);
using const_iterator = std::vector< Connection >::const_iterator;
@@ -62,8 +71,19 @@ namespace Opm {
bool operator!=( const WellConnections& ) const;
private:
void addConnection(int i, int j , int k ,
int complnum,
double depth,
WellCompletion::StateEnum state ,
const Value<double>& connectionTransmissibilityFactor,
const Value<double>& diameter,
const Value<double>& skinFactor,
const int satTableId,
const WellCompletion::DirectionEnum direction = WellCompletion::DirectionEnum::Z);
std::vector< Connection > m_connections;
size_t findClosestConnection(int oi, int oj, double oz, size_t start_pos);
int headI, headJ;
};
}

View File

@@ -28,6 +28,13 @@
namespace Opm {
WellConnections::WellConnections(int headI, int headJ) :
headI(headI),
headJ(headJ)
{
}
WellConnections::WellConnections(const WellConnections& src, const EclipseGrid& grid) {
for (const auto& c : src) {
@@ -36,6 +43,49 @@ namespace Opm {
}
}
void WellConnections::addConnection(int i, int j , int k ,
int complnum,
double depth,
WellCompletion::StateEnum state ,
const Value<double>& connectionTransmissibilityFactor,
const Value<double>& diameter,
const Value<double>& skinFactor,
const int satTableId,
const WellCompletion::DirectionEnum direction)
{
int conn_i = (i < 0) ? this->headI : i;
int conn_j = (j < 0) ? this->headJ : j;
Connection conn(conn_i, conn_j, k, complnum, depth, state, connectionTransmissibilityFactor, diameter, skinFactor, satTableId, direction);
this->add(conn);
}
void WellConnections::addConnection(int i, int j , int k ,
double depth,
WellCompletion::StateEnum state ,
const Value<double>& connectionTransmissibilityFactor,
const Value<double>& diameter,
const Value<double>& skinFactor,
const int satTableId,
const WellCompletion::DirectionEnum direction)
{
int complnum = -(this->m_connections.size() + 1);
this->addConnection(i,
j,
k,
complnum,
depth,
state,
connectionTransmissibilityFactor,
diameter,
skinFactor,
satTableId,
direction);
}
size_t WellConnections::size() const {
return m_connections.size();
}