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

Darcy advective flux for a fully-saturated, single phase, single component fluid. More...

#include <PorousFlowFullySaturatedDarcyBase.h>

Inheritance diagram for PorousFlowFullySaturatedDarcyBase:
[legend]

Public Member Functions

 PorousFlowFullySaturatedDarcyBase (const InputParameters &parameters)
 

Protected Member Functions

virtual Real computeQpResidual () override
 
virtual Real computeQpJacobian () override
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar) override
 
virtual Real mobility () const
 The mobility of the fluid = density / viscosity. More...
 
virtual Real dmobility (unsigned pvar) const
 The derivative of the mobility with respect to the PorousFlow variable pvar. More...
 

Protected Attributes

const bool _multiply_by_density
 If true then the mobility contains the fluid density, otherwise it doesn't. More...
 
const MaterialProperty< RealTensorValue > & _permeability
 Permeability of porous material. More...
 
const MaterialProperty< std::vector< RealTensorValue > > & _dpermeability_dvar
 d(permeabiity)/d(PorousFlow variable) More...
 
const MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _dpermeability_dgradvar
 d(permeabiity)/d(grad(PorousFlow variable)) More...
 
const MaterialProperty< std::vector< Real > > & _density
 Fluid density for each phase (at the qp) More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _ddensity_dvar
 Derivative of the fluid density for each phase wrt PorousFlow variables (at the qp) More...
 
const MaterialProperty< std::vector< Real > > & _viscosity
 Viscosity of the fluid at the qp. More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _dviscosity_dvar
 Derivative of the fluid viscosity wrt PorousFlow variables. More...
 
const MaterialProperty< std::vector< Real > > & _pp
 Quadpoint pore pressure in each phase. More...
 
const MaterialProperty< std::vector< RealGradient > > & _grad_p
 Gradient of the pore pressure in each phase. More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _dgrad_p_dgrad_var
 Derivative of Grad porepressure in each phase wrt grad(PorousFlow variables) More...
 
const MaterialProperty< std::vector< std::vector< RealGradient > > > & _dgrad_p_dvar
 Derivative of Grad porepressure in each phase wrt PorousFlow variables. More...
 
const PorousFlowDictator_dictator
 PorousFlowDictator UserObject. More...
 
const RealVectorValue _gravity
 Gravity pointing downwards. More...
 
const bool _perm_derivs
 Flag to check whether permeabiity derivatives are non-zero. More...
 

Detailed Description

Darcy advective flux for a fully-saturated, single phase, single component fluid.

No upwinding or relative-permeability is used.

Definition at line 25 of file PorousFlowFullySaturatedDarcyBase.h.

Constructor & Destructor Documentation

◆ PorousFlowFullySaturatedDarcyBase()

PorousFlowFullySaturatedDarcyBase::PorousFlowFullySaturatedDarcyBase ( const InputParameters &  parameters)

Definition at line 36 of file PorousFlowFullySaturatedDarcyBase.C.

38  : Kernel(parameters),
39  _multiply_by_density(getParam<bool>("multiply_by_density")),
40  _permeability(getMaterialProperty<RealTensorValue>("PorousFlow_permeability_qp")),
42  getMaterialProperty<std::vector<RealTensorValue>>("dPorousFlow_permeability_qp_dvar")),
43  _dpermeability_dgradvar(getMaterialProperty<std::vector<std::vector<RealTensorValue>>>(
44  "dPorousFlow_permeability_qp_dgradvar")),
45  _density(getMaterialProperty<std::vector<Real>>("PorousFlow_fluid_phase_density_qp")),
46  _ddensity_dvar(getMaterialProperty<std::vector<std::vector<Real>>>(
47  "dPorousFlow_fluid_phase_density_qp_dvar")),
48  _viscosity(getMaterialProperty<std::vector<Real>>("PorousFlow_viscosity_qp")),
50  getMaterialProperty<std::vector<std::vector<Real>>>("dPorousFlow_viscosity_qp_dvar")),
51  _pp(getMaterialProperty<std::vector<Real>>("PorousFlow_porepressure_qp")),
52  _grad_p(getMaterialProperty<std::vector<RealGradient>>("PorousFlow_grad_porepressure_qp")),
53  _dgrad_p_dgrad_var(getMaterialProperty<std::vector<std::vector<Real>>>(
54  "dPorousFlow_grad_porepressure_qp_dgradvar")),
55  _dgrad_p_dvar(getMaterialProperty<std::vector<std::vector<RealGradient>>>(
56  "dPorousFlow_grad_porepressure_qp_dvar")),
57  _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
58  _gravity(getParam<RealVectorValue>("gravity")),
60 {
61  if (_dictator.numPhases() != 1)
62  mooseError("PorousFlowFullySaturatedDarcyBase should not be used for multi-phase scenarios as "
63  "it does no upwinding and does not include relative-permeability effects");
64 }

