opm-simulators
FlowProblemCompProperties.hpp
Go to the documentation of this file.
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 /*
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 2 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 
19  Consult the COPYING file in the top-level source directory of this
20  module for the precise wording of the license and the list of
21  copyright holders.
22 */
28 #ifndef OPM_FLOW_PROBLEM_COMP_PROPERTIES_HPP
29 #define OPM_FLOW_PROBLEM_COMP_PROPERTIES_HPP
30 
31 
32 #include <opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp>
34 
36 #include <opm/material/thermal/EnergyModuleType.hpp>
37 
38 #include <tuple>
39 
40 namespace Opm {
41 template <class TypeTag>
42 class FlowProblemComp;
43 }
44 
45 namespace Opm::Properties {
46 
47 namespace TTag {
48 
50  using InheritsFrom = std::tuple<FlowBaseProblem>;
51 };
52 
53 }
54 // Set the problem property
55 template<class TypeTag>
56 struct Problem<TypeTag, TTag::FlowBaseProblemComp>
57 { using type = FlowProblemComp<TypeTag>; };
58 
59 template<class TypeTag>
60 struct TracerModel<TypeTag, TTag::FlowBaseProblemComp> {
62 };
63 
64 template<class TypeTag>
65 struct EnergyModuleType<TypeTag, TTag::FlowBaseProblemComp>
66 { static constexpr EnergyModules value = EnergyModules::NoTemperature; };
67 
68 // Set the material law for fluid fluxes
69 template<class TypeTag>
70 struct MaterialLaw<TypeTag, TTag::FlowBaseProblemComp>
71 {
72 private:
75 
76  using Traits = ThreePhaseMaterialTraits<Scalar,
77  /*wettingPhaseIdx=*/FluidSystem::waterPhaseIdx,
78  /*nonWettingPhaseIdx=*/FluidSystem::oilPhaseIdx,
79  /*gasPhaseIdx=*/FluidSystem::gasPhaseIdx,
80  /* hysteresis */ true,
81  /* endpointscaling */ true>;
82 
83 public:
84  using EclMaterialLawManager = ::Opm::EclMaterialLaw::Manager<Traits>;
85 
86  using type = typename EclMaterialLawManager::MaterialLaw;
87 };
88 
89 // Enable diffusion
90 template<class TypeTag>
91 struct EnableDiffusion<TypeTag, TTag::FlowBaseProblemComp>
92 { static constexpr bool value = false; };
93 
94 } // namespace Opm::Properties
95 #endif // OPM_FLOW_PROBLEM_COMP_PROPERTIES_HPP
Definition: FlowBaseProblemProperties.hpp:103
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
This problem simulates an input file given in the data format used by the commercial ECLiPSE simulato...
Definition: FlowProblemComp.hpp:59
A class which handles tracers as specified in by ECL.
Definition: TracerModel.hpp:69
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: blackoilbioeffectsmodules.hh:45
Specifies who temperature is modeled by the simulator.
Definition: blackoilproperties.hh:108
Definition: FlowProblemCompProperties.hpp:49
The type of the problem.
Definition: fvbaseproperties.hh:81
The Opm property system, traits with inheritance.
Definition: blackoilmodel.hh:80
Enable diffusive fluxes?
Definition: multiphasebaseproperties.hh:91
The material law which ought to be used (extracted from the spatial parameters)
Definition: multiphasebaseproperties.hh:55