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/simulators/flow/NonlinearSystemCompositional.hpp>
37 #include <opm/material/thermal/EnergyModuleType.hpp>
38 
39 #include <tuple>
40 
41 namespace Opm {
42 template <class TypeTag>
43 class FlowProblemComp;
44 }
45 
46 namespace Opm::Properties {
47 
48 namespace TTag {
49 
51  using InheritsFrom = std::tuple<FlowBaseProblem>;
52 };
53 
54 }
55 template<class TypeTag>
56 struct NonlinearSystem<TypeTag, TTag::FlowBaseProblemComp>
58 
59 // Set the problem property
60 template<class TypeTag>
61 struct Problem<TypeTag, TTag::FlowBaseProblemComp>
62 { using type = FlowProblemComp<TypeTag>; };
63 
64 template<class TypeTag>
65 struct TracerModel<TypeTag, TTag::FlowBaseProblemComp> {
67 };
68 
69 template<class TypeTag>
70 struct EnergyModuleType<TypeTag, TTag::FlowBaseProblemComp>
71 { static constexpr EnergyModules value = EnergyModules::NoTemperature; };
72 
73 // Set the material law for fluid fluxes
74 template<class TypeTag>
75 struct MaterialLaw<TypeTag, TTag::FlowBaseProblemComp>
76 {
77 private:
80 
81  using Traits = ThreePhaseMaterialTraits<Scalar,
82  /*wettingPhaseIdx=*/FluidSystem::waterPhaseIdx,
83  /*nonWettingPhaseIdx=*/FluidSystem::oilPhaseIdx,
84  /*gasPhaseIdx=*/FluidSystem::gasPhaseIdx,
85  /* hysteresis */ true,
86  /* endpointscaling */ true>;
87 
88 public:
89  using EclMaterialLawManager = ::Opm::EclMaterialLaw::Manager<Traits>;
90 
91  using type = typename EclMaterialLawManager::MaterialLaw;
92 };
93 
94 // Enable diffusion
95 template<class TypeTag>
96 struct EnableDiffusion<TypeTag, TTag::FlowBaseProblemComp>
97 { static constexpr bool value = false; };
98 
99 } // namespace Opm::Properties
100 #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
Definition: FlowBaseProblemProperties.hpp:62
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:70
Structs needed for tpfalinearizer and its gpuparams struct extracted to be defined in one place that ...
Definition: blackoilbioeffectsmodules.hh:45
Specifies who temperature is modeled by the simulator.
Definition: blackoilproperties.hh:108
Definition: NonlinearSystemCompositional.hpp:41
Definition: FlowProblemCompProperties.hpp:50
The type of the problem.
Definition: fvbaseproperties.hh:87
The Opm property system, traits with inheritance.
Definition: blackoilmodel.hh:75
Enable diffusive fluxes?
Definition: multiphasebaseproperties.hh:91
The material law which ought to be used (extracted from the spatial parameters)
Definition: multiphasebaseproperties.hh:55