Member Function Documentation

◆ computeQpJacobian()

Real PorousFlowFullySaturatedDarcyBase::computeQpJacobian ( )
overrideprotectedvirtual

Definition at line 77 of file PorousFlowFullySaturatedDarcyBase.C.

78 {
79  return computeQpOffDiagJacobian(_var.number());
80 }

◆ computeQpOffDiagJacobian()

Real PorousFlowFullySaturatedDarcyBase::computeQpOffDiagJacobian ( unsigned int  jvar)
overrideprotectedvirtual

Definition at line 83 of file PorousFlowFullySaturatedDarcyBase.C.

84 {
86  return 0.0;
87 
88  const unsigned ph = 0;
89  const unsigned pvar = _dictator.porousFlowVariableNum(jvar);
90 
91  const Real mob = mobility();
92  const Real dmob = dmobility(pvar) * _phi[_j][_qp];
93 
94  const RealVectorValue flow =
95  _permeability[_qp] * (_grad_p[_qp][ph] - _density[_qp][ph] * _gravity);
96 
97  RealVectorValue dflow =
98  _permeability[_qp] * (_grad_phi[_j][_qp] * _dgrad_p_dgrad_var[_qp][ph][pvar] -
99  _phi[_j][_qp] * _ddensity_dvar[_qp][ph][pvar] * _gravity);
100  dflow += _permeability[_qp] * (_dgrad_p_dvar[_qp][ph][pvar] * _phi[_j][_qp]);
101 
102  if (_perm_derivs)
103  {
104  dflow += _dpermeability_dvar[_qp][pvar] * _phi[_j][_qp] *
105  (_grad_p[_qp][ph] - _density[_qp][ph] * _gravity);
106  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
107  dflow += _dpermeability_dgradvar[_qp][i][pvar] * _grad_phi[_j][_qp](i) *
108  (_grad_p[_qp][ph] - _density[_qp][ph] * _gravity);
109  }
110 
111  return _grad_test[_i][_qp] * (dmob * flow + mob * dflow);
112 }

Referenced by computeQpJacobian().

◆ computeQpResidual()

Real PorousFlowFullySaturatedDarcyBase::computeQpResidual ( )
overrideprotectedvirtual

Definition at line 67 of file PorousFlowFullySaturatedDarcyBase.C.

68 {
69  const unsigned ph = 0;
70  const Real mob = mobility();
71  const RealVectorValue flow =
72  _permeability[_qp] * (_grad_p[_qp][ph] - _density[_qp][ph] * _gravity);
73  return _grad_test[_i][_qp] * mob * flow;
74 }

◆ dmobility()

Real PorousFlowFullySaturatedDarcyBase::dmobility ( unsigned  pvar) const
protectedvirtual

The derivative of the mobility with respect to the PorousFlow variable pvar.

Parameters
pvarTake the derivative with respect to this PorousFlow variable

Reimplemented in PorousFlowFullySaturatedDarcyFlow, and PorousFlowFullySaturatedHeatAdvection.

Definition at line 125 of file PorousFlowFullySaturatedDarcyBase.C.

126 {
127  const unsigned ph = 0;
128  Real dmob = -_dviscosity_dvar[_qp][ph][pvar] / std::pow(_viscosity[_qp][ph], 2);
130  dmob = _density[_qp][ph] * dmob + _ddensity_dvar[_qp][ph][pvar] / _viscosity[_qp][ph];
131  return dmob;
132 }

Referenced by computeQpOffDiagJacobian(), PorousFlowFullySaturatedHeatAdvection::dmobility(), and PorousFlowFullySaturatedDarcyFlow::dmobility().

◆ mobility()

Real PorousFlowFullySaturatedDarcyBase::mobility ( ) const
protectedvirtual

The mobility of the fluid = density / viscosity.

Reimplemented in PorousFlowFullySaturatedDarcyFlow, and PorousFlowFullySaturatedHeatAdvection.

Definition at line 115 of file PorousFlowFullySaturatedDarcyBase.C.

116 {
117  const unsigned ph = 0;
118  Real mob = 1.0 / _viscosity[_qp][ph];
120  mob *= _density[_qp][ph];
121  return mob;
122 }

