www.mooseframework.org
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
PorousFlowFullySaturatedMassTimeDerivative Class Reference

Time derivative of fluid mass suitable for fully-saturated, single-phase, single-component simulations. More...

#include <PorousFlowFullySaturatedMassTimeDerivative.h>

Inheritance diagram for PorousFlowFullySaturatedMassTimeDerivative:
[legend]

Public Member Functions

 PorousFlowFullySaturatedMassTimeDerivative (const InputParameters &parameters)
 

Protected Types

enum  CouplingTypeEnum { CouplingTypeEnum::Hydro, CouplingTypeEnum::ThermoHydro, CouplingTypeEnum::HydroMechanical, CouplingTypeEnum::ThermoHydroMechanical }
 Determines whether mechanical and/or thermal contributions should be added to the residual. More...
 

Protected Member Functions

virtual Real computeQpResidual () override
 
virtual Real computeQpJacobian () override
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar) override
 
Real computeQpJac (unsigned int pvar)
 Jacobian contribution for the PorousFlow variable pvar. More...
 

Protected Attributes

const PorousFlowDictator_dictator
 PorousFlow UserObject. More...
 
const bool _var_is_porflow_var
 Whether the Variable for this Kernel is a PorousFlow variable. More...
 
const bool _multiply_by_density
 If true then the Kernel is the time derivative of the fluid mass, otherwise it is the derivative of the fluid volume. More...
 
enum PorousFlowFullySaturatedMassTimeDerivative::CouplingTypeEnum _coupling_type
 
const bool _includes_thermal
 Whether thermal contributions should be added to the residual. More...
 
const bool _includes_mechanical
 Whether mechanical contributions should be added to the residual. More...
 
const Real _biot_coefficient
 Biot coefficient (used in simulations involving Mechanical deformations) More...
 
const MaterialProperty< Real > & _biot_modulus
 Constant Biot modulus. More...
 
const MaterialProperty< Real > *const _thermal_coeff
 Constant volumetric thermal expansion coefficient. More...
 
const MaterialProperty< std::vector< Real > > *const _fluid_density
 Quadpoint fluid density for each phase. More...
 
const MaterialProperty< std::vector< std::vector< Real > > > *const _dfluid_density_dvar
 derivative of fluid density for each phase with respect to the PorousFlow variables More...
 
const MaterialProperty< std::vector< Real > > & _pp
 Quadpoint pore pressure in each phase. More...
 
const MaterialProperty< std::vector< Real > > & _pp_old
 Old value of quadpoint pore pressure in each phase. More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _dpp_dvar
 Derivative of porepressure in each phase wrt the PorousFlow variables. More...
 
const MaterialProperty< Real > *const _temperature
 Quadpoint temperature. More...
 
const MaterialProperty< Real > *const _temperature_old
 Old value of quadpoint temperature. More...
 
const MaterialProperty< std::vector< Real > > *const _dtemperature_dvar
 Derivative of temperature wrt the PorousFlow variables. More...
 
const MaterialProperty< Real > *const _strain_rate
 Strain rate. More...
 
const MaterialProperty< std::vector< RealGradient > > *const _dstrain_rate_dvar
 Derivative of strain rate wrt the PorousFlow variables. More...
 

Detailed Description

Time derivative of fluid mass suitable for fully-saturated, single-phase, single-component simulations.

No mass-lumping is used

Definition at line 24 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Member Enumeration Documentation

Determines whether mechanical and/or thermal contributions should be added to the residual.

Enumerator
Hydro 
ThermoHydro 
HydroMechanical 
ThermoHydroMechanical 

Definition at line 47 of file PorousFlowFullySaturatedMassTimeDerivative.h.

