fractureproblem.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 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 EWOMS_FRACTURE_PROBLEM_HH
29#define EWOMS_FRACTURE_PROBLEM_HH
30
31#if HAVE_DUNE_ALUGRID
32// avoid reordering of macro elements, otherwise this problem won't work
33#define DISABLE_ALUGRID_SFC_ORDERING 1
34#include <dune/alugrid/grid.hh>
35#include <dune/alugrid/dgf.hh>
36#else
37#error "dune-alugrid not found!"
38#endif
39
40#include <opm/material/fluidmatrixinteractions/RegularizedBrooksCorey.hpp>
41#include <opm/material/fluidmatrixinteractions/RegularizedVanGenuchten.hpp>
42#include <opm/material/fluidmatrixinteractions/LinearMaterial.hpp>
43#include <opm/material/fluidmatrixinteractions/EffToAbsLaw.hpp>
44#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
45#include <opm/material/thermal/SomertonThermalConductionLaw.hpp>
46#include <opm/material/thermal/ConstantSolidHeatCapLaw.hpp>
47#include <opm/material/fluidsystems/TwoPhaseImmiscibleFluidSystem.hpp>
48#include <opm/material/components/SimpleH2O.hpp>
49#include <opm/material/components/Dnapl.hpp>
50
56
57#include <dune/common/version.hh>
58#include <dune/common/fmatrix.hh>
59#include <dune/common/fvector.hh>
60
61#include <iostream>
62#include <sstream>
63#include <string>
64
65namespace Opm {
66template <class TypeTag>
67class FractureProblem;
68}
69
70namespace Opm::Properties {
71
72// Create a type tag for the problem
73// Create new type tags
74namespace TTag {
75
77{ using InheritsFrom = std::tuple<DiscreteFractureModel>; };
78
79} // end namespace TTag
80
81// Set the grid type
82template<class TypeTag>
83struct Grid<TypeTag, TTag::FractureProblem>
84{ using type = Dune::ALUGrid</*dim=*/2, /*dimWorld=*/2, Dune::simplex, Dune::nonconforming>; };
85
86// Set the Vanguard property
87template<class TypeTag>
88struct Vanguard<TypeTag, TTag::FractureProblem>
90
91// Set the problem property
92template<class TypeTag>
93struct Problem<TypeTag, TTag::FractureProblem>
95
96// Set the wetting phase
97template<class TypeTag>
98struct WettingPhase<TypeTag, TTag::FractureProblem>
99{
100private:
102
103public:
104 using type = Opm::LiquidPhase<Scalar, Opm::SimpleH2O<Scalar> >;
105};
106
107// Set the non-wetting phase
108template<class TypeTag>
109struct NonwettingPhase<TypeTag, TTag::FractureProblem>
110{
111private:
113
114public:
115 using type = Opm::LiquidPhase<Scalar, Opm::DNAPL<Scalar> >;
116};
117
118// Set the material Law
119template<class TypeTag>
120struct MaterialLaw<TypeTag, TTag::FractureProblem>
121{
122private:
124 enum { wettingPhaseIdx = FluidSystem::wettingPhaseIdx };
125 enum { nonWettingPhaseIdx = FluidSystem::nonWettingPhaseIdx };
126
128 using Traits = Opm::TwoPhaseMaterialTraits<Scalar,
129 /*wettingPhaseIdx=*/FluidSystem::wettingPhaseIdx,
130 /*nonWettingPhaseIdx=*/FluidSystem::nonWettingPhaseIdx>;
131
132 // define the material law which is parameterized by effective
133 // saturations
134 using EffectiveLaw = Opm::RegularizedBrooksCorey<Traits>;
135 // using EffectiveLaw = RegularizedVanGenuchten<Traits>;
136 // using EffectiveLaw = LinearMaterial<Traits>;
137public:
138 using type = Opm::EffToAbsLaw<EffectiveLaw>;
139};
140
141// Enable the energy equation
142template<class TypeTag>
143struct EnableEnergy<TypeTag, TTag::FractureProblem>
144{ static constexpr bool value = true; };
145
146// Set the thermal conduction law
147template<class TypeTag>
149{
150private:
153
154public:
155 // define the material law parameterized by absolute saturations
156 using type = Opm::SomertonThermalConductionLaw<FluidSystem, Scalar>;
157};
158
159// set the energy storage law for the solid phase
160template<class TypeTag>
161struct SolidEnergyLaw<TypeTag, TTag::FractureProblem>
162{ using type = Opm::ConstantSolidHeatCapLaw<GetPropType<TypeTag, Properties::Scalar>>; };
163
164// For this problem, we use constraints to specify the left boundary
165template<class TypeTag>
166struct EnableConstraints<TypeTag, TTag::FractureProblem>
167{ static constexpr bool value = true; };
168
170template<class TypeTag>
173
175template<class TypeTag>
176struct FluxModule<TypeTag, TTag::FractureProblem>
178
179// //! Use finite differences to linearize the system of PDEs
180template<class TypeTag>
183
184} // namespace Opm::Properties
185
186namespace Opm {
199template <class TypeTag>
200class FractureProblem : public GetPropType<TypeTag, Properties::BaseProblem>
201{
216 using ThermalConductionLawParams = GetPropType<TypeTag, Properties::ThermalConductionLawParams>;
219
220 enum {
221 // phase indices
222 wettingPhaseIdx = MaterialLaw::wettingPhaseIdx,
223 nonWettingPhaseIdx = MaterialLaw::nonWettingPhaseIdx,
224
225 // number of phases
226 numPhases = FluidSystem::numPhases,
227
228 // Grid and world dimension
229 dim = GridView::dimension,
230 dimWorld = GridView::dimensionworld
231 };
232
233 using FluidState = Opm::ImmiscibleFluidState<Scalar, FluidSystem>;
234
235 using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
236 using DimMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
237
238 template <int dim>
239 struct FaceLayout
240 {
241 bool contains(Dune::GeometryType gt)
242 { return gt.dim() == dim - 1; }
243 };
244 using FaceMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
245
247
248public:
252 explicit FractureProblem(Simulator& simulator)
253 : ParentType(simulator)
254 { }
255
260 {
261 ParentType::finishInit();
262
263 eps_ = 3e-6;
264 temperature_ = 273.15 + 20; // -> 20°C
265
266 matrixMaterialParams_.setResidualSaturation(wettingPhaseIdx, 0.0);
267 matrixMaterialParams_.setResidualSaturation(nonWettingPhaseIdx, 0.0);
268 fractureMaterialParams_.setResidualSaturation(wettingPhaseIdx, 0.0);
269 fractureMaterialParams_.setResidualSaturation(nonWettingPhaseIdx, 0.0);
270
271#if 0 // linear
272 matrixMaterialParams_.setEntryPC(0.0);
273 matrixMaterialParams_.setMaxPC(2000.0);
274 fractureMaterialParams_.setEntryPC(0.0);
275 fractureMaterialParams_.setMaxPC(1000.0);
276#endif
277
278#if 1 // Brooks-Corey
279 matrixMaterialParams_.setEntryPressure(2000);
280 matrixMaterialParams_.setLambda(2.0);
281 matrixMaterialParams_.setPcLowSw(1e-1);
282 fractureMaterialParams_.setEntryPressure(1000);
283 fractureMaterialParams_.setLambda(2.0);
284 fractureMaterialParams_.setPcLowSw(5e-2);
285#endif
286
287#if 0 // van Genuchten
288 matrixMaterialParams_.setVgAlpha(0.0037);
289 matrixMaterialParams_.setVgN(4.7);
290 fractureMaterialParams_.setVgAlpha(0.0025);
291 fractureMaterialParams_.setVgN(4.7);
292#endif
293
294 matrixMaterialParams_.finalize();
295 fractureMaterialParams_.finalize();
296
297 matrixK_ = this->toDimMatrix_(1e-15); // m^2
298 fractureK_ = this->toDimMatrix_(1e5 * 1e-15); // m^2
299
300 matrixPorosity_ = 0.10;
301 fracturePorosity_ = 0.25;
302 fractureWidth_ = 1e-3; // [m]
303
304 // initialize the energy-related parameters
305 initEnergyParams_(thermalConductionParams_, matrixPorosity_);
306 }
307
311 static void registerParameters()
312 {
313 ParentType::registerParameters();
314
315 Parameters::SetDefault<Parameters::GridFile>("data/fracture.art.dgf");
316 Parameters::SetDefault<Parameters::EndTime<Scalar>>(3e3);
317 Parameters::SetDefault<Parameters::InitialTimeStepSize<Scalar>>(100);
318 }
319
324
328 std::string name() const
329 {
330 std::ostringstream oss;
331 oss << "fracture_" << Model::name();
332 return oss.str();
333 }
334
339 {
340#ifndef NDEBUG
341 // checkConservativeness() does not include the effect of constraints, so we
342 // disable it for this problem...
343 //this->model().checkConservativeness();
344
345 // Calculate storage terms
346 EqVector storage;
347 this->model().globalStorage(storage);
348
349 // Write mass balance information for rank 0
350 if (this->gridView().comm().rank() == 0) {
351 std::cout << "Storage: " << storage << std::endl << std::flush;
352 }
353#endif // NDEBUG
354 }
355
359 template <class Context>
360 Scalar temperature([[maybe_unused]] const Context& context,
361 [[maybe_unused]] unsigned spaceIdx,
362 [[maybe_unused]] unsigned timeIdx) const
363 { return temperature_; }
364
365 // \}
366
371
375 template <class Context>
376 const DimMatrix& intrinsicPermeability([[maybe_unused]] const Context& context,
377 [[maybe_unused]] unsigned spaceIdx,
378 [[maybe_unused]] unsigned timeIdx) const
379 { return matrixK_; }
380
386 template <class Context>
387 const DimMatrix& fractureIntrinsicPermeability([[maybe_unused]] const Context& context,
388 [[maybe_unused]] unsigned spaceIdx,
389 [[maybe_unused]] unsigned timeIdx) const
390 { return fractureK_; }
391
395 template <class Context>
396 Scalar porosity([[maybe_unused]] const Context& context,
397 [[maybe_unused]] unsigned spaceIdx,
398 [[maybe_unused]] unsigned timeIdx) const
399 { return matrixPorosity_; }
400
406 template <class Context>
407 Scalar fracturePorosity([[maybe_unused]] const Context& context,
408 [[maybe_unused]] unsigned spaceIdx,
409 [[maybe_unused]] unsigned timeIdx) const
410 { return fracturePorosity_; }
411
415 template <class Context>
416 const MaterialLawParams& materialLawParams([[maybe_unused]] const Context& context,
417 [[maybe_unused]] unsigned spaceIdx,
418 [[maybe_unused]] unsigned timeIdx) const
419 { return matrixMaterialParams_; }
420
426 template <class Context>
427 const MaterialLawParams& fractureMaterialLawParams([[maybe_unused]] const Context& context,
428 [[maybe_unused]] unsigned spaceIdx,
429 [[maybe_unused]] unsigned timeIdx) const
430 { return fractureMaterialParams_; }
431
436 { return this->simulator().vanguard().fractureMapper(); }
437
450 template <class Context>
451 Scalar fractureWidth([[maybe_unused]] const Context& context,
452 [[maybe_unused]] unsigned spaceIdx1,
453 [[maybe_unused]] unsigned spaceIdx2,
454 [[maybe_unused]] unsigned timeIdx) const
455 { return fractureWidth_; }
456
460 template <class Context>
461 const ThermalConductionLawParams&
462 thermalConductionLawParams([[maybe_unused]] const Context& context,
463 [[maybe_unused]] unsigned spaceIdx,
464 [[maybe_unused]] unsigned timeIdx) const
465 { return thermalConductionParams_; }
466
472 template <class Context>
473 const SolidEnergyLawParams&
474 solidEnergyLawParams([[maybe_unused]] const Context& context,
475 [[maybe_unused]] unsigned spaceIdx,
476 [[maybe_unused]] unsigned timeIdx) const
477 { return solidEnergyParams_; }
478
479 // \}
480
484 // \{
485
489 template <class Context>
490 void boundary(BoundaryRateVector& values, const Context& context,
491 unsigned spaceIdx, unsigned timeIdx) const
492 {
493 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
494
495 if (onRightBoundary_(pos)) {
496 // on the right boundary, we impose a free-flow
497 // (i.e. Dirichlet) condition
498 FluidState fluidState;
499 fluidState.setTemperature(temperature_);
500
501 fluidState.setSaturation(wettingPhaseIdx, 0.0);
502 fluidState.setSaturation(nonWettingPhaseIdx,
503 1.0 - fluidState.saturation(wettingPhaseIdx));
504
505 fluidState.setPressure(wettingPhaseIdx, 1e5);
506 fluidState.setPressure(nonWettingPhaseIdx, fluidState.pressure(wettingPhaseIdx));
507
508 typename FluidSystem::template ParameterCache<Scalar> paramCache;
509 paramCache.updateAll(fluidState);
510 for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
511 fluidState.setDensity(phaseIdx,
512 FluidSystem::density(fluidState, paramCache, phaseIdx));
513 fluidState.setViscosity(phaseIdx,
514 FluidSystem::viscosity(fluidState, paramCache, phaseIdx));
515 }
516
517 // set a free flow (i.e. Dirichlet) boundary
518 values.setFreeFlow(context, spaceIdx, timeIdx, fluidState);
519 }
520 else
521 // for the upper, lower and left boundaries, use a no-flow
522 // condition (i.e. a Neumann 0 condition)
523 values.setNoFlow();
524 }
525
526 // \}
527
531 // \{
532
536 template <class Context>
537 void constraints(Constraints& constraints, const Context& context,
538 unsigned spaceIdx, unsigned timeIdx) const
539 {
540 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
541
542 if (!onLeftBoundary_(pos))
543 // only impose constraints adjacent to the left boundary
544 return;
545
546 unsigned globalIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
547 if (!fractureMapper().isFractureVertex(globalIdx)) {
548 // do not impose constraints if the finite volume does
549 // not contain fractures.
550 return;
551 }
552
553 // if the current finite volume is on the left boundary
554 // and features a fracture, specify the fracture fluid
555 // state.
556 FluidState fractureFluidState;
557 fractureFluidState.setTemperature(temperature_ + 10.0);
558
559 fractureFluidState.setSaturation(wettingPhaseIdx, 1.0);
560 fractureFluidState.setSaturation(nonWettingPhaseIdx,
561 1.0 - fractureFluidState.saturation(
562 wettingPhaseIdx));
563
564 Scalar pCFracture[numPhases];
565 MaterialLaw::capillaryPressures(pCFracture, fractureMaterialParams_,
566 fractureFluidState);
567
568 fractureFluidState.setPressure(wettingPhaseIdx, /*pressure=*/1.0e5);
569 fractureFluidState.setPressure(nonWettingPhaseIdx,
570 fractureFluidState.pressure(wettingPhaseIdx)
571 + (pCFracture[nonWettingPhaseIdx]
572 - pCFracture[wettingPhaseIdx]));
573
574 constraints.setActive(true);
575 constraints.assignNaiveFromFracture(fractureFluidState,
576 matrixMaterialParams_);
577 }
578
582 template <class Context>
583 void initial(PrimaryVariables& values,
584 [[maybe_unused]] const Context& context,
585 [[maybe_unused]] unsigned spaceIdx,
586 [[maybe_unused]] unsigned timeIdx) const
587 {
588 FluidState fluidState;
589 fluidState.setTemperature(temperature_);
590 fluidState.setPressure(FluidSystem::wettingPhaseIdx, /*pressure=*/1e5);
591 fluidState.setPressure(nonWettingPhaseIdx, fluidState.pressure(wettingPhaseIdx));
592
593 fluidState.setSaturation(wettingPhaseIdx, 0.0);
594 fluidState.setSaturation(nonWettingPhaseIdx,
595 1.0 - fluidState.saturation(wettingPhaseIdx));
596
597 values.assignNaive(fluidState);
598 }
599
606 template <class Context>
607 void source(RateVector& rate,
608 [[maybe_unused]] const Context& context,
609 [[maybe_unused]] unsigned spaceIdx,
610 [[maybe_unused]] unsigned timeIdx) const
611 { rate = Scalar(0.0); }
612
613 // \}
614
615private:
616 bool onLeftBoundary_(const GlobalPosition& pos) const
617 { return pos[0] < this->boundingBoxMin()[0] + eps_; }
618
619 bool onRightBoundary_(const GlobalPosition& pos) const
620 { return pos[0] > this->boundingBoxMax()[0] - eps_; }
621
622 bool onLowerBoundary_(const GlobalPosition& pos) const
623 { return pos[1] < this->boundingBoxMin()[1] + eps_; }
624
625 bool onUpperBoundary_(const GlobalPosition& pos) const
626 { return pos[1] > this->boundingBoxMax()[1] - eps_; }
627
628 void initEnergyParams_(ThermalConductionLawParams& params, Scalar poro)
629 {
630 // assume the volumetric heat capacity of granite
631 solidEnergyParams_.setSolidHeatCapacity(790.0 // specific heat capacity of granite [J / (kg K)]
632 * 2700.0); // density of granite [kg/m^3]
633 solidEnergyParams_.finalize();
634
635 Scalar lambdaGranite = 2.8; // [W / (K m)]
636
637 // create a Fluid state which has all phases present
638 Opm::ImmiscibleFluidState<Scalar, FluidSystem> fs;
639 fs.setTemperature(293.15);
640 for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
641 fs.setPressure(phaseIdx, 1.0135e5);
642 }
643
644 typename FluidSystem::template ParameterCache<Scalar> paramCache;
645 paramCache.updateAll(fs);
646 for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
647 Scalar rho = FluidSystem::density(fs, paramCache, phaseIdx);
648 fs.setDensity(phaseIdx, rho);
649 }
650
651 for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
652 Scalar lambdaSaturated;
653 if (FluidSystem::isLiquid(phaseIdx)) {
654 Scalar lambdaFluid = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx);
655 lambdaSaturated =
656 std::pow(lambdaGranite, (1 - poro))
657 + std::pow(lambdaFluid, poro);
658 }
659 else
660 lambdaSaturated = std::pow(lambdaGranite, (1 - poro));
661
662 params.setFullySaturatedLambda(phaseIdx, lambdaSaturated);
663 }
664
665 Scalar lambdaVac = std::pow(lambdaGranite, (1 - poro));
666 params.setVacuumLambda(lambdaVac);
667 }
668
669 DimMatrix matrixK_;
670 DimMatrix fractureK_;
671
672 Scalar matrixPorosity_;
673 Scalar fracturePorosity_;
674
675 Scalar fractureWidth_;
676
677 MaterialLawParams fractureMaterialParams_;
678 MaterialLawParams matrixMaterialParams_;
679
680 ThermalConductionLawParams thermalConductionParams_;
681 SolidEnergyLawParams solidEnergyParams_;
682
683 Scalar temperature_;
684 Scalar eps_;
685};
686
687} // namespace Opm
688
689#endif // EWOMS_FRACTURE_PROBLEM_HH
Provides a simulator vanguard which creates a grid by parsing a Dune Grid Format (DGF) file.
Definition: dgfvanguard.hh:50
Stores the topology of fractures.
Definition: fracturemapper.hh:41
Two-phase problem which involves fractures.
Definition: fractureproblem.hh:201
const SolidEnergyLawParams & solidEnergyLawParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Return the parameters for the energy storage law of the rock.
Definition: fractureproblem.hh:474
const DimMatrix & intrinsicPermeability(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: fractureproblem.hh:376
Scalar fractureWidth(const Context &context, unsigned spaceIdx1, unsigned spaceIdx2, unsigned timeIdx) const
Returns the width of the fracture.
Definition: fractureproblem.hh:451
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Evaluate the initial value for a control volume.
Definition: fractureproblem.hh:583
static void registerParameters()
Definition: fractureproblem.hh:311
Scalar fracturePorosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
The porosity inside the fractures.
Definition: fractureproblem.hh:407
void finishInit()
Called by the Opm::Simulator in order to initialize the problem.
Definition: fractureproblem.hh:259
std::string name() const
The problem name.
Definition: fractureproblem.hh:328
FractureProblem(Simulator &simulator)
Definition: fractureproblem.hh:252
void constraints(Constraints &constraints, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Evaluate the constraints for a control volume.
Definition: fractureproblem.hh:537
const DimMatrix & fractureIntrinsicPermeability(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Intrinsic permeability of fractures.
Definition: fractureproblem.hh:387
const MaterialLawParams & materialLawParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: fractureproblem.hh:416
void endTimeStep()
Called directly after the time integration.
Definition: fractureproblem.hh:338
const ThermalConductionLawParams & thermalConductionLawParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: fractureproblem.hh:462
void source(RateVector &rate, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Evaluate the source term for all phases within a given sub-control-volume.
Definition: fractureproblem.hh:607
const MaterialLawParams & fractureMaterialLawParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
The parameters for the material law inside the fractures.
Definition: fractureproblem.hh:427
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: fractureproblem.hh:360
void boundary(BoundaryRateVector &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Evaluate the boundary conditions for a boundary segment.
Definition: fractureproblem.hh:490
const FractureMapper & fractureMapper() const
Returns the object representating the fracture topology.
Definition: fractureproblem.hh:435
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: fractureproblem.hh:396
This file contains the necessary classes to calculate the volumetric fluxes out of a pressure potenti...
Definition: blackoilmodel.hh:74
Definition: blackoilbioeffectsmodules.hh:45
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
Specifies a flux module which uses the Darcy relation.
Definition: darcyfluxmodule.hh:67
Specify whether the some degrees of fredom can be constraint.
Definition: fvbaseproperties.hh:213
Specify whether energy should be considered as a conservation quantity or not.
Definition: multiphasebaseproperties.hh:87
Specifies the relation used for velocity.
Definition: multiphasebaseproperties.hh:83
Dune::ALUGrid< 2, 2, Dune::simplex, Dune::nonconforming > type
Definition: fractureproblem.hh:84
The type of the DUNE grid.
Definition: basicproperties.hh:104
Definition: fvbaseproperties.hh:60
Opm::EffToAbsLaw< EffectiveLaw > type
Definition: fractureproblem.hh:138
The material law which ought to be used (extracted from the spatial parameters)
Definition: multiphasebaseproperties.hh:55
Opm::LiquidPhase< Scalar, Opm::DNAPL< Scalar > > type
Definition: fractureproblem.hh:115
The non-wetting phase for two-phase models.
Definition: immiscibleproperties.hh:44
The type of the problem.
Definition: fvbaseproperties.hh:86
Opm::ConstantSolidHeatCapLaw< GetPropType< TypeTag, Properties::Scalar > > type
Definition: fractureproblem.hh:162
The material law for the energy stored in the solid matrix.
Definition: multiphasebaseproperties.hh:63
The splice to be used for the spatial discretization.
Definition: multiphasebaseproperties.hh:39
Definition: fvbasefdlocallinearizer.hh:65
Definition: fractureproblem.hh:77
std::tuple< DiscreteFractureModel > InheritsFrom
Definition: fractureproblem.hh:77
Definition: vcfvproperties.hh:41
Opm::SomertonThermalConductionLaw< FluidSystem, Scalar > type
Definition: fractureproblem.hh:156
The material law for thermal conduction.
Definition: multiphasebaseproperties.hh:71
Property which provides a Vanguard (manages grids)
Definition: basicproperties.hh:100
Opm::LiquidPhase< Scalar, Opm::SimpleH2O< Scalar > > type
Definition: fractureproblem.hh:104
The wetting phase for two-phase models.
Definition: immiscibleproperties.hh:41