www.mooseframework.org
PorousFlowFluidStateBase.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "GeneralUserObject.h"
14 
16 
19 {
20  LIQUID,
21  GAS,
22  TWOPHASE
23 };
24 
27 {
29  FluidStateProperties(unsigned int n)
30  : pressure(0.0),
31  temperature(0, 0),
32  saturation(0.0),
33  density(0.0),
34  viscosity(1.0), // to guard against division by zero
35  enthalpy(0.0),
36  internal_energy(0.0),
37  mass_fraction(n, 0.0){};
38 
39  DualReal pressure;
40  DualReal temperature;
41  DualReal saturation;
42  DualReal density;
43  DualReal viscosity;
44  DualReal enthalpy;
45  DualReal internal_energy;
46  std::vector<DualReal> mass_fraction;
47 };
48 
49 template <>
51 
55 class PorousFlowFluidStateBase : public GeneralUserObject
56 {
57 public:
58  PorousFlowFluidStateBase(const InputParameters & parameters);
59 
60  void initialize() final{};
61  void execute() final{};
62  void finalize() final{};
63 
68  unsigned int numPhases() const { return _num_phases; };
69 
74  unsigned int numComponents() const { return _num_components; };
75 
80  unsigned int aqueousPhaseIndex() const { return _aqueous_phase_number; };
81 
86  unsigned int gasPhaseIndex() const { return _gas_phase_number; };
87 
92  unsigned int aqueousComponentIndex() const { return _aqueous_fluid_component; };
93 
98  unsigned int gasComponentIndex() const { return _gas_fluid_component; };
99 
104  unsigned int saltComponentIndex() const { return _salt_component; };
105 
109  virtual std::string fluidStateName() const = 0;
110 
115  void clearFluidStateProperties(std::vector<FluidStateProperties> & fsp) const;
116 
117 protected:
119  unsigned int _num_phases;
121  unsigned int _num_components;
123  const unsigned int _aqueous_phase_number;
125  unsigned int _gas_phase_number;
127  const unsigned int _aqueous_fluid_component;
129  unsigned int _gas_fluid_component;
131  const unsigned int _salt_component;
133  const Real _R;
135  const Real _T_c2k;
140 };
PorousFlowFluidStateBase::_empty_fsp
FluidStateProperties _empty_fsp
Empty FluidStateProperties object.
Definition: PorousFlowFluidStateBase.h:139
PorousFlowFluidStateBase::aqueousPhaseIndex
unsigned int aqueousPhaseIndex() const
The index of the aqueous phase.
Definition: PorousFlowFluidStateBase.h:80
PorousFlowFluidStateBase::_gas_phase_number
unsigned int _gas_phase_number
Phase number of the gas phase.
Definition: PorousFlowFluidStateBase.h:125
PorousFlowFluidStateBase::fluidStateName
virtual std::string fluidStateName() const =0
Name of FluidState.
PorousFlowFluidStateBase
Base class for fluid states for miscible multiphase flow in porous media.
Definition: PorousFlowFluidStateBase.h:55
PorousFlowFluidStateBase::_pc
const PorousFlowCapillaryPressure & _pc
Capillary pressure UserObject.
Definition: PorousFlowFluidStateBase.h:137
FluidStateProperties::density
DualReal density
Definition: PorousFlowFluidStateBase.h:42
FluidStateProperties::pressure
DualReal pressure
Definition: PorousFlowFluidStateBase.h:37
PorousFlowFluidStateBase::gasComponentIndex
unsigned int gasComponentIndex() const
The index of the gas fluid component.
Definition: PorousFlowFluidStateBase.h:98
PorousFlowFluidStateBase::finalize
void finalize() final
Definition: PorousFlowFluidStateBase.h:62
validParams< PorousFlowFluidStateBase >
InputParameters validParams< PorousFlowFluidStateBase >()
Definition: PorousFlowFluidStateBase.C:14
FluidStatePhaseEnum
FluidStatePhaseEnum
Phase state enum.
Definition: PorousFlowFluidStateBase.h:18
PorousFlowCapillaryPressure
Base class for capillary pressure for multiphase flow in porous media.
Definition: PorousFlowCapillaryPressure.h:39
PorousFlowFluidStateBase::_T_c2k
const Real _T_c2k
Conversion from C to K.
Definition: PorousFlowFluidStateBase.h:135
PorousFlowFluidStateBase::numComponents
unsigned int numComponents() const
The maximum number of components in this model.
Definition: PorousFlowFluidStateBase.h:74
FluidStateProperties::enthalpy
DualReal enthalpy
Definition: PorousFlowFluidStateBase.h:44
FluidStateProperties::FluidStateProperties
FluidStateProperties()
Definition: PorousFlowFluidStateBase.h:28
FluidStateProperties::mass_fraction
std::vector< DualReal > mass_fraction
Definition: PorousFlowFluidStateBase.h:46
PorousFlowFluidStateBase::gasPhaseIndex
unsigned int gasPhaseIndex() const
The index of the gas phase.
Definition: PorousFlowFluidStateBase.h:86
PorousFlowCapillaryPressure.h
PorousFlowFluidStateBase::numPhases
unsigned int numPhases() const
The maximum number of phases in this model.
Definition: PorousFlowFluidStateBase.h:68
PorousFlowFluidStateBase::aqueousComponentIndex
unsigned int aqueousComponentIndex() const
The index of the aqueous fluid component.
Definition: PorousFlowFluidStateBase.h:92
PorousFlowFluidStateBase::_gas_fluid_component
unsigned int _gas_fluid_component
Fluid component number of the gas phase.
Definition: PorousFlowFluidStateBase.h:129
FluidStatePhaseEnum::LIQUID
PorousFlowFluidStateBase::_salt_component
const unsigned int _salt_component
Salt component index.
Definition: PorousFlowFluidStateBase.h:131
FluidStateProperties
AD data structure to pass calculated thermophysical properties.
Definition: PorousFlowFluidStateBase.h:26
PorousFlowFluidStateBase::_aqueous_phase_number
const unsigned int _aqueous_phase_number
Phase number of the aqueous phase.
Definition: PorousFlowFluidStateBase.h:123
PorousFlowFluidStateBase::_num_phases
unsigned int _num_phases
Number of phases.
Definition: PorousFlowFluidStateBase.h:119
PorousFlowFluidStateBase::PorousFlowFluidStateBase
PorousFlowFluidStateBase(const InputParameters &parameters)
Definition: PorousFlowFluidStateBase.C:27
PorousFlowFluidStateBase::_num_components
unsigned int _num_components
Number of components.
Definition: PorousFlowFluidStateBase.h:121
FluidStatePhaseEnum::TWOPHASE
FluidStateProperties::temperature
DualReal temperature
Definition: PorousFlowFluidStateBase.h:40
PorousFlowFluidStateBase::clearFluidStateProperties
void clearFluidStateProperties(std::vector< FluidStateProperties > &fsp) const
Clears the contents of the FluidStateProperties data structure.
Definition: PorousFlowFluidStateBase.C:39
FluidStatePhaseEnum::GAS
FluidStateProperties::internal_energy
DualReal internal_energy
Definition: PorousFlowFluidStateBase.h:45
PorousFlowFluidStateBase::_aqueous_fluid_component
const unsigned int _aqueous_fluid_component
Fluid component number of the aqueous component.
Definition: PorousFlowFluidStateBase.h:127
FluidStateProperties::viscosity
DualReal viscosity
Definition: PorousFlowFluidStateBase.h:43
FluidStateProperties::FluidStateProperties
FluidStateProperties(unsigned int n)
Definition: PorousFlowFluidStateBase.h:29
FluidStateProperties::saturation
DualReal saturation
Definition: PorousFlowFluidStateBase.h:41
PorousFlowFluidStateBase::execute
void execute() final
Definition: PorousFlowFluidStateBase.h:61
PorousFlowFluidStateBase::_R
const Real _R
Universal gas constant (J/mol/K)
Definition: PorousFlowFluidStateBase.h:133
PorousFlowFluidStateBase::saltComponentIndex
unsigned int saltComponentIndex() const
The index of the salt component.
Definition: PorousFlowFluidStateBase.h:104
PorousFlowFluidStateBase::initialize
void initialize() final
Definition: PorousFlowFluidStateBase.h:60