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

Base class for thermophysical variable materials, which assemble materials for primary variables such as porepressure and saturation at the nodes and quadpoints for all phases as required. More...

#include <PorousFlowVariableBase.h>

Inheritance diagram for PorousFlowVariableBase:
[legend]

Public Member Functions

 PorousFlowVariableBase (const InputParameters &parameters)
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 

Protected Attributes

const unsigned int _num_phases
 Number of phases. More...
 
const unsigned int _num_components
 Number of components. More...
 
const unsigned int _num_pf_vars
 Number of PorousFlow variables. More...
 
MaterialProperty< std::vector< Real > > & _porepressure
 Computed nodal or quadpoint values of porepressure of the phases. More...
 
MaterialProperty< std::vector< std::vector< Real > > > & _dporepressure_dvar
 d(porepressure)/d(PorousFlow variable) More...
 
MaterialProperty< std::vector< RealGradient > > *const _gradp_qp
 Grad(p) at the quadpoints. More...
 
MaterialProperty< std::vector< std::vector< Real > > > *const _dgradp_qp_dgradv
 d(grad porepressure)/d(grad PorousFlow variable) at the quadpoints More...
 
MaterialProperty< std::vector< std::vector< RealGradient > > > *const _dgradp_qp_dv
 d(grad porepressure)/d(PorousFlow variable) at the quadpoints More...
 
MaterialProperty< std::vector< Real > > & _saturation
 Computed nodal or qp saturation of the phases. More...
 
MaterialProperty< std::vector< std::vector< Real > > > & _dsaturation_dvar
 d(saturation)/d(PorousFlow variable) More...
 
MaterialProperty< std::vector< RealGradient > > *const _grads_qp
 Grad(s) at the quadpoints. More...
 
MaterialProperty< std::vector< std::vector< Real > > > *const _dgrads_qp_dgradv
 d(grad saturation)/d(grad PorousFlow variable) at the quadpoints More...
 
MaterialProperty< std::vector< std::vector< RealGradient > > > *const _dgrads_qp_dv
 d(grad saturation)/d(PorousFlow variable) at the quadpoints More...
 

Detailed Description

Base class for thermophysical variable materials, which assemble materials for primary variables such as porepressure and saturation at the nodes and quadpoints for all phases as required.

Definition at line 25 of file PorousFlowVariableBase.h.

Constructor & Destructor Documentation

◆ PorousFlowVariableBase()

PorousFlowVariableBase::PorousFlowVariableBase ( const InputParameters &  parameters)

Definition at line 23 of file PorousFlowVariableBase.C.

24  : DerivativeMaterialInterface<PorousFlowMaterial>(parameters),
25 
26  _num_phases(_dictator.numPhases()),
27  _num_components(_dictator.numComponents()),
28  _num_pf_vars(_dictator.numVariables()),
29 
30  _porepressure(_nodal_material
31  ? declareProperty<std::vector<Real>>("PorousFlow_porepressure_nodal")
32  : declareProperty<std::vector<Real>>("PorousFlow_porepressure_qp")),
34  _nodal_material
35  ? declareProperty<std::vector<std::vector<Real>>>("dPorousFlow_porepressure_nodal_dvar")
36  : declareProperty<std::vector<std::vector<Real>>>("dPorousFlow_porepressure_qp_dvar")),
37  _gradp_qp(_nodal_material
38  ? nullptr
39  : &declareProperty<std::vector<RealGradient>>("PorousFlow_grad_porepressure_qp")),
40  _dgradp_qp_dgradv(_nodal_material ? nullptr
41  : &declareProperty<std::vector<std::vector<Real>>>(
42  "dPorousFlow_grad_porepressure_qp_dgradvar")),
43  _dgradp_qp_dv(_nodal_material ? nullptr
44  : &declareProperty<std::vector<std::vector<RealGradient>>>(
45  "dPorousFlow_grad_porepressure_qp_dvar")),
46 
47  _saturation(_nodal_material ? declareProperty<std::vector<Real>>("PorousFlow_saturation_nodal")
48  : declareProperty<std::vector<Real>>("PorousFlow_saturation_qp")),
50  _nodal_material
51  ? declareProperty<std::vector<std::vector<Real>>>("dPorousFlow_saturation_nodal_dvar")
52  : declareProperty<std::vector<std::vector<Real>>>("dPorousFlow_saturation_qp_dvar")),
53  _grads_qp(_nodal_material
54  ? nullptr
55  : &declareProperty<std::vector<RealGradient>>("PorousFlow_grad_saturation_qp")),
56  _dgrads_qp_dgradv(_nodal_material ? nullptr
57  : &declareProperty<std::vector<std::vector<Real>>>(
58  "dPorousFlow_grad_saturation_qp_dgradvar")),
59  _dgrads_qp_dv(_nodal_material ? nullptr
60  : &declareProperty<std::vector<std::vector<RealGradient>>>(
61  "dPorousFlow_grad_saturation_qp_dvar"))
62 {
63 }

