blackoilpolymermodules.hh
Go to the documentation of this file.
52template <class TypeTag, bool enablePolymerV = getPropValue<TypeTag, Properties::EnablePolymer>()>
81 static constexpr bool enablePolymerMolarWeight = getPropValue<TypeTag, Properties::EnablePolymerMW>();
102 throw std::runtime_error(" the PLYMWINJ table " + std::to_string(tableNumber) + " does not exist\n");
116 throw std::runtime_error(" the SKPRWAT table " + std::to_string(tableNumber) + " does not exist\n");
131 throw std::runtime_error(" the SKPRPOLY table " + std::to_string(tableNumber) + " does not exist\n");
269 const unsigned contiWaterEqIdx = Indices::conti0EqIdx + Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx);
430 const unsigned polymerMixRegionIdx = elemCtx.problem().plmixnumRegionIndex(elemCtx, scvIdx, timeIdx);
462 const auto& viscosityMultiplierTable = params_.plyviscViscosityMultiplierTable_[pvtnumRegionIdx];
463 Scalar viscosityMultiplier = viscosityMultiplierTable.eval(scalarValue(polymerConcentration), /*extrapolate=*/true);
470 const std::vector<Scalar>& shearEffectRefLogVelocity = params_.plyshlogShearEffectRefLogVelocity_[pvtnumRegionIdx];
480 const std::vector<Scalar>& shearEffectRefMultiplier = params_.plyshlogShearEffectRefMultiplier_[pvtnumRegionIdx];
486 shearEffectMultiplier[i] = (1.0 + (viscosityMultiplier - 1.0)*shearEffectRefMultiplier[i]) / viscosityMultiplier;
491 TabulatedFunction logShearEffectMultiplier = TabulatedFunction(numTableEntries, shearEffectRefLogVelocity, shearEffectMultiplier, /*bool sortInputs =*/ false);
550template <class TypeTag, bool enablePolymerV = getPropValue<TypeTag, Properties::EnablePolymer>()>
568 static constexpr bool enablePolymerMolarWeight = getPropValue<TypeTag, Properties::EnablePolymerMW>();
585 polymerConcentration_ = priVars.makeEvaluation(polymerConcentrationIdx, timeIdx, linearizationType);
592 const auto& plyadsAdsorbedPolymer = PolymerModule::plyadsAdsorbedPolymer(elemCtx, dofIdx, timeIdx);
594 if (PolymerModule::plyrockAdsorbtionIndex(elemCtx, dofIdx, timeIdx) == BlackOilPolymerParams<Scalar>::NoDesorption) {
595 const Scalar& maxPolymerAdsorption = elemCtx.problem().maxPolymerAdsorption(elemCtx, dofIdx, timeIdx);
600 const Scalar& residualResistanceFactor = PolymerModule::plyrockResidualResistanceFactor(elemCtx, dofIdx, timeIdx);
601 const Evaluation resistanceFactor = 1.0 + (residualResistanceFactor - 1.0) * polymerAdsorption_ / maxAdsorbtion;
608 const auto& viscosityMultiplier = PolymerModule::plyviscViscosityMultiplierTable(elemCtx, dofIdx, timeIdx);
609 const Evaluation viscosityMixture = viscosityMultiplier.eval(polymerConcentration_, /*extrapolate=*/true) * muWater;
612 const Scalar plymixparToddLongstaff = PolymerModule::plymixparToddLongstaff(elemCtx, dofIdx, timeIdx);
613 const Evaluation viscosityPolymer = viscosityMultiplier.eval(cmax, /*extrapolate=*/true) * muWater;
614 const Evaluation viscosityPolymerEffective = pow(viscosityMixture, plymixparToddLongstaff) * pow(viscosityPolymer, 1.0 - plymixparToddLongstaff);
615 const Evaluation viscosityWaterEffective = pow(viscosityMixture, plymixparToddLongstaff) * pow(muWater, 1.0 - plymixparToddLongstaff);
619 waterViscosityCorrection_ = muWater * ((1.0 - cbar) / viscosityWaterEffective + cbar / viscosityPolymerEffective);
621 polymerViscosityCorrection_ = (muWater / waterViscosityCorrection_) / viscosityPolymerEffective;
654 throw std::logic_error("polymerMoleWeight() is called but polymer milecular weight is disabled");
705 { throw std::logic_error("polymerMoleWeight() called but polymer molecular weight is disabled"); }
734template <class TypeTag, bool enablePolymerV = getPropValue<TypeTag, Properties::EnablePolymer>()>
Contains the parameters required to extend the black-oil model by polymer. Declares the properties required by the black oil model. const Evaluation & polymerShearFactor() const Definition: blackoilpolymermodules.hh:874 void updateShearMultipliersPerm(const ElementContext &, unsigned, unsigned) Definition: blackoilpolymermodules.hh:869 void updateShearMultipliers(const ElementContext &, unsigned, unsigned) Definition: blackoilpolymermodules.hh:864 const Evaluation & waterShearFactor() const Definition: blackoilpolymermodules.hh:877 Provides the polymer specific extensive quantities to the generic black-oil module's extensive quanti... Definition: blackoilpolymermodules.hh:736 void updateShearMultipliers(const ElementContext &elemCtx, unsigned scvfIdx, unsigned timeIdx) Method which calculates the shear factor based on flow velocity. Definition: blackoilpolymermodules.hh:781 const Evaluation & waterShearFactor() const Definition: blackoilpolymermodules.hh:844 void updateShearMultipliersPerm(const ElementContext &, unsigned, unsigned) Method which calculates the shear factor based on flow velocity. Definition: blackoilpolymermodules.hh:765 const Evaluation & polymerShearFactor() const Definition: blackoilpolymermodules.hh:841 const Evaluation & polymerConcentration() const Definition: blackoilpolymermodules.hh:707 const Evaluation & waterViscosityCorrection() const Definition: blackoilpolymermodules.hh:722 const Evaluation & polymerRockDensity() const Definition: blackoilpolymermodules.hh:716 const Evaluation & polymerDeadPoreVolume() const Definition: blackoilpolymermodules.hh:710 const Evaluation & polymerMoleWeight() const Definition: blackoilpolymermodules.hh:704 void polymerPropertiesUpdate_(const ElementContext &, unsigned, unsigned) Definition: blackoilpolymermodules.hh:699 const Evaluation & polymerAdsorption() const Definition: blackoilpolymermodules.hh:713 const Evaluation & polymerViscosityCorrection() const Definition: blackoilpolymermodules.hh:719 Provides the volumetric quantities required for the equations needed by the polymers extension of the... Definition: blackoilpolymermodules.hh:552 const Evaluation & polymerAdsorption() const Definition: blackoilpolymermodules.hh:660 Scalar polymerRockDensity_ Definition: blackoilpolymermodules.hh:683 const Evaluation & polymerMoleWeight() const Definition: blackoilpolymermodules.hh:649 const Evaluation & polymerViscosityCorrection() const Definition: blackoilpolymermodules.hh:667 const Scalar & polymerRockDensity() const Definition: blackoilpolymermodules.hh:663 void polymerPropertiesUpdate_(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx) Update the intensive properties needed to handle polymers from the primary variables. Definition: blackoilpolymermodules.hh:579 Evaluation waterViscosityCorrection_ Definition: blackoilpolymermodules.hh:686 Scalar polymerDeadPoreVolume_ Definition: blackoilpolymermodules.hh:682 Evaluation polymerAdsorption_ Definition: blackoilpolymermodules.hh:684 Evaluation polymerMoleWeight_ Definition: blackoilpolymermodules.hh:681 const Evaluation & waterViscosityCorrection() const Definition: blackoilpolymermodules.hh:671 Evaluation polymerConcentration_ Definition: blackoilpolymermodules.hh:679 const Evaluation & polymerConcentration() const Definition: blackoilpolymermodules.hh:646 Implementation & asImp_() Definition: blackoilpolymermodules.hh:676 const Scalar & polymerDeadPoreVolume() const Definition: blackoilpolymermodules.hh:657 Evaluation polymerViscosityCorrection_ Definition: blackoilpolymermodules.hh:685 Contains the high level supplements required to extend the black oil model by polymer. Definition: blackoilpolymermodules.hh:54 static const Scalar plyrockAdsorbtionIndex(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:372 static const TabulatedFunction & plyviscViscosityMultiplierTable(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:396 static std::string primaryVarName(unsigned pvIdx) Definition: blackoilpolymermodules.hh:166 static const TabulatedFunction & plyadsAdsorbedPolymer(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:388 const Scalar molarMass() const Definition: blackoilpolymermodules.hh:529 static TabulatedTwoDFunction & getPlymwinjTable(const int tableNumber) get the PLYMWINJ table Definition: blackoilpolymermodules.hh:95 static void serializeEntity(const Model &model, std::ostream &outstream, const DofEntity &dof) Definition: blackoilpolymermodules.hh:321 static Scalar eqWeight(unsigned eqIdx) Definition: blackoilpolymermodules.hh:208 static void registerParameters() Register all run-time parameters for the black-oil polymer module. Definition: blackoilpolymermodules.hh:138 static bool eqApplies(unsigned eqIdx) Definition: blackoilpolymermodules.hh:186 static Scalar primaryVarWeight(unsigned pvIdx) Definition: blackoilpolymermodules.hh:178 static BlackOilPolymerParams< Scalar >::SkprpolyTable & getSkprpolyTable(const int tableNumber) get the SKPRPOLY table Definition: blackoilpolymermodules.hh:124 static bool hasShrate() Definition: blackoilpolymermodules.hh:439 static const TabulatedFunction & plyviscViscosityMultiplierTable(unsigned pvtnumRegionIdx) Definition: blackoilpolymermodules.hh:404 static const Scalar plyrockResidualResistanceFactor(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:356 static void registerOutputModules(Model &model, Simulator &simulator) Register all polymer specific VTK and ECL output modules. Definition: blackoilpolymermodules.hh:147 static Scalar computeUpdateError(const PrimaryVariables &, const EqVector &) Return how much a Newton-Raphson update is considered an error. Definition: blackoilpolymermodules.hh:311 static const BlackOilPolymerParams< Scalar >::PlyvmhCoefficients & plyvmhCoefficients(const ElementContext &elemCtx, const unsigned scvIdx, const unsigned timeIdx) Definition: blackoilpolymermodules.hh:426 static const Scalar shrate(unsigned pvtnumRegionIdx) Definition: blackoilpolymermodules.hh:444 static bool primaryVarApplies(unsigned pvIdx) Definition: blackoilpolymermodules.hh:154 static void addStorage(Dune::FieldVector< LhsEval, numEq > &storage, const IntensiveQuantities &intQuants) Definition: blackoilpolymermodules.hh:218 static const Scalar plyrockRockDensityFactor(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:364 static const Scalar plymaxMaxConcentration(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:409 static bool hasPlyshlog() Definition: blackoilpolymermodules.hh:434 static std::string eqName(unsigned eqIdx) Definition: blackoilpolymermodules.hh:198 static void setParams(BlackOilPolymerParams< Scalar > &¶ms) Set parameters. Definition: blackoilpolymermodules.hh:88 static const Scalar plyrockDeadPoreVolume(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:348 static const Scalar plymixparToddLongstaff(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:417 static TabulatedTwoDFunction & getSkprwatTable(const int tableNumber) get the SKPRWAT table Definition: blackoilpolymermodules.hh:109 static void deserializeEntity(Model &model, std::istream &instream, const DofEntity &dof) Definition: blackoilpolymermodules.hh:332 static const Scalar plyrockMaxAdsorbtion(const ElementContext &elemCtx, unsigned scvIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:380 static void computeFlux(RateVector &flux, const ElementContext &elemCtx, unsigned scvfIdx, unsigned timeIdx) Definition: blackoilpolymermodules.hh:257 static Evaluation computeShearFactor(const Evaluation &polymerConcentration, unsigned pvtnumRegionIdx, const Evaluation &v0) Computes the shear factor. Definition: blackoilpolymermodules.hh:456 VTK output module for the black oil model's polymer related quantities. Definition: vtkblackoilpolymermodule.hpp:61 Definition: blackoilboundaryratevector.hh:37 typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(.... Definition: propertysystem.hh:235 std::string to_string(const ConvergenceReport::ReservoirFailure::Type t) The Opm property system, traits with inheritance. Definition: blackoilpolymerparams.hpp:85 Definition: blackoilpolymerparams.hpp:92 Struct holding the parameters for the BlackOilPolymerModule class. Definition: blackoilpolymerparams.hpp:45 IntervalTabulated2DFunction< Scalar > TabulatedTwoDFunction Definition: blackoilpolymerparams.hpp:47 Tabulated1DFunction< Scalar > TabulatedFunction Definition: blackoilpolymerparams.hpp:46 |