23 "If true, then fluxes are multiplied by (density*permeability_nn/viscosity), " 24 "where the '_nn' indicates the component normal to the boundary. In this " 25 "case bare_flux is measured in Pa.s^-1. This can be used in conjunction " 28 "If true, then fluxes are multiplied by relative " 29 "permeability. This can be used in conjunction " 32 "pressures",
"Tuple of pressure values. Must be monotonically increasing.");
35 "Tuple of flux values (measured in kg.m^-2.s^-1 for use_mobility=false, and " 36 "in Pa.s^-1 if use_mobility=true). This flux is OUT of the medium: hence " 37 "positive values of flux means this will be a SINK, while negative values " 38 "indicate this flux will be a SOURCE. A piecewise-linear fit is performed to " 39 "the (pressure,bare_fluxes) pairs to obtain the flux at any arbitrary " 40 "pressure, and the first or last bare_flux values are used if the quad-point " 41 "pressure falls outside this range.");
43 "richardsVarNames_UO",
"The UserObject that holds the list of Richards variable names.");
44 params.
addParam<FunctionName>(
"multiplying_fcn",
46 "The flux will be multiplied by this spatially-and-temporally " 47 "varying function. This is useful if the boundary is a moving " 48 "boundary controlled by RichardsExcav.");
49 params.
addClassDescription(
"Records the fluid flow into a sink (positive values indicate fluid " 50 "is flowing from porespace into the sink).");
56 _sink_func(getParam<
std::vector<
Real>>(
"pressures"),
57 getParam<
std::vector<
Real>>(
"bare_fluxes")),
59 _use_mobility(getParam<bool>(
"use_mobility")),
60 _use_relperm(getParam<bool>(
"use_relperm")),
62 _m_func(getFunction(
"multiplying_fcn")),
65 _pvar(_richards_name_UO.richards_var_num(coupled(
"variable"))),
67 _pp(getMaterialProperty<
std::vector<
Real>>(
"porepressure")),
69 _viscosity(getMaterialProperty<
std::vector<
Real>>(
"viscosity")),
71 _rel_perm(getMaterialProperty<
std::vector<
Real>>(
"rel_perm")),
72 _density(getMaterialProperty<
std::vector<
Real>>(
"density"))
const MaterialProperty< std::vector< Real > > & _density
fluid density
static InputParameters validParams()
LinearInterpolation _sink_func
the sink function, which is a piecewise linear function of porepressure values
const MaterialProperty< std::vector< Real > > & _pp
porepressure values (only the _pvar component is used)
registerMooseObject("RichardsApp", RichardsPiecewiseLinearSinkFlux)
static InputParameters validParams()
T sample(const T &x) const
const MooseArray< Point > & _q_point
This holds maps between pressure_var or pressure_var, sat_var used in RichardsMaterial and kernels...
bool _use_mobility
whether to include density*permeability_nn/viscosity in the flux
const MaterialProperty< RealTensorValue > & _permeability
medium permeability
TensorValue< Real > RealTensorValue
unsigned int _pvar
the index into _richards_name_UO corresponding to this Postprocessor's variable eg, if the richards names are 'pwater pgas poil pplasma' and the variable of this Postprocessor is pgas, then _pvar=1
const MaterialProperty< std::vector< Real > > & _rel_perm
fluid relative permeability
bool _use_relperm
whether to include relative permeability in the flux
This postprocessor computes the fluid flux to a RichardsPiecewiseLinearSink.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MooseArray< Point > & _normals
RichardsPiecewiseLinearSinkFlux(const InputParameters ¶meters)
virtual Real computeQpIntegral()
virtual Real value(Real t, const Point &p) const
const MaterialProperty< std::vector< Real > > & _viscosity
fluid viscosity
static const std::string k
const Function & _m_func
the multiplier function