3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
checkfluidsystem.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 * See the file COPYING for full copying permissions. *
5 * *
6 * This program 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 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
28#ifndef DUMUX_CHECK_FLUIDSYSTEM_HH
29#define DUMUX_CHECK_FLUIDSYSTEM_HH
30
31#include <exception>
32#include <string>
33
34#include <dune/common/classname.hh>
35
36// include all fluid systems in dumux-stable
50
51// include all fluid states
61
62namespace Dumux
63{
64
68template<class ScalarType, class FluidSystem, class BaseFluidState = CompositionalFluidState<ScalarType, FluidSystem> >
69class HairSplittingFluidState: protected BaseFluidState
70{
71public:
73 using typename BaseFluidState::Scalar;
74
75 static constexpr int numPhases = FluidSystem::numPhases;
76 static constexpr int numComponents = FluidSystem::numComponents;
77
79 {
80 // set some fake values
81 BaseFluidState::setTemperature(293.15);
82 for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
83 {
84 BaseFluidState::setSaturation(phaseIdx, 1.0 / numPhases);
85 BaseFluidState::setPressure(phaseIdx, 1e5);
86 BaseFluidState::setDensity(phaseIdx, 1.0);
87 BaseFluidState::setMolarDensity(phaseIdx, 1.0);
88
89 for (int compIdx = 0; compIdx < numComponents; ++compIdx)
90 BaseFluidState::setMoleFraction(phaseIdx, compIdx, 1.0 / numComponents);
91 }
92
93 // initially, do not allow anything
94 allowTemperature(false);
95 allowPressure(false);
96 allowComposition(false);
97 allowDensity(false);
98
99 // do not allow accessing any phase
100 restrictToPhase(1000);
101 }
102
103 void allowTemperature(bool yesno)
104 {
105 allowTemperature_ = yesno;
106 }
107
108 void allowPressure(bool yesno)
109 {
110 allowPressure_ = yesno;
111 }
112
113 void allowComposition(bool yesno)
114 {
115 allowComposition_ = yesno;
116 }
117
118 void allowDensity(bool yesno)
119 {
120 allowDensity_ = yesno;
121 }
122
123 void restrictToPhase(int phaseIdx)
124 {
125 restrictPhaseIdx_ = phaseIdx;
126 }
127
128 Scalar temperature(int phaseIdx) const
129 {
130 assert(allowTemperature_);
131 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
132 return BaseFluidState::temperature(phaseIdx);
133 }
134
136 {
137 assert(allowComposition_);
138 return BaseFluidState::wettingPhase();
139 }
140
141 Scalar partialPressure(int phaseIdx, int compIdx) const
142 {
143 assert(allowComposition_);
144 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
145 return BaseFluidState::partialPressure(phaseIdx, compIdx);
146 }
147
148 Scalar pressure(int phaseIdx) const
149 {
150 if (!allowPressure_)
151 {
152 std::cout << "HairSplittingFluidState: pressure called but not allowed" << std::endl;
153 }
154 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
155 return BaseFluidState::pressure(phaseIdx);
156 }
157
158 Scalar moleFraction(int phaseIdx, int compIdx) const
159 {
160 assert(allowComposition_);
161 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
162 return BaseFluidState::moleFraction(phaseIdx, compIdx);
163 }
164
165 Scalar massFraction(int phaseIdx, int compIdx) const
166 {
167 assert(allowComposition_);
168 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
169 return BaseFluidState::massFraction(phaseIdx, compIdx);
170 }
171
172 Scalar averageMolarMass(int phaseIdx) const
173 {
174 assert(allowComposition_);
175 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
176 return BaseFluidState::averageMolarMass(phaseIdx);
177 }
178
179 Scalar molarity(int phaseIdx, int compIdx) const
180 {
181 assert(allowDensity_ && allowComposition_);
182 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
183 return BaseFluidState::molarity(phaseIdx, compIdx);
184 }
185
186 Scalar molarDensity(int phaseIdx) const
187 {
188 assert(allowDensity_);
189 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
190 return BaseFluidState::molarDensity(phaseIdx);
191 }
192
193 Scalar molarVolume(int phaseIdx) const
194 {
195 assert(allowDensity_);
196 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
197 return BaseFluidState::molarVolume(phaseIdx);
198 }
199
200 Scalar density(int phaseIdx) const
201 {
202 assert(allowDensity_);
203 assert(restrictPhaseIdx_ < 0 || restrictPhaseIdx_ == phaseIdx);
204 return BaseFluidState::density(phaseIdx);
205 }
206
207 Scalar saturation(int phaseIdx) const
208 {
209 assert(false);
210 return BaseFluidState::saturation(phaseIdx);
211 }
212
213 Scalar fugacity(int phaseIdx, int compIdx) const
214 {
215 assert(false);
216 return BaseFluidState::fugacity(phaseIdx, compIdx);
217 }
218
219 Scalar fugacityCoefficient(int phaseIdx, int compIdx) const
220 {
221 assert(false);
222 return BaseFluidState::fugacityCoefficient(phaseIdx, compIdx);
223 }
224
225 Scalar enthalpy(int phaseIdx) const
226 {
227 assert(false);
228 return BaseFluidState::enthalpy(phaseIdx);
229 }
230
231 Scalar internalEnergy(int phaseIdx) const
232 {
233 assert(false);
234 return BaseFluidState::internalEnergy(phaseIdx);
235 }
236
237 Scalar viscosity(int phaseIdx) const
238 {
239 assert(false);
240 return BaseFluidState::viscosity(phaseIdx);
241 }
242
243private:
244 bool allowSaturation_;
245 bool allowTemperature_;
246 bool allowPressure_;
247 bool allowComposition_;
248 bool allowDensity_;
249 int restrictPhaseIdx_;
250};
251
252template<class Scalar, class BaseFluidState>
253int checkFluidState(const BaseFluidState &fs)
254{
255 std::cout << "Testing fluid state '" << Dune::className<BaseFluidState>() << "'\n";
256
257 // fluid states must be copy-able
258 BaseFluidState tmpFs(fs);
259 tmpFs = fs;
260
261 // output strings
262 std::string collectedErrors;
263 std::string collectedWarnings;
264
265 // make sure the fluid state provides all mandatory methods
266 Scalar DUNE_UNUSED val;
267
268 try
269 {
270 val = fs.temperature(/*phaseIdx=*/0);
271 } catch (...)
272 {
273 collectedErrors += "error: fluidState.temperature() throws exception!\n";
274 }
275 try
276 {
277 val = fs.pressure(/*phaseIdx=*/0);
278 } catch (...)
279 {
280 collectedErrors += "error: fluidState.pressure() throws exception!\n";
281 }
282 try
283 {
284 val = fs.moleFraction(/*phaseIdx=*/0, /*compIdx=*/0);
285 } catch (...)
286 {
287 collectedErrors += "error: fluidState.moleFraction() throws exception!\n";
288 }
289 try
290 {
291 val = fs.massFraction(/*phaseIdx=*/0, /*compIdx=*/0);
292 } catch (...)
293 {
294 collectedErrors += "error: fluidState.massFraction() throws exception!\n";
295 }
296 try
297 {
298 val = fs.averageMolarMass(/*phaseIdx=*/0);
299 } catch (...)
300 {
301 collectedErrors += "error: fluidState.averageMolarMass() throws exception!\n";
302 }
303 try
304 {
305 val = fs.molarity(/*phaseIdx=*/0, /*compIdx=*/0);
306 } catch (...)
307 {
308 collectedErrors += "error: fluidState.molarity() throws exception!\n";
309 }
310 try
311 {
312 val = fs.molarDensity(/*phaseIdx=*/0);
313 } catch (...)
314 {
315 collectedErrors += "error: fluidState.molarDensity() throws exception!\n";
316 }
317 try
318 {
319 val = fs.molarVolume(/*phaseIdx=*/0);
320 } catch (...)
321 {
322 collectedErrors += "error: fluidState.molarVolume() throws exception!\n";
323 }
324 try
325 {
326 val = fs.density(/*phaseIdx=*/0);
327 } catch (...)
328 {
329 collectedErrors += "error: fluidState.density() throws exception!\n";
330 }
331 try
332 {
333 val = fs.saturation(/*phaseIdx=*/0);
334 } catch (...)
335 {
336 collectedErrors += "error: fluidState.saturation() throws exception!\n";
337 }
338 try
339 {
340 val = fs.fugacity(/*phaseIdx=*/0, /*compIdx=*/0);
341 } catch (...)
342 {
343 collectedErrors += "error: fluidState.fugacity() throws exception!\n";
344 }
345 try
346 {
347 val = fs.fugacityCoefficient(/*phaseIdx=*/0, /*compIdx=*/0);
348 } catch (...)
349 {
350 collectedErrors += "error: fluidState.fugacityCoefficient() throws exception!\n";
351 }
352 try
353 {
354 val = fs.enthalpy(/*phaseIdx=*/0);
355 } catch (Dune::NotImplemented&)
356 {
357 collectedWarnings += "warning: fluidState.enthalpy() is not implemented\n";
358 } catch (...)
359 {
360 collectedErrors += "error: fluidState.enthalpy() throws exception!\n";
361 }
362 try
363 {
364 val = fs.internalEnergy(/*phaseIdx=*/0);
365 } catch (Dune::NotImplemented&)
366 {
367 collectedWarnings += "warning: fluidState.internalEnergy() is not implemented\n";
368 } catch (...)
369 {
370 collectedErrors += "error: fluidState.internalEnergy() throws exception!\n";
371 }
372 try
373 {
374 val = fs.viscosity(/*phaseIdx=*/0);
375 } catch (...)
376 {
377 collectedErrors += "error: fluidState.viscosity() throws exception!\n";
378 }
379
380 std::cout << collectedErrors;
381// std::cout << collectedWarnings;
382 if (collectedErrors.empty()) // success
383 {
384 std::cout << "... successfull" << std::endl;
385 std::cout << "----------------------------------" << std::endl;
386 return 0;
387 }
388 else
389 {
390 std::cout << "... failed" << std::endl;
391 std::cout << "----------------------------------" << std::endl;
392 return 1;
393 }
394}
395
405template<class Scalar, class FluidSystem>
406int checkFluidSystem(bool enablePhaseRestriction = true)
407{
408 int success = 0;
409 std::cout << "Testing fluid system '" << Dune::className<FluidSystem>() << "'\n";
410 FluidSystem::init();
411
412 // output strings
413 std::string collectedErrors;
414 std::string collectedWarnings;
415
416 // make sure the fluid system provides the number of phases and
417 // the number of components
418 enum
419 {
420 numPhases = FluidSystem::numPhases
421 };
422 enum
423 {
424 numComponents = FluidSystem::numComponents
425 };
426
428 fs.allowTemperature(true);
429 fs.allowPressure(true);
430 fs.allowComposition(true);
431 fs.restrictToPhase(-1);
432
433 // check whether the parameter cache adheres to the API
434 using PC = typename FluidSystem::ParameterCache;
435 PC paramCache;
436 try
437 {
438 paramCache.updateAll(fs);
439 } catch (...)
440 {
441 collectedErrors += "error: paramCache.updateAll() throws exception!\n";
442 }
443 try
444 {
445 paramCache.updateAll(fs, /*except=*/PC::None);
446 } catch (...)
447 {
448 collectedErrors += "error: paramCache.updateAll(none) throws exception!\n";
449 }
450 try
451 {
452 paramCache.updateAll(fs, /*except=*/PC::Temperature | PC::Pressure | PC::Composition);
453 } catch (...)
454 {
455 collectedErrors += "error: paramCache.updateAll(T, p, x) throws exception!\n";
456 }
457 try
458 {
459 paramCache.updateAllPressures(fs);
460 } catch (...)
461 {
462 collectedErrors += "error: paramCache.updateAllPressures() throws exception!\n";
463 }
464
465 for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
466 {
467 if (enablePhaseRestriction)
468 fs.restrictToPhase(phaseIdx);
469 try
470 {
471 paramCache.updatePhase(fs, phaseIdx);
472 } catch (...)
473 {
474 collectedErrors += "error: paramCache.updatePhase() throws exception!\n";
475 }
476 try
477 {
478 paramCache.updatePhase(fs, phaseIdx, /*except=*/PC::None);
479 } catch (...)
480 {
481 collectedErrors += "error: paramCache.updatePhase(none) throws exception!\n";
482 }
483 try
484 {
485 paramCache.updatePhase(fs, phaseIdx, /*except=*/PC::Temperature | PC::Pressure | PC::Composition);
486 } catch (...)
487 {
488 collectedErrors += "error: paramCache.updatePhase(T, p , x) throws exception!\n";
489 }
490 try
491 {
492 paramCache.updateTemperature(fs, phaseIdx);
493 } catch (...)
494 {
495 collectedErrors += "error: paramCache.updateTemperature() throws exception!\n";
496 }
497 try
498 {
499 paramCache.updatePressure(fs, phaseIdx);
500 } catch (...)
501 {
502 collectedErrors += "error: paramCache.updatePressure() throws exception!\n";
503 }
504 try
505 {
506 paramCache.updateComposition(fs, phaseIdx);
507 } catch (...)
508 {
509 collectedErrors += "error: paramCache.updateComposition() throws exception!\n";
510 }
511 try
512 {
513 paramCache.updateSingleMoleFraction(fs, phaseIdx, /*compIdx=*/0);
514 } catch (...)
515 {
516 collectedErrors += "error: paramCache.updateSingleMoleFraction() throws exception!\n";
517 }
518 }
519
520 // some value to make sure the return values of the fluid system
521 // are convertible to scalars
522 Scalar DUNE_UNUSED val;
523
524 // actually check the fluid system API
525 for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
526 {
527 fs.allowPressure(FluidSystem::isCompressible(phaseIdx));
528 fs.allowComposition(true);
529 fs.allowDensity(false);
530 if (enablePhaseRestriction)
531 fs.restrictToPhase(phaseIdx);
532 try
533 {
534 val = FluidSystem::density(fs, paramCache, phaseIdx);
535 } catch (const std::exception& e)
536 {
537 collectedErrors += "error: FluidSystem::density() throws exception: " + std::string(e.what()) + "\n";
538 }
539 try
540 {
541 val = FluidSystem::molarDensity(fs, paramCache, phaseIdx);
542 } catch (const std::exception& e)
543 {
544 collectedErrors += "error: FluidSystem::molarDensity() throws exception: " + std::string(e.what()) + "\n";
545 }
546 fs.allowPressure(true);
547 fs.allowDensity(true);
548 try
549 {
550 val = FluidSystem::viscosity(fs, paramCache, phaseIdx);
551 } catch (const std::exception& e)
552 {
553 collectedErrors += "error: FluidSystem::viscosity() throws exception: " + std::string(e.what()) + "\n";
554 }
555 try
556 {
557 val = FluidSystem::enthalpy(fs, paramCache, phaseIdx);
558 } catch (Dune::NotImplemented&)
559 {
560 collectedWarnings += "warning: FluidSystem::enthalpy() is not implemented\n";
561 } catch (const std::exception& e)
562 {
563 collectedErrors += "error: FluidSystem::enthalpy() throws exception: " + std::string(e.what()) + "\n";
564 }
565 try
566 {
567 val = FluidSystem::heatCapacity(fs, paramCache, phaseIdx);
568 } catch (Dune::NotImplemented&)
569 {
570 collectedWarnings += "warning: FluidSystem::heatCapacity() is not implemented\n";
571 } catch (const std::exception& e)
572 {
573 collectedErrors += "error: FluidSystem::heatCapacity() throws exception: " + std::string(e.what()) + "\n";
574 }
575 try
576 {
577 val = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx);
578 } catch (Dune::NotImplemented&)
579 {
580 collectedWarnings += "warning: FluidSystem::thermalConductivity() is not implemented\n";
581 } catch (const std::exception& e)
582 {
583 collectedErrors += "error: FluidSystem::thermalConductivity() throws exception: " + std::string(e.what()) + "\n";
584 }
585
586 for (int compIdx = 0; compIdx < numComponents; ++compIdx)
587 {
588 fs.allowComposition(!FluidSystem::isIdealMixture(phaseIdx));
589 try
590 {
591 val = FluidSystem::fugacityCoefficient(fs, paramCache, phaseIdx, compIdx);
592 } catch (Dune::NotImplemented&)
593 {
594 collectedWarnings += "warning: FluidSystem::fugacityCoefficient() is not implemented\n";
595 } catch (const std::exception& e)
596 {
597 collectedErrors += "error: FluidSystem::fugacityCoefficient() throws exception: " + std::string(e.what()) + "\n";
598 }
599 fs.allowComposition(true);
600 try
601 {
602 val = FluidSystem::diffusionCoefficient(fs, paramCache, phaseIdx, compIdx);
603 } catch (Dune::NotImplemented&)
604 {
605 collectedWarnings += "warning: FluidSystem::diffusionCoefficient() is not implemented\n";
606 } catch (Dune::InvalidStateException&)
607 {
608 collectedWarnings += "warning: FluidSystem::diffusionCoefficient() gives invalid state exception\n";
609 } catch (const std::exception& e)
610 {
611 collectedErrors += "error: FluidSystem::diffusionCoefficient() throws exception: " + std::string(e.what()) + "\n";
612 }
613 for (int comp2Idx = 0; comp2Idx < numComponents; ++comp2Idx)
614 {
615 try
616 {
617 val = FluidSystem::binaryDiffusionCoefficient(fs, paramCache, phaseIdx, compIdx, comp2Idx);
618 } catch (Dune::NotImplemented&)
619 {
620 collectedWarnings += "warning: FluidSystem::binaryDiffusionCoefficient() is not implemented\n";
621 } catch (Dune::InvalidStateException&)
622 {
623 collectedWarnings += "warning: FluidSystem::binaryDiffusionCoefficient() gives invalid state exception\n";
624 } catch (const std::exception& e)
625 {
626 collectedErrors += "error: FluidSystem::binaryDiffusionCoefficient() throws exception: " + std::string(e.what()) + "\n";
627 }
628 }
629 }
630 }
631
632 // test for phaseName(), isGas() and isIdealGas()
633 for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
634 {
635 std::string
636 DUNE_UNUSED name = FluidSystem::phaseName(phaseIdx);
637 bool DUNE_UNUSED
638 bVal = FluidSystem::isGas(phaseIdx);
639 bVal = FluidSystem::isIdealGas(phaseIdx);
640 }
641
642 // test for componentName()
643 for (int compIdx = 0; compIdx < numComponents; ++compIdx)
644 {
645 val = FluidSystem::molarMass(compIdx);
646 std::string
647 DUNE_UNUSED name = FluidSystem::componentName(compIdx);
648 }
649
650 std::cout << collectedErrors;
651// std::cout << collectedWarnings;
652 if (collectedErrors.empty()) // success
653 {
654 std::cout << "... successful" << std::endl;
655 std::cout << "----------------------------------" << std::endl;
656 return 0;
657 }
658 else
659 {
660 std::cout << "... failed" << std::endl;
661 std::cout << "----------------------------------" << std::endl;
662 return 1;
663 }
664 std::cout << "----------------------------------\n";
665 return success;
666}
667
668} // end namespace Dumux
669
670#endif // DUMUX_CHECK_FLUIDSYSTEM_HH
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Represents all relevant thermodynamic quantities of a isothermal immiscible multi-phase fluid system.
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system witho...
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system witho...
This is a fluid state which allows to set the fluid pressures and takes all other quantities from an ...
Calculates phase state for a single phase but two-component state.
This is a fluid state which allows to set the fluid saturations and takes all other quantities from a...
This is a fluid state which allows to set the fluid temperatures and takes all other quantities from ...
A gaseous phase consisting of a single component.
A liquid phase consisting of a single component.
A fluid system for two-phase models assuming immiscibility and thermodynamic equilibrium.
A compositional two-phase fluid system with a liquid and a gaseous phase and , and (dissolved miner...
A compositional fluid with brine (H2O & NaCl) and carbon dioxide as components in both the liquid and...
A compositional two-phase fluid system with water and air as components in both, the liquid and the g...
A three-phase fluid system featuring gas, NAPL and water as phases and distilled water and air (Pseu...
A three-phase fluid system featuring gas, NAPL and water as phases and distilled water and air (Pseu...
A two-phase (water and air) fluid system with water, nitrogen and oxygen as components.
The fluid system for the SPE-5 benchmark problem.
bool success
Definition: test_tabulation.cc:34
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
int checkFluidSystem(bool enablePhaseRestriction=true)
This is a consistency check for FluidSystems.
Definition: checkfluidsystem.hh:406
int checkFluidState(const BaseFluidState &fs)
Definition: checkfluidsystem.hh:253
std::string temperature() noexcept
I/O name of temperature for equilibrium models.
Definition: name.hh:51
std::string saturation(int phaseIdx) noexcept
I/O name of saturation for multiphase systems.
Definition: name.hh:43
std::string moleFraction(int phaseIdx, int compIdx) noexcept
I/O name of mole fraction.
Definition: name.hh:110
std::string viscosity(int phaseIdx) noexcept
I/O name of viscosity for multiphase systems.
Definition: name.hh:74
std::string molarDensity(int phaseIdx) noexcept
I/O name of molar density for multiphase systems.
Definition: name.hh:83
std::string pressure(int phaseIdx) noexcept
I/O name of pressure for multiphase systems.
Definition: name.hh:34
std::string density(int phaseIdx) noexcept
I/O name of density for multiphase systems.
Definition: name.hh:65
std::string massFraction(int phaseIdx, int compIdx) noexcept
I/O name of mass fraction.
Definition: name.hh:115
ScalarType Scalar
export the scalar type
Definition: compositional.hh:53
This fluid state ensures that only the allowed quantities are accessed.
Definition: checkfluidsystem.hh:70
void restrictToPhase(int phaseIdx)
Definition: checkfluidsystem.hh:123
static constexpr int numPhases
Definition: checkfluidsystem.hh:75
void allowTemperature(bool yesno)
Definition: checkfluidsystem.hh:103
Scalar density(int phaseIdx) const
Definition: checkfluidsystem.hh:200
Scalar fugacity(int phaseIdx, int compIdx) const
Definition: checkfluidsystem.hh:213
Scalar temperature(int phaseIdx) const
Definition: checkfluidsystem.hh:128
Scalar molarVolume(int phaseIdx) const
Definition: checkfluidsystem.hh:193
static constexpr int numComponents
Definition: checkfluidsystem.hh:76
Scalar viscosity(int phaseIdx) const
Definition: checkfluidsystem.hh:237
void allowComposition(bool yesno)
Definition: checkfluidsystem.hh:113
void allowPressure(bool yesno)
Definition: checkfluidsystem.hh:108
HairSplittingFluidState()
Definition: checkfluidsystem.hh:78
void allowDensity(bool yesno)
Definition: checkfluidsystem.hh:118
Scalar fugacityCoefficient(int phaseIdx, int compIdx) const
Definition: checkfluidsystem.hh:219
Scalar moleFraction(int phaseIdx, int compIdx) const
Definition: checkfluidsystem.hh:158
Scalar molarDensity(int phaseIdx) const
Definition: checkfluidsystem.hh:186
Scalar partialPressure(int phaseIdx, int compIdx) const
Definition: checkfluidsystem.hh:141
Scalar pressure(int phaseIdx) const
Definition: checkfluidsystem.hh:148
Scalar enthalpy(int phaseIdx) const
Definition: checkfluidsystem.hh:225
Scalar saturation(int phaseIdx) const
Definition: checkfluidsystem.hh:207
Scalar wettingPhase() const
Definition: checkfluidsystem.hh:135
Scalar internalEnergy(int phaseIdx) const
Definition: checkfluidsystem.hh:231
Scalar averageMolarMass(int phaseIdx) const
Definition: checkfluidsystem.hh:172
Scalar massFraction(int phaseIdx, int compIdx) const
Definition: checkfluidsystem.hh:165
Scalar molarity(int phaseIdx, int compIdx) const
Definition: checkfluidsystem.hh:179
Fluid system base class.