47  {
48  Hydro,
49  ThermoHydro,
50  HydroMechanical,
51  ThermoHydroMechanical
enum PorousFlowFullySaturatedMassTimeDerivative::CouplingTypeEnum _coupling_type

Constructor & Destructor Documentation

PorousFlowFullySaturatedMassTimeDerivative::PorousFlowFullySaturatedMassTimeDerivative ( const InputParameters &  parameters)

Definition at line 39 of file PorousFlowFullySaturatedMassTimeDerivative.C.

41  : TimeKernel(parameters),
42  _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
44  _multiply_by_density(getParam<bool>("multiply_by_density")),
45  _coupling_type(getParam<MooseEnum>("coupling_type").getEnum<CouplingTypeEnum>()),
50  _biot_coefficient(getParam<Real>("biot_coefficient")),
51  _biot_modulus(getMaterialProperty<Real>("PorousFlow_constant_biot_modulus_qp")),
54  ? &getMaterialProperty<Real>("PorousFlow_constant_thermal_expansion_coefficient_qp")
55  : nullptr),
58  ? &getMaterialProperty<std::vector<Real>>("PorousFlow_fluid_phase_density_qp")
59  : nullptr),
61  ? &getMaterialProperty<std::vector<std::vector<Real>>>(
62  "dPorousFlow_fluid_phase_density_qp_dvar")
63  : nullptr),
64  _pp(getMaterialProperty<std::vector<Real>>("PorousFlow_porepressure_qp")),
65  _pp_old(getMaterialPropertyOld<std::vector<Real>>("PorousFlow_porepressure_qp")),
66  _dpp_dvar(
67  getMaterialProperty<std::vector<std::vector<Real>>>("dPorousFlow_porepressure_qp_dvar")),
68  _temperature(_includes_thermal ? &getMaterialProperty<Real>("PorousFlow_temperature_qp")
69  : nullptr),
70  _temperature_old(_includes_thermal ? &getMaterialPropertyOld<Real>("PorousFlow_temperature_qp")
71  : nullptr),
74  ? &getMaterialProperty<std::vector<Real>>("dPorousFlow_temperature_qp_dvar")
75  : nullptr),
77  ? &getMaterialProperty<Real>("PorousFlow_volumetric_strain_rate_qp")
78  : nullptr),
80  ? &getMaterialProperty<std::vector<RealGradient>>(
81  "dPorousFlow_volumetric_strain_rate_qp_dvar")
82  : nullptr)
83 {
84  if (_dictator.numComponents() != 1 || _dictator.numPhases() != 1)
85  mooseError("PorousFlowFullySaturatedMassTimeDerivative is only applicable to single-phase, "
86  "single-component fluid-flow problems. The Dictator proclaims that you have more "
87  "than one phase or more than one fluid component. The Dictator does not take such "
88  "mistakes lightly");
89 }
const bool _var_is_porflow_var
Whether the Variable for this Kernel is a PorousFlow variable.
const MaterialProperty< std::vector< Real > > & _pp
Quadpoint pore pressure in each phase.
const MaterialProperty< std::vector< Real > > *const _fluid_density
Quadpoint fluid density for each phase.
const MaterialProperty< Real > & _biot_modulus
Constant Biot modulus.
const bool _includes_thermal
Whether thermal contributions should be added to the residual.
const MaterialProperty< Real > *const _temperature_old
Old value of quadpoint temperature.
enum PorousFlowFullySaturatedMassTimeDerivative::CouplingTypeEnum _coupling_type
unsigned int numComponents() const
the number of fluid components
const bool _includes_mechanical
Whether mechanical contributions should be added to the residual.
const MaterialProperty< Real > *const _strain_rate
Strain rate.
const MaterialProperty< Real > *const _thermal_coeff
Constant volumetric thermal expansion coefficient.
const MaterialProperty< std::vector< std::vector< Real > > > *const _dfluid_density_dvar
derivative of fluid density for each phase with respect to the PorousFlow variables ...
const MaterialProperty< std::vector< std::vector< Real > > > & _dpp_dvar
Derivative of porepressure in each phase wrt the PorousFlow variables.
const MaterialProperty< std::vector< RealGradient > > *const _dstrain_rate_dvar
Derivative of strain rate wrt the PorousFlow variables.
const MaterialProperty< std::vector< Real > > *const _dtemperature_dvar
Derivative of temperature wrt the PorousFlow variables.
const PorousFlowDictator & _dictator
PorousFlow UserObject.
const Real _biot_coefficient
Biot coefficient (used in simulations involving Mechanical deformations)
unsigned int numPhases() const
the number of fluid phases
const bool _multiply_by_density
If true then the Kernel is the time derivative of the fluid mass, otherwise it is the derivative of t...
const MaterialProperty< Real > *const _temperature
Quadpoint temperature.
bool isPorousFlowVariable(unsigned int moose_var_num) const
returns true if moose_var_num is a porous flow variable
const MaterialProperty< std::vector< Real > > & _pp_old
Old value of quadpoint pore pressure in each phase.

Member Function Documentation

Real PorousFlowFullySaturatedMassTimeDerivative::computeQpJac ( unsigned int  pvar)
protected

Jacobian contribution for the PorousFlow variable pvar.