Member Function Documentation

◆ computeQpProperties()

void PorousFlowVariableBase::computeQpProperties ( )
overrideprotectedvirtual

Reimplemented in PorousFlowFluidState, PorousFlowFluidStateSingleComponent, PorousFlow2PhasePS, PorousFlow1PhaseMD_Gaussian, PorousFlow1PhaseP, PorousFlow1PhaseFullySaturated, and PorousFlow2PhasePP.

Definition at line 74 of file PorousFlowVariableBase.C.

75 {
76  // do we really need this stuff here? it seems very inefficient to keep resizing everything!
77  _porepressure[_qp].resize(_num_phases);
78  _dporepressure_dvar[_qp].resize(_num_phases);
79 
80  _saturation[_qp].resize(_num_phases);
81  _dsaturation_dvar[_qp].resize(_num_phases);
82 
83  if (!_nodal_material)
84  {
85  (*_gradp_qp)[_qp].resize(_num_phases);
86  (*_dgradp_qp_dgradv)[_qp].resize(_num_phases);
87  (*_dgradp_qp_dv)[_qp].resize(_num_phases);
88 
89  (*_grads_qp)[_qp].resize(_num_phases);
90  (*_dgrads_qp_dgradv)[_qp].resize(_num_phases);
91  (*_dgrads_qp_dv)[_qp].resize(_num_phases);
92  }
93 
94  // Prepare the derivative matrices with zeroes
95  for (unsigned phase = 0; phase < _num_phases; ++phase)
96  {
97  _dporepressure_dvar[_qp][phase].assign(_num_pf_vars, 0.0);
98  _dsaturation_dvar[_qp][phase].assign(_num_pf_vars, 0.0);
99  if (!_nodal_material)
100  {
101  (*_dgradp_qp_dgradv)[_qp][phase].assign(_num_pf_vars, 0.0);
102  (*_dgradp_qp_dv)[_qp][phase].assign(_num_pf_vars, RealGradient());
103  (*_dgrads_qp_dgradv)[_qp][phase].assign(_num_pf_vars, 0.0);
104  (*_dgrads_qp_dv)[_qp][phase].assign(_num_pf_vars, RealGradient());
105  }
106  }
107 }

Referenced by PorousFlow1PhaseFullySaturated::computeQpProperties(), PorousFlow2PhasePP::computeQpProperties(), PorousFlow1PhaseMD_Gaussian::computeQpProperties(), PorousFlow1PhaseP::computeQpProperties(), PorousFlow2PhasePS::computeQpProperties(), PorousFlowFluidStateSingleComponent::computeQpProperties(), and PorousFlowFluidState::computeQpProperties().

◆ initQpStatefulProperties()

void PorousFlowVariableBase::initQpStatefulProperties ( )
overrideprotectedvirtual

Member Data Documentation

◆ _dgradp_qp_dgradv

MaterialProperty<std::vector<std::vector<Real> > >* const PorousFlowVariableBase::_dgradp_qp_dgradv
protected

d(grad porepressure)/d(grad PorousFlow variable) at the quadpoints

Definition at line 53 of file PorousFlowVariableBase.h.

Referenced by PorousFlowFluidStateSingleComponent::computeQpProperties(), and PorousFlowFluidState::computeQpProperties().

◆ _dgradp_qp_dv

MaterialProperty<std::vector<std::vector<RealGradient> > >* const PorousFlowVariableBase::_dgradp_qp_dv
protected

d(grad porepressure)/d(PorousFlow variable) at the quadpoints

Definition at line 56 of file PorousFlowVariableBase.h.

◆ _dgrads_qp_dgradv

MaterialProperty<std::vector<std::vector<Real> > >* const PorousFlowVariableBase::_dgrads_qp_dgradv
protected

d(grad saturation)/d(grad PorousFlow variable) at the quadpoints

Definition at line 68 of file PorousFlowVariableBase.h.

◆ _dgrads_qp_dv

MaterialProperty<std::vector<std::vector<RealGradient> > >* const PorousFlowVariableBase::_dgrads_qp_dv
protected

