20 #ifndef OPM_WELLSMANAGER_HEADER_INCLUDED
21 #define OPM_WELLSMANAGER_HEADER_INCLUDED
24 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
28 #include <opm/parser/eclipse/EclipseState/Schedule/GroupTree.hpp>
76 template<
class F2C,
class FC>
77 WellsManager(
const Opm::EclipseStateConstPtr eclipseState,
78 const size_t timeStep,
80 const int* global_cell,
84 FC begin_face_centroids,
85 const double* permeability,
86 bool is_parallel_run=
false);
88 WellsManager(
const Opm::EclipseStateConstPtr eclipseState,
89 const size_t timeStep,
91 const double* permeability);
127 const std::vector<double>& well_reservoirrates_phase,
128 const std::vector<double>& well_surfacerates_phase);
140 const std::vector<double>& well_surfacerates_phase);
144 template<
class C2F,
class FC>
145 void init(
const Opm::EclipseStateConstPtr eclipseState,
146 const size_t timeStep,
148 const int* global_cell,
149 const int* cart_dims,
151 const C2F& cell_to_faces,
152 FC begin_face_centroids,
153 const double* permeability);
157 static void setupCompressedToCartesian(
const int* global_cell,
int number_of_cells, std::map<int,int>& cartesian_to_compressed );
158 void setupWellControls(std::vector<WellConstPtr>& wells,
size_t timeStep,
159 std::vector<std::string>& well_names,
const PhaseUsage& phaseUsage,
160 const std::vector<int>& wells_on_proc);
162 template<
class C2F,
class FC,
class NTG>
163 void createWellsFromSpecs( std::vector<WellConstPtr>& wells,
size_t timeStep,
164 const C2F& cell_to_faces,
165 const int* cart_dims,
166 FC begin_face_centroids,
168 std::vector<double>& dz,
169 std::vector<std::string>& well_names,
170 std::vector<WellData>& well_data,
171 std::map<std::string, int> & well_names_to_index,
173 const std::map<int,int>& cartesian_to_compressed,
174 const double* permeability,
176 std::vector<int>& wells_on_proc);
178 void addChildGroups(GroupTreeNodeConstPtr parentNode, ScheduleConstPtr schedule,
size_t timeStep,
const PhaseUsage& phaseUsage);
179 void setupGuideRates(std::vector<WellConstPtr>& wells,
const size_t timeStep, std::vector<WellData>& well_data, std::map<std::string, int>& well_names_to_index);
186 bool is_parallel_run_;
192 #endif // OPM_WELLSMANAGER_HEADER_INCLUDED
Definition: AnisotropicEikonal.hpp:43
const WellCollection & wellCollection() const
Access the well group hierarchy.
double reference_bhp_depth
Definition: WellsManager.hpp:44
bool empty() const
Does the "deck" define any wells?
~WellsManager()
Destructor.
WellsManager()
Default constructor – no wells.
int welspecsline
Definition: WellsManager.hpp:46
Definition: WellsManager.hpp:59
bool allowCrossFlow
Definition: WellsManager.hpp:41
int dimensions(const UnstructuredGrid &grid)
Get the dimensions of a grid.
bool conditionsMet(const std::vector< double > &well_bhp, const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase)
void applyExplicitReinjectionControls(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase)
Definition: WellCollection.hpp:35
WellType type
Definition: WellsManager.hpp:40
Definition: WellsManager.hpp:50
int cell
Definition: WellsManager.hpp:52
WellType
Definition: wells.h:41
const UnstructuredGrid & grid
Definition: ColumnExtract.hpp:31
const Wells * c_wells() const
Definition: WellsManager.hpp:38
Definition: BlackoilPhases.hpp:36
double well_index
Definition: WellsManager.hpp:53