Definition at line 124 of file PorousFlowFullySaturatedMassTimeDerivative.C.

Referenced by computeQpJacobian(), and computeQpOffDiagJacobian().

125 {
126  const unsigned phase = 0;
127  Real volume = (_pp[_qp][phase] - _pp_old[_qp][phase]) / _dt / _biot_modulus[_qp];
128  Real dvolume = _dpp_dvar[_qp][phase][pvar] / _dt / _biot_modulus[_qp] * _phi[_j][_qp];
129  if (_includes_thermal)
130  {
131  volume -= (*_thermal_coeff)[_qp] * ((*_temperature)[_qp] - (*_temperature_old)[_qp]) / _dt;
132  dvolume -= (*_thermal_coeff)[_qp] * (*_dtemperature_dvar)[_qp][pvar] / _dt * _phi[_j][_qp];
133  }
135  {
136  volume += _biot_coefficient * (*_strain_rate)[_qp];
137  dvolume += _biot_coefficient * (*_dstrain_rate_dvar)[_qp][pvar] * _grad_phi[_j][_qp];
138  }
140  return _test[_i][_qp] * ((*_fluid_density)[_qp][phase] * dvolume +
141  (*_dfluid_density_dvar)[_qp][phase][pvar] * _phi[_j][_qp] * volume);
142  return _test[_i][_qp] * dvolume;
143 }
const MaterialProperty< std::vector< Real > > & _pp
Quadpoint pore pressure in each phase.
const MaterialProperty< Real > & _biot_modulus
Constant Biot modulus.
const bool _includes_thermal
Whether thermal contributions should be added to the residual.
const bool _includes_mechanical
Whether mechanical contributions should be added to the residual.
const MaterialProperty< std::vector< std::vector< Real > > > & _dpp_dvar
Derivative of porepressure in each phase wrt the PorousFlow variables.
const Real _biot_coefficient
Biot coefficient (used in simulations involving Mechanical deformations)
const bool _multiply_by_density
If true then the Kernel is the time derivative of the fluid mass, otherwise it is the derivative of t...
const MaterialProperty< std::vector< Real > > & _pp_old
Old value of quadpoint pore pressure in each phase.
Real PorousFlowFullySaturatedMassTimeDerivative::computeQpJacobian ( )
overrideprotectedvirtual

If the variable is not a PorousFlow variable (very unusual), the diag Jacobian terms are 0

Definition at line 106 of file PorousFlowFullySaturatedMassTimeDerivative.C.

107 {
109  if (!_var_is_porflow_var)
110  return 0.0;
111  return computeQpJac(_dictator.porousFlowVariableNum(_var.number()));
112 }
const bool _var_is_porflow_var
Whether the Variable for this Kernel is a PorousFlow variable.
Real computeQpJac(unsigned int pvar)
Jacobian contribution for the PorousFlow variable pvar.
const PorousFlowDictator & _dictator
PorousFlow UserObject.
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
the PorousFlow variable number
Real PorousFlowFullySaturatedMassTimeDerivative::computeQpOffDiagJacobian ( unsigned int  jvar)
overrideprotectedvirtual

If the variable is not a PorousFlow variable, the OffDiag Jacobian terms are 0

Definition at line 115 of file PorousFlowFullySaturatedMassTimeDerivative.C.

116 {
119  return 0.0;
121 }
Real computeQpJac(unsigned int pvar)
Jacobian contribution for the PorousFlow variable pvar.
const PorousFlowDictator & _dictator
PorousFlow UserObject.
bool notPorousFlowVariable(unsigned int moose_var_num) const
returns true if moose_var_num is not a porous flow variabe
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
the PorousFlow variable number
Real PorousFlowFullySaturatedMassTimeDerivative::computeQpResidual ( )
overrideprotectedvirtual

Definition at line 92 of file PorousFlowFullySaturatedMassTimeDerivative.C.

93 {
94  const unsigned phase = 0;
95  Real volume = (_pp[_qp][phase] - _pp_old[_qp][phase]) / _dt / _biot_modulus[_qp];
97  volume -= (*_thermal_coeff)[_qp] * ((*_temperature)[_qp] - (*_temperature_old)[_qp]) / _dt;
99  volume += _biot_coefficient * (*_strain_rate)[_qp];
101  return _test[_i][_qp] * (*_fluid_density)[_qp][phase] * volume;
102  return _test[_i][_qp] * volume;
103 }
const MaterialProperty< std::vector< Real > > & _pp
Quadpoint pore pressure in each phase.
const MaterialProperty< Real > & _biot_modulus
Constant Biot modulus.
const bool _includes_thermal
Whether thermal contributions should be added to the residual.
const bool _includes_mechanical
Whether mechanical contributions should be added to the residual.
const Real _biot_coefficient
Biot coefficient (used in simulations involving Mechanical deformations)
const bool _multiply_by_density
If true then the Kernel is the time derivative of the fluid mass, otherwise it is the derivative of t...
const MaterialProperty< std::vector< Real > > & _pp_old
Old value of quadpoint pore pressure in each phase.

Member Data Documentation

const Real PorousFlowFullySaturatedMassTimeDerivative::_biot_coefficient
protected

Biot coefficient (used in simulations involving Mechanical deformations)

Definition at line 61 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

const MaterialProperty<Real>& PorousFlowFullySaturatedMassTimeDerivative::_biot_modulus
protected

Constant Biot modulus.

Definition at line 64 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

enum PorousFlowFullySaturatedMassTimeDerivative::CouplingTypeEnum PorousFlowFullySaturatedMassTimeDerivative::_coupling_type
protected
const MaterialProperty<std::vector<std::vector<Real> > >* const PorousFlowFullySaturatedMassTimeDerivative::_dfluid_density_dvar
protected

derivative of fluid density for each phase with respect to the PorousFlow variables

Definition at line 73 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const PorousFlowDictator& PorousFlowFullySaturatedMassTimeDerivative::_dictator
protected
const MaterialProperty<std::vector<std::vector<Real> > >& PorousFlowFullySaturatedMassTimeDerivative::_dpp_dvar
protected

Derivative of porepressure in each phase wrt the PorousFlow variables.

Definition at line 82 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac().

const MaterialProperty<std::vector<RealGradient> >* const PorousFlowFullySaturatedMassTimeDerivative::_dstrain_rate_dvar
protected

Derivative of strain rate wrt the PorousFlow variables.

Definition at line 97 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const MaterialProperty<std::vector<Real> >* const PorousFlowFullySaturatedMassTimeDerivative::_dtemperature_dvar
protected

Derivative of temperature wrt the PorousFlow variables.

Definition at line 91 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const MaterialProperty<std::vector<Real> >* const PorousFlowFullySaturatedMassTimeDerivative::_fluid_density
protected

Quadpoint fluid density for each phase.

Definition at line 70 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const bool PorousFlowFullySaturatedMassTimeDerivative::_includes_mechanical
protected

Whether mechanical contributions should be added to the residual.

Definition at line 58 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

const bool PorousFlowFullySaturatedMassTimeDerivative::_includes_thermal
protected

Whether thermal contributions should be added to the residual.

Definition at line 55 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

const bool PorousFlowFullySaturatedMassTimeDerivative::_multiply_by_density
protected

If true then the Kernel is the time derivative of the fluid mass, otherwise it is the derivative of the fluid volume.

Definition at line 44 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

const MaterialProperty<std::vector<Real> >& PorousFlowFullySaturatedMassTimeDerivative::_pp
protected

Quadpoint pore pressure in each phase.

Definition at line 76 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

const MaterialProperty<std::vector<Real> >& PorousFlowFullySaturatedMassTimeDerivative::_pp_old
protected

Old value of quadpoint pore pressure in each phase.

Definition at line 79 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJac(), and computeQpResidual().

const MaterialProperty<Real>* const PorousFlowFullySaturatedMassTimeDerivative::_strain_rate
protected

Strain rate.

Definition at line 94 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const MaterialProperty<Real>* const PorousFlowFullySaturatedMassTimeDerivative::_temperature
protected

Quadpoint temperature.

Definition at line 85 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const MaterialProperty<Real>* const PorousFlowFullySaturatedMassTimeDerivative::_temperature_old
protected

Old value of quadpoint temperature.

Definition at line 88 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const MaterialProperty<Real>* const PorousFlowFullySaturatedMassTimeDerivative::_thermal_coeff
protected

Constant volumetric thermal expansion coefficient.

Definition at line 67 of file PorousFlowFullySaturatedMassTimeDerivative.h.

const bool PorousFlowFullySaturatedMassTimeDerivative::_var_is_porflow_var
protected

Whether the Variable for this Kernel is a PorousFlow variable.

Definition at line 41 of file PorousFlowFullySaturatedMassTimeDerivative.h.

Referenced by computeQpJacobian().


The documentation for this class was generated from the following files: