20 "Tuple of pressure (or temperature) values. Must be monotonically increasing.");
23 "Tuple of flux values (measured in kg.m^-1.s^-1 if no 'use_*' are employed). " 24 "These flux values are multiplied by the line-segment length to achieve a flux in " 25 "kg.s^-1. A piecewise-linear fit is performed to the (p_or_t_vals,flux) pairs to " 26 "obtain the flux at any arbitrary pressure (or temperature). If a quad-point " 27 "pressure is less than the first pressure value, the first flux value is used. If " 28 "quad-point pressure exceeds the final pressure value, the final flux value is " 29 "used. This flux is OUT of the medium: hence positive values of flux means this " 30 "will be a SINK, while negative values indicate this flux will be a SOURCE.");
32 "Approximates a polyline sink by using a number of point sinks with " 33 "given weighting whose positions are read from a file. NOTE: if you are using " 34 "PorousFlowPorosity that depends on volumetric strain, you should set " 35 "strain_at_nearest_qp=true in your GlobalParams, to ensure the nodal Porosity Material uses " 36 "the volumetric strain at the Dirac quadpoints, and can therefore be computed");
42 _sink_func(getParam<
std::vector<
Real>>(
"p_or_t_vals"), getParam<
std::vector<
Real>>(
"fluxes"))
51 if (current_dirac_ptid > 0)
56 if (current_dirac_ptid + 1 <
_zs.size() ||
_zs.size() == 1)
65 unsigned current_dirac_ptid,
67 Real & outflowp)
const 76 if (current_dirac_ptid > 0)
81 if (current_dirac_ptid + 1 <
_zs.size() ||
_zs.size() == 1)
const std::vector< Real > *const _weight
PorousFlowPolyLineSink(const InputParameters ¶meters)
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
static InputParameters validParams()
const OutputTools< T >::VariableTestValue & _test
const OutputTools< T >::VariablePhiValue & _phi
virtual Real computeQpBaseOutflow(unsigned current_dirac_ptid) const override
Returns the flux from the line sink (before modification by mobility, etc). Derived classes should ov...
static InputParameters validParams()
T sample(const T &x) const
std::vector< Real > _half_seg_len
0.5*(length of polyline segments between points)
T sampleDerivative(const T &x) const
Approximates a line sink by a sequence of Dirac Points.
registerMooseObject("PorousFlowApp", PorousFlowPolyLineSink)
Real ptqp() const
If _p_or_t==0, then returns the quadpoint porepressure, else returns the quadpoint temperature...
std::vector< Real > _zs
z points of borehole
virtual void computeQpBaseOutflowJacobian(unsigned jvar, unsigned current_dirac_ptid, Real &outflow, Real &outflowp) const override
Calculates the BaseOutflow as well as its derivative wrt jvar. Derived classes should override this...
LinearInterpolation _sink_func
mass flux = _sink_func as a function of porepressure or temperature
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
Approximates a line sink a sequence of Dirac Points.
Real dptqp(unsigned pvar) const
If _p_or_t==0, then returns d(quadpoint porepressure)/d(PorousFlow variable), else returns d(quadpoin...