co2injectionproblem.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_CO2_INJECTION_PROBLEM_HH
29#define EWOMS_CO2_INJECTION_PROBLEM_HH
30
33
34#include <opm/material/fluidsystems/H2ON2FluidSystem.hpp>
35#include <opm/material/fluidsystems/BrineCO2FluidSystem.hpp>
36#include <opm/material/fluidstates/CompositionalFluidState.hpp>
37#include <opm/material/fluidstates/ImmiscibleFluidState.hpp>
38#include <opm/material/constraintsolvers/ComputeFromReferencePhase.hpp>
39#include <opm/material/fluidmatrixinteractions/LinearMaterial.hpp>
40#include <opm/material/fluidmatrixinteractions/RegularizedBrooksCorey.hpp>
41#include <opm/material/fluidmatrixinteractions/EffToAbsLaw.hpp>
42#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
43#include <opm/material/thermal/SomertonThermalConductionLaw.hpp>
44#include <opm/material/thermal/ConstantSolidHeatCapLaw.hpp>
45#include <opm/material/binarycoefficients/Brine_CO2.hpp>
46#include <opm/material/common/UniformTabulated2DFunction.hpp>
47
48#include <dune/grid/yaspgrid.hh>
49#include <dune/grid/io/file/dgfparser/dgfyasp.hh>
50
51#include <dune/common/version.hh>
52#include <dune/common/fvector.hh>
53#include <dune/common/fmatrix.hh>
54
55#include <sstream>
56#include <iostream>
57#include <string>
58
59namespace Opm {
60
62template <class TypeTag>
63class Co2InjectionProblem;
65
66}
67
68namespace Opm::Properties {
69
70namespace TTag {
72}
73
74// Set the grid type
75template<class TypeTag>
76struct Grid<TypeTag, TTag::Co2InjectionBaseProblem> { using type = Dune::YaspGrid<2>; };
77
78// Set the problem property
79template<class TypeTag>
80struct Problem<TypeTag, TTag::Co2InjectionBaseProblem>
82
83// Set fluid configuration
84template<class TypeTag>
85struct FluidSystem<TypeTag, TTag::Co2InjectionBaseProblem>
86{
87private:
89
90public:
91 using type = Opm::BrineCO2FluidSystem<Scalar>;
92 //using type = Opm::H2ON2FluidSystem<Scalar, /*useComplexRelations=*/false>;
93};
94
95// Set the material Law
96template<class TypeTag>
97struct MaterialLaw<TypeTag, TTag::Co2InjectionBaseProblem>
98{
99private:
101 enum { liquidPhaseIdx = FluidSystem::liquidPhaseIdx };
102 enum { gasPhaseIdx = FluidSystem::gasPhaseIdx };
103
105 using Traits = Opm::TwoPhaseMaterialTraits<Scalar,
106 /*wettingPhaseIdx=*/FluidSystem::liquidPhaseIdx,
107 /*nonWettingPhaseIdx=*/FluidSystem::gasPhaseIdx>;
108
109 // define the material law which is parameterized by effective
110 // saturations
111 using EffMaterialLaw = Opm::RegularizedBrooksCorey<Traits>;
112
113public:
114 // define the material law parameterized by absolute saturations
115 using type = Opm::EffToAbsLaw<EffMaterialLaw>;
116};
117
118// Set the thermal conduction law
119template<class TypeTag>
120struct ThermalConductionLaw<TypeTag, TTag::Co2InjectionBaseProblem>
121{
122private:
125
126public:
127 // define the material law parameterized by absolute saturations
128 using type = Opm::SomertonThermalConductionLaw<FluidSystem, Scalar>;
129};
130
131// set the energy storage law for the solid phase
132template<class TypeTag>
133struct SolidEnergyLaw<TypeTag, TTag::Co2InjectionBaseProblem>
134{ using type = Opm::ConstantSolidHeatCapLaw<GetPropType<TypeTag, Properties::Scalar>>; };
135
136// Use the algebraic multi-grid linear solver for this problem
137template<class TypeTag>
138struct LinearSolverSplice<TypeTag, TTag::Co2InjectionBaseProblem> { using type = TTag::ParallelAmgLinearSolver; };
139
140} // namespace Opm::Properties
141
142namespace Opm::Parameters {
143
144struct FluidSystemNumPressure { static constexpr unsigned value = 100; };
145struct FluidSystemNumTemperature { static constexpr unsigned value = 100; };
146
147template<class Scalar>
148struct FluidSystemPressureHigh { static constexpr Scalar value = 4e7; };
149
150template<class Scalar>
151struct FluidSystemPressureLow { static constexpr Scalar value = 3e7; };
152
153template<class Scalar>
154struct FluidSystemTemperatureHigh { static constexpr Scalar value = 500.0; };
155
156template<class Scalar>
157struct FluidSystemTemperatureLow { static constexpr Scalar value = 290.0; };
158
159template<class Scalar>
160struct MaxDepth { static constexpr Scalar value = 2500.0; };
161
162struct SimulationName { static constexpr auto value = "co2injection"; };
163
164template<class Scalar>
165struct Temperature { static constexpr Scalar value = 293.15; };
166
167} // namespace Opm::Parameters
168
169namespace Opm {
170
172
195template <class TypeTag>
196class Co2InjectionProblem : public GetPropType<TypeTag, Properties::BaseProblem>
197{
199
204
205 enum { dim = GridView::dimension };
206 enum { dimWorld = GridView::dimensionworld };
207
208 // copy some indices for convenience
210 enum { numPhases = FluidSystem::numPhases };
211 enum { gasPhaseIdx = FluidSystem::gasPhaseIdx };
212 enum { liquidPhaseIdx = FluidSystem::liquidPhaseIdx };
213 enum { CO2Idx = FluidSystem::CO2Idx };
214 enum { BrineIdx = FluidSystem::BrineIdx };
215 enum { conti0EqIdx = Indices::conti0EqIdx };
216 enum { contiCO2EqIdx = conti0EqIdx + CO2Idx };
217
227 using ThermalConductionLawParams = typename ThermalConductionLaw::Params;
228
229 using Toolbox = Opm::MathToolbox<Evaluation>;
230 using CoordScalar = typename GridView::ctype;
231 using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>;
232 using DimMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
233
234public:
238 Co2InjectionProblem(Simulator& simulator)
239 : ParentType(simulator)
240 { }
241
246 {
247 ParentType::finishInit();
248
249 eps_ = 1e-6;
250
251 temperatureLow_ = Parameters::Get<Parameters::FluidSystemTemperatureLow<Scalar>>();
252 temperatureHigh_ = Parameters::Get<Parameters::FluidSystemTemperatureHigh<Scalar>>();
253 nTemperature_ = Parameters::Get<Parameters::FluidSystemNumTemperature>();
254
255 pressureLow_ = Parameters::Get<Parameters::FluidSystemPressureLow<Scalar>>();
256 pressureHigh_ = Parameters::Get<Parameters::FluidSystemPressureHigh<Scalar>>();
257 nPressure_ = Parameters::Get<Parameters::FluidSystemNumPressure>();
258
259 maxDepth_ = Parameters::Get<Parameters::MaxDepth<Scalar>>();
260 temperature_ = Parameters::Get<Parameters::Temperature<Scalar>>();
261
262 // initialize the tables of the fluid system
263 // FluidSystem::init();
264 FluidSystem::init(/*Tmin=*/temperatureLow_,
265 /*Tmax=*/temperatureHigh_,
266 /*nT=*/nTemperature_,
267 /*pmin=*/pressureLow_,
268 /*pmax=*/pressureHigh_,
269 /*np=*/nPressure_);
270
271 fineLayerBottom_ = 22.0;
272
273 // intrinsic permeabilities
274 fineK_ = this->toDimMatrix_(1e-13);
275 coarseK_ = this->toDimMatrix_(1e-12);
276
277 // porosities
278 finePorosity_ = 0.3;
279 coarsePorosity_ = 0.3;
280
281 // residual saturations
282 fineMaterialParams_.setResidualSaturation(liquidPhaseIdx, 0.2);
283 fineMaterialParams_.setResidualSaturation(gasPhaseIdx, 0.0);
284 coarseMaterialParams_.setResidualSaturation(liquidPhaseIdx, 0.2);
285 coarseMaterialParams_.setResidualSaturation(gasPhaseIdx, 0.0);
286
287 // parameters for the Brooks-Corey law
288 fineMaterialParams_.setEntryPressure(1e4);
289 coarseMaterialParams_.setEntryPressure(5e3);
290 fineMaterialParams_.setLambda(2.0);
291 coarseMaterialParams_.setLambda(2.0);
292
293 fineMaterialParams_.finalize();
294 coarseMaterialParams_.finalize();
295
296 // parameters for the somerton law thermal conduction
297 computeThermalCondParams_(fineThermalCondParams_, finePorosity_);
298 computeThermalCondParams_(coarseThermalCondParams_, coarsePorosity_);
299
300 // assume constant heat capacity and granite
301 solidEnergyLawParams_.setSolidHeatCapacity(790.0 // specific heat capacity of granite [J / (kg K)]
302 * 2700.0); // density of granite [kg/m^3]
303 solidEnergyLawParams_.finalize();
304 }
305
309 static void registerParameters()
310 {
311 ParentType::registerParameters();
312
313 Parameters::Register<Parameters::FluidSystemTemperatureLow<Scalar>>
314 ("The lower temperature [K] for tabulation of the fluid system");
315 Parameters::Register<Parameters::FluidSystemTemperatureHigh<Scalar>>
316 ("The upper temperature [K] for tabulation of the fluid system");
317 Parameters::Register<Parameters::FluidSystemNumTemperature>
318 ("The number of intervals between the lower and upper temperature");
319 Parameters::Register<Parameters::FluidSystemPressureLow<Scalar>>
320 ("The lower pressure [Pa] for tabulation of the fluid system");
321 Parameters::Register<Parameters::FluidSystemPressureHigh<Scalar>>
322 ("The upper pressure [Pa] for tabulation of the fluid system");
323 Parameters::Register<Parameters::FluidSystemNumPressure>
324 ("The number of intervals between the lower and upper pressure");
325 Parameters::Register<Parameters::Temperature<Scalar>>
326 ("The temperature [K] in the reservoir");
327 Parameters::Register<Parameters::MaxDepth<Scalar>>
328 ("The maximum depth [m] of the reservoir");
329 Parameters::Register<Parameters::SimulationName>
330 ("The name of the simulation used for the output files");
331
332 Parameters::SetDefault<Parameters::GridFile>("data/co2injection.dgf");
333 Parameters::SetDefault<Parameters::EndTime<Scalar>>(1e4);
334 Parameters::SetDefault<Parameters::InitialTimeStepSize<Scalar>>(250);
335 Parameters::SetDefault<Parameters::NewtonTolerance<Scalar>>(Scalar{Co2InjectionTolerance});
336 Parameters::SetDefault<Parameters::EnableGravity>(true);
337 }
338
343
347 std::string name() const
348 {
349 std::ostringstream oss;
350 oss << Parameters::Get<Parameters::SimulationName>()
351 << "_" << Model::name();
352 if (getPropValue<TypeTag, Properties::EnableEnergy>())
353 oss << "_ni";
354 oss << "_" << Model::discretizationName();
355 return oss.str();
356 }
357
362 {
363#ifndef NDEBUG
364 Scalar tol = this->model().newtonMethod().tolerance()*1e5;
365 this->model().checkConservativeness(tol);
366
367 // Calculate storage terms
368 PrimaryVariables storageL, storageG;
369 this->model().globalPhaseStorage(storageL, /*phaseIdx=*/0);
370 this->model().globalPhaseStorage(storageG, /*phaseIdx=*/1);
371
372 // Write mass balance information for rank 0
373 if (this->gridView().comm().rank() == 0) {
374 std::cout << "Storage: liquid=[" << storageL << "]"
375 << " gas=[" << storageG << "]\n" << std::flush;
376 }
377#endif // NDEBUG
378 }
379
383 template <class Context>
384 Scalar temperature(const Context& context, unsigned spaceIdx, unsigned timeIdx) const
385 {
386 const auto& pos = context.pos(spaceIdx, timeIdx);
387 if (inHighTemperatureRegion_(pos))
388 return temperature_ + 100;
389 return temperature_;
390 }
391
395 template <class Context>
396 const DimMatrix& intrinsicPermeability(const Context& context, unsigned spaceIdx,
397 unsigned timeIdx) const
398 {
399 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
400 if (isFineMaterial_(pos))
401 return fineK_;
402 return coarseK_;
403 }
404
408 template <class Context>
409 Scalar porosity(const Context& context, unsigned spaceIdx, unsigned timeIdx) const
410 {
411 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
412 if (isFineMaterial_(pos))
413 return finePorosity_;
414 return coarsePorosity_;
415 }
416
420 template <class Context>
421 const MaterialLawParams& materialLawParams(const Context& context,
422 unsigned spaceIdx, unsigned timeIdx) const
423 {
424 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
425 if (isFineMaterial_(pos))
426 return fineMaterialParams_;
427 return coarseMaterialParams_;
428 }
429
435 template <class Context>
436 const SolidEnergyLawParams&
437 solidEnergyLawParams(const Context& /*context*/,
438 unsigned /*spaceIdx*/,
439 unsigned /*timeIdx*/) const
440 { return solidEnergyLawParams_; }
441
445 template <class Context>
446 const ThermalConductionLawParams &
447 thermalConductionLawParams(const Context& context,
448 unsigned spaceIdx,
449 unsigned timeIdx) const
450 {
451 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
452 if (isFineMaterial_(pos))
453 return fineThermalCondParams_;
454 return coarseThermalCondParams_;
455 }
456
458
463
467 template <class Context>
468 void boundary(BoundaryRateVector& values, const Context& context,
469 unsigned spaceIdx, unsigned timeIdx) const
470 {
471 const auto& pos = context.pos(spaceIdx, timeIdx);
472 if (onLeftBoundary_(pos)) {
473 Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
474 initialFluidState_(fs, context, spaceIdx, timeIdx);
475 fs.checkDefined();
476
477 // impose an freeflow boundary condition
478 values.setFreeFlow(context, spaceIdx, timeIdx, fs);
479 }
480 else if (onInlet_(pos)) {
481 RateVector massRate(0.0);
482 massRate[contiCO2EqIdx] = -1e-3; // [kg/(m^3 s)]
483
484 using FluidState = Opm::ImmiscibleFluidState<Scalar, FluidSystem>;
485 FluidState fs;
486 fs.setSaturation(gasPhaseIdx, 1.0);
487 const auto& pg =
488 context.intensiveQuantities(spaceIdx, timeIdx).fluidState().pressure(gasPhaseIdx);
489 fs.setPressure(gasPhaseIdx, Toolbox::value(pg));
490 fs.setTemperature(temperature(context, spaceIdx, timeIdx));
491
492 typename FluidSystem::template ParameterCache<Scalar> paramCache;
493 paramCache.updatePhase(fs, gasPhaseIdx);
494 Scalar h = FluidSystem::template enthalpy<FluidState, Scalar>(fs, paramCache, gasPhaseIdx);
495
496 // impose an forced inflow boundary condition for pure CO2
497 values.setMassRate(massRate);
498 values.setEnthalpyRate(massRate[contiCO2EqIdx] * h);
499 }
500 else
501 // no flow on top and bottom
502 values.setNoFlow();
503 }
504
505 // \}
506
511
515 template <class Context>
516 void initial(PrimaryVariables& values, const Context& context, unsigned spaceIdx,
517 unsigned timeIdx) const
518 {
519 Opm::CompositionalFluidState<Scalar, FluidSystem> fs;
520 initialFluidState_(fs, context, spaceIdx, timeIdx);
521
522 // const auto& matParams = this->materialLawParams(context, spaceIdx,
523 // timeIdx);
524 // values.assignMassConservative(fs, matParams, /*inEquilibrium=*/true);
525 values.assignNaive(fs);
526 }
527
534 template <class Context>
535 void source(RateVector& rate,
536 const Context& /*context*/,
537 unsigned /*spaceIdx*/,
538 unsigned /*timeIdx*/) const
539 { rate = Scalar(0.0); }
540
542
543private:
544 template <class Context, class FluidState>
545 void initialFluidState_(FluidState& fs,
546 const Context& context,
547 unsigned spaceIdx,
548 unsigned timeIdx) const
549 {
550 const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
551
553 // set temperature
555 fs.setTemperature(temperature(context, spaceIdx, timeIdx));
556
558 // set saturations
560 fs.setSaturation(FluidSystem::liquidPhaseIdx, 1.0);
561 fs.setSaturation(FluidSystem::gasPhaseIdx, 0.0);
562
564 // set pressures
566 Scalar densityL = FluidSystem::Brine::liquidDensity(temperature_, Scalar(1e5));
567 Scalar depth = maxDepth_ - pos[dim - 1];
568 Scalar pl = 1e5 - densityL * this->gravity()[dim - 1] * depth;
569
570 Scalar pC[numPhases];
571 const auto& matParams = this->materialLawParams(context, spaceIdx, timeIdx);
572 MaterialLaw::capillaryPressures(pC, matParams, fs);
573
574 fs.setPressure(liquidPhaseIdx, pl + (pC[liquidPhaseIdx] - pC[liquidPhaseIdx]));
575 fs.setPressure(gasPhaseIdx, pl + (pC[gasPhaseIdx] - pC[liquidPhaseIdx]));
576
578 // set composition of the liquid phase
580 fs.setMoleFraction(liquidPhaseIdx, CO2Idx, 0.005);
581 fs.setMoleFraction(liquidPhaseIdx, BrineIdx,
582 1.0 - fs.moleFraction(liquidPhaseIdx, CO2Idx));
583
584 typename FluidSystem::template ParameterCache<Scalar> paramCache;
585 using CFRP = Opm::ComputeFromReferencePhase<Scalar, FluidSystem>;
586 CFRP::solve(fs, paramCache,
587 /*refPhaseIdx=*/liquidPhaseIdx,
588 /*setViscosity=*/true,
589 /*setEnthalpy=*/true);
590 }
591
592 bool onLeftBoundary_(const GlobalPosition& pos) const
593 { return pos[0] < eps_; }
594
595 bool onRightBoundary_(const GlobalPosition& pos) const
596 { return pos[0] > this->boundingBoxMax()[0] - eps_; }
597
598 bool onInlet_(const GlobalPosition& pos) const
599 { return onRightBoundary_(pos) && (5 < pos[1]) && (pos[1] < 15); }
600
601 bool inHighTemperatureRegion_(const GlobalPosition& pos) const
602 { return (pos[0] > 20) && (pos[0] < 30) && (pos[1] > 5) && (pos[1] < 35); }
603
604 void computeThermalCondParams_(ThermalConductionLawParams& params, Scalar poro)
605 {
606 Scalar lambdaWater = 0.6;
607 Scalar lambdaGranite = 2.8;
608
609 Scalar lambdaWet = std::pow(lambdaGranite, (1 - poro))
610 * std::pow(lambdaWater, poro);
611 Scalar lambdaDry = std::pow(lambdaGranite, (1 - poro));
612
613 params.setFullySaturatedLambda(gasPhaseIdx, lambdaDry);
614 params.setFullySaturatedLambda(liquidPhaseIdx, lambdaWet);
615 params.setVacuumLambda(lambdaDry);
616 }
617
618 bool isFineMaterial_(const GlobalPosition& pos) const
619 { return pos[dim - 1] > fineLayerBottom_; }
620
621 DimMatrix fineK_;
622 DimMatrix coarseK_;
623 Scalar fineLayerBottom_;
624
625 Scalar finePorosity_;
626 Scalar coarsePorosity_;
627
628 MaterialLawParams fineMaterialParams_;
629 MaterialLawParams coarseMaterialParams_;
630
631 ThermalConductionLawParams fineThermalCondParams_;
632 ThermalConductionLawParams coarseThermalCondParams_;
633 SolidEnergyLawParams solidEnergyLawParams_;
634
635 Scalar temperature_;
636 Scalar maxDepth_;
637 Scalar eps_;
638
639 unsigned nTemperature_;
640 unsigned nPressure_;
641
642 Scalar pressureLow_, pressureHigh_;
643 Scalar temperatureLow_, temperatureHigh_;
644};
645
646} // namespace Opm
647
648#endif
Problem where is injected under a low permeable layer at a depth of 2700m.
Definition: co2injectionproblem.hh:197
void finishInit()
Called by the Opm::Simulator in order to initialize the problem.
Definition: co2injectionproblem.hh:245
Scalar porosity(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: co2injectionproblem.hh:409
const ThermalConductionLawParams & thermalConductionLawParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: co2injectionproblem.hh:447
const DimMatrix & intrinsicPermeability(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: co2injectionproblem.hh:396
void boundary(BoundaryRateVector &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Evaluate the boundary conditions for a boundary segment.
Definition: co2injectionproblem.hh:468
void initial(PrimaryVariables &values, const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Evaluate the initial value for a control volume.
Definition: co2injectionproblem.hh:516
const MaterialLawParams & materialLawParams(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: co2injectionproblem.hh:421
void source(RateVector &rate, const Context &, unsigned, unsigned) const
Evaluate the source term for all phases within a given sub-control-volume.
Definition: co2injectionproblem.hh:535
const SolidEnergyLawParams & solidEnergyLawParams(const Context &, unsigned, unsigned) const
Return the parameters for the heat storage law of the rock.
Definition: co2injectionproblem.hh:437
std::string name() const
The problem name.
Definition: co2injectionproblem.hh:347
void endTimeStep()
Called by the simulator after each time integration.
Definition: co2injectionproblem.hh:361
Scalar temperature(const Context &context, unsigned spaceIdx, unsigned timeIdx) const
Definition: co2injectionproblem.hh:384
Co2InjectionProblem(Simulator &simulator)
Definition: co2injectionproblem.hh:238
static void registerParameters()
Definition: co2injectionproblem.hh:309
Definition: blackoilnewtonmethodparams.hpp:31
Definition: blackoilmodel.hh:72
Definition: blackoilboundaryratevector.hh:37
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:235
double Co2InjectionTolerance
Definition: co2injectionproblem.hh:171
Definition: co2injectionproblem.hh:144
static constexpr unsigned value
Definition: co2injectionproblem.hh:144
Definition: co2injectionproblem.hh:145
static constexpr unsigned value
Definition: co2injectionproblem.hh:145
Definition: co2injectionproblem.hh:148
static constexpr Scalar value
Definition: co2injectionproblem.hh:148
Definition: co2injectionproblem.hh:151
static constexpr Scalar value
Definition: co2injectionproblem.hh:151
Definition: co2injectionproblem.hh:154
static constexpr Scalar value
Definition: co2injectionproblem.hh:154
Definition: co2injectionproblem.hh:157
static constexpr Scalar value
Definition: co2injectionproblem.hh:157
Definition: co2injectionproblem.hh:160
static constexpr Scalar value
Definition: co2injectionproblem.hh:160
Definition: co2injectionproblem.hh:162
static constexpr auto value
Definition: co2injectionproblem.hh:162
Definition: co2injectionproblem.hh:165
static constexpr Scalar value
Definition: co2injectionproblem.hh:165
Opm::BrineCO2FluidSystem< Scalar > type
Definition: co2injectionproblem.hh:91
The fluid systems including the information about the phases.
Definition: multiphasebaseproperties.hh:69
Dune::YaspGrid< 2 > type
Definition: co2injectionproblem.hh:76
The type of the DUNE grid.
Definition: basicproperties.hh:100
Definition: fvbaseproperties.hh:53
Opm::EffToAbsLaw< EffMaterialLaw > type
Definition: co2injectionproblem.hh:115
The material law which ought to be used (extracted from the spatial parameters)
Definition: multiphasebaseproperties.hh:51
The type of the problem.
Definition: fvbaseproperties.hh:81
Opm::ConstantSolidHeatCapLaw< GetPropType< TypeTag, Properties::Scalar > > type
Definition: co2injectionproblem.hh:134
The material law for the energy stored in the solid matrix.
Definition: multiphasebaseproperties.hh:57
Definition: co2injectionproblem.hh:71
Definition: parallelamgbackend.hh:58
Opm::SomertonThermalConductionLaw< FluidSystem, Scalar > type
Definition: co2injectionproblem.hh:128
The material law for thermal conduction.
Definition: multiphasebaseproperties.hh:63