d(grad saturation)/d(PorousFlow variable) at the quadpoints

Definition at line 71 of file PorousFlowVariableBase.h.

◆ _dporepressure_dvar

MaterialProperty<std::vector<std::vector<Real> > >& PorousFlowVariableBase::_dporepressure_dvar
protected

◆ _dsaturation_dvar

MaterialProperty<std::vector<std::vector<Real> > >& PorousFlowVariableBase::_dsaturation_dvar
protected

◆ _gradp_qp

MaterialProperty<std::vector<RealGradient> >* const PorousFlowVariableBase::_gradp_qp
protected

Grad(p) at the quadpoints.

Definition at line 50 of file PorousFlowVariableBase.h.

◆ _grads_qp

MaterialProperty<std::vector<RealGradient> >* const PorousFlowVariableBase::_grads_qp
protected

Grad(s) at the quadpoints.

Definition at line 65 of file PorousFlowVariableBase.h.

◆ _num_components

const unsigned int PorousFlowVariableBase::_num_components
protected

◆ _num_pf_vars

const unsigned int PorousFlowVariableBase::_num_pf_vars
protected

◆ _num_phases

const unsigned int PorousFlowVariableBase::_num_phases
protected

◆ _porepressure

MaterialProperty<std::vector<Real> >& PorousFlowVariableBase::_porepressure
protected

◆ _saturation

MaterialProperty<std::vector<Real> >& PorousFlowVariableBase::_saturation
protected

The documentation for this class was generated from the following files:
PorousFlowVariableBase::_num_components
const unsigned int _num_components
Number of components.
Definition: PorousFlowVariableBase.h:38
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
PorousFlowVariableBase::_num_phases
const unsigned int _num_phases
Number of phases.
Definition: PorousFlowVariableBase.h:35
PorousFlowVariableBase::_dgradp_qp_dgradv
MaterialProperty< std::vector< std::vector< Real > > > *const _dgradp_qp_dgradv
d(grad porepressure)/d(grad PorousFlow variable) at the quadpoints
Definition: PorousFlowVariableBase.h:53
PorousFlowVariableBase::_grads_qp
MaterialProperty< std::vector< RealGradient > > *const _grads_qp
Grad(s) at the quadpoints.
Definition: PorousFlowVariableBase.h:65
PorousFlowVariableBase::_dgradp_qp_dv
MaterialProperty< std::vector< std::vector< RealGradient > > > *const _dgradp_qp_dv
d(grad porepressure)/d(PorousFlow variable) at the quadpoints
Definition: PorousFlowVariableBase.h:56
PorousFlowVariableBase::_porepressure
MaterialProperty< std::vector< Real > > & _porepressure
Computed nodal or quadpoint values of porepressure of the phases.
Definition: PorousFlowVariableBase.h:44
PorousFlowVariableBase::_dporepressure_dvar
MaterialProperty< std::vector< std::vector< Real > > > & _dporepressure_dvar
d(porepressure)/d(PorousFlow variable)
Definition: PorousFlowVariableBase.h:47
PorousFlowVariableBase::_num_pf_vars
const unsigned int _num_pf_vars
Number of PorousFlow variables.
Definition: PorousFlowVariableBase.h:41
PorousFlowVariableBase::_dgrads_qp_dv
MaterialProperty< std::vector< std::vector< RealGradient > > > *const _dgrads_qp_dv
d(grad saturation)/d(PorousFlow variable) at the quadpoints
Definition: PorousFlowVariableBase.h:71
PorousFlowVariableBase::_dgrads_qp_dgradv
MaterialProperty< std::vector< std::vector< Real > > > *const _dgrads_qp_dgradv
d(grad saturation)/d(grad PorousFlow variable) at the quadpoints
Definition: PorousFlowVariableBase.h:68
PorousFlowVariableBase::_gradp_qp
MaterialProperty< std::vector< RealGradient > > *const _gradp_qp
Grad(p) at the quadpoints.
Definition: PorousFlowVariableBase.h:50
PorousFlowVariableBase::_saturation
MaterialProperty< std::vector< Real > > & _saturation
Computed nodal or qp saturation of the phases.
Definition: PorousFlowVariableBase.h:59
PorousFlowVariableBase::_dsaturation_dvar
MaterialProperty< std::vector< std::vector< Real > > > & _dsaturation_dvar
d(saturation)/d(PorousFlow variable)
Definition: PorousFlowVariableBase.h:62