28#ifndef OPM_FLOW_PROBLEM_PROPERTIES_HPP
29#define OPM_FLOW_PROBLEM_PROPERTIES_HPP
31#include <opm/input/eclipse/Parser/ParserKeywords/E.hpp>
33#include <opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp>
34#include <opm/material/thermal/EclThermalLawManager.hpp>
36#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
37#include <opm/models/utils/propertysystem.hh>
55template <
class TypeTag>
59namespace Opm::Properties {
64 using InheritsFrom = std::tuple<VtkTracer, OutputBlackOil, CpGridVanguard>;
69template<
class TypeTag,
class MyTypeTag>
71 using type = UndefinedProperty;
76template<
class TypeTag,
class MyTypeTag>
78 using type = UndefinedProperty;
82template<
class TypeTag,
class MyTypeTag>
84 using type = UndefinedProperty;
89template<
class TypeTag,
class MyTypeTag>
91 using type = UndefinedProperty;
97template<
class TypeTag,
class MyTypeTag>
99 using type = UndefinedProperty;
104template<
class TypeTag,
class MyTypeTag>
106 using type = UndefinedProperty;
111template<
class TypeTag,
class MyTypeTag>
113 using type = UndefinedProperty;
117template<
class TypeTag,
class MyTypeTag>
119 using type = UndefinedProperty;
122template<
class TypeTag,
class MyTypeTag>
124 using type = UndefinedProperty;
127template<
class TypeTag,
class MyTypeTag>
129 using type = UndefinedProperty;
132template<
class TypeTag,
class MyTypeTag>
134 using type = UndefinedProperty;
140template<
class TypeTag>
141struct Problem<TypeTag, TTag::FlowBaseProblem> {
145template<
class TypeTag>
146struct Model<TypeTag, TTag::FlowBaseProblem> {
151template<
class TypeTag>
152struct SpatialDiscretizationSplice<TypeTag, TTag::FlowBaseProblem> {
153 using type = TTag::EcfvDiscretization;
157template<
class TypeTag>
158struct LocalLinearizerSplice<TypeTag, TTag::FlowBaseProblem> {
159 using type = TTag::AutoDiffLocalLinearizer;
162template<
class TypeTag>
163struct BaseDiscretizationType<TypeTag, TTag::FlowBaseProblem> {
164 using type = FvBaseDiscretizationNoAdapt<TypeTag>;
167template<
class TypeTag>
168struct DiscreteFunction<TypeTag, TTag::FlowBaseProblem> {
169 using BaseDiscretization = FvBaseDiscretization<TypeTag>;
170 using type =
typename BaseDiscretization::BlockVectorWrapper;
173template<
class TypeTag>
174struct GridView<TypeTag, TTag::FlowBaseProblem>
176 using type =
typename GetPropType<TypeTag, Properties::Grid>::LeafGridView;
180template<
class TypeTag>
181struct MaterialLaw<TypeTag, TTag::FlowBaseProblem>
184 using Scalar = GetPropType<TypeTag, Properties::Scalar>;
185 using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
187 using Traits = ThreePhaseMaterialTraits<Scalar,
188 FluidSystem::waterPhaseIdx,
189 FluidSystem::oilPhaseIdx,
190 FluidSystem::gasPhaseIdx>;
193 using EclMaterialLawManager = ::Opm::EclMaterialLawManager<Traits>;
195 using type =
typename EclMaterialLawManager::MaterialLaw;
199template<
class TypeTag>
200struct SolidEnergyLaw<TypeTag, TTag::FlowBaseProblem>
203 using Scalar = GetPropType<TypeTag, Properties::Scalar>;
204 using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
207 using EclThermalLawManager = ::Opm::EclThermalLawManager<Scalar, FluidSystem>;
209 using type =
typename EclThermalLawManager::SolidEnergyLaw;
213template<
class TypeTag>
214struct ThermalConductionLaw<TypeTag, TTag::FlowBaseProblem>
217 using Scalar = GetPropType<TypeTag, Properties::Scalar>;
218 using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
221 using EclThermalLawManager = ::Opm::EclThermalLawManager<Scalar, FluidSystem>;
223 using type =
typename EclThermalLawManager::ThermalConductionLaw;
228template<
class TypeTag>
229struct Stencil<TypeTag, TTag::FlowBaseProblem>
232 using Scalar = GetPropType<TypeTag, Properties::Scalar>;
233 using GridView = GetPropType<TypeTag, Properties::GridView>;
236 using type = EcfvStencil<Scalar,
243template<
class TypeTag>
249template<
class TypeTag>
250struct EnableGravity<TypeTag, TTag::FlowBaseProblem> {
251 static constexpr bool value =
true;
255template<
class TypeTag>
256struct EnableDiffusion<TypeTag, TTag::FlowBaseProblem> {
257 static constexpr bool value =
true;
261template<
class TypeTag>
262struct EnableDispersion<TypeTag, TTag::FlowBaseProblem> {
263 static constexpr bool value =
false;
267template<
class TypeTag>
269 static constexpr bool value =
false;
273template<
class TypeTag>
275 static constexpr bool value =
false;
283template<
class TypeTag>
284struct EndTime<TypeTag, TTag::FlowBaseProblem> {
285 using type = GetPropType<TypeTag, Scalar>;
286 static constexpr type value = 1e100;
294template<
class TypeTag>
295struct InitialTimeStepSize<TypeTag, TTag::FlowBaseProblem> {
296 using type = GetPropType<TypeTag, Scalar>;
297 static constexpr type value = 3600*24;
301template<
class TypeTag>
302struct NewtonTolerance<TypeTag, TTag::FlowBaseProblem> {
303 using type = GetPropType<TypeTag, Scalar>;
304 static constexpr type value = 1e-2;
308template<
class TypeTag>
309struct EnableVtkOutput<TypeTag, TTag::FlowBaseProblem> {
310 static constexpr bool value =
false;
314template<
class TypeTag>
316 static constexpr bool value =
true;
320template<
class TypeTag>
322 static constexpr bool value =
false;
325template<
class TypeTag>
326struct DamarisOutputHdfCollective<TypeTag, TTag::FlowBaseProblem> {
327 static constexpr bool value =
true;
330template<
class TypeTag>
331struct DamarisSaveMeshToHdf<TypeTag, TTag::FlowBaseProblem> {
332 static constexpr bool value =
false;
335template<
class TypeTag>
336struct DamarisSaveToHdf<TypeTag, TTag::FlowBaseProblem> {
337 static constexpr bool value =
true;
340template<
class TypeTag>
341struct DamarisPythonScript<TypeTag, TTag::FlowBaseProblem> {
342 static constexpr auto value =
"";
345template<
class TypeTag>
346struct DamarisPythonParaviewScript<TypeTag, TTag::FlowBaseProblem> {
347 static constexpr auto value =
"";
350template<
class TypeTag>
351struct DamarisSimName<TypeTag, TTag::FlowBaseProblem> {
352 static constexpr auto value =
"";
361template<
class TypeTag>
362struct DamarisDedicatedCores<TypeTag, TTag::FlowBaseProblem> {
363 static constexpr int value = 1;
366template<
class TypeTag>
367struct DamarisDedicatedNodes<TypeTag, TTag::FlowBaseProblem> {
368 static constexpr int value = 0;
371template<
class TypeTag>
372struct DamarisSharedMemoryName<TypeTag, TTag::FlowBaseProblem> {
373 static constexpr auto value =
"" ;
376template<
class TypeTag>
377struct DamarisSharedMemorySizeBytes<TypeTag, TTag::FlowBaseProblem> {
378 static constexpr long value = 536870912;
381template<
class TypeTag>
382struct DamarisLogLevel<TypeTag, TTag::FlowBaseProblem> {
383 static constexpr auto value =
"info";
386template<
class TypeTag>
387struct DamarisDaskFile<TypeTag, TTag::FlowBaseProblem> {
388 static constexpr auto value =
"";
392template<
class TypeTag>
394 static constexpr bool value =
true;
398template<
class TypeTag>
400 static constexpr bool value =
false;
404template<
class TypeTag>
406 static constexpr bool value =
false;
410template<
class TypeTag>
411struct OutputDir<TypeTag, TTag::FlowBaseProblem> {
412 static constexpr auto value =
".";
417template<
class TypeTag>
418struct EnableIntensiveQuantityCache<TypeTag, TTag::FlowBaseProblem> {
419 static constexpr bool value =
true;
423template<
class TypeTag>
424struct EnableStorageCache<TypeTag, TTag::FlowBaseProblem> {
425 static constexpr bool value =
true;
429template<
class TypeTag>
430struct FluxModule<TypeTag, TTag::FlowBaseProblem> {
435template<
class TypeTag>
436struct GradientCalculator<TypeTag, TTag::FlowBaseProblem> {
442template<
class TypeTag>
444 static constexpr int value = 0xffffff;
450template<
class TypeTag>
452 static constexpr bool value =
true;
456template<
class TypeTag>
458 static constexpr bool value =
true;
462template<
class TypeTag>
463struct EnableTemperature<TypeTag, TTag::FlowBaseProblem> {
464 static constexpr bool value =
true;
467template<
class TypeTag>
468struct EnableMech<TypeTag, TTag::FlowBaseProblem> {
469 static constexpr bool value =
false;
473template<
class TypeTag>
474struct EnablePolymer<TypeTag, TTag::FlowBaseProblem> {
475 static constexpr bool value =
false;
477template<
class TypeTag>
478struct EnableSolvent<TypeTag, TTag::FlowBaseProblem> {
479 static constexpr bool value =
false;
481template<
class TypeTag>
482struct EnableEnergy<TypeTag, TTag::FlowBaseProblem> {
483 static constexpr bool value =
false;
485template<
class TypeTag>
486struct EnableFoam<TypeTag, TTag::FlowBaseProblem> {
487 static constexpr bool value =
false;
489template<
class TypeTag>
490struct EnableExtbo<TypeTag, TTag::FlowBaseProblem> {
491 static constexpr bool value =
false;
493template<
class TypeTag>
494struct EnableMICP<TypeTag, TTag::FlowBaseProblem> {
495 static constexpr bool value =
false;
499template<
class TypeTag>
501 static constexpr bool value =
false;
506template<
class TypeTag>
507struct EnableExperiments<TypeTag, TTag::FlowBaseProblem> {
508 static constexpr bool value =
false;
511template<
class TypeTag>
513 static constexpr auto value =
"all";
516template<
class TypeTag>
518 static constexpr int value = ParserKeywords::EQLDIMS::DEPTH_NODES_P::defaultValue;
521template<
class TypeTag>
523 static constexpr bool value =
false;
The base class which specifies the API of aquifer models.
Helper class for grid instantiation of ECL file-format using problems.
Collects necessary output values and pass them to Damaris server processes.
This is a "dummy" gradient calculator which does not do anything.
Collects necessary output values and pass it to opm-output.
This file contains the flux module which is used for flow problems.
Output module for the results black oil model writing in ECL binary format.
VTK output module for the tracer model's parameters.
The base class which specifies the API of aquifer models.
Definition BaseAquiferModel.hpp:50
This is a "dummy" gradient calculator which does not do anything.
Definition DummyGradientCalculator.hpp:50
Definition FIBlackoilModel.hpp:44
This problem simulates an input file given in the data format used by the commercial ECLiPSE simulato...
Definition FlowProblem.hpp:112
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition BlackoilPhases.hpp:27
Specifies a flux module which uses ECL transmissibilities.
Definition NewTranFluxModule.hpp:67
Definition FlowProblemProperties.hpp:118
Definition EclWriter.hpp:64
Definition FlowProblemProperties.hpp:112
Definition EclWriter.hpp:60
Definition DamarisProperties.hpp:39
Definition FlowProblemProperties.hpp:98
Definition FlowProblemProperties.hpp:90
Definition EclWriter.hpp:56
Definition EclWriter.hpp:68
Definition FlowProblemProperties.hpp:105
Definition FlowProblemProperties.hpp:77
Definition FlowProblemProperties.hpp:133
Definition FlowProblemProperties.hpp:128
Definition FlowProblemProperties.hpp:123
Definition FlowProblemProperties.hpp:83
Definition FlowProblemProperties.hpp:63
Definition FlowProblemProperties.hpp:70