22 "Variable that represents the porepressure of the single phase");
24 "Name of the UserObject defining the capillary pressure");
25 params.
addClassDescription(
"This Material is used for the partially saturated single-phase " 26 "situation where porepressure is the primary variable");
33 _porepressure_var(_nodal_material ? this->template coupledGenericDofValue<is_ad>(
"porepressure")
34 : this->template coupledGenericValue<is_ad>(
"porepressure")),
35 _gradp_qp_var(this->template coupledGenericGradient<is_ad>(
"porepressure")),
36 _porepressure_varnum(coupled(
"porepressure")),
37 _p_var_num(_dictator.isPorousFlowVariable(_porepressure_varnum)
38 ? _dictator.porousFlowVariableNum(_porepressure_varnum)
43 mooseError(
"The Dictator proclaims that the number of phases is ",
44 _dictator.numPhases(),
45 " whereas PorousFlow1PhaseP can only be used for 1-phase simulations. Be aware " 46 "that the Dictator has noted your mistake.");
66 const auto ds = _pc_uo.dSaturation(_porepressure_var[_qp]);
70 (*_gradp_qp)[_qp][0] = _gradp_qp_var[_qp];
71 (*_grads_qp)[_qp][0] = ds * _gradp_qp_var[_qp];
76 if (_dictator.isPorousFlowVariable(_porepressure_varnum))
79 (*_dporepressure_dvar)[_qp][0][_p_var_num] = 1.0;
80 (*_dsaturation_dvar)[_qp][0][_p_var_num] = ds;
84 (*_dgradp_qp_dgradv)[_qp][0][_p_var_num] = 1.0;
85 (*_dgrads_qp_dgradv)[_qp][0][_p_var_num] = ds;
86 (*_dgrads_qp_dv)[_qp][0][_p_var_num] =
87 _pc_uo.d2Saturation(_porepressure_var[_qp]) * _gradp_qp_var[_qp];
96 _porepressure[_qp][0] = _porepressure_var[_qp];
97 _saturation[_qp][0] = _pc_uo.saturation(_porepressure_var[_qp]);
virtual void computeQpProperties() override
void mooseError(Args &&... args)
virtual void initQpStatefulProperties() override
static InputParameters validParams()
Material designed to calculate fluid phase porepressure and saturation for the single-phase situation...
Base class for capillary pressure for multiphase flow in porous media.
Base class for thermophysical variable materials, which assemble materials for primary variables such...
registerMooseObject("PorousFlowApp", PorousFlow1PhaseP)
static InputParameters validParams()
virtual void initQpStatefulProperties() override
const unsigned int _num_phases
Number of phases.
void buildQpPPSS()
Assemble std::vectors of porepressure, saturation and temperature at the quadpoints.
PorousFlow1PhasePTempl(const InputParameters ¶meters)
virtual void computeQpProperties() override