Referenced by computeQpOffDiagJacobian(), computeQpResidual(), PorousFlowFullySaturatedHeatAdvection::dmobility(), PorousFlowFullySaturatedDarcyFlow::dmobility(), PorousFlowFullySaturatedHeatAdvection::mobility(), and PorousFlowFullySaturatedDarcyFlow::mobility().

Member Data Documentation

◆ _ddensity_dvar

const MaterialProperty<std::vector<std::vector<Real> > >& PorousFlowFullySaturatedDarcyBase::_ddensity_dvar
protected

Derivative of the fluid density for each phase wrt PorousFlow variables (at the qp)

Definition at line 62 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian(), and dmobility().

◆ _density

const MaterialProperty<std::vector<Real> >& PorousFlowFullySaturatedDarcyBase::_density
protected

Fluid density for each phase (at the qp)

Definition at line 59 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian(), computeQpResidual(), dmobility(), and mobility().

◆ _dgrad_p_dgrad_var

const MaterialProperty<std::vector<std::vector<Real> > >& PorousFlowFullySaturatedDarcyBase::_dgrad_p_dgrad_var
protected

Derivative of Grad porepressure in each phase wrt grad(PorousFlow variables)

Definition at line 77 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian().

◆ _dgrad_p_dvar

const MaterialProperty<std::vector<std::vector<RealGradient> > >& PorousFlowFullySaturatedDarcyBase::_dgrad_p_dvar
protected

Derivative of Grad porepressure in each phase wrt PorousFlow variables.

Definition at line 80 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian().

◆ _dictator

const PorousFlowDictator& PorousFlowFullySaturatedDarcyBase::_dictator
protected

◆ _dpermeability_dgradvar

const MaterialProperty<std::vector<std::vector<RealTensorValue> > >& PorousFlowFullySaturatedDarcyBase::_dpermeability_dgradvar
protected

d(permeabiity)/d(grad(PorousFlow variable))

Definition at line 56 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian().

◆ _dpermeability_dvar

const MaterialProperty<std::vector<RealTensorValue> >& PorousFlowFullySaturatedDarcyBase::_dpermeability_dvar
protected

d(permeabiity)/d(PorousFlow variable)

Definition at line 53 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian().

◆ _dviscosity_dvar

const MaterialProperty<std::vector<std::vector<Real> > >& PorousFlowFullySaturatedDarcyBase::_dviscosity_dvar
protected

Derivative of the fluid viscosity wrt PorousFlow variables.

Definition at line 68 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by dmobility().

◆ _grad_p

const MaterialProperty<std::vector<RealGradient> >& PorousFlowFullySaturatedDarcyBase::_grad_p
protected

Gradient of the pore pressure in each phase.

Definition at line 74 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian(), and computeQpResidual().

◆ _gravity

const RealVectorValue PorousFlowFullySaturatedDarcyBase::_gravity
protected

Gravity pointing downwards.

Definition at line 86 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian(), and computeQpResidual().

◆ _multiply_by_density

const bool PorousFlowFullySaturatedDarcyBase::_multiply_by_density
protected

If true then the mobility contains the fluid density, otherwise it doesn't.

Definition at line 47 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by dmobility(), and mobility().

◆ _perm_derivs

const bool PorousFlowFullySaturatedDarcyBase::_perm_derivs
protected

Flag to check whether permeabiity derivatives are non-zero.

Definition at line 89 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian().

◆ _permeability

const MaterialProperty<RealTensorValue>& PorousFlowFullySaturatedDarcyBase::_permeability
protected

Permeability of porous material.

Definition at line 50 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by computeQpOffDiagJacobian(), and computeQpResidual().

◆ _pp

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

Quadpoint pore pressure in each phase.

Definition at line 71 of file PorousFlowFullySaturatedDarcyBase.h.

◆ _viscosity

const MaterialProperty<std::vector<Real> >& PorousFlowFullySaturatedDarcyBase::_viscosity
protected

Viscosity of the fluid at the qp.

Definition at line 65 of file PorousFlowFullySaturatedDarcyBase.h.

Referenced by dmobility(), and mobility().


