discretefracturemodel.hh
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  Copyright (C) 2010-2013 by Andreas Lauser
5 
6  This file is part of the Open Porous Media project (OPM).
7 
8  OPM is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 2 of the License, or
11  (at your option) any later version.
12 
13  OPM is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with OPM. If not, see <http://www.gnu.org/licenses/>.
20 */
26 #ifndef EWOMS_DISCRETE_FRACTURE_MODEL_HH
27 #define EWOMS_DISCRETE_FRACTURE_MODEL_HH
28 
29 #include <opm/material/localad/Math.hpp>
30 
37 
40 
41 #include <string>
42 
43 namespace Ewoms {
44 template <class TypeTag>
46 }
47 
48 namespace Ewoms {
49 namespace Properties {
51 NEW_TYPE_TAG(DiscreteFractureModel, INHERITS_FROM(ImmiscibleTwoPhaseModel, VtkDiscreteFracture));
52 
55 
58 
61 
62 // The type of the base base class for actual problems.
63 // TODO!?
64 //SET_TYPE_PROP(DiscreteFractureModel BaseProblem, DiscreteFractureBaseProblem<TypeTag>);
65 
67 SET_TYPE_PROP(DiscreteFractureModel, PrimaryVariables,
69 
71 SET_TYPE_PROP(DiscreteFractureModel, IntensiveQuantities,
73 
75 SET_TYPE_PROP(DiscreteFractureModel, ExtensiveQuantities,
77 
80 SET_BOOL_PROP(DiscreteFractureModel, UseTwoPointGradients, true);
81 
82 // The intensive quantity cache cannot be used by the discrete fracture model, because
83 // the intensive quantities of a control degree of freedom are not identical to the
84 // intensive quantities of the other intensive quantities of the same of the same degree
85 // of freedom. This is because the fracture properties (volume, permeability, etc) are
86 // specific for each...
87 SET_BOOL_PROP(DiscreteFractureModel, EnableIntensiveQuantityCache, false);
88 } // namespace Properties
89 
107 template <class TypeTag>
108 class DiscreteFractureModel : public ImmiscibleModel<TypeTag>
109 {
110  typedef ImmiscibleModel<TypeTag> ParentType;
111  typedef typename GET_PROP_TYPE(TypeTag, Simulator) Simulator;
112 
113 public:
114  DiscreteFractureModel(Simulator &simulator)
115  : ParentType(simulator)
116  {
117  if (EWOMS_GET_PARAM(TypeTag, bool, EnableIntensiveQuantityCache)) {
118  OPM_THROW(std::runtime_error,
119  "The discrete fracture model does not work in conjunction "
120  "with intensive quantities caching");
121  }
122  }
123 
127  static void registerParameters()
128  {
130 
131  // register runtime parameters of the VTK output modules
133  }
134 
138  static std::string name()
139  { return "discretefracture"; }
140 
142  {
144 
145  this->addOutputModule(new Ewoms::VtkDiscreteFractureModule<TypeTag>(this->simulator_));
146  }
147 };
148 } // namespace Ewoms
149 
150 #endif
Contains the quantities which are are constant within a finite volume in the discret fracture immisci...
void registerOutputModules_()
Definition: immisciblemodel.hh:336
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
This class expresses all intensive quantities of the discrete fracture model.
Definition: discretefractureextensivequantities.hh:43
static void registerParameters()
Register all run-time parameters for the immiscible model.
Definition: discretefracturemodel.hh:127
A fully-implicit multi-phase flow model which assumes immiscibility of the phases.
static void registerParameters()
Register all run-time parameters for the multi-phase VTK output module.
Definition: vtkdiscretefracturemodule.hh:112
Contains the quantities which are are constant within a finite volume in the discret fracture immisci...
Definition: discretefractureintensivequantities.hh:44
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
Definition: discretefractureproblem.hh:51
Represents the primary variables used by the discrete fracture multi-phase model. ...
Definition: discretefractureprimaryvariables.hh:41
SET_TYPE_PROP(NumericModel, Scalar, double)
Set the default type of scalar values to double.
Definition: baseauxiliarymodule.hh:35
Represents the primary variables used by the discrete fracture multi-phase model. ...
Calculates the local residual of the discrete fracture immiscible multi-phase model.
Definition: discretefracturelocalresidual.hh:40
void registerOutputModules_()
Definition: discretefracturemodel.hh:141
Defines the properties required for the immiscible multi-phase model which considers discrete fractur...
static std::string name()
Definition: discretefracturemodel.hh:138
static void registerParameters()
Register all run-time parameters for the immiscible model.
Definition: immisciblemodel.hh:222
Calculates the local residual of the discrete fracture immiscible multi-phase model.
VTK output module for quantities which make sense for all models which deal with discrete fractures i...
Definition: vtkdiscretefracturemodule.hh:79
NEW_TYPE_TAG(AuxModule)
SET_BOOL_PROP(FvBaseDiscretization, EnableVtkOutput, true)
Enable the VTK output by default.
#define INHERITS_FROM(...)
Syntactic sugar for NEW_TYPE_TAG.
Definition: propertysystem.hh:229
A fully-implicit multi-phase flow model which assumes immiscibility of the phases and is able to incl...
Definition: discretefracturemodel.hh:45
VTK output module for quantities which make sense for all models which deal with discrete fractures i...
#define EWOMS_GET_PARAM(TypeTag, ParamType, ParamName)
Retrieve a runtime parameter.
Definition: parametersystem.hh:95
This class expresses all intensive quantities of the discrete fracture model.