mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
removing the StandardWells definition inside BlackoilModelBase
and some other tiny cleaning up.
This commit is contained in:
parent
624516ed3c
commit
23ba5fa398
@ -32,6 +32,7 @@
|
||||
#include <opm/autodiff/NewtonIterationBlackoilInterface.hpp>
|
||||
#include <opm/autodiff/BlackoilModelEnums.hpp>
|
||||
#include <opm/autodiff/VFPProperties.hpp>
|
||||
#include <opm/autodiff/StandardWells.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/NNC.hpp>
|
||||
|
||||
#include <array>
|
||||
@ -269,44 +270,6 @@ namespace Opm {
|
||||
ADB mob; // Phase mobility (per cell)
|
||||
};
|
||||
|
||||
class StandardWells {
|
||||
protected:
|
||||
struct WellOps {
|
||||
explicit WellOps(const Wells* wells);
|
||||
Eigen::SparseMatrix<double> w2p; // well -> perf (scatter)
|
||||
Eigen::SparseMatrix<double> p2w; // perf -> well (gather)
|
||||
std::vector<int> well_cells; // the set of perforated cells
|
||||
};
|
||||
|
||||
public:
|
||||
explicit StandardWells(const Wells* wells);
|
||||
|
||||
const Wells& wells() const;
|
||||
|
||||
// return true if wells are available in the reservoir
|
||||
bool wellsActive() const;
|
||||
void setWellsActive(const bool wells_active);
|
||||
// return true if wells are available on this process
|
||||
bool localWellsActive() const;
|
||||
|
||||
const WellOps& wellOps() const;
|
||||
|
||||
//Density of each well perforation
|
||||
V& wellPerforationDensities();
|
||||
const V& wellPerforationDensities() const;
|
||||
|
||||
// Diff to bhp for each well perforation.
|
||||
V& wellPerforationPressureDiffs();
|
||||
const V& wellPerforationPressureDiffs() const;
|
||||
|
||||
protected:
|
||||
bool wells_active_;
|
||||
const Wells* wells_;
|
||||
const WellOps wops_;
|
||||
V well_perforation_densities_;
|
||||
V well_perforation_pressure_diffs_;
|
||||
};
|
||||
|
||||
// --------- Data members ---------
|
||||
|
||||
const Grid& grid_;
|
||||
|
@ -418,169 +418,6 @@ namespace detail {
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::
|
||||
WellOps::WellOps(const Wells* wells)
|
||||
: w2p(),
|
||||
p2w(),
|
||||
well_cells()
|
||||
{
|
||||
if( wells )
|
||||
{
|
||||
w2p = Eigen::SparseMatrix<double>(wells->well_connpos[ wells->number_of_wells ], wells->number_of_wells);
|
||||
p2w = Eigen::SparseMatrix<double>(wells->number_of_wells, wells->well_connpos[ wells->number_of_wells ]);
|
||||
|
||||
const int nw = wells->number_of_wells;
|
||||
const int* const wpos = wells->well_connpos;
|
||||
|
||||
typedef Eigen::Triplet<double> Tri;
|
||||
|
||||
std::vector<Tri> scatter, gather;
|
||||
scatter.reserve(wpos[nw]);
|
||||
gather .reserve(wpos[nw]);
|
||||
|
||||
for (int w = 0, i = 0; w < nw; ++w) {
|
||||
for (; i < wpos[ w + 1 ]; ++i) {
|
||||
scatter.push_back(Tri(i, w, 1.0));
|
||||
gather .push_back(Tri(w, i, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
w2p.setFromTriplets(scatter.begin(), scatter.end());
|
||||
p2w.setFromTriplets(gather .begin(), gather .end());
|
||||
|
||||
well_cells.assign(wells->well_cells, wells->well_cells + wells->well_connpos[wells->number_of_wells]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::StandardWells(const Wells* wells_arg)
|
||||
: wells_(wells_arg)
|
||||
, wops_(wells_arg)
|
||||
, well_perforation_densities_(V())
|
||||
, well_perforation_pressure_diffs_(V())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
const Wells&
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wells() const
|
||||
{
|
||||
assert(wells_ != 0);
|
||||
return *(wells_);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
bool
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wellsActive() const
|
||||
{
|
||||
return wells_active_;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
void
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::setWellsActive(const bool wells_active)
|
||||
{
|
||||
wells_active_ = wells_active;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
bool
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::localWellsActive() const
|
||||
{
|
||||
return wells_ ? (wells_->number_of_wells > 0 ) : false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
const typename BlackoilModelBase<Grid, Implementation>::StandardWells::WellOps&
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wellOps() const
|
||||
{
|
||||
return wops_;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
V&
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wellPerforationDensities()
|
||||
{
|
||||
return well_perforation_densities_;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
const V&
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wellPerforationDensities() const
|
||||
{
|
||||
return well_perforation_densities_;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
V&
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wellPerforationPressureDiffs()
|
||||
{
|
||||
return well_perforation_pressure_diffs_;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
const V&
|
||||
BlackoilModelBase<Grid, Implementation>::
|
||||
StandardWells::wellPerforationPressureDiffs() const
|
||||
{
|
||||
return well_perforation_pressure_diffs_;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template <class Grid, class Implementation>
|
||||
int
|
||||
BlackoilModelBase<Grid, Implementation>::numWellVars() const
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright 2016 SINTEF ICT, Applied Mathematics.
|
||||
Copyright 2016 Statoil ASA.
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright 2016 SINTEF ICT, Applied Mathematics.
|
||||
Copyright 2016 Statoil ASA.
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
|
||||
@ -37,7 +38,6 @@ namespace Opm {
|
||||
// --------- Types ---------
|
||||
typedef AutoDiffBlock<double> ADB;
|
||||
typedef ADB::V Vector;
|
||||
// typedef ADB::M Matrix;
|
||||
|
||||
/// Class for handling the standard well model.
|
||||
class StandardWells {
|
||||
|
Loading…
Reference in New Issue
Block a user