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

Material designed to provide the permeability tensor which is calculated from porosity using the equation: permeability = k_ijk * k, with k = BB * exp(AA * phi) where k_ijk is a tensor providing the anisotropy, phi is porosity, and A and B are empirical constants. More...

#include <PorousFlowPermeabilityExponential.h>

Inheritance diagram for PorousFlowPermeabilityExponential:
[legend]

Public Member Functions

 PorousFlowPermeabilityExponential (const InputParameters &parameters)
 

Protected Types

enum  PoropermFunction { PoropermFunction::log_k, PoropermFunction::ln_k, PoropermFunction::exp_k }
 Name of porosity-permeability relationship. More...
 

Protected Member Functions

void computeQpProperties () override
 

Protected Attributes

const Real _A
 Empirical constant A. More...
 
const Real _B
 Empirical constant B. More...
 
const RealTensorValue _k_anisotropy
 Tensor multiplier k_ijk in k = k_ijk * A * phi^n / (1 - phi)^m. More...
 
const MaterialProperty< Real > & _porosity_qp
 Quadpoint porosity. More...
 
const MaterialProperty< std::vector< Real > > & _dporosity_qp_dvar
 d(quadpoint porosity)/d(PorousFlow variable) More...
 
const MaterialProperty< std::vector< RealGradient > > & _dporosity_qp_dgradvar
 d(quadpoint porosity)/d(grad(PorousFlow variable)) More...
 
enum PorousFlowPermeabilityExponential::PoropermFunction _poroperm_function
 
Real _AA
 Empirical constant AA in k = k_ijk * BB * exp(AA * phi) More...
 
Real _BB
 Empirical constant BB in k = k_ijk * BB * exp(AA * phi) More...
 
MaterialProperty< RealTensorValue > & _permeability_qp
 Quadpoint permeability. More...
 
MaterialProperty< std::vector< RealTensorValue > > & _dpermeability_qp_dvar
 d(quadpoint permeability)/d(PorousFlow variable) More...
 
MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _dpermeability_qp_dgradvar
 d(quadpoint permeability)/d(grad(PorousFlow variable)) More...
 
const unsigned int _num_phases
 Number of phases. More...
 
const unsigned int _num_components
 Number of fluid components. More...
 
const unsigned int _num_var
 Number of PorousFlow variables. More...
 

Detailed Description

Material designed to provide the permeability tensor which is calculated from porosity using the equation: permeability = k_ijk * k, with k = BB * exp(AA * phi) where k_ijk is a tensor providing the anisotropy, phi is porosity, and A and B are empirical constants.

The user can provide input for the equation expressed in any of the following 3 forms: log k = A * phi + B ln k = A * phi + B k = B * exp(A * phi) A and B are then converted to AA and BB.

Definition at line 32 of file PorousFlowPermeabilityExponential.h.

Member Enumeration Documentation

◆ PoropermFunction

Name of porosity-permeability relationship.

Enumerator
log_k 
ln_k 
exp_k 

Definition at line 59 of file PorousFlowPermeabilityExponential.h.

59 { log_k, ln_k, exp_k } _poroperm_function;

Constructor & Destructor Documentation

◆ PorousFlowPermeabilityExponential()

PorousFlowPermeabilityExponential::PorousFlowPermeabilityExponential ( const InputParameters &  parameters)

Definition at line 41 of file PorousFlowPermeabilityExponential.C.

43  : PorousFlowPermeabilityBase(parameters),
44  _A(getParam<Real>("A")),
45  _B(getParam<Real>("B")),
46  _k_anisotropy(parameters.isParamValid("k_anisotropy")
47  ? getParam<RealTensorValue>("k_anisotropy")
48  : RealTensorValue(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)),
49  _porosity_qp(getMaterialProperty<Real>("PorousFlow_porosity_qp")),
50  _dporosity_qp_dvar(getMaterialProperty<std::vector<Real>>("dPorousFlow_porosity_qp_dvar")),
52  getMaterialProperty<std::vector<RealGradient>>("dPorousFlow_porosity_qp_dgradvar")),
53  _poroperm_function(getParam<MooseEnum>("poroperm_function").getEnum<PoropermFunction>())
54 {
55  switch (_poroperm_function)
56  {
58  _AA = _A * std::log(10.0);
59  _BB = std::pow(10.0, _B);
60  break;
61 
63  _AA = _A;
64  _BB = std::exp(_B);
65  break;
66 
68  _AA = _A;
69  _BB = _B;
70  break;
71  }
72 
73  // Make sure that derivatives are included in the Jacobian calculations
74  _dictator.usePermDerivs(true);
75 }

Member Function Documentation

◆ computeQpProperties()

void PorousFlowPermeabilityExponential::computeQpProperties ( )
overrideprotected

Definition at line 78 of file PorousFlowPermeabilityExponential.C.

79 {
80  _permeability_qp[_qp] = _k_anisotropy * _BB * std::exp(_porosity_qp[_qp] * _AA);
81 
82  _dpermeability_qp_dvar[_qp].resize(_num_var, RealTensorValue());
83  for (unsigned int v = 0; v < _num_var; ++v)
85 
86  _dpermeability_qp_dgradvar[_qp].resize(LIBMESH_DIM);
87  for (unsigned i = 0; i < LIBMESH_DIM; ++i)
88  {
89  _dpermeability_qp_dgradvar[_qp][i].resize(_num_var, RealTensorValue());
90  for (unsigned int v = 0; v < _num_var; ++v)
91  _dpermeability_qp_dgradvar[_qp][i][v] =
92  _AA * _permeability_qp[_qp] * _dporosity_qp_dgradvar[_qp][v](i);
93  }
94 }

Member Data Documentation

◆ _A

const Real PorousFlowPermeabilityExponential::_A
protected

Empirical constant A.

Definition at line 41 of file PorousFlowPermeabilityExponential.h.

Referenced by PorousFlowPermeabilityExponential().

◆ _AA

Real PorousFlowPermeabilityExponential::_AA
protected

Empirical constant AA in k = k_ijk * BB * exp(AA * phi)

Definition at line 62 of file PorousFlowPermeabilityExponential.h.

Referenced by computeQpProperties(), and PorousFlowPermeabilityExponential().

◆ _B

const Real PorousFlowPermeabilityExponential::_B
protected

Empirical constant B.

Definition at line 44 of file PorousFlowPermeabilityExponential.h.

Referenced by PorousFlowPermeabilityExponential().

◆ _BB

Real PorousFlowPermeabilityExponential::_BB
protected

Empirical constant BB in k = k_ijk * BB * exp(AA * phi)

Definition at line 65 of file PorousFlowPermeabilityExponential.h.

Referenced by computeQpProperties(), and PorousFlowPermeabilityExponential().

◆ _dpermeability_qp_dgradvar

MaterialProperty<std::vector<std::vector<RealTensorValue> > >& PorousFlowPermeabilityBase::_dpermeability_qp_dgradvar
protectedinherited

◆ _dpermeability_qp_dvar

MaterialProperty<std::vector<RealTensorValue> >& PorousFlowPermeabilityBase::_dpermeability_qp_dvar
protectedinherited

◆ _dporosity_qp_dgradvar

const MaterialProperty<std::vector<RealGradient> >& PorousFlowPermeabilityExponential::_dporosity_qp_dgradvar
protected

d(quadpoint porosity)/d(grad(PorousFlow variable))

Definition at line 56 of file PorousFlowPermeabilityExponential.h.

Referenced by computeQpProperties().

◆ _dporosity_qp_dvar

const MaterialProperty<std::vector<Real> >& PorousFlowPermeabilityExponential::_dporosity_qp_dvar
protected

d(quadpoint porosity)/d(PorousFlow variable)

Definition at line 53 of file PorousFlowPermeabilityExponential.h.

Referenced by computeQpProperties().

◆ _k_anisotropy

const RealTensorValue PorousFlowPermeabilityExponential::_k_anisotropy
protected

Tensor multiplier k_ijk in k = k_ijk * A * phi^n / (1 - phi)^m.

Definition at line 47 of file PorousFlowPermeabilityExponential.h.

Referenced by computeQpProperties().

◆ _num_components

const unsigned int PorousFlowMaterialVectorBase::_num_components
protectedinherited

◆ _num_phases

const unsigned int PorousFlowMaterialVectorBase::_num_phases
protectedinherited

◆ _num_var

const unsigned int PorousFlowMaterialVectorBase::_num_var
protectedinherited

◆ _permeability_qp

MaterialProperty<RealTensorValue>& PorousFlowPermeabilityBase::_permeability_qp
protectedinherited

◆ _poroperm_function

enum PorousFlowPermeabilityExponential::PoropermFunction PorousFlowPermeabilityExponential::_poroperm_function
protected

◆ _porosity_qp

const MaterialProperty<Real>& PorousFlowPermeabilityExponential::_porosity_qp
protected

Quadpoint porosity.

Definition at line 50 of file PorousFlowPermeabilityExponential.h.

Referenced by computeQpProperties().


The documentation for this class was generated from the following files:
PorousFlowPermeabilityExponential::PoropermFunction::log_k
PorousFlowPermeabilityExponential::_B
const Real _B
Empirical constant B.
Definition: PorousFlowPermeabilityExponential.h:44
PorousFlowPermeabilityExponential::PoropermFunction
PoropermFunction
Name of porosity-permeability relationship.
Definition: PorousFlowPermeabilityExponential.h:59
PorousFlowPermeabilityBase::_dpermeability_qp_dvar
MaterialProperty< std::vector< RealTensorValue > > & _dpermeability_qp_dvar
d(quadpoint permeability)/d(PorousFlow variable)
Definition: PorousFlowPermeabilityBase.h:32
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
PorousFlowPermeabilityExponential::_AA
Real _AA
Empirical constant AA in k = k_ijk * BB * exp(AA * phi)
Definition: PorousFlowPermeabilityExponential.h:62
PorousFlowPermeabilityExponential::_A
const Real _A
Empirical constant A.
Definition: PorousFlowPermeabilityExponential.h:41
PorousFlowPermeabilityExponential::_k_anisotropy
const RealTensorValue _k_anisotropy
Tensor multiplier k_ijk in k = k_ijk * A * phi^n / (1 - phi)^m.
Definition: PorousFlowPermeabilityExponential.h:47
PorousFlowPermeabilityBase::_permeability_qp
MaterialProperty< RealTensorValue > & _permeability_qp
Quadpoint permeability.
Definition: PorousFlowPermeabilityBase.h:29
PorousFlowPermeabilityExponential::PoropermFunction::ln_k
PorousFlowPermeabilityExponential::PoropermFunction::exp_k
PorousFlowMaterialVectorBase::_num_var
const unsigned int _num_var
Number of PorousFlow variables.
Definition: PorousFlowMaterialVectorBase.h:36
PorousFlowPermeabilityBase::_dpermeability_qp_dgradvar
MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _dpermeability_qp_dgradvar
d(quadpoint permeability)/d(grad(PorousFlow variable))
Definition: PorousFlowPermeabilityBase.h:35
PorousFlowPermeabilityExponential::_dporosity_qp_dvar
const MaterialProperty< std::vector< Real > > & _dporosity_qp_dvar
d(quadpoint porosity)/d(PorousFlow variable)
Definition: PorousFlowPermeabilityExponential.h:53
PorousFlowPermeabilityExponential::_BB
Real _BB
Empirical constant BB in k = k_ijk * BB * exp(AA * phi)
Definition: PorousFlowPermeabilityExponential.h:65
PorousFlowPermeabilityExponential::_poroperm_function
enum PorousFlowPermeabilityExponential::PoropermFunction _poroperm_function
PorousFlowPermeabilityExponential::_porosity_qp
const MaterialProperty< Real > & _porosity_qp
Quadpoint porosity.
Definition: PorousFlowPermeabilityExponential.h:50
PorousFlowPermeabilityExponential::_dporosity_qp_dgradvar
const MaterialProperty< std::vector< RealGradient > > & _dporosity_qp_dgradvar
d(quadpoint porosity)/d(grad(PorousFlow variable))
Definition: PorousFlowPermeabilityExponential.h:56
PorousFlowPermeabilityBase::PorousFlowPermeabilityBase
PorousFlowPermeabilityBase(const InputParameters &parameters)
Definition: PorousFlowPermeabilityBase.C:23