Opm::MultisegmentWell< TypeTag > Class Template Reference

Inheritance diagram for Opm::MultisegmentWell< TypeTag >:
Opm::WellInterface< TypeTag >

List of all members.

Public Types

typedef WellInterface< TypeTag > Base
typedef Dune::FieldVector
< Scalar, numWellEq
VectorBlockWellType
typedef Dune::BlockVector
< VectorBlockWellType > 
BVectorWell
typedef Dune::FieldMatrix
< Scalar, numWellEq, numWellEq
DiagMatrixBlockWellType
typedef Dune::BCRSMatrix
< DiagMatrixBlockWellType > 
DiagMatWell
typedef Dune::FieldMatrix
< Scalar, numWellEq, numEq > 
OffDiagMatrixBlockWellType
typedef Dune::BCRSMatrix
< OffDiagMatrixBlockWellType > 
OffDiagMatWell
typedef DenseAd::Evaluation
< double, numEq+numWellEq
EvalWell
typedef BlackoilModelParameters ModelParameters
typedef double Scalar
typedef Dune::BCRSMatrix
< MatrixBlockType > 
Mat
typedef Dune::BlockVector
< VectorBlockType > 
BVector
typedef DenseAd::Evaluation
< double, numEq > 
Eval

Public Member Functions

 MultisegmentWell (const Well *well, const int time_step, const Wells *wells, const ModelParameters &param)
virtual void init (const PhaseUsage *phase_usage_arg, const std::vector< bool > *active_arg, const std::vector< double > &depth_arg, const double gravity_arg, const int num_cells)
virtual void initPrimaryVariablesEvaluation () const
virtual void assembleWellEq (Simulator &ebosSimulator, const double dt, WellState &well_state, bool only_wells)
virtual void updateWellStateWithTarget (const int current, WellState &well_state) const
 updating the well state based the control mode specified with current
virtual ConvergenceReport getWellConvergence (const std::vector< double > &B_avg) const
 check whether the well equations get converged for this well
virtual void apply (const BVector &x, BVector &Ax) const
 Ax = Ax - C D^-1 B x.
virtual void apply (BVector &r) const
 r = r - C D^-1 Rw
virtual void recoverWellSolutionAndUpdateWellState (const BVector &x, WellState &well_state) const
 using the solution x to recover the solution xw for wells and applying xw to update Well State
virtual void computeWellPotentials (const Simulator &ebosSimulator, const WellState &well_state, std::vector< double > &well_potentials)
 computing the well potentials for group control
virtual void updatePrimaryVariables (const WellState &well_state) const
virtual void solveEqAndUpdateWellState (WellState &well_state)
virtual void calculateExplicitQuantities (const Simulator &ebosSimulator, const WellState &well_state)
int numberOfSegments () const
 number of segments for this well int number_of_segments_;
int numberOfPerforations () const

Static Public Attributes

static const bool gasoil = numEq == 2 && (BlackoilIndices::compositionSwitchIdx >= 0)
static const int GTotal = 0
static const int WFrac = gasoil? -1000: 1
static const int GFrac = gasoil? 1 : 2
static const int SPres = gasoil? 2 : 3
static const int numWellEq = GET_PROP_VALUE(TypeTag, EnablePolymer)? numEq : numEq + 1
 the number of well equations // TODO: it should have a more general strategy for it

Protected Member Functions

WellSegment::CompPressureDropEnum compPressureDrop () const
WellSegment::MultiPhaseModelEnum multiphaseModel () const
const SegmentSet & segmentSet () const
int segmentNumberToIndex (const int segment_number) const
void initMatrixAndVectors (const int num_cells) const
void recoverSolutionWell (const BVector &x, BVectorWell &xw) const
void updateWellState (const BVectorWell &dwells, const bool inner_iteration, WellState &well_state) const
void initSegmentRatesWithWellRates (WellState &well_state) const
void computeInitialComposition ()
void computePerfCellPressDiffs (const Simulator &ebosSimulator)
EvalWell volumeFraction (const int seg, const int comp_idx) const
EvalWell volumeFractionScaled (const int seg, const int comp_idx) const
EvalWell surfaceVolumeFraction (const int seg, const int comp_idx) const
void computePerfRate (const IntensiveQuantities &int_quants, const std::vector< EvalWell > &mob_perfcells, const int seg, const int perf, const EvalWell &segment_pressure, const bool &allow_cf, std::vector< EvalWell > &cq_s) const
EvalWell extendEval (const Eval &in) const
void computeSegmentFluidProperties (const Simulator &ebosSimulator)
EvalWell getSegmentPressure (const int seg) const
EvalWell getSegmentRate (const int seg, const int comp_idx) const
EvalWell getSegmentGTotal (const int seg) const
void getMobility (const Simulator &ebosSimulator, const int perf, std::vector< EvalWell > &mob) const
void assembleControlEq () const
void assemblePressureEq (const int seg) const
EvalWell getHydroPressureLoss (const int seg) const
EvalWell getFrictionPressureLoss (const int seg) const
void handleAccelerationPressureLoss (const int seg) const
void processFractions (const int seg) const
void updateWellStateFromPrimaryVariables (WellState &well_state) const
double scalingFactor (const int comp_idx) const
bool frictionalPressureLossConsidered () const
bool accelerationalPressureLossConsidered () const
void iterateWellEquations (Simulator &ebosSimulator, const double dt, WellState &well_state)
void assembleWellEqWithoutIteration (Simulator &ebosSimulator, const double dt, WellState &well_state, bool only_wells)

Protected Attributes

int number_segments_
std::vector< std::vector< int > > segment_perforations_
std::vector< std::vector< int > > segment_inlets_
OffDiagMatWell duneB_
OffDiagMatWell duneC_
DiagMatWell duneD_
BVectorWell resWell_
std::vector< std::array
< double, numWellEq > > 
primary_variables_
std::vector< std::array
< EvalWell, numWellEq > > 
primary_variables_evaluation_
std::vector< double > cell_perforation_depth_diffs_
std::vector< double > cell_perforation_pressure_diffs_
std::vector< double > perforation_segment_depth_diffs_
std::vector< std::vector
< double > > 
segment_comp_initial_
std::vector< EvalWell > segment_densities_
std::vector< EvalWell > segment_viscosities_
std::vector< EvalWell > segment_mass_rates_
std::vector< double > segment_depth_diffs_

template<typename TypeTag>
class Opm::MultisegmentWell< TypeTag >


The documentation for this class was generated from the following files:

Generated on 26 Mar 2018 by  doxygen 1.6.1