Loading...
Searching...
No Matches
FlowProblemBlackoilProperties.hpp
Go to the documentation of this file.
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
Consult the COPYING file in the top-level source directory of this
module for the precise wording of the license and the list of
copyright holders.
*/
#ifndef OPM_FLOW_BASE_PROBLEM_BLACKOIL_PROPERTIES_HPP
#define OPM_FLOW_BASE_PROBLEM_BLACKOIL_PROPERTIES_HPP
#include <opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp>
#include <opm/models/utils/propertysystem.hh>
#include <opm/simulators/flow/FlowBaseProblemProperties.hpp>
#include <opm/simulators/flow/FIBlackoilModel.hpp>
#include <opm/simulators/flow/NewTranFluxModule.hpp>
#include <opm/simulators/flow/OutputBlackoilModule.hpp>
#include <opm/simulators/flow/BlackoilModel.hpp>
#include <tuple>
namespace Opm {
template <class TypeTag>
class FlowProblemBlackoil;
}
namespace Opm::Properties {
namespace TTag {
struct FlowBaseProblemBlackoil {
using InheritsFrom = std::tuple<FlowBaseProblem>;
};
}
// Set the problem property
template<class TypeTag>
struct NonlinearSystem<TypeTag, TTag::FlowBaseProblemBlackoil>
{ using type = BlackoilModel<TypeTag>; };
template<class TypeTag>
struct Problem<TypeTag, TTag::FlowBaseProblemBlackoil>
{ using type = FlowProblemBlackoil<TypeTag>; };
template<class TypeTag>
struct Model<TypeTag, TTag::FlowBaseProblemBlackoil>
{ using type = FIBlackOilModel<TypeTag>; };
// Set the material law for fluid fluxes
template<class TypeTag>
struct MaterialLaw<TypeTag, TTag::FlowBaseProblem>
{
private:
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
using Traits = ThreePhaseMaterialTraits<Scalar,
/*wettingPhaseIdx=*/FluidSystem::waterPhaseIdx,
/*nonWettingPhaseIdx=*/FluidSystem::oilPhaseIdx,
/*gasPhaseIdx=*/FluidSystem::gasPhaseIdx,
getPropValue<TypeTag, Properties::EnableHysteresis>(),
getPropValue<TypeTag, Properties::EnableEndpointScaling>()>;
public:
using EclMaterialLawManager = ::Opm::EclMaterialLaw::Manager<Traits>;
using type = typename EclMaterialLawManager::MaterialLaw;
};
// Use the "velocity module" which uses the Eclipse "NEWTRAN" transmissibilities
template<class TypeTag>
struct FluxModule<TypeTag, TTag::FlowBaseProblemBlackoil>
{ using type = NewTranFluxModule<TypeTag>; };
// Use the dummy gradient calculator in order not to do unnecessary work.
template<class TypeTag>
struct GradientCalculator<TypeTag, TTag::FlowBaseProblemBlackoil>
{ using type = DummyGradientCalculator<TypeTag>; };
} // namespace Opm::Properties
#endif // OPM_FLOW_BASE_PROBLEM_BLACKOIL_PROPERTIES_HPP
FIBlackoilModel.hpp
FlowBaseProblemProperties.hpp
NewTranFluxModule.hpp
This file contains the flux module which is used for flow problems.
OutputBlackoilModule.hpp
Output module for the results black oil model writing in ECL binary format.
Opm::BlackoilModel
A model implementation for three-phase black oil.
Definition BlackoilModel.hpp:61
Opm::DummyGradientCalculator
This is a "dummy" gradient calculator which does not do anything.
Definition DummyGradientCalculator.hpp:50
Opm::FIBlackOilModel
Definition FIBlackoilModel.hpp:53
Opm::FlowProblemBlackoil
This problem simulates an input file given in the data format used by the commercial ECLiPSE simulato...
Definition FlowProblemBlackoil.hpp:84
Opm::Properties::TTag
The generic type tag for problems using the immiscible multi-phase model.
Definition blackoilmodel.hh:81
Opm
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43
Opm::GetPropType
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
Opm::getPropValue
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:240
propertysystem.hh
The Opm property system, traits with inheritance.
Opm::NewTranFluxModule
Specifies a flux module which uses ECL transmissibilities.
Definition NewTranFluxModule.hpp:68
Opm::Properties::FluxModule
Specifies the relation used for velocity.
Definition multiphasebaseproperties.hh:83
Opm::Properties::GradientCalculator
Calculates gradients of arbitrary quantities at flux integration points.
Definition fvbaseproperties.hh:152
Opm::Properties::MaterialLaw
The material law which ought to be used (extracted from the spatial parameters).
Definition multiphasebaseproperties.hh:55
Opm::Properties::Model
The type of the model.
Definition basicproperties.hh:88
Opm::Properties::NonlinearSystem
Definition FlowBaseProblemProperties.hpp:61
Opm::Properties::Problem
The type of the problem.
Definition fvbaseproperties.hh:81
Opm::Properties::TTag::FlowBaseProblemBlackoil
Definition FlowProblemBlackoilProperties.hpp:54