Go to the documentation of this file.
19 params.addClassDescription(
20 "Computes the advective flux of fluid of given phase, assuming fully-saturated conditions. "
21 "Hence this UserObject is only relevant to single-phase situations. Explicitly, the "
22 "UserObject computes (density / viscosity) * (- permeability * (grad(P) - density * "
23 "gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme");
24 params.addParam<
bool>(
25 "multiply_by_density",
27 "If true, then the advective flux will be multiplied by density, so it is a mass flux, which "
28 "is the most common way of using PorousFlow. If false, then the advective flux will be a "
29 "volume flux, which is common in poro-mechanics");
34 const InputParameters & parameters)
36 _multiply_by_density(getParam<bool>(
"multiply_by_density")),
37 _fluid_density_node(_multiply_by_density ? &getMaterialProperty<std::vector<Real>>(
38 "PorousFlow_fluid_phase_density_nodal")
40 _dfluid_density_node_dvar(_multiply_by_density
41 ? &getMaterialProperty<std::vector<std::vector<Real>>>(
42 "dPorousFlow_fluid_phase_density_nodal_dvar")
44 _fluid_viscosity(getMaterialProperty<std::vector<Real>>(
"PorousFlow_viscosity_nodal")),
45 _dfluid_viscosity_dvar(
46 getMaterialProperty<std::vector<std::vector<Real>>>(
"dPorousFlow_viscosity_nodal_dvar"))
68 du = du * (*_fluid_density_node)[i][
_phase] +
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const MaterialProperty< std::vector< Real > > & _fluid_viscosity
Viscosity of each component in each phase.
virtual Real computedU_dvar(unsigned i, unsigned pvar) const override
Compute d(u)/d(porous_flow_variable)
InputParameters validParams< PorousFlowAdvectiveFluxCalculatorSaturated >()
Computes the advective flux of fluid of given phase, assuming fully-saturated conditions.
PorousFlowAdvectiveFluxCalculatorSaturated(const InputParameters ¶meters)
const MaterialProperty< std::vector< Real > > *const _fluid_density_node
Fluid density for each phase (at the node)
registerMooseObject("PorousFlowApp", PorousFlowAdvectiveFluxCalculatorSaturated)
InputParameters validParams< PorousFlowAdvectiveFluxCalculatorBase >()
const bool _multiply_by_density
Whether to multiply the flux by the fluid density.
const unsigned int _phase
The phase.
Base class to compute the advective flux of fluid in PorousFlow situations using the Kuzmin-Turek FEM...
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_viscosity_dvar
Derivative of the fluid viscosity for each phase wrt PorousFlow variables.
virtual Real computeU(unsigned i) const override
Computes the value of u at the local node id of the current element (_current_elem)