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

Material designed to provide the porosity in PorousFlow simulations chemistry + biot + (phi0 - reference_chemistry - biot) * exp(-vol_strain. More...

#include <PorousFlowPorosity.h>

Inheritance diagram for PorousFlowPorosity:
[legend]

Public Member Functions

 PorousFlowPorosity (const InputParameters &parameters)
 

Protected Member Functions

virtual Real atNegInfinityQp () const override
 Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay)) More...
 
virtual Real datNegInfinityQp (unsigned pvar) const override
 d(a)/d(PorousFlow variable pvar) More...
 
virtual Real atZeroQp () const override
 Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay)) More...
 
virtual Real datZeroQp (unsigned pvar) const override
 d(a)/d(PorousFlow variable pvar) More...
 
virtual Real decayQp () const override
 Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay)) More...
 
virtual Real ddecayQp_dvar (unsigned pvar) const override
 d(decay)/d(PorousFlow variable pvar) More...
 
virtual RealGradient ddecayQp_dgradvar (unsigned pvar) const override
 d(decay)/d(grad(PorousFlow variable pvar)) More...
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 

Protected Attributes

const bool _mechanical
 Porosity is a function of volumetric strain. More...
 
const bool _fluid
 Porosity is a function of effective porepressure. More...
 
const bool _thermal
 Porosity is a function of temperature. More...
 
const bool _chemical
 Porosity is a function of chemistry. More...
 
const VariableValue & _phi0
 Porosity at zero strain and zero porepressure and zero temperature. More...
 
const Real _biot
 Biot coefficient. More...
 
const Real _exp_coeff
 Thermal expansion coefficient of the solid porous skeleton. More...
 
const Real _solid_bulk
 Drained bulk modulus of the porous skeleton. More...
 
const Real _coeff
 Short-hand number (biot-1)/solid_bulk. More...
 
const VariableValue & _t_reference
 Reference temperature. More...
 
const VariableValue & _p_reference
 Reference porepressure. More...
 
const unsigned _num_c_ref
 Number of reference mineral concentrations provided by user. More...
 
std::vector< const VariableValue * > _c_reference
 Reference mineral concentrations. More...
 
const unsigned _num_initial_c
 Number of reference mineral concentrations provided by user. More...
 
std::vector< const VariableValue * > _initial_c
 Reference mineral concentrations. More...
 
std::vector< Real > _c_weights
 Weights for the mineral concentrations. More...
 
const MaterialProperty< Real > *const _porosity_old
 Old value of porosity. More...
 
const MaterialProperty< Real > *const _vol_strain_qp
 Strain (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference)) More...
 
const MaterialProperty< std::vector< RealGradient > > *const _dvol_strain_qp_dvar
 d(strain)/(dvar) (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference)) More...
 
const MaterialProperty< Real > *const _pf
 Effective porepressure at the quadpoints or nodes. More...
 
const MaterialProperty< std::vector< Real > > *const _dpf_dvar
 d(effective porepressure)/(d porflow variable) More...
 
const MaterialProperty< Real > *const _temperature
 Temperature at the quadpoints or nodes. More...
 
const MaterialProperty< std::vector< Real > > *const _dtemperature_dvar
 d(temperature)/(d porflow variable) More...
 
const MaterialProperty< std::vector< Real > > *const _mineral_conc_old
 Old value of mineral concentration at the quadpoints or nodes. More...
 
const MaterialProperty< std::vector< Real > > *const _reaction_rate
 Reaction rate of mineralisation. More...
 
const MaterialProperty< std::vector< std::vector< Real > > > *const _dreaction_rate_dvar
 d(reaction_rate_conc)/d(porflow variable) More...
 
const unsigned int _aq_ph
 Aqueous phase number. More...
 
const MaterialProperty< std::vector< Real > > *const _saturation
 Saturation. More...
 
const MaterialProperty< std::vector< std::vector< Real > > > *const _dsaturation_dvar
 d(saturation)/d(PorousFlow var) More...
 
const bool _strain_at_nearest_qp
 When calculating nodal porosity, use the strain at the nearest quadpoint to the node. More...
 
const bool _ensure_positive
 for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay). More...
 
MaterialProperty< Real > & _porosity
 Computed porosity at the nodes or quadpoints. More...
 
MaterialProperty< std::vector< Real > > & _dporosity_dvar
 d(porosity)/d(PorousFlow variable) More...
 
MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
 d(porosity)/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 porosity in PorousFlow simulations chemistry + biot + (phi0 - reference_chemistry - biot) * exp(-vol_strain.

Definition at line 25 of file PorousFlowPorosity.h.

Constructor & Destructor Documentation

◆ PorousFlowPorosity()

PorousFlowPorosity::PorousFlowPorosity ( const InputParameters &  parameters)

Definition at line 60 of file PorousFlowPorosity.C.

62 
63  _mechanical(getParam<bool>("mechanical")),
64  _fluid(getParam<bool>("fluid")),
65  _thermal(getParam<bool>("thermal")),
66  _chemical(getParam<bool>("chemical")),
67  _phi0(coupledValue("porosity_zero")),
68  _biot(getParam<Real>("biot_coefficient")),
69  _exp_coeff(isParamValid("thermal_expansion_coeff") ? getParam<Real>("thermal_expansion_coeff")
70  : 0.0),
71  _solid_bulk(isParamValid("solid_bulk") ? getParam<Real>("solid_bulk")
72  : std::numeric_limits<Real>::max()),
73  _coeff((_biot - 1.0) / _solid_bulk),
74 
75  _t_reference(_nodal_material ? coupledDofValues("reference_temperature")
76  : coupledValue("reference_temperature")),
77  _p_reference(_nodal_material ? coupledDofValues("reference_porepressure")
78  : coupledValue("reference_porepressure")),
79  _num_c_ref(coupledComponents("reference_chemistry")),
81  _num_initial_c(coupledComponents("initial_mineral_concentrations")),
83  _c_weights(isParamValid("chemical_weights") ? getParam<std::vector<Real>>("chemical_weights")
84  : std::vector<Real>(_num_c_ref, 1.0)),
85 
86  _porosity_old(_chemical ? (_nodal_material
87  ? &getMaterialPropertyOld<Real>("PorousFlow_porosity_nodal")
88  : &getMaterialPropertyOld<Real>("PorousFlow_porosity_qp"))
89  : nullptr),
90  _vol_strain_qp(_mechanical ? &getMaterialProperty<Real>("PorousFlow_total_volumetric_strain_qp")
91  : nullptr),
92  _dvol_strain_qp_dvar(_mechanical ? &getMaterialProperty<std::vector<RealGradient>>(
93  "dPorousFlow_total_volumetric_strain_qp_dvar")
94  : nullptr),
95 
96  _pf(_fluid ? (_nodal_material
97  ? &getMaterialProperty<Real>("PorousFlow_effective_fluid_pressure_nodal")
98  : &getMaterialProperty<Real>("PorousFlow_effective_fluid_pressure_qp"))
99  : nullptr),
100  _dpf_dvar(_fluid ? (_nodal_material ? &getMaterialProperty<std::vector<Real>>(
101  "dPorousFlow_effective_fluid_pressure_nodal_dvar")
102  : &getMaterialProperty<std::vector<Real>>(
103  "dPorousFlow_effective_fluid_pressure_qp_dvar"))
104  : nullptr),
105 
107  ? (_nodal_material ? &getMaterialProperty<Real>("PorousFlow_temperature_nodal")
108  : &getMaterialProperty<Real>("PorousFlow_temperature_qp"))
109  : nullptr),
111  _thermal
112  ? (_nodal_material
113  ? &getMaterialProperty<std::vector<Real>>("dPorousFlow_temperature_nodal_dvar")
114  : &getMaterialProperty<std::vector<Real>>("dPorousFlow_temperature_qp_dvar"))
115  : nullptr),
116 
117  _mineral_conc_old(_chemical ? (_nodal_material ? &getMaterialPropertyOld<std::vector<Real>>(
118  "PorousFlow_mineral_concentration_nodal")
119  : &getMaterialPropertyOld<std::vector<Real>>(
120  "PorousFlow_mineral_concentration_qp"))
121  : nullptr),
122  _reaction_rate(_chemical ? (_nodal_material ? &getMaterialProperty<std::vector<Real>>(
123  "PorousFlow_mineral_reaction_rate_nodal")
124  : &getMaterialProperty<std::vector<Real>>(
125  "PorousFlow_mineral_reaction_rate_qp"))
126  : nullptr),
127  _dreaction_rate_dvar(_chemical ? (_nodal_material
128  ? &getMaterialProperty<std::vector<std::vector<Real>>>(
129  "dPorousFlow_mineral_reaction_rate_nodal_dvar")
130  : &getMaterialProperty<std::vector<std::vector<Real>>>(
131  "dPorousFlow_mineral_reaction_rate_qp_dvar"))
132  : nullptr),
133  _aq_ph(_dictator.aqueousPhaseNumber()),
135  ? (_nodal_material
136  ? &getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_nodal")
137  : &getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_qp"))
138  : nullptr),
140  ? (_nodal_material ? &getMaterialProperty<std::vector<std::vector<Real>>>(
141  "dPorousFlow_saturation_nodal_dvar")
142  : &getMaterialProperty<std::vector<std::vector<Real>>>(
143  "dPorousFlow_saturation_qp_dvar"))
144  : nullptr)
145 {
146  if (_thermal && !isParamValid("thermal_expansion_coeff"))
147  mooseError("PorousFlowPorosity: When thermal=true you must provide a thermal_expansion_coeff");
148  if (_fluid && !isParamValid("solid_bulk"))
149  mooseError("PorousFlowPorosity: When fluid=true you must provide a solid_bulk");
150  if (_chemical && _num_c_ref != _dictator.numAqueousKinetic())
151  mooseError("PorousFlowPorosity: When chemical=true you must provide the reference_chemistry "
152  "values. The Dictator proclaims there should be ",
153  _dictator.numAqueousKinetic(),
154  " of these");
155  if (_chemical && _num_initial_c != _dictator.numAqueousKinetic())
156  mooseError("PorousFlowPorosity: When chemical=true you must provide the "
157  "initial_mineral_concentrations. "
158  "The Dictator proclaims there should be ",
159  _dictator.numAqueousKinetic(),
160  " of these");
161  if (_chemical && _c_weights.size() != _dictator.numAqueousKinetic())
162  mooseError(
163  "PorousFlowPorosity: When chemical=true you must provde the correct number of "
164  "chemical_weights (which the Dictator knows is ",
165  _dictator.numAqueousKinetic(),
166  ") or do not provide any chemical_weights and use the default value of 1 for each mineral");
167 
168  for (unsigned i = 0; i < _num_c_ref; ++i)
169  {
170  _c_reference[i] = (_nodal_material ? &coupledDofValues("reference_chemistry", i)
171  : &coupledValue("reference_chemistry", i));
172  _initial_c[i] = (_nodal_material ? &coupledDofValues("initial_mineral_concentrations", i)
173  : &coupledValue("initial_mineral_concentrations", i));
174  }
175 }

Member Function Documentation

◆ atNegInfinityQp()

Real PorousFlowPorosity::atNegInfinityQp ( ) const
overrideprotectedvirtual

Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))

Implements PorousFlowPorosityExponentialBase.

Definition at line 178 of file PorousFlowPorosity.C.

179 {
180  /*
181  *
182  * Note the use of the OLD value of porosity here.
183  * This strategy, which breaks the cyclic dependency between porosity
184  * and mineral concentration, is used in
185  * Kernel: PorousFlowPreDis
186  * Material: PorousFlowPorosity
187  * Material: PorousFlowAqueousPreDisChemistry
188  * Material: PorousFlowAqueousPreDisMineral
189  *
190  */
191  Real result = _biot;
192  if (_chemical)
193  {
194  if (_t_step == 0 && !_app.isRestarting())
195  for (unsigned i = 0; i < _num_c_ref; ++i)
196  result -= _c_weights[i] * (*_initial_c[i])[_qp];
197  else
198  for (unsigned i = 0; i < _num_c_ref; ++i)
199  result -= _c_weights[i] * ((*_mineral_conc_old)[_qp][i] + _dt * (*_porosity_old)[_qp] *
200  (*_saturation)[_qp][_aq_ph] *
201  (*_reaction_rate)[_qp][i]);
202  }
203  return result;
204 }

◆ atZeroQp()

Real PorousFlowPorosity::atZeroQp ( ) const
overrideprotectedvirtual

Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))

Implements PorousFlowPorosityExponentialBase.

Definition at line 219 of file PorousFlowPorosity.C.

220 {
221  // note the [0] below: _phi0 is a constant monomial and we use [0] regardless of _nodal_material
222  Real result = _phi0[0];
223  if (_chemical)
224  {
225  if (_t_step == 0 && !_app.isRestarting())
226  for (unsigned i = 0; i < _num_c_ref; ++i)
227  result -= _c_weights[i] * ((*_initial_c[i])[_qp] - (*_c_reference[i])[_qp]);
228  else
229  for (unsigned i = 0; i < _num_c_ref; ++i)
230  result -= _c_weights[i] * ((*_mineral_conc_old)[_qp][i] +
231  _dt * (*_porosity_old)[_qp] * (*_saturation)[_qp][_aq_ph] *
232  (*_reaction_rate)[_qp][i] -
233  (*_c_reference[i])[_qp]);
234  }
235  return result;
236 }

◆ computeQpProperties()

void PorousFlowPorosityExponentialBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Reimplemented in PorousFlowPorosityHMBiotModulus.

Definition at line 62 of file PorousFlowPorosityExponentialBase.C.

63 {
64  const Real a = atNegInfinityQp();
65  const Real b = atZeroQp();
66  const Real decay = decayQp();
67  Real exp_term = 1.0; // set appropriately below
68 
69  Real deriv = 0.0; // = d(porosity)/d(decay)
70  if (decay <= 0.0 || !_ensure_positive)
71  {
72  exp_term = std::exp(decay);
73  _porosity[_qp] = a + (b - a) * exp_term;
74  deriv = _porosity[_qp] - a;
75  }
76  else
77  {
78  const Real c = std::log(a / (a - b));
79  const Real expx = std::exp(-decay / c);
80  // note that at decay = 0, we have expx = 1, so porosity = a + b - a = b
81  // and at decay = infinity, expx = 0, so porosity = a + (b - a) * a / (a - b) = 0
82  exp_term = std::exp(c * (1.0 - expx));
83  _porosity[_qp] = a + (b - a) * exp_term;
84  deriv = (_porosity[_qp] - a) * expx;
85  }
86 
87  _dporosity_dvar[_qp].resize(_num_var);
88  _dporosity_dgradvar[_qp].resize(_num_var);
89  for (unsigned int v = 0; v < _num_var; ++v)
90  {
91  _dporosity_dvar[_qp][v] = ddecayQp_dvar(v) * deriv;
92  _dporosity_dgradvar[_qp][v] = ddecayQp_dgradvar(v) * deriv;
93 
94  const Real da = datNegInfinityQp(v);
95  const Real db = datZeroQp(v);
96  _dporosity_dvar[_qp][v] += da * (1 - exp_term) + db * exp_term;
97 
98  if (!(decay <= 0.0 || !_ensure_positive))
99  {
100  const Real c = std::log(a / (a - b));
101  const Real expx = std::exp(-decay / c);
102  const Real dc = (a - b) * (da * b / a - db) / std::pow(a, 2);
103  _dporosity_dvar[_qp][v] += (b - a) * exp_term * dc * (1 - expx - expx / c);
104  }
105  }
106 }

◆ datNegInfinityQp()

Real PorousFlowPorosity::datNegInfinityQp ( unsigned  pvar) const
overrideprotectedvirtual

d(a)/d(PorousFlow variable pvar)

Implements PorousFlowPorosityExponentialBase.

Definition at line 207 of file PorousFlowPorosity.C.

208 {
209  Real result = 0.0;
210  if (_chemical && (_t_step >= 1 || _app.isRestarting()))
211  for (unsigned i = 0; i < _num_c_ref; ++i)
212  result -= _c_weights[i] * _dt * (*_porosity_old)[_qp] *
213  ((*_saturation)[_qp][_aq_ph] * (*_dreaction_rate_dvar)[_qp][i][pvar] +
214  (*_dsaturation_dvar)[_qp][_aq_ph][pvar] * (*_reaction_rate)[_qp][i]);
215  return result;
216 }

◆ datZeroQp()

Real PorousFlowPorosity::datZeroQp ( unsigned  pvar) const
overrideprotectedvirtual

d(a)/d(PorousFlow variable pvar)

Implements PorousFlowPorosityExponentialBase.

Definition at line 239 of file PorousFlowPorosity.C.

240 {
241  Real result = 0.0;
242  if (_chemical && (_t_step >= 1 || _app.isRestarting()))
243  for (unsigned i = 0; i < _num_c_ref; ++i)
244  result -= _c_weights[i] * _dt * (*_porosity_old)[_qp] *
245  ((*_saturation)[_qp][_aq_ph] * (*_dreaction_rate_dvar)[_qp][i][pvar] +
246  (*_dsaturation_dvar)[_qp][_aq_ph][pvar] * (*_reaction_rate)[_qp][i]);
247  return result;
248 }

◆ ddecayQp_dgradvar()

RealGradient PorousFlowPorosity::ddecayQp_dgradvar ( unsigned  pvar) const
overrideprotectedvirtual

d(decay)/d(grad(PorousFlow variable pvar))

Implements PorousFlowPorosityExponentialBase.

Definition at line 290 of file PorousFlowPorosity.C.

291 {
292  RealGradient result(0.0, 0.0, 0.0);
293  if (_mechanical)
294  {
295  const unsigned qp_to_use =
296  (_nodal_material && (_bnd || _strain_at_nearest_qp) ? nearestQP(_qp) : _qp);
297  result += -(*_dvol_strain_qp_dvar)[qp_to_use][pvar];
298  }
299  return result;
300 }

◆ ddecayQp_dvar()

Real PorousFlowPorosity::ddecayQp_dvar ( unsigned  pvar) const
overrideprotectedvirtual

d(decay)/d(PorousFlow variable pvar)

Implements PorousFlowPorosityExponentialBase.

Definition at line 276 of file PorousFlowPorosity.C.

277 {
278  Real result = 0.0;
279 
280  if (_thermal)
281  result += _exp_coeff * (*_dtemperature_dvar)[_qp][pvar];
282 
283  if (_fluid)
284  result += _coeff * (*_dpf_dvar)[_qp][pvar];
285 
286  return result;
287 }

◆ decayQp()

Real PorousFlowPorosity::decayQp ( ) const
overrideprotectedvirtual

Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))

Implements PorousFlowPorosityExponentialBase.

Definition at line 251 of file PorousFlowPorosity.C.

252 {
253  Real result = 0.0;
254 
255  if (_thermal)
256  result += _exp_coeff * ((*_temperature)[_qp] - _t_reference[_qp]);
257 
258  if (_fluid)
259  result += _coeff * ((*_pf)[_qp] - _p_reference[_qp]);
260 
261  if (_mechanical)
262  {
263  // Note that in the following _strain[_qp] is evaluated at q quadpoint
264  // So _porosity_nodal[_qp], which should be the nodal value of porosity
265  // actually uses the strain at a quadpoint. This
266  // is OK for LINEAR elements, as strain is constant over the element anyway.
267  const unsigned qp_to_use =
268  (_nodal_material && (_bnd || _strain_at_nearest_qp) ? nearestQP(_qp) : _qp);
269  result += -(*_vol_strain_qp)[qp_to_use];
270  }
271 
272  return result;
273 }

◆ initQpStatefulProperties()

void PorousFlowPorosityExponentialBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Definition at line 44 of file PorousFlowPorosityExponentialBase.C.

45 {
46  const Real a = atNegInfinityQp();
47  const Real b = atZeroQp();
48  mooseAssert(a > b, "PorousFlowPorosityExponentialBase a must be larger than b");
49  const Real decay = decayQp();
50 
51  if (decay <= 0.0 || !_ensure_positive)
52  _porosity[_qp] = a + (b - a) * std::exp(decay);
53  else
54  {
55  const Real c = std::log(a / (a - b));
56  const Real expx = std::exp(-decay / c);
57  _porosity[_qp] = a + (b - a) * std::exp(c * (1.0 - expx));
58  }
59 }

Member Data Documentation

◆ _aq_ph

const unsigned int PorousFlowPorosity::_aq_ph
protected

Aqueous phase number.

Definition at line 118 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), and datZeroQp().

◆ _biot

const Real PorousFlowPorosity::_biot
protected

Biot coefficient.

Definition at line 55 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), and PorousFlowPorosityHMBiotModulus::computeQpProperties().

◆ _c_reference

std::vector<const VariableValue *> PorousFlowPorosity::_c_reference
protected

Reference mineral concentrations.

Definition at line 76 of file PorousFlowPorosity.h.

Referenced by atZeroQp(), and PorousFlowPorosity().

◆ _c_weights

std::vector<Real> PorousFlowPorosity::_c_weights
protected

Weights for the mineral concentrations.

Definition at line 85 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), datZeroQp(), and PorousFlowPorosity().

◆ _chemical

const bool PorousFlowPorosity::_chemical
protected

Porosity is a function of chemistry.

Definition at line 49 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), datZeroQp(), and PorousFlowPorosity().

◆ _coeff

const Real PorousFlowPorosity::_coeff
protected

Short-hand number (biot-1)/solid_bulk.

Definition at line 64 of file PorousFlowPorosity.h.

Referenced by ddecayQp_dvar(), and decayQp().

◆ _dpf_dvar

const MaterialProperty<std::vector<Real> >* const PorousFlowPorosity::_dpf_dvar
protected

d(effective porepressure)/(d porflow variable)

Definition at line 100 of file PorousFlowPorosity.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().

◆ _dporosity_dgradvar

MaterialProperty<std::vector<RealGradient> >& PorousFlowPorosityBase::_dporosity_dgradvar
protectedinherited

◆ _dporosity_dvar

MaterialProperty<std::vector<Real> >& PorousFlowPorosityBase::_dporosity_dvar
protectedinherited

◆ _dreaction_rate_dvar

const MaterialProperty<std::vector<std::vector<Real> > >* const PorousFlowPorosity::_dreaction_rate_dvar
protected

d(reaction_rate_conc)/d(porflow variable)

Definition at line 115 of file PorousFlowPorosity.h.

◆ _dsaturation_dvar

const MaterialProperty<std::vector<std::vector<Real> > >* const PorousFlowPorosity::_dsaturation_dvar
protected

d(saturation)/d(PorousFlow var)

Definition at line 124 of file PorousFlowPorosity.h.

◆ _dtemperature_dvar

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

d(temperature)/(d porflow variable)

Definition at line 106 of file PorousFlowPorosity.h.

◆ _dvol_strain_qp_dvar

const MaterialProperty<std::vector<RealGradient> >* const PorousFlowPorosity::_dvol_strain_qp_dvar
protected

d(strain)/(dvar) (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference))

Definition at line 94 of file PorousFlowPorosity.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().

◆ _ensure_positive

const bool PorousFlowPorosityExponentialBase::_ensure_positive
protectedinherited

for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay).

This expression is modified if ensure_positive = true to read porosity = a + (b - a) * exp(c * (1 - Exp(- decay / c))) where c = log(a/(b-a))

Definition at line 76 of file PorousFlowPorosityExponentialBase.h.

Referenced by PorousFlowPorosityExponentialBase::computeQpProperties(), and PorousFlowPorosityExponentialBase::initQpStatefulProperties().

◆ _exp_coeff

const Real PorousFlowPorosity::_exp_coeff
protected

Thermal expansion coefficient of the solid porous skeleton.

Definition at line 58 of file PorousFlowPorosity.h.

Referenced by ddecayQp_dvar(), and decayQp().

◆ _fluid

const bool PorousFlowPorosity::_fluid
protected

Porosity is a function of effective porepressure.

Definition at line 43 of file PorousFlowPorosity.h.

Referenced by ddecayQp_dvar(), decayQp(), and PorousFlowPorosity().

◆ _initial_c

std::vector<const VariableValue *> PorousFlowPorosity::_initial_c
protected

Reference mineral concentrations.

Definition at line 82 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), atZeroQp(), and PorousFlowPorosity().

◆ _mechanical

const bool PorousFlowPorosity::_mechanical
protected

Porosity is a function of volumetric strain.

Definition at line 40 of file PorousFlowPorosity.h.

Referenced by ddecayQp_dgradvar(), and decayQp().

◆ _mineral_conc_old

const MaterialProperty<std::vector<Real> >* const PorousFlowPorosity::_mineral_conc_old
protected

Old value of mineral concentration at the quadpoints or nodes.

Definition at line 109 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), and atZeroQp().

◆ _num_c_ref

const unsigned PorousFlowPorosity::_num_c_ref
protected

Number of reference mineral concentrations provided by user.

Definition at line 73 of file PorousFlowPorosity.h.

Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), datZeroQp(), and PorousFlowPorosity().

◆ _num_components

const unsigned int PorousFlowMaterialVectorBase::_num_components
protectedinherited

◆ _num_initial_c

const unsigned PorousFlowPorosity::_num_initial_c
protected

Number of reference mineral concentrations provided by user.

Definition at line 79 of file PorousFlowPorosity.h.

Referenced by PorousFlowPorosity().

◆ _num_phases

const unsigned int PorousFlowMaterialVectorBase::_num_phases
protectedinherited

◆ _num_var

const unsigned int PorousFlowMaterialVectorBase::_num_var
protectedinherited

◆ _p_reference

const VariableValue& PorousFlowPorosity::_p_reference
protected

Reference porepressure.

Definition at line 70 of file PorousFlowPorosity.h.

Referenced by decayQp().

◆ _pf

const MaterialProperty<Real>* const PorousFlowPorosity::_pf
protected

Effective porepressure at the quadpoints or nodes.

Definition at line 97 of file PorousFlowPorosity.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().

◆ _phi0

const VariableValue& PorousFlowPorosity::_phi0
protected

Porosity at zero strain and zero porepressure and zero temperature.

Definition at line 52 of file PorousFlowPorosity.h.

Referenced by atZeroQp().

◆ _porosity

MaterialProperty<Real>& PorousFlowPorosityBase::_porosity
protectedinherited

◆ _porosity_old

const MaterialProperty<Real>* const PorousFlowPorosity::_porosity_old
protected

Old value of porosity.

Definition at line 88 of file PorousFlowPorosity.h.

Referenced by datNegInfinityQp(), and datZeroQp().

◆ _reaction_rate

const MaterialProperty<std::vector<Real> >* const PorousFlowPorosity::_reaction_rate
protected

Reaction rate of mineralisation.

Definition at line 112 of file PorousFlowPorosity.h.

◆ _saturation

const MaterialProperty<std::vector<Real> >* const PorousFlowPorosity::_saturation
protected

Saturation.

Definition at line 121 of file PorousFlowPorosity.h.

◆ _solid_bulk

const Real PorousFlowPorosity::_solid_bulk
protected

Drained bulk modulus of the porous skeleton.

Definition at line 61 of file PorousFlowPorosity.h.

◆ _strain_at_nearest_qp

const bool PorousFlowPorosityExponentialBase::_strain_at_nearest_qp
protectedinherited

When calculating nodal porosity, use the strain at the nearest quadpoint to the node.

Definition at line 67 of file PorousFlowPorosityExponentialBase.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), ddecayQp_dgradvar(), and decayQp().

◆ _t_reference

const VariableValue& PorousFlowPorosity::_t_reference
protected

Reference temperature.

Definition at line 67 of file PorousFlowPorosity.h.

Referenced by decayQp().

◆ _temperature

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

Temperature at the quadpoints or nodes.

Definition at line 103 of file PorousFlowPorosity.h.

◆ _thermal

const bool PorousFlowPorosity::_thermal
protected

Porosity is a function of temperature.

Definition at line 46 of file PorousFlowPorosity.h.

Referenced by ddecayQp_dvar(), decayQp(), and PorousFlowPorosity().

◆ _vol_strain_qp

const MaterialProperty<Real>* const PorousFlowPorosity::_vol_strain_qp
protected

Strain (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference))

Definition at line 91 of file PorousFlowPorosity.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().


The documentation for this class was generated from the following files:
PorousFlowPorosityExponentialBase::PorousFlowPorosityExponentialBase
PorousFlowPorosityExponentialBase(const InputParameters &parameters)
Definition: PorousFlowPorosityExponentialBase.C:35
PorousFlowPorosity::_c_weights
std::vector< Real > _c_weights
Weights for the mineral concentrations.
Definition: PorousFlowPorosity.h:85
PorousFlowPorosityExponentialBase::atZeroQp
virtual Real atZeroQp() const =0
Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
PorousFlowPorosity::_chemical
const bool _chemical
Porosity is a function of chemistry.
Definition: PorousFlowPorosity.h:49
PorousFlowPorosity::_dreaction_rate_dvar
const MaterialProperty< std::vector< std::vector< Real > > > *const _dreaction_rate_dvar
d(reaction_rate_conc)/d(porflow variable)
Definition: PorousFlowPorosity.h:115
PorousFlowPorosityExponentialBase::datNegInfinityQp
virtual Real datNegInfinityQp(unsigned pvar) const =0
d(a)/d(PorousFlow variable pvar)
PorousFlowPorosity::_mineral_conc_old
const MaterialProperty< std::vector< Real > > *const _mineral_conc_old
Old value of mineral concentration at the quadpoints or nodes.
Definition: PorousFlowPorosity.h:109
PorousFlowPorosity::_dvol_strain_qp_dvar
const MaterialProperty< std::vector< RealGradient > > *const _dvol_strain_qp_dvar
d(strain)/(dvar) (first const means we never want to dereference and change the value,...
Definition: PorousFlowPorosity.h:94
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
PorousFlowPorosity::_vol_strain_qp
const MaterialProperty< Real > *const _vol_strain_qp
Strain (first const means we never want to dereference and change the value, second means we'll alway...
Definition: PorousFlowPorosity.h:91
PorousFlowPorosityBase::_porosity
MaterialProperty< Real > & _porosity
Computed porosity at the nodes or quadpoints.
Definition: PorousFlowPorosityBase.h:29
PorousFlowPorosity::_dpf_dvar
const MaterialProperty< std::vector< Real > > *const _dpf_dvar
d(effective porepressure)/(d porflow variable)
Definition: PorousFlowPorosity.h:100
PorousFlowPorosity::_coeff
const Real _coeff
Short-hand number (biot-1)/solid_bulk.
Definition: PorousFlowPorosity.h:64
PorousFlowPorosityBase::_dporosity_dvar
MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable)
Definition: PorousFlowPorosityBase.h:32
PorousFlowPorosity::_solid_bulk
const Real _solid_bulk
Drained bulk modulus of the porous skeleton.
Definition: PorousFlowPorosity.h:61
PorousFlowPorosityExponentialBase::atNegInfinityQp
virtual Real atNegInfinityQp() const =0
Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
PorousFlowPorosity::_fluid
const bool _fluid
Porosity is a function of effective porepressure.
Definition: PorousFlowPorosity.h:43
PorousFlowPorosityExponentialBase::datZeroQp
virtual Real datZeroQp(unsigned pvar) const =0
d(a)/d(PorousFlow variable pvar)
PorousFlowPorosity::_phi0
const VariableValue & _phi0
Porosity at zero strain and zero porepressure and zero temperature.
Definition: PorousFlowPorosity.h:52
PorousFlowPorosity::_t_reference
const VariableValue & _t_reference
Reference temperature.
Definition: PorousFlowPorosity.h:67
PorousFlowPorosity::_p_reference
const VariableValue & _p_reference
Reference porepressure.
Definition: PorousFlowPorosity.h:70
PorousFlowPorosity::_pf
const MaterialProperty< Real > *const _pf
Effective porepressure at the quadpoints or nodes.
Definition: PorousFlowPorosity.h:97
PorousFlowPorosity::_exp_coeff
const Real _exp_coeff
Thermal expansion coefficient of the solid porous skeleton.
Definition: PorousFlowPorosity.h:58
PorousFlowPorosity::_saturation
const MaterialProperty< std::vector< Real > > *const _saturation
Saturation.
Definition: PorousFlowPorosity.h:121
PorousFlowPorosity::_porosity_old
const MaterialProperty< Real > *const _porosity_old
Old value of porosity.
Definition: PorousFlowPorosity.h:88
PorousFlowPorosity::_aq_ph
const unsigned int _aq_ph
Aqueous phase number.
Definition: PorousFlowPorosity.h:118
PorousFlowPorosity::_num_c_ref
const unsigned _num_c_ref
Number of reference mineral concentrations provided by user.
Definition: PorousFlowPorosity.h:73
PorousFlowPorosity::_initial_c
std::vector< const VariableValue * > _initial_c
Reference mineral concentrations.
Definition: PorousFlowPorosity.h:82
PorousFlowPorosity::_thermal
const bool _thermal
Porosity is a function of temperature.
Definition: PorousFlowPorosity.h:46
PorousFlowPorosity::_dsaturation_dvar
const MaterialProperty< std::vector< std::vector< Real > > > *const _dsaturation_dvar
d(saturation)/d(PorousFlow var)
Definition: PorousFlowPorosity.h:124
PorousFlowPorosity::_c_reference
std::vector< const VariableValue * > _c_reference
Reference mineral concentrations.
Definition: PorousFlowPorosity.h:76
PorousFlowPorosityExponentialBase::_ensure_positive
const bool _ensure_positive
for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay).
Definition: PorousFlowPorosityExponentialBase.h:76
PorousFlowPorosityExponentialBase::decayQp
virtual Real decayQp() const =0
Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
PorousFlowMaterialVectorBase::_num_var
const unsigned int _num_var
Number of PorousFlow variables.
Definition: PorousFlowMaterialVectorBase.h:36
PorousFlowPorosity::_reaction_rate
const MaterialProperty< std::vector< Real > > *const _reaction_rate
Reaction rate of mineralisation.
Definition: PorousFlowPorosity.h:112
PorousFlowPorosityExponentialBase::_strain_at_nearest_qp
const bool _strain_at_nearest_qp
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
Definition: PorousFlowPorosityExponentialBase.h:67
PorousFlowPorosity::_num_initial_c
const unsigned _num_initial_c
Number of reference mineral concentrations provided by user.
Definition: PorousFlowPorosity.h:79
PorousFlowPorosityExponentialBase::ddecayQp_dgradvar
virtual RealGradient ddecayQp_dgradvar(unsigned pvar) const =0
d(decay)/d(grad(PorousFlow variable pvar))
PorousFlowPorosity::_dtemperature_dvar
const MaterialProperty< std::vector< Real > > *const _dtemperature_dvar
d(temperature)/(d porflow variable)
Definition: PorousFlowPorosity.h:106
PorousFlowPorosityExponentialBase::ddecayQp_dvar
virtual Real ddecayQp_dvar(unsigned pvar) const =0
d(decay)/d(PorousFlow variable pvar)
PorousFlowPorosity::_biot
const Real _biot
Biot coefficient.
Definition: PorousFlowPorosity.h:55
PorousFlowPorosityBase::_dporosity_dgradvar
MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
Definition: PorousFlowPorosityBase.h:35
PorousFlowPorosity::_mechanical
const bool _mechanical
Porosity is a function of volumetric strain.
Definition: PorousFlowPorosity.h:40
PorousFlowPorosity::_temperature
const MaterialProperty< Real > *const _temperature
Temperature at the quadpoints or nodes.
Definition: PorousFlowPorosity.h:103