|
blackoilintensivequantities.hh
Go to the documentation of this file.
75 , public BlackOilDiffusionIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableDiffusion>() >
76 , public BlackOilDispersionIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableDispersion>() >
77 , public BlackOilSolventIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableSolvent>()>
78 , public BlackOilExtboIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableExtbo>()>
79 , public BlackOilPolymerIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnablePolymer>()>
80 , public BlackOilFoamIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableFoam>()>
81 , public BlackOilBrineIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableBrine>()>
82 , public BlackOilEnergyIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnergyModuleType>()>
83 , public BlackOilBioeffectsIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableBioeffects>()>
84 , public BlackOilConvectiveMixingIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableConvectiveMixing>()>
105 enum { enableSaltPrecipitation = getPropValue<TypeTag, Properties::EnableSaltPrecipitation>() };
106 static constexpr EnergyModules energyModuleType = getPropValue<TypeTag, Properties::EnergyModuleType>();
128 using DiffusionIntensiveQuantities = BlackOilDiffusionIntensiveQuantities<TypeTag, enableDiffusion>;
129 using DispersionIntensiveQuantities = BlackOilDispersionIntensiveQuantities<TypeTag, enableDispersion>;
141 (energyModuleType == EnergyModules::FullyImplicitThermal || energyModuleType == EnergyModules::SequentialImplicitThermal),
278 problem.template updateRelperms<FluidState, Args...>(mobility_, dirMob_, fluidState_, globalSpaceIdx);
284 MaterialLaw::template capillaryPressures<EvalArr, FluidState, Args...>(pC, materialParams, fluidState_);
354 void updateRsRvRsw(const Problem& problem, const PrimaryVariables& priVars, const unsigned globalSpaceIdx, const unsigned timeIdx)
465 const auto [b, mu] = FluidSystem::inverseFormationVolumeFactorAndViscosity(fluidState_, phaseIdx, pvtRegionIdx);
538 void updatePorosity(const Problem& problem, const PrimaryVariables& priVars, const unsigned globalSpaceIdx, const unsigned timeIdx)
546 void updatePorosityImpl(const Problem& problem, const PrimaryVariables& priVars, const unsigned globalSpaceIdx, const unsigned timeIdx)
580 calcite_ = priVars.makeEvaluation(Indices::calciteVolumeFractionIdx, timeIdx, linearizationType);
586 if (enableSaltPrecipitation && priVars.primaryVarsMeaningBrine() == PrimaryVariables::BrineMeaning::Sp) {
667 DiffusionIntensiveQuantities::update_(fluidState_, priVars.pvtRegionIndex(), elemCtx, dofIdx, timeIdx);
677 void update(const Problem& problem, const PrimaryVariables& priVars, const unsigned globalSpaceIdx, const unsigned timeIdx)
692 // Porosity requires separate calls so this can be instantiated with ReservoirProblem from the examples/ directory.
695 // TODO: Here we should do the parts for solvent etc. at the bottom of the other update() function.
698 // This function updated the parts that are common to the IntensiveQuantities regardless of extensions used.
700 void updateCommonPart(const Problem& problem, const PrimaryVariables& priVars, const unsigned globalSpaceIdx, const unsigned timeIdx)
702 OPM_TIMEBLOCK_LOCAL(blackoilIntensiveQuanititiesUpdate, Subsystem::SatProps | Subsystem::PvtProps);
711 updateRelpermAndPressures<Args...>(problem, priVars, globalSpaceIdx, timeIdx, linearizationType);
722 rockCompTransMultiplier_ = problem.template rockCompTransMultiplier<Evaluation>(*this, globalSpaceIdx);
813 throw std::logic_error("permFactor() called but salt precipitation or bioeffects are disabled");
836 // the dirMob_ unique ptr member variable when copying BlackOilIntensiveQuantites (see for example
837 // updateIntensitiveQuantities_() in fvbaseelementcontext.hh for a copy example) we write the below
840 // The advantage of this approach is that we avoid having to call all the base class copy constructors and
841 // assignment operators explicitly (which is needed when writing the custom copy constructor and assignment
842 // operators) which could become a maintenance burden. For example, when adding a new base class (if that should
843 // be needed sometime in the future) to BlackOilIntensiveQuantites we could forget to update the copy
846 // We want each copy of the BlackOilIntensiveQuantites to be unique, (TODO: why?) so we have to make a copy
847 // of the unique_ptr each time we copy construct or assign to it from another BlackOilIntensiveQuantites.
848 // (On the other hand, if a copy could share the ptr with the original, a shared_ptr could be used instead and the
Contains the classes required to extend the black-oil model by bioeffects. Contains the classes required to extend the black-oil model by brine. Classes required for dynamic convective mixing. Classes required for molecular diffusion. Classes required for mechanical dispersion. Contains the classes required to extend the black-oil model by energy. Contains the classes required to extend the black-oil model by solvent component. For details,... Contains the classes required to extend the black-oil model to include the effects of foam. Contains the classes required to extend the black-oil model by polymer. Declares the properties required by the black oil model. Contains the classes required to extend the black-oil model by solvents. Provides the volumetric quantities required for the equations needed by the bioeffects extension of t... Definition: blackoilbioeffectsmodules.hh:518 const Evaluation & permFactor() const Definition: blackoilbioeffectsmodules.hh:590 Contains the high level supplements required to extend the black oil model by bioeffects. Definition: blackoilbioeffectsmodules.hh:93 static bool hasPcfactTables() Definition: blackoilbioeffectsmodules.hh:481 static const TabulatedFunction & pcfactTable(unsigned satnumRegionIdx) Definition: blackoilbioeffectsmodules.hh:476 Definition: blackoilbrinemodules.hh:364 Contains the high level supplements required to extend the black oil model by brine. Definition: blackoilbrinemodules.hh:56 static const TabulatedFunction & pcfactTable(unsigned satnumRegionIdx) Definition: blackoilbrinemodules.hh:296 static bool hasPcfactTables() Definition: blackoilbrinemodules.hh:342 Provides the volumetric quantities required for the equations needed by the convective mixing (DRSDTC... Definition: blackoilconvectivemixingmodule.hh:402 Provides the volumetric quantities required for the calculation of molecular diffusive fluxes. Definition: blackoildiffusionmodule.hh:338 Provides the volumetric quantities required for the calculation of dispersive fluxes. Definition: blackoildispersionmodule.hh:327 Provides the volumetric quantities required for the equations needed by the energys extension of the ... Definition: blackoilenergymodules.hh:334 Provides the volumetric quantities required for the equations needed by the solvents extension of the... Definition: blackoilextbomodules.hh:378 Provides the volumetric quantities required for the equations needed by the polymers extension of the... Definition: blackoilfoammodules.hh:367 Contains the quantities which are are constant within a finite volume in the black-oil model. Definition: blackoilintensivequantities.hh:85 void updateTempSalt(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx, const LinearizationType &lintype) Definition: blackoilintensivequantities.hh:178 void updatePorosity(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:538 void updateCommonPart(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:700 const Evaluation & porosity() const Returns the average porosity within the control volume. Definition: blackoilintensivequantities.hh:767 void assertFiniteMembers() Definition: blackoilintensivequantities.hh:592 const Evaluation & mobility(unsigned phaseIdx) const Returns the effective mobility of a given phase within the control volume. Definition: blackoilintensivequantities.hh:738 void updateMobilityAndInvB() Definition: blackoilintensivequantities.hh:446 void update(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx) Definition: blackoilintensivequantities.hh:614 Evaluation relativePermeability(unsigned phaseIdx) const Returns the relative permeability of a given phase within the control volume. Definition: blackoilintensivequantities.hh:789 void updatePorosity(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx) Definition: blackoilintensivequantities.hh:527 auto pvtRegionIndex() const -> decltype(std::declval< FluidState >().pvtRegionIndex()) Returns the index of the PVT region used to calculate the thermodynamic quantities. Definition: blackoilintensivequantities.hh:783 const Evaluation & permFactor() const Definition: blackoilintensivequantities.hh:804 void updatePorosityImpl(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:546 void update(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:677 void updateRelpermAndPressures(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx, const LinearizationType &lintype) Definition: blackoilintensivequantities.hh:262 const FluidState & fluidState() const Returns the phase state for the control-volume. Definition: blackoilintensivequantities.hh:732 void updateSaturations(const PrimaryVariables &priVars, const unsigned timeIdx, const LinearizationType lintype) Definition: blackoilintensivequantities.hh:190 BlackOilIntensiveQuantities & operator=(const BlackOilIntensiveQuantities &other)=default BlackOilFluidState< Scalar, FluidSystem, energyModuleType==EnergyModules::ConstantTemperature,(energyModuleType==EnergyModules::FullyImplicitThermal||energyModuleType==EnergyModules::SequentialImplicitThermal), compositionSwitchEnabled, enableVapwat, enableBrine, enableSaltPrecipitation, enableDisgasInWater, Indices::numPhases > ScalarFluidState Definition: blackoilintensivequantities.hh:158 GetPropType< TypeTag, Properties::Problem > Problem Definition: blackoilintensivequantities.hh:159 const Evaluation & rockCompTransMultiplier() const Definition: blackoilintensivequantities.hh:773 BlackOilIntensiveQuantities(const BlackOilIntensiveQuantities &other)=default BlackOilIntensiveQuantities() Definition: blackoilintensivequantities.hh:161 const Evaluation & mobility(unsigned phaseIdx, FaceDir::DirEnum facedir) const Definition: blackoilintensivequantities.hh:741 Scalar referencePorosity() const Returns the porosity of the rock at reference conditions. Definition: blackoilintensivequantities.hh:801 void updatePhaseDensities() Definition: blackoilintensivequantities.hh:482 void updateRsRvRsw(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:354 BlackOilFluidState< Evaluation, FluidSystem, energyModuleType==EnergyModules::ConstantTemperature,(energyModuleType==EnergyModules::FullyImplicitThermal||energyModuleType==EnergyModules::SequentialImplicitThermal), compositionSwitchEnabled, enableVapwat, enableBrine, enableSaltPrecipitation, enableDisgasInWater, Indices::numPhases > FluidState Definition: blackoilintensivequantities.hh:147 Provides the volumetric quantities required for the equations needed by the polymers extension of the... Definition: blackoilpolymermodules.hh:565 Provides the volumetric quantities required for the equations needed by the solvents extension of the... Definition: blackoilsolventmodules.hh:539 This file contains definitions related to directional mobilities. Definition: blackoilbioeffectsmodules.hh:43 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:233 Definition: linearizationtype.hh:34 |