21 "Gravitational acceleration vector downwards (m/s^2)");
23 "PorousFlowDictator",
"The UserObject that holds the list of PorousFlow variable names");
24 params.
addParam<
unsigned int>(
"fluid_phase", 0,
"The index corresponding to the fluid phase");
27 "component", component,
"The spatial component of the Darcy flux to return");
28 params.
addClassDescription(
"Darcy velocity (in m^3.s^-1.m^-2, or m.s^-1) -(k_ij * krel /mu "
29 "(nabla_j P - w_j)), where k_ij is the permeability tensor, krel is "
30 "the relative permeability, mu is the fluid viscosity, P is the fluid "
31 "pressure, and w_j is the fluid weight.");
39 _relative_permeability(getGenericMaterialProperty<
std::vector<Real>, is_ad>(
40 "PorousFlow_relative_permeability_qp")),
42 getGenericMaterialProperty<
std::vector<Real>, is_ad>(
"PorousFlow_viscosity_qp")),
43 _permeability(getGenericMaterialProperty<RealTensorValue, is_ad>(
"PorousFlow_permeability_qp")),
44 _grad_p(getGenericMaterialProperty<
std::vector<RealGradient>, is_ad>(
45 "PorousFlow_grad_porepressure_qp")),
47 getGenericMaterialProperty<
std::vector<Real>, is_ad>(
"PorousFlow_fluid_phase_density_qp")),
49 _ph(getParam<unsigned
int>(
"fluid_phase")),
50 _component(getParam<
MooseEnum>(
"component")),
51 _gravity(getParam<RealVectorValue>(
"gravity"))
55 "The Dictator proclaims that the maximum phase index in this simulation is ",
57 " whereas you have used ",
59 ". Remember that indexing starts at 0. The Dictator is watching you, to "
60 "ensure your wellbeing.");
68 (_permeability[_qp] * (_grad_p[_qp][_ph] - _fluid_density_qp[_qp][_ph] * _gravity) *
69 _relative_permeability[_qp][_ph] / _fluid_viscosity[_qp][_ph])(_component));
registerMooseObject("PorousFlowApp", PorousFlowDarcyVelocityComponent)
void ErrorVector unsigned int
static InputParameters validParams()
void paramError(const std::string ¶m, Args... args) const
Computes a component of the Darcy velocity: -k_ij * krel /mu (nabla_j P - w_j) where k_ij is the perm...
const unsigned int _ph
Index of the fluid phase.
static InputParameters validParams()
const PorousFlowDictator & _dictator
PorousFlowDicatator UserObject.
virtual Real computeValue()
PorousFlowDarcyVelocityComponentTempl(const InputParameters ¶meters)
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
unsigned int numPhases() const
The number of fluid phases.