22 #ifndef OPM_BLACKOILPROPSADFROMDECK_HEADER_INCLUDED
23 #define OPM_BLACKOILPROPSADFROMDECK_HEADER_INCLUDED
25 #include <opm/autodiff/AutoDiffBlock.hpp>
26 #include <opm/autodiff/BlackoilModelEnums.hpp>
28 #include <opm/core/props/satfunc/SaturationPropsFromDeck.hpp>
29 #include <opm/core/props/rock/RockFromDeck.hpp>
31 #include <opm/material/fluidsystems/BlackOilFluidSystem.hpp>
32 #include <opm/material/densead/Math.hpp>
33 #include <opm/material/densead/Evaluation.hpp>
35 #include <opm/parser/eclipse/Deck/Deck.hpp>
36 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
43 #include <opm/common/utility/platform_dependent/disable_warnings.h>
44 #include <dune/grid/CpGrid.hpp>
45 #include <opm/common/utility/platform_dependent/reenable_warnings.h>
63 friend class BlackoilPropsDataHandle;
65 typedef FluidSystems::BlackOil<double> FluidSystem;
66 typedef Opm::GasPvtMultiplexer<double> GasPvt;
67 typedef Opm::OilPvtMultiplexer<double> OilPvt;
68 typedef Opm::WaterPvtMultiplexer<double> WaterPvt;
70 typedef typename SaturationPropsFromDeck::MaterialLawManager MaterialLawManager;
87 const Opm::EclipseState& eclState,
88 std::shared_ptr<MaterialLawManager> materialLawManager,
89 const UnstructuredGrid& grid,
90 const bool init_rock =
true );
108 const Opm::EclipseState& eclState,
109 std::shared_ptr<MaterialLawManager> materialLawManager,
110 const Dune::CpGrid& grid,
111 const bool init_rock =
true );
122 const Opm::EclipseState& eclState,
123 const UnstructuredGrid& grid,
124 const bool init_rock =
true );
135 const Opm::EclipseState& eclState,
136 const Dune::CpGrid& grid,
137 const bool init_rock =
true );
153 std::shared_ptr<MaterialLawManager> materialLawManager,
154 const int number_of_cells);
170 {
return &cellPvtRegionIdx_[0]; }
187 typedef std::vector<int> Cells;
213 const Cells& cells)
const;
225 const std::vector<PhasePresence>& cond,
226 const Cells& cells)
const;
238 const std::vector<PhasePresence>& cond,
239 const Cells& cells)
const;
250 const Cells& cells)
const;
262 const std::vector<PhasePresence>& cond,
263 const Cells& cells)
const;
275 const std::vector<PhasePresence>& cond,
276 const Cells& cells)
const;
285 const Cells& cells)
const;
294 const Cells& cells)
const;
301 const Cells& cells)
const;
310 const Cells& cells)
const;
319 const Cells& cells)
const;
328 const Cells& cells)
const;
342 const Cells& cells)
const;
355 const Cells& cells)
const;
360 const std::vector<int>& cells);
366 const std::vector<double>& krnswdc,
367 const std::vector<int>& cells);
373 std::vector<double>& krnswdc,
374 const std::vector<int>& cells)
const;
380 const std::vector<double>& krnswdc,
381 const std::vector<int>& cells);
387 std::vector<double>& krnswdc,
388 const std::vector<int>& cells)
const;
395 const std::vector<double>&
satOilMax()
const;
418 const std::vector<double>& pc);
433 return FluidSystem::waterPvt();
439 return FluidSystem::oilPvt();
445 return FluidSystem::gasPvt();
451 return *materialLawManager_;
455 const std::vector<int>& pvtRegions()
const
457 return cellPvtRegionIdx_;
463 void init(
const Opm::Deck& deck,
464 const Opm::EclipseState& eclState,
465 std::shared_ptr<MaterialLawManager> materialLawManager,
467 const int* global_cell,
468 const int* cart_dims,
469 const bool init_rock);
474 const std::vector<int>& cells,
475 const double vap)
const;
477 void applyVap(ADB& r,
479 const std::vector<int>& cells,
480 const double vap)
const;
486 std::shared_ptr<MaterialLawManager> materialLawManager_;
487 std::shared_ptr<SaturationPropsFromDeck> satprops_;
489 PhaseUsage phase_usage_;
494 std::vector<int> cellPvtRegionIdx_;
499 std::vector<double> satOilMax_;
500 double vap_satmax_guard_;
504 #endif // OPM_BLACKOILPROPSADFROMDECK_HEADER_INCLUDED
std::vector< double > bubblePointPressure(const Cells &cells, const V &T, const V &rs) const
Returns the bubble point pressures.
Definition: BlackoilPropsAdFromDeck.cpp:958
ADB muGas(const ADB &pg, const ADB &T, const ADB &rv, const std::vector< PhasePresence > &cond, const Cells &cells) const
Gas viscosity.
Definition: BlackoilPropsAdFromDeck.cpp:381
std::vector< ADB > relperm(const ADB &sw, const ADB &so, const ADB &sg, const Cells &cells) const
Relative permeabilities for all phases.
Definition: BlackoilPropsAdFromDeck.cpp:748
ADB bWat(const ADB &pw, const ADB &T, const Cells &cells) const
Water formation volume factor.
Definition: BlackoilPropsAdFromDeck.cpp:446
int numDimensions() const
Definition: BlackoilPropsAdFromDeck.cpp:194
ADB muWat(const ADB &pw, const ADB &T, const Cells &cells) const
Water viscosity.
Definition: BlackoilPropsAdFromDeck.cpp:263
V rsSat(const V &po, const Cells &cells) const
Bubble point curve for Rs as function of oil pressure.
void getOilWaterHystParams(std::vector< double > &pcswmdc, std::vector< double > &krnswdc, const std::vector< int > &cells) const
Set oil-water hysteresis parameters.
Definition: BlackoilPropsAdFromDeck.cpp:921
void updateSatOilMax(const std::vector< double > &saturation)
Update for max oil saturation.
Definition: BlackoilPropsAdFromDeck.cpp:932
ADB rvSat(const ADB &po, const Cells &cells) const
Condensation curve for Rv as function of oil pressure.
Definition: BlackoilPropsAdFromDeck.cpp:688
V scaledCriticalGasSaturations(const Cells &cells) const
Obtain the scaled critical gas saturation values.
Definition: BlackoilPropsAdFromDeck.cpp:1102
const OilPvt & oilProps() const
Direct access to lower-level oil pvt props.
Definition: BlackoilPropsAdFromDeck.hpp:437
int numPhases() const
Definition: BlackoilPropsAdFromDeck.cpp:225
void setSatOilMax(const std::vector< double > &max_sat)
Force set max oil saturation (used for restarting)
Definition: BlackoilPropsAdFromDeck.cpp:952
void setGasOilHystParams(const std::vector< double > &pcswmdc, const std::vector< double > &krnswdc, const std::vector< int > &cells)
Set gas-oil hysteresis parameters.
Definition: BlackoilPropsAdFromDeck.cpp:882
ADB bOil(const ADB &po, const ADB &T, const ADB &rs, const std::vector< PhasePresence > &cond, const Cells &cells) const
Oil formation volume factor.
Definition: BlackoilPropsAdFromDeck.cpp:493
int numCells() const
Definition: BlackoilPropsAdFromDeck.cpp:200
void getGasOilHystParams(std::vector< double > &pcswmdc, std::vector< double > &krnswdc, const std::vector< int > &cells) const
Get gas-oil hysteresis parameters.
Definition: BlackoilPropsAdFromDeck.cpp:895
const double * porosity() const
Definition: BlackoilPropsAdFromDeck.cpp:206
std::vector< double > dewPointPressure(const Cells &cells, const V &T, const V &rv) const
Returns the dew point pressures.
Definition: BlackoilPropsAdFromDeck.cpp:982
void updateSatHyst(const std::vector< double > &saturation, const std::vector< int > &cells)
Saturation update for hysteresis behavior.
Definition: BlackoilPropsAdFromDeck.cpp:872
const std::vector< double > & satOilMax() const
Returns the max oil saturation vector.
Definition: BlackoilPropsAdFromDeck.cpp:946
V scaledCriticalOilinGasSaturations(const Cells &cells) const
Obtain the scaled critical oil in gas saturation values.
Definition: BlackoilPropsAdFromDeck.cpp:1082
void setOilWaterHystParams(const std::vector< double > &pcswmdc, const std::vector< double > &krnswdc, const std::vector< int > &cells)
Set oil-water hysteresis parameters.
Definition: BlackoilPropsAdFromDeck.cpp:908
ADB bGas(const ADB &pg, const ADB &T, const ADB &rv, const std::vector< PhasePresence > &cond, const Cells &cells) const
Gas formation volume factor.
Definition: BlackoilPropsAdFromDeck.cpp:566
const WaterPvt & waterProps() const
Direct access to lower-level water pvt props.
Definition: BlackoilPropsAdFromDeck.hpp:431
const MaterialLawManager & materialLaws() const
Direct access to lower-level saturation functions.
Definition: BlackoilPropsAdFromDeck.hpp:449
V surfaceDensity(const int phaseIdx, const Cells &cells) const
Densities of stock components at surface conditions.
Definition: BlackoilPropsAdFromDeck.cpp:242
const double * permeability() const
Definition: BlackoilPropsAdFromDeck.cpp:214
std::vector< ADB > capPress(const ADB &sw, const ADB &so, const ADB &sg, const Cells &cells) const
Capillary pressure for all phases.
Definition: BlackoilPropsAdFromDeck.cpp:809
void setSwatInitScaling(const std::vector< double > &saturation, const std::vector< double > &pc)
Set capillary pressure scaling according to pressure diff.
Definition: BlackoilPropsAdFromDeck.cpp:1008
virtual const int * cellPvtRegionIndex() const
Return an array containing the PVT table index for each grid cell.
Definition: BlackoilPropsAdFromDeck.hpp:169
const GasPvt & gasProps() const
Direct access to lower-level gas pvt props.
Definition: BlackoilPropsAdFromDeck.hpp:443
PhaseUsage phaseUsage() const
Definition: BlackoilPropsAdFromDeck.cpp:231
This class implements the AD-adapted fluid interface for three-phase black-oil.
Definition: BlackoilPropsAdFromDeck.hpp:61
Eigen::Array< Scalar, Eigen::Dynamic, 1 > V
Underlying type for values.
Definition: AutoDiffBlock.hpp:99
BlackoilPropsAdFromDeck(const Opm::Deck &deck, const Opm::EclipseState &eclState, std::shared_ptr< MaterialLawManager > materialLawManager, const UnstructuredGrid &grid, const bool init_rock=true)
Constructor to create a blackoil properties from an ECL deck.
Definition: BlackoilPropsAdFromDeck.cpp:48
ADB muOil(const ADB &po, const ADB &T, const ADB &rs, const std::vector< PhasePresence > &cond, const Cells &cells) const
Oil viscosity.
Definition: BlackoilPropsAdFromDeck.cpp:314