www.mooseframework.org
PorousFlowFluidStateIC.C
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 #include "PorousFlowFluidStateIC.h"
11 #include "PorousFlowDictator.h"
13 
15 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<InitialCondition>();
21  params.addRequiredCoupledVar("gas_porepressure",
22  "Variable that is the porepressure of the gas phase");
23  params.addRequiredCoupledVar("temperature", "Variable that is the fluid temperature");
24  MooseEnum unit_choice("Kelvin=0 Celsius=1", "Kelvin");
25  params.addParam<MooseEnum>(
26  "temperature_unit", unit_choice, "The unit of the temperature variable");
27  params.addCoupledVar("saturation", 0.0, "Gas saturation");
28  params.addRequiredParam<UserObjectName>("fluid_state", "Name of the FluidState UserObject");
29  params.addCoupledVar("xnacl", 0, "The salt mass fraction in the brine (kg/kg)");
30  params.addRequiredParam<UserObjectName>(
31  "PorousFlowDictator", "The UserObject that holds the list of PorousFlow variable names");
32  params.addClassDescription("An initial condition to calculate z from saturation");
33  return params;
34 }
35 
36 PorousFlowFluidStateIC::PorousFlowFluidStateIC(const InputParameters & parameters)
37  : InitialCondition(parameters),
38  _gas_porepressure(coupledValue("gas_porepressure")),
39  _temperature(coupledValue("temperature")),
40  _Xnacl(coupledValue("xnacl")),
41  _saturation(coupledValue("saturation")),
42  _T_c2k(getParam<MooseEnum>("temperature_unit") == 0 ? 0.0 : 273.15),
43  _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
44  _fs(getUserObject<PorousFlowFluidStateMultiComponentBase>("fluid_state"))
45 {
46 }
47 
48 Real
49 PorousFlowFluidStateIC::value(const Point & /*p*/)
50 {
51  // The fluid state user object needs temperature in K
52  const Real Tk = _temperature[_qp] + _T_c2k;
53 
54  // The total mass fraction corresponding to the input saturation
55  return _fs.totalMassFraction(_gas_porepressure[_qp], Tk, _Xnacl[_qp], _saturation[_qp], _qp);
56 }
PorousFlowDictator.h
PorousFlowFluidStateMultiComponentBase
Compositional flash routines for miscible multiphase flow classes with multiple fluid components.
Definition: PorousFlowFluidStateMultiComponentBase.h:23
PorousFlowFluidStateIC::_temperature
const VariableValue & _temperature
Fluid temperature (C or K)
Definition: PorousFlowFluidStateIC.h:37
PorousFlowFluidStateIC::_gas_porepressure
const VariableValue & _gas_porepressure
Gas porepressure (Pa)
Definition: PorousFlowFluidStateIC.h:35
validParams< PorousFlowFluidStateIC >
InputParameters validParams< PorousFlowFluidStateIC >()
Definition: PorousFlowFluidStateIC.C:18
PorousFlowDictator
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
Definition: PorousFlowDictator.h:71
PorousFlowFluidStateMultiComponentBase.h
PorousFlowFluidStateIC::PorousFlowFluidStateIC
PorousFlowFluidStateIC(const InputParameters &parameters)
Definition: PorousFlowFluidStateIC.C:36
PorousFlowFluidStateIC::_saturation
const VariableValue & _saturation
Gas saturation (-)
Definition: PorousFlowFluidStateIC.h:41
registerMooseObject
registerMooseObject("PorousFlowApp", PorousFlowFluidStateIC)
PorousFlowFluidStateIC.h
PorousFlowFluidStateIC::_Xnacl
const VariableValue & _Xnacl
NaCl mass fraction (kg/kg)
Definition: PorousFlowFluidStateIC.h:39
PorousFlowFluidStateIC::value
virtual Real value(const Point &p) override
Definition: PorousFlowFluidStateIC.C:49
PorousFlowFluidStateIC
PorousFlowFluidStateIC calculates an initial value for the total mass fraction of a component summed ...
Definition: PorousFlowFluidStateIC.h:26
PorousFlowFluidStateIC::_T_c2k
const Real _T_c2k
Conversion from degrees Celsius to degrees Kelvin.
Definition: PorousFlowFluidStateIC.h:43
PorousFlowFluidStateMultiComponentBase::totalMassFraction
virtual Real totalMassFraction(Real pressure, Real temperature, Real Xnacl, Real saturation, unsigned int qp) const =0
Total mass fraction of fluid component summed over all phases in the two-phase state for a specified ...
PorousFlowFluidStateIC::_fs
const PorousFlowFluidStateMultiComponentBase & _fs
FluidState UserObject.
Definition: PorousFlowFluidStateIC.h:47