The documentation for this class was generated from the following files:
PorousFlowFullySaturatedDarcyBase::_dgrad_p_dgrad_var
const MaterialProperty< std::vector< std::vector< Real > > > & _dgrad_p_dgrad_var
Derivative of Grad porepressure in each phase wrt grad(PorousFlow variables)
Definition: PorousFlowFullySaturatedDarcyBase.h:77
PorousFlowFullySaturatedDarcyBase::_multiply_by_density
const bool _multiply_by_density
If true then the mobility contains the fluid density, otherwise it doesn't.
Definition: PorousFlowFullySaturatedDarcyBase.h:47
PorousFlowFullySaturatedDarcyBase::_dpermeability_dvar
const MaterialProperty< std::vector< RealTensorValue > > & _dpermeability_dvar
d(permeabiity)/d(PorousFlow variable)
Definition: PorousFlowFullySaturatedDarcyBase.h:53
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
PorousFlowDictator::notPorousFlowVariable
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
Definition: PorousFlowDictator.C:161
PorousFlowFullySaturatedDarcyBase::mobility
virtual Real mobility() const
The mobility of the fluid = density / viscosity.
Definition: PorousFlowFullySaturatedDarcyBase.C:115
PorousFlowFullySaturatedDarcyBase::_pp
const MaterialProperty< std::vector< Real > > & _pp
Quadpoint pore pressure in each phase.
Definition: PorousFlowFullySaturatedDarcyBase.h:71
PorousFlowDictator::porousFlowVariableNum
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
Definition: PorousFlowDictator.C:135
PorousFlowFullySaturatedDarcyBase::_perm_derivs
const bool _perm_derivs
Flag to check whether permeabiity derivatives are non-zero.
Definition: PorousFlowFullySaturatedDarcyBase.h:89
PorousFlowFullySaturatedDarcyBase::_viscosity
const MaterialProperty< std::vector< Real > > & _viscosity
Viscosity of the fluid at the qp.
Definition: PorousFlowFullySaturatedDarcyBase.h:65
PorousFlowFullySaturatedDarcyBase::_ddensity_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _ddensity_dvar
Derivative of the fluid density for each phase wrt PorousFlow variables (at the qp)
Definition: PorousFlowFullySaturatedDarcyBase.h:62
PorousFlowDictator::numPhases
unsigned int numPhases() const
The number of fluid phases.
Definition: PorousFlowDictator.C:105
PorousFlowFullySaturatedDarcyBase::_dictator
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
Definition: PorousFlowFullySaturatedDarcyBase.h:83
PorousFlowFullySaturatedDarcyBase::_dgrad_p_dvar
const MaterialProperty< std::vector< std::vector< RealGradient > > > & _dgrad_p_dvar
Derivative of Grad porepressure in each phase wrt PorousFlow variables.
Definition: PorousFlowFullySaturatedDarcyBase.h:80
PorousFlowFullySaturatedDarcyBase::_grad_p
const MaterialProperty< std::vector< RealGradient > > & _grad_p
Gradient of the pore pressure in each phase.
Definition: PorousFlowFullySaturatedDarcyBase.h:74
PorousFlowFullySaturatedDarcyBase::_dpermeability_dgradvar
const MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _dpermeability_dgradvar
d(permeabiity)/d(grad(PorousFlow variable))
Definition: PorousFlowFullySaturatedDarcyBase.h:56
PorousFlowFullySaturatedDarcyBase::_density
const MaterialProperty< std::vector< Real > > & _density
Fluid density for each phase (at the qp)
Definition: PorousFlowFullySaturatedDarcyBase.h:59
PorousFlowFullySaturatedDarcyBase::_gravity
const RealVectorValue _gravity
Gravity pointing downwards.
Definition: PorousFlowFullySaturatedDarcyBase.h:86
PorousFlowFullySaturatedDarcyBase::_permeability
const MaterialProperty< RealTensorValue > & _permeability
Permeability of porous material.
Definition: PorousFlowFullySaturatedDarcyBase.h:50
PorousFlowDictator::usePermDerivs
bool usePermDerivs() const
Check if the simulation includes derivatives of permeability Note: when the permeability is constant,...
Definition: PorousFlowDictator.h:156
PorousFlowFullySaturatedDarcyBase::_dviscosity_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dviscosity_dvar
Derivative of the fluid viscosity wrt PorousFlow variables.
Definition: PorousFlowFullySaturatedDarcyBase.h:68
PorousFlowFullySaturatedDarcyBase::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: PorousFlowFullySaturatedDarcyBase.C:83
PorousFlowFullySaturatedDarcyBase::dmobility
virtual Real dmobility(unsigned pvar) const
The derivative of the mobility with respect to the PorousFlow variable pvar.
Definition: PorousFlowFullySaturatedDarcyBase.C:125