www.mooseframework.org
PorousFlowEffectiveFluidPressure.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 
11 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<PorousFlowMaterialVectorBase>();
19  params.set<std::string>("pf_material_type") = "effective_pressure";
20  params.addClassDescription("This Material calculates an effective fluid pressure: "
21  "effective_stress = total_stress + "
22  "biot_coeff*effective_fluid_pressure. The effective_fluid_pressure = "
23  "sum_{phases}(S_phase * P_phase)");
24  return params;
25 }
26 
28  const InputParameters & parameters)
29  : PorousFlowMaterialVectorBase(parameters),
30  _porepressure(_nodal_material
31  ? getMaterialProperty<std::vector<Real>>("PorousFlow_porepressure_nodal")
32  : getMaterialProperty<std::vector<Real>>("PorousFlow_porepressure_qp")),
33  _dporepressure_dvar(_nodal_material ? getMaterialProperty<std::vector<std::vector<Real>>>(
34  "dPorousFlow_porepressure_nodal_dvar")
35  : getMaterialProperty<std::vector<std::vector<Real>>>(
36  "dPorousFlow_porepressure_qp_dvar")),
37  _saturation(_nodal_material
38  ? getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_nodal")
39  : getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_qp")),
40  _dsaturation_dvar(_nodal_material ? getMaterialProperty<std::vector<std::vector<Real>>>(
41  "dPorousFlow_saturation_nodal_dvar")
42  : getMaterialProperty<std::vector<std::vector<Real>>>(
43  "dPorousFlow_saturation_qp_dvar")),
44  _pf(_nodal_material ? declareProperty<Real>("PorousFlow_effective_fluid_pressure_nodal")
45  : declareProperty<Real>("PorousFlow_effective_fluid_pressure_qp")),
46  _dpf_dvar(
47  _nodal_material
48  ? declareProperty<std::vector<Real>>("dPorousFlow_effective_fluid_pressure_nodal_dvar")
49  : declareProperty<std::vector<Real>>("dPorousFlow_effective_fluid_pressure_qp_dvar"))
50 {
51 }
52 
53 void
55 {
56  _pf[_qp] = 0.0;
57  for (unsigned ph = 0; ph < _num_phases; ++ph)
58  _pf[_qp] += _saturation[_qp][ph] * _porepressure[_qp][ph];
59 }
60 
61 void
63 {
64  _pf[_qp] = 0.0;
65  _dpf_dvar[_qp].assign(_num_var, 0.0);
66  for (unsigned ph = 0; ph < _num_phases; ++ph)
67  {
68  _pf[_qp] += _saturation[_qp][ph] * _porepressure[_qp][ph];
69  for (unsigned v = 0; v < _num_var; ++v)
70  _dpf_dvar[_qp][v] += _dsaturation_dvar[_qp][ph][v] * _porepressure[_qp][ph] +
71  _saturation[_qp][ph] * _dporepressure_dvar[_qp][ph][v];
72  }
73 }
PorousFlowMaterialVectorBase
Base class for all PorousFlow vector materials.
Definition: PorousFlowMaterialVectorBase.h:23
PorousFlowEffectiveFluidPressure
Material designed to calculate the effective fluid pressure that can be used in the mechanical effect...
Definition: PorousFlowEffectiveFluidPressure.h:25
validParams< PorousFlowMaterialVectorBase >
InputParameters validParams< PorousFlowMaterialVectorBase >()
Definition: PorousFlowMaterialVectorBase.C:14
PorousFlowEffectiveFluidPressure.h
PorousFlowEffectiveFluidPressure::_dporepressure_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dporepressure_dvar
d(porepressure)/d(PorousFlow variable)
Definition: PorousFlowEffectiveFluidPressure.h:38
PorousFlowEffectiveFluidPressure::computeQpProperties
virtual void computeQpProperties() override
Definition: PorousFlowEffectiveFluidPressure.C:62
PorousFlowEffectiveFluidPressure::_porepressure
const MaterialProperty< std::vector< Real > > & _porepressure
Quadpoint or nodal porepressure of each phase.
Definition: PorousFlowEffectiveFluidPressure.h:35
validParams< PorousFlowEffectiveFluidPressure >
InputParameters validParams< PorousFlowEffectiveFluidPressure >()
Definition: PorousFlowEffectiveFluidPressure.C:16
PorousFlowEffectiveFluidPressure::_dpf_dvar
MaterialProperty< std::vector< Real > > & _dpf_dvar
d(_pf)/d(PorousFlow variable)
Definition: PorousFlowEffectiveFluidPressure.h:50
PorousFlowEffectiveFluidPressure::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: PorousFlowEffectiveFluidPressure.C:54
PorousFlowEffectiveFluidPressure::_saturation
const MaterialProperty< std::vector< Real > > & _saturation
Quadpoint or nodal saturation of each phase.
Definition: PorousFlowEffectiveFluidPressure.h:41
PorousFlowEffectiveFluidPressure::PorousFlowEffectiveFluidPressure
PorousFlowEffectiveFluidPressure(const InputParameters &parameters)
Definition: PorousFlowEffectiveFluidPressure.C:27
PorousFlowMaterialVectorBase::_num_var
const unsigned int _num_var
Number of PorousFlow variables.
Definition: PorousFlowMaterialVectorBase.h:36
PorousFlowMaterialVectorBase::_num_phases
const unsigned int _num_phases
Number of phases.
Definition: PorousFlowMaterialVectorBase.h:30
PorousFlowEffectiveFluidPressure::_pf
MaterialProperty< Real > & _pf
Computed effective fluid pressure (at quadpoints or nodes)
Definition: PorousFlowEffectiveFluidPressure.h:47
PorousFlowEffectiveFluidPressure::_dsaturation_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dsaturation_dvar
d(saturation)/d(PorousFlow variable)
Definition: PorousFlowEffectiveFluidPressure.h:44
registerMooseObject
registerMooseObject("PorousFlowApp", PorousFlowEffectiveFluidPressure)