|
blackoilintensivequantities.hh
Go to the documentation of this file.
77 , public BlackOilDiffusionIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableDiffusion>() >
78 , public BlackOilDispersionIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableDispersion>() >
79 , public BlackOilSolventIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableSolvent>()>
80 , public BlackOilExtboIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableExtbo>()>
81 , public BlackOilPolymerIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnablePolymer>()>
82 , public BlackOilFoamIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableFoam>()>
83 , public BlackOilBrineIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableBrine>()>
84 , public BlackOilEnergyIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnergyModuleType>()>
85 , public BlackOilBioeffectsIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableBioeffects>()>
86 , public BlackOilConvectiveMixingIntensiveQuantities<TypeTag, getPropValue<TypeTag, Properties::EnableConvectiveMixing>()>
107 enum { enableSaltPrecipitation = getPropValue<TypeTag, Properties::EnableSaltPrecipitation>() };
108 static constexpr EnergyModules energyModuleType = getPropValue<TypeTag, Properties::EnergyModuleType>();
130 using DiffusionIntensiveQuantities = BlackOilDiffusionIntensiveQuantities<TypeTag, enableDiffusion>;
131 using DispersionIntensiveQuantities = BlackOilDispersionIntensiveQuantities<TypeTag, enableDispersion>;
184 // This ctor is used when switching to the GPU typetag which currently supports thermal effects and diffusion.
217 auto withOtherFluidSystem(const GetPropType<OtherTypeTag, Properties::FluidSystem>& other) const
323 problem.template updateRelperms<FluidState, Args...>(mobility_, dirMob_, fluidState_, globalSpaceIdx);
329 MaterialLaw::template capillaryPressures<EvalArr, FluidState, Args...>(pC, materialParams, fluidState_);
513 const auto [b, mu] = getFluidSystem().inverseFormationVolumeFactorAndViscosity(fluidState_, phaseIdx, pvtRegionIdx);
575 OPM_HOST_DEVICE void updatePorosity(const ElementContext& elemCtx, unsigned dofIdx, unsigned timeIdx)
634 calcite_ = priVars.makeEvaluation(Indices::calciteVolumeFractionIdx, timeIdx, linearizationType);
640 if (enableSaltPrecipitation && priVars.primaryVarsMeaningBrine() == PrimaryVariables::BrineMeaning::Sp) {
720 DiffusionIntensiveQuantities::update_(fluidState_, priVars.pvtRegionIndex(), elemCtx, dofIdx, timeIdx);
748 // Porosity requires separate calls so this can be instantiated with ReservoirProblem from the examples/ directory.
751 // TODO: Here we should do the parts for solvent etc. at the bottom of the other update() function.
754 // This function updated the parts that are common to the IntensiveQuantities regardless of extensions used.
761 OPM_TIMEBLOCK_LOCAL(blackoilIntensiveQuanititiesUpdate, Subsystem::SatProps | Subsystem::PvtProps);
770 updateRelpermAndPressures<Args...>(problem, priVars, globalSpaceIdx, timeIdx, linearizationType);
781 rockCompTransMultiplier_ = problem.template rockCompTransMultiplier<Evaluation>(*this, globalSpaceIdx);
826 OPM_THROW(std::logic_error, "Directional mobility with non-static fluid system is not supported yet");
853 OPM_HOST_DEVICE auto pvtRegionIndex() const -> decltype(std::declval<FluidState>().pvtRegionIndex())
883 throw std::logic_error("permFactor() called but salt precipitation or bioeffects are disabled");
914 // the dirMob_ unique ptr member variable when copying BlackOilIntensiveQuantites (see for example
915 // updateIntensitiveQuantities_() in fvbaseelementcontext.hh for a copy example) we write the below
918 // The advantage of this approach is that we avoid having to call all the base class copy constructors and
919 // assignment operators explicitly (which is needed when writing the custom copy constructor and assignment
920 // operators) which could become a maintenance burden. For example, when adding a new base class (if that should
921 // be needed sometime in the future) to BlackOilIntensiveQuantites we could forget to update the copy
924 // We want each copy of the BlackOilIntensiveQuantites to be unique, (TODO: why?) so we have to make a copy
925 // of the unique_ptr each time we copy construct or assign to it from another BlackOilIntensiveQuantites.
926 // (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:521 const Evaluation & permFactor() const Definition: blackoilbioeffectsmodules.hh:593 Contains the high level supplements required to extend the black oil model by bioeffects. Definition: blackoilbioeffectsmodules.hh:95 static bool hasPcfactTables() Definition: blackoilbioeffectsmodules.hh:484 static const TabulatedFunction & pcfactTable(unsigned satnumRegionIdx) Definition: blackoilbioeffectsmodules.hh:479 Definition: blackoilbrinemodules.hh:368 Contains the high level supplements required to extend the black oil model by brine. Definition: blackoilbrinemodules.hh:58 static const TabulatedFunction & pcfactTable(unsigned satnumRegionIdx) Definition: blackoilbrinemodules.hh:300 static bool hasPcfactTables() Definition: blackoilbrinemodules.hh:346 Provides the volumetric quantities required for the equations needed by the convective mixing (DRSDTC... Definition: blackoilconvectivemixingmodule.hh:428 Provides the volumetric quantities required for the calculation of molecular diffusive fluxes. Definition: blackoildiffusionmodule.hh:353 Provides the volumetric quantities required for the calculation of dispersive fluxes. Definition: blackoildispersionmodule.hh:321 Provides the volumetric quantities required for the equations needed by the energys extension of the ... Definition: blackoilenergymodules.hh:342 Provides the volumetric quantities required for the equations needed by the solvents extension of the... Definition: blackoilextbomodules.hh:382 Provides the volumetric quantities required for the equations needed by the polymers extension of the... Definition: blackoilfoammodules.hh:371 Contains the quantities which are are constant within a finite volume in the black-oil model. Definition: blackoilintensivequantities.hh:87 OPM_HOST_DEVICE void updatePorosityImpl(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:597 OPM_HOST_DEVICE void update(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx) Definition: blackoilintensivequantities.hh:668 OPM_HOST_DEVICE void updateSaturations(const PrimaryVariables &priVars, const unsigned timeIdx, const LinearizationType lintype) Definition: blackoilintensivequantities.hh:235 OPM_HOST_DEVICE void updateCommonPart(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:756 BlackOilIntensiveQuantities(const BlackOilIntensiveQuantities< OtherTypeTag > &other, const FluidSystem &fsystem) Definition: blackoilintensivequantities.hh:186 OPM_HOST_DEVICE Scalar referencePorosity() const Returns the porosity of the rock at reference conditions. Definition: blackoilintensivequantities.hh:871 OPM_HOST_DEVICE void updateMobilityAndInvB() Definition: blackoilintensivequantities.hh:494 auto withOtherFluidSystem(const GetPropType< OtherTypeTag, Properties::FluidSystem > &other) const Definition: blackoilintensivequantities.hh:217 OPM_HOST_DEVICE auto pvtRegionIndex() const -> decltype(std::declval< FluidState >().pvtRegionIndex()) Returns the index of the PVT region used to calculate the thermodynamic quantities. Definition: blackoilintensivequantities.hh:853 OPM_HOST_DEVICE const Evaluation & mobility(unsigned phaseIdx) const Returns the effective mobility of a given phase within the control volume. Definition: blackoilintensivequantities.hh:801 OPM_HOST_DEVICE void updatePorosity(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx) Definition: blackoilintensivequantities.hh:575 OPM_HOST_DEVICE void updatePhaseDensities() Definition: blackoilintensivequantities.hh:530 OPM_HOST_DEVICE void updateRelpermAndPressures(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx, const LinearizationType &lintype) Definition: blackoilintensivequantities.hh:307 OPM_HOST_DEVICE FluidState & fluidState() Definition: blackoilintensivequantities.hh:795 OPM_HOST_DEVICE void update(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:730 OPM_HOST_DEVICE void updateTempSalt(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx, const LinearizationType &lintype) Definition: blackoilintensivequantities.hh:223 OPM_HOST_DEVICE const auto & getFluidSystem() const Returns the fluid system used by this intensive quantities. Definition: blackoilintensivequantities.hh:890 BlackOilIntensiveQuantities & operator=(const BlackOilIntensiveQuantities &other)=default GetPropType< TypeTag, Properties::Problem > Problem Definition: blackoilintensivequantities.hh:162 BlackOilFluidState< Scalar, FluidSystem, energyModuleType !=EnergyModules::NoTemperature, energyModuleType==EnergyModules::FullyImplicitThermal, compositionSwitchEnabled, enableVapwat, enableBrine, enableSaltPrecipitation, enableDisgasInWater, enableSolvent, Indices::numPhases > ScalarFluidState Definition: blackoilintensivequantities.hh:161 OPM_HOST_DEVICE const FluidState & fluidState() const Returns the phase state for the control-volume. Definition: blackoilintensivequantities.hh:791 OPM_HOST_DEVICE Evaluation relativePermeability(unsigned phaseIdx) const Returns the relative permeability of a given phase within the control volume. Definition: blackoilintensivequantities.hh:859 BlackOilIntensiveQuantities(const BlackOilIntensiveQuantities &other)=default OPM_HOST_DEVICE const Evaluation & permFactor() const Definition: blackoilintensivequantities.hh:874 OPM_HOST_DEVICE BlackOilIntensiveQuantities() Definition: blackoilintensivequantities.hh:164 OPM_HOST_DEVICE const Evaluation & rockCompTransMultiplier() const Definition: blackoilintensivequantities.hh:843 OPM_HOST_DEVICE void assertFiniteMembers() Definition: blackoilintensivequantities.hh:646 OPM_HOST_DEVICE const Evaluation & mobility(unsigned phaseIdx, FaceDir::DirEnum facedir) const Definition: blackoilintensivequantities.hh:804 OPM_HOST_DEVICE void updatePorosity(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:586 OPM_HOST_DEVICE const Evaluation & porosity() const Returns the average porosity within the control volume. Definition: blackoilintensivequantities.hh:837 BlackOilFluidState< Evaluation, FluidSystem, energyModuleType !=EnergyModules::NoTemperature, energyModuleType==EnergyModules::FullyImplicitThermal, compositionSwitchEnabled, enableVapwat, enableBrine, enableSaltPrecipitation, enableDisgasInWater, enableSolvent, Indices::numPhases > FluidState Definition: blackoilintensivequantities.hh:150 OPM_HOST_DEVICE void updateRsRvRsw(const Problem &problem, const PrimaryVariables &priVars, const unsigned globalSpaceIdx, const unsigned timeIdx) Definition: blackoilintensivequantities.hh:399 Provides the volumetric quantities required for the equations needed by the polymers extension of the... Definition: blackoilpolymermodules.hh:568 Provides the volumetric quantities required for the equations needed by the solvents extension of the... Definition: blackoilsolventmodules.hh:553 This file contains definitions related to directional mobilities. Definition: blackoilbioeffectsmodules.hh:45 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 |