21 "Gravitational acceleration vector downwards (m/s^2)");
22 params.
addParam<
bool>(
"multiply_by_density",
24 "If true, then this Kernel is the fluid mass " 25 "flux. If false, then this Kernel is the " 26 "fluid volume flux (which is common in " 29 "PorousFlowDictator",
"The UserObject that holds the list of PorousFlow variable names");
30 params.
addClassDescription(
"Darcy flux suitable for models involving a fully-saturated, single " 31 "phase, single component fluid. No upwinding is used");
38 _multiply_by_density(getParam<bool>(
"multiply_by_density")),
39 _permeability(getMaterialProperty<
RealTensorValue>(
"PorousFlow_permeability_qp")),
41 getMaterialProperty<
std::vector<
RealTensorValue>>(
"dPorousFlow_permeability_qp_dvar")),
43 "dPorousFlow_permeability_qp_dgradvar")),
44 _density(getMaterialProperty<
std::vector<
Real>>(
"PorousFlow_fluid_phase_density_qp")),
45 _ddensity_dvar(getMaterialProperty<
std::vector<
std::vector<
Real>>>(
46 "dPorousFlow_fluid_phase_density_qp_dvar")),
47 _viscosity(getMaterialProperty<
std::vector<
Real>>(
"PorousFlow_viscosity_qp")),
49 getMaterialProperty<
std::vector<
std::vector<
Real>>>(
"dPorousFlow_viscosity_qp_dvar")),
50 _pp(getMaterialProperty<
std::vector<
Real>>(
"PorousFlow_porepressure_qp")),
51 _grad_p(getMaterialProperty<
std::vector<
RealGradient>>(
"PorousFlow_grad_porepressure_qp")),
52 _dgrad_p_dgrad_var(getMaterialProperty<
std::vector<
std::vector<
Real>>>(
53 "dPorousFlow_grad_porepressure_qp_dgradvar")),
55 "dPorousFlow_grad_porepressure_qp_dvar")),
58 _perm_derivs(_dictator.usePermDerivs())
61 mooseError(
"PorousFlowFullySaturatedDarcyBase should not be used for multi-phase scenarios as " 62 "it does no upwinding and does not include relative-permeability effects");
68 const unsigned ph = 0;
87 const unsigned ph = 0;
116 const unsigned ph = 0;
126 const unsigned ph = 0;
const MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _dpermeability_dgradvar
d(permeabiity)/d(grad(PorousFlow variable))
static InputParameters validParams()
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
registerMooseObject("PorousFlowApp", PorousFlowFullySaturatedDarcyBase)
virtual Real dmobility(unsigned pvar) const
The derivative of the mobility with respect to the PorousFlow variable pvar.
const MaterialProperty< RealTensorValue > & _permeability
Permeability of porous material.
const bool _perm_derivs
Flag to check whether permeabiity derivatives are non-zero.
unsigned int number() const
const VariablePhiGradient & _grad_phi
const MaterialProperty< std::vector< std::vector< RealGradient > > > & _dgrad_p_dvar
Derivative of Grad porepressure in each phase wrt PorousFlow variables.
const RealVectorValue _gravity
Gravity pointing downwards.
static constexpr std::size_t dim
const MaterialProperty< std::vector< std::vector< Real > > > & _ddensity_dvar
Derivative of the fluid density for each phase wrt PorousFlow variables (at the qp) ...
PorousFlowFullySaturatedDarcyBase(const InputParameters ¶meters)
const MaterialProperty< std::vector< RealGradient > > & _grad_p
Gradient of the pore pressure in each phase.
const MaterialProperty< std::vector< Real > > & _viscosity
Viscosity of the fluid at the qp.
const MaterialProperty< std::vector< std::vector< Real > > > & _dviscosity_dvar
Derivative of the fluid viscosity wrt PorousFlow variables.
const bool _multiply_by_density
If true then the mobility contains the fluid density, otherwise it doesn't.
TensorValue< Real > RealTensorValue
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
const MaterialProperty< std::vector< RealTensorValue > > & _dpermeability_dvar
d(permeabiity)/d(PorousFlow variable)
unsigned int numPhases() const
The number of fluid phases.
virtual Real computeQpJacobian() override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
Darcy advective flux for a fully-saturated, single phase, single component fluid. ...
const VariableTestGradient & _grad_test
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
virtual Real computeQpResidual() override
const MaterialProperty< std::vector< std::vector< Real > > > & _dgrad_p_dgrad_var
Derivative of Grad porepressure in each phase wrt grad(PorousFlow variables)
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
virtual Real mobility() const
The mobility of the fluid = density / viscosity.
static InputParameters validParams()
const VariablePhiValue & _phi
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
MooseUnits pow(const MooseUnits &, int)
const MaterialProperty< std::vector< Real > > & _density
Fluid density for each phase (at the qp)