Loading [MathJax]/extensions/tex2jax.js
3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh
Go to the documentation of this file.
1/*****************************************************************************
2 * See the file COPYING for full copying permissions. *
3 * *
4 * This program is free software: you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation, either version 3 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
16 *****************************************************************************/
30#ifndef DUMUX_COMBUSTION_PROBLEM_ONE_COMPONENT_HH
31#define DUMUX_COMBUSTION_PROBLEM_ONE_COMPONENT_HH
32
33#include <dune/grid/onedgrid.hh>
34
36
40
44
47
48#include "spatialparams.hh"
51
52namespace Dumux {
53
54template<class TypeTag>
55class CombustionProblemOneComponent;
56
58template<int numP, int numC, MpNcPressureFormulation formulation, bool useM>
59struct CombustionModelTraits : public MPNCModelTraits<numP, numC, formulation, useM>
60{
61 static constexpr bool enableMolecularDiffusion() { return false; }
62};
63
64namespace Properties {
65// Create new type tags
66namespace TTag {
67struct CombustionOneComponent { using InheritsFrom = std::tuple<MPNCNonequil>; };
68struct CombustionOneComponentBox { using InheritsFrom = std::tuple<CombustionOneComponent, BoxModel>; };
69} // end namespace TTag
70
71// Set the grid type
72template<class TypeTag>
73struct Grid<TypeTag, TTag::CombustionOneComponent> { using type = Dune::OneDGrid; };
74
75// Set the problem property
76template<class TypeTag>
77struct Problem<TypeTag, TTag::CombustionOneComponent>
79
80// Set the spatial parameters
81template<class TypeTag>
82struct SpatialParams<TypeTag, TTag::CombustionOneComponent>
83{
87};
88
89template<class TypeTag>
90struct FluidSystem<TypeTag, TTag::CombustionOneComponent>
92
94template<class TypeTag>
95struct PressureFormulation<TypeTag, TTag::CombustionOneComponent>
96{
97public:
99};
100
101// Set the type used for scalar values
102template<class TypeTag>
103struct Scalar<TypeTag, TTag::CombustionOneComponent> { using type = double ; };
104// quad / double
105
106// We use different model traits for the equilibrium part because we want to deactivate diffusion
107template<class TypeTag>
108struct EquilibriumModelTraits<TypeTag, TTag::CombustionOneComponent>
109{
110private:
112public:
113 using type = CombustionModelTraits< FluidSystem::numPhases,
114 FluidSystem::numComponents,
115 getPropValue<TypeTag, Properties::PressureFormulation>(),
116 getPropValue<TypeTag, Properties::UseMoles>() >;
117};
118
119template<class TypeTag>
120struct FluidState<TypeTag, TTag::CombustionOneComponent>
121{
122private:
125public:
127};
128//#################
129//changes from the default settings which also assume chemical non-equilibrium
130//set the number of energyequations we want to use
131template<class TypeTag>
132struct NumEnergyEqFluid<TypeTag, TTag::CombustionOneComponent> { static constexpr int value = 1; };
133template<class TypeTag>
134struct NumEnergyEqSolid<TypeTag, TTag::CombustionOneComponent> { static constexpr int value = 1; };
135
136// by default chemical non equilibrium is enabled in the nonequil model, switch that off here
137template<class TypeTag>
138struct EnableChemicalNonEquilibrium<TypeTag, TTag::CombustionOneComponent> { static constexpr bool value = false; };
139//#################
140
141template<class TypeTag>
142struct SolidSystem<TypeTag, TTag::CombustionOneComponent>
143{
147 static constexpr int numInertComponents = 2;
149};
150
151template<class TypeTag>
152struct SolidState<TypeTag, TTag::CombustionOneComponent>
153{
154private:
157public:
159};
160
161template<class TypeTag>
162struct EnergyLocalResidual<TypeTag, TTag::CombustionOneComponent>
164}
170template<class TypeTag>
172{
179
181 using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView;
182 using ElementFluxVariablesCache = typename GridVariables::GridFluxVariablesCache::LocalView;
183
184 using FVElementGeometry = typename GetPropType<TypeTag, Properties::GridGeometry>::LocalView;
185 using SubControlVolume = typename FVElementGeometry::SubControlVolume;
186 using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
188 using Element = typename GridView::template Codim<0>::Entity;
189 using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
192 using ParameterCache = typename FluidSystem::ParameterCache;
193
195 using Indices = typename ModelTraits::Indices;
196
197 enum {dimWorld = GridView::dimensionworld};
198 enum {numPhases = ModelTraits::numFluidPhases()};
199 enum {numComponents = ModelTraits::numFluidComponents()};
200 enum {s0Idx = Indices::s0Idx};
201 enum {p0Idx = Indices::p0Idx};
202 enum {conti00EqIdx = Indices::conti0EqIdx};
203 enum {energyEq0Idx = Indices::energyEqIdx};
204 enum {numEnergyEqFluid = ModelTraits::numEnergyEqFluid()};
205 enum {numEnergyEqSolid = ModelTraits::numEnergyEqSolid()};
206 enum {energyEqSolidIdx = energyEq0Idx + numEnergyEqFluid + numEnergyEqSolid - 1};
207 enum {wPhaseIdx = FluidSystem::wPhaseIdx};
208 enum {nPhaseIdx = FluidSystem::nPhaseIdx};
209 enum {wCompIdx = FluidSystem::H2OIdx};
210 enum {nCompIdx = FluidSystem::N2Idx};
211
212 // formulations
213 static constexpr auto pressureFormulation = ModelTraits::pressureFormulation();
214 static constexpr auto mostWettingFirst = MpNcPressureFormulation::mostWettingFirst;
215 static constexpr auto leastWettingFirst = MpNcPressureFormulation::leastWettingFirst;
216
217public:
218 CombustionProblemOneComponent(std::shared_ptr<const GridGeometry> gridGeometry)
220 {
221 outputName_ = getParam<std::string>("Problem.Name");
222 nRestart_ = getParam<Scalar>("Constants.nRestart");
223 TInitial_ = getParam<Scalar>("InitialConditions.TInitial");
224 TRight_ = getParam<Scalar>("InitialConditions.TRight");
225 pnInitial_ = getParam<Scalar>("InitialConditions.pnInitial");
226 TBoundary_ = getParam<Scalar>("BoundaryConditions.TBoundary");
227 SwBoundary_ = getParam<Scalar>("BoundaryConditions.SwBoundary");
228 SwOneComponentSys_= getParam<Scalar>("BoundaryConditions.SwOneComponentSys");
229 massFluxInjectedPhase_ = getParam<Scalar>("BoundaryConditions.massFluxInjectedPhase");
230 heatFluxFromRight_ = getParam<Scalar>("BoundaryConditions.heatFluxFromRight");
231 coldTime_ =getParam<Scalar>("BoundaryConditions.coldTime");
232 time_ = 0.0;
233 }
234
235 void setTime(Scalar time)
236 { time_ = time; }
237
238 void setGridVariables(std::shared_ptr<GridVariables> gridVariables)
239 { gridVariables_ = gridVariables; }
240
241 const GridVariables& gridVariables() const
242 { return *gridVariables_; }
243
249 Scalar temperature() const
250 { return TInitial_;}
251
252
256 // \{
262 const std::string name() const
263 { return outputName_;}
264
265 // \}
266
278 NumEqVector source(const Element &element,
279 const FVElementGeometry& fvGeometry,
280 const ElementVolumeVariables& elemVolVars,
281 const SubControlVolume &scv) const
282 {
283 NumEqVector values(0.0);
284
285 const auto& globalPos = scv.dofPosition();
286
287 const Scalar volume = scv.volume();
288 const Scalar numScv = fvGeometry.numScv(); // box: numSCV, cc:1
289
290 if (time_ > coldTime_ )
291 {
292 if (onRightBoundaryPorousMedium_(globalPos))
293 {
294 // Testing the location of a vertex, but function is called for each associated scv. Compensate for that
295 values[energyEqSolidIdx] = heatFluxFromRight_ / volume / numScv;
296 }
297 }
298 return values;
299 }
300
307 BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
308 {
309 BoundaryTypes bcTypes;
310 // Default: Neumann
311 bcTypes.setAllNeumann();
312
313 if(onRightBoundary_(globalPos) ) {
314 bcTypes.setAllDirichlet();
315 }
316 return bcTypes;
317 }
318
326 PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
327 {
328 return initial_(globalPos);
329 }
330
343 NumEqVector neumann(const Element &element,
344 const FVElementGeometry& fvGeometry,
345 const ElementVolumeVariables& elemVolVars,
346 const ElementFluxVariablesCache& elemFluxVarsCache,
347 const SubControlVolumeFace& scvf) const
348 {
349 NumEqVector values(0.0);
350
351 const auto& globalPos = fvGeometry.scv(scvf.insideScvIdx()).dofPosition();
352 const auto& scvIdx = scvf.insideScvIdx();
353 const Scalar massFluxInjectedPhase = massFluxInjectedPhase_;
354
355 FluidState fluidState;
356
357 const Scalar pn = elemVolVars[scvIdx].pressure(nPhaseIdx);
358 const Scalar pw = elemVolVars[scvIdx].pressure(wPhaseIdx);
359
360 fluidState.setPressure(nPhaseIdx, pn);
361 fluidState.setPressure(wPhaseIdx, pw);
362
363 fluidState.setTemperature(TBoundary_);
364 ParameterCache dummyCache;
365 fluidState.setMoleFraction(wPhaseIdx, nCompIdx, 0.0);
366 fluidState.setMoleFraction(wPhaseIdx, wCompIdx, 1.0);
367 // compute density of injection phase
368 const Scalar density = FluidSystem::density(fluidState,
369 dummyCache,
370 wPhaseIdx);
371 fluidState.setDensity(wPhaseIdx, density);
372 const Scalar molarDensity = FluidSystem::molarDensity(fluidState,
373 dummyCache,
374 wPhaseIdx);
375 fluidState.setMolarDensity(wPhaseIdx, molarDensity);
376
377 for(int phaseIdx=0; phaseIdx<numPhases; phaseIdx++) {
378 const Scalar h = FluidSystem::enthalpy(fluidState,
379 dummyCache,
380 phaseIdx);
381 fluidState.setEnthalpy(phaseIdx, h);
382 }
383
384 const Scalar molarFlux = massFluxInjectedPhase / fluidState.averageMolarMass(wPhaseIdx);
385
386 if (onLeftBoundary_(globalPos))
387 {
388 values[conti00EqIdx + wCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, wCompIdx);
389 values[conti00EqIdx + nCompIdx] = - molarFlux * fluidState.moleFraction(wPhaseIdx, nCompIdx);
390 values[energyEq0Idx] = - massFluxInjectedPhase * fluidState.enthalpy(wPhaseIdx);
391 }
392 return values;
393 }
394
403 PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
404 {
405 return initial_(globalPos);
406 }
407
408private:
409 // the internal method for the initial condition
410 PrimaryVariables initial_(const GlobalPosition &globalPos) const
411 {
412 PrimaryVariables priVars(0.0);
413 const Scalar curPos = globalPos[0];
414 const Scalar slope = (SwBoundary_-SwOneComponentSys_) / (this->spatialParams().lengthPM());
415 Scalar S[numPhases];
416 const Scalar thisSaturation = SwOneComponentSys_ + curPos * slope;
417
418 S[wPhaseIdx] = SwBoundary_;
419 if (inPM_(globalPos) ) {
420 S[wPhaseIdx] = thisSaturation;
421 }
422
423 S[nPhaseIdx] = 1. - S[wPhaseIdx];
424
426 // Set saturation
428 for (int i = 0; i < numPhases - 1; ++i) {
429 priVars[s0Idx + i] = S[i];
430 }
431
432 FluidState fluidState;
433
434 Scalar thisTemperature = TInitial_;
435 if(onRightBoundary_(globalPos))
436 thisTemperature = TRight_;
437
438 for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
439 fluidState.setSaturation(phaseIdx, S[phaseIdx]);
440
441 fluidState.setTemperature(thisTemperature );
442
443 }
445 // Set temperature
447 priVars[energyEq0Idx] = thisTemperature;
448 priVars[energyEqSolidIdx] = thisTemperature;
449 std::vector<Scalar> capPress(numPhases);
450
451 //obtain pc according to saturation
452 const auto &materialParams =
453 this->spatialParams().materialLawParamsAtPos(globalPos);
454 using MaterialLaw = typename ParentType::SpatialParams::MaterialLaw;
455 using MPAdapter = MPAdapter<MaterialLaw, numPhases>;
456
457 const int wettingPhaseIdx = this->spatialParams().template wettingPhaseAtPos<FluidSystem>(globalPos);
458 MPAdapter::capillaryPressures(capPress, materialParams, fluidState, wettingPhaseIdx);
459
460 Scalar p[numPhases];
461
462 using std::abs;
463 p[wPhaseIdx] = pnInitial_ - abs(capPress[wPhaseIdx]);
464 p[nPhaseIdx] = p[wPhaseIdx] + abs(capPress[wPhaseIdx]);
465
466 for (int phaseIdx=0; phaseIdx<numPhases; phaseIdx++)
467 fluidState.setPressure(phaseIdx, p[phaseIdx]);
468
470 // Set pressure
472 if(pressureFormulation == mostWettingFirst) {
473 // This means that the pressures are sorted from the most wetting to the least wetting-1 in the primary variables vector.
474 // For two phases this means that there is one pressure as primary variable: pw
475 priVars[p0Idx] = p[wPhaseIdx];
476 }
477 else if(pressureFormulation == leastWettingFirst) {
478 // This means that the pressures are sorted from the least wetting to the most wetting-1 in the primary variables vector.
479 // For two phases this means that there is one pressure as primary variable: pn
480 priVars[p0Idx] = p[nPhaseIdx];
481 }
482 else
483 DUNE_THROW(Dune::InvalidStateException, "CombustionProblemOneComponent does not support the chosen pressure formulation.");
484
485 fluidState.setMoleFraction(wPhaseIdx, wCompIdx, 1.0);
486 fluidState.setMoleFraction(wPhaseIdx, nCompIdx, 0.0);
487
488 fluidState.setMoleFraction(nPhaseIdx, wCompIdx, 1.0);
489 fluidState.setMoleFraction(nPhaseIdx, nCompIdx, 0.0);
490
491 int refPhaseIdx;
492
493 // on right boundary: reference is gas
494 refPhaseIdx = nPhaseIdx;
495
496 if(inPM_(globalPos)) {
497 refPhaseIdx = wPhaseIdx;
498 }
499
500 // obtain fugacities
501 using ComputeFromReferencePhase = ComputeFromReferencePhase<Scalar, FluidSystem>;
502 ParameterCache paramCache;
504 paramCache,
505 refPhaseIdx);
506
508 // Set fugacities
510 for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
511 priVars[conti00EqIdx + compIdx] = fluidState.fugacity(refPhaseIdx,compIdx);
512 }
513 return priVars;
514 }
515
519 bool onLeftBoundary_(const GlobalPosition & globalPos) const
520 { return globalPos[0] < this->gridGeometry().bBoxMin()[0] + eps_;}
521
525 bool onRightBoundary_(const GlobalPosition & globalPos) const
526 { return globalPos[0] > this->gridGeometry().bBoxMax()[0] - eps_;}
527
532 bool onRightBoundaryPorousMedium_(const GlobalPosition & globalPos) const
533 {
534 using std::abs;
535 return (abs(globalPos[0] - (this->spatialParams().lengthPM())) < eps_ );
536 }
537
541 bool inPM_(const GlobalPosition & globalPos) const
542 { return !this->spatialParams().inOutFlow(globalPos); }
543
544private:
545 static constexpr Scalar eps_ = 1e-6;
546 int nTemperature_;
547 int nPressure_;
548 std::string outputName_;
549 int nRestart_;
550 Scalar TInitial_;
551 Scalar TRight_;
552
553 Scalar pnInitial_;
554
555 Dune::ParameterTree inputParameters_;
556 Scalar x_[numPhases][numComponents];
557
558 Scalar TBoundary_;
559 Scalar SwBoundary_;
560 Scalar SwOneComponentSys_;
561
562 Scalar massFluxInjectedPhase_;
563 Scalar heatFluxFromRight_;
564 Scalar lengthPM_;
565 Scalar coldTime_;
566
567 Scalar time_;
568 std::shared_ptr<GridVariables> gridVariables_;
569};
570
571} // end namespace
572
573#endif
Defines a type tag and some properties for models using the box scheme.
Computes all quantities of a generic fluid state if a reference phase has been specified.
Relation for the saturation-dependent effective thermal conductivity.
Setting constant fluid properties via the input file.
A solid phase consisting of multiple inert solid components.
Represents all relevant thermodynamic quantities of a compositional solid system.
Enumeration of the formulations accepted by the MpNc model.
This file contains the parts of the local residual to calculate the heat conservation in the thermal ...
A two-phase fluid system with water as sole component.
MpNcPressureFormulation
Enumerates the formulations which the MpNc model accepts.
Definition: pressureformulation.hh:36
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
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:149
Property tag Indices
Definition: porousmediumflow/sequential/properties.hh:59
std::string molarDensity(int phaseIdx) noexcept
I/O name of molar density for multiphase systems.
Definition: name.hh:83
std::string density(int phaseIdx) noexcept
I/O name of density for multiphase systems.
Definition: name.hh:65
Base class for all finite-volume problems.
Definition: common/fvproblem.hh:50
const GridGeometry & gridGeometry() const
The finite volume grid geometry.
Definition: common/fvproblem.hh:588
Property to specify the type of scalar values.
Definition: common/properties.hh:53
The DUNE grid type.
Definition: common/properties.hh:57
Property to specify the type of a problem which has to be solved.
Definition: common/properties.hh:69
The local residual of the energy equation.
Definition: common/properties.hh:206
The type of the spatial parameters object.
Definition: common/properties.hh:221
The type of the fluid system to use.
Definition: common/properties.hh:223
The type of the fluid state to use.
Definition: common/properties.hh:225
The type of the solid system to use.
Definition: common/properties.hh:227
The type of the solid state to use.
Definition: common/properties.hh:229
Definition: common/properties.hh:312
the formulation of the pressure e.g most wetting first
Definition: common/properties.hh:318
Definition: common/properties.hh:330
Definition: common/properties.hh:332
Definition: common/properties.hh:334
A component which returns run time specified values for all fluid properties.
Definition: constant.hh:58
static void solve(FluidState &fluidState, ParameterCache &paramCache, int refPhaseIdx)
Computes all quantities of a generic fluid state if a reference phase has been specified.
Definition: computefromreferencephase.hh:112
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Definition: compositional.hh:47
Represents all relevant thermodynamic quantities of a compositional solid system.
Definition: compositionalsolidstate.hh:37
A solid phase consisting of multiple inert solid components.
Definition: compositionalsolidphase.hh:42
Specifies a number properties of the m-phase n-component model.
Definition: porousmediumflow/mpnc/model.hh:137
Base class for all fully implicit porous media problems.
Definition: dumux/porousmediumflow/problem.hh:39
SpatialParams & spatialParams()
Returns the spatial parameters object.
Definition: dumux/porousmediumflow/problem.hh:146
A two-phase fluid system with water as sole component.
Definition: combustionfluidsystem.hh:52
This file contains the parts of the local residual to calculate the heat conservation in the thermal ...
Definition: combustionlocalresidual.hh:44
Problem where water is injected from the left hand side into a porous media filled domain,...
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:172
PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
Evaluates the initial value for a control volume.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:403
const std::string name() const
The problem name.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:262
NumEqVector source(const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const SubControlVolume &scv) const
Evaluates the source term for all balance equations within a given sub-control volume.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:278
PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
Evaluates the boundary conditions for a Dirichlet boundary segment.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:326
const GridVariables & gridVariables() const
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:241
CombustionProblemOneComponent(std::shared_ptr< const GridGeometry > gridGeometry)
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:218
BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
Specifies which kind of boundary condition should be used for which equation on a given boundary segm...
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:307
Scalar temperature() const
Returns the temperature for an isothermal problem.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:249
void setTime(Scalar time)
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:235
NumEqVector neumann(const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const ElementFluxVariablesCache &elemFluxVarsCache, const SubControlVolumeFace &scvf) const
Evaluates the boundary conditions for a Neumann boundary segment.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:343
void setGridVariables(std::shared_ptr< GridVariables > gridVariables)
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:238
Custom model traits to deactivate diffusion for this test.
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:60
static constexpr bool enableMolecularDiffusion()
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:61
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:67
std::tuple< MPNCNonequil > InheritsFrom
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:67
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:68
std::tuple< CombustionOneComponent, BoxModel > InheritsFrom
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:68
Dune::OneDGrid type
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:73
GetPropType< TypeTag, GridGeometry > GridGeometry
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:84
GetPropType< TypeTag, Properties::Scalar > Scalar
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:85
double type
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:103
GetPropType< TypeTag, Properties::Scalar > Scalar
Definition: test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh:144
Definition of the spatial parameters for the one component combustion problem.
Definition: porousmediumflow/mpnc/implicit/thermalnonequilibrium/spatialparams.hh:49
A fully implicit model for MpNc flow using vertex centered finite volumes.
Base class for all porous media problems.
Definition of the spatial parameters for the MaxwellStefan problem.