www.mooseframework.org
PorousFlowPiecewiseLinearSink.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<PorousFlowSinkPTDefiner>();
19  params.addRequiredParam<std::vector<Real>>(
20  "pt_vals",
21  "Tuple of pressure values (for the fluid_phase specified). Must be monotonically "
22  "increasing. For heat fluxes that don't involve fluids, these are temperature "
23  "values");
24  params.addRequiredParam<std::vector<Real>>(
25  "multipliers", "Tuple of multiplying values. The flux values are multiplied by these.");
26  params.addClassDescription("Applies a flux sink to a boundary. The base flux defined by "
27  "PorousFlowSink is multiplied by a piecewise linear function.");
28  return params;
29 }
30 
32  : PorousFlowSinkPTDefiner(parameters),
33  _sink_func(getParam<std::vector<Real>>("pt_vals"), getParam<std::vector<Real>>("multipliers"))
34 {
35 }
36 
37 Real
39 {
40  return PorousFlowSink::multiplier() * _sink_func.sample(ptVar());
41 }
42 
43 Real
45 {
46  return PorousFlowSink::dmultiplier_dvar(pvar) * _sink_func.sample(ptVar()) +
47  PorousFlowSink::multiplier() * _sink_func.sampleDerivative(ptVar()) * dptVar(pvar);
48 }
PorousFlowSinkPTDefiner
Provides either a porepressure or a temperature to derived classes, depending on _involves_fluid defi...
Definition: PorousFlowSinkPTDefiner.h:24
PorousFlowPiecewiseLinearSink::multiplier
virtual Real multiplier() const override
The flux gets multiplied by this quantity.
Definition: PorousFlowPiecewiseLinearSink.C:38
PorousFlowSinkPTDefiner::ptVar
virtual Real ptVar() const
Provides the variable value (either porepressure, or temperature, depending on _involves_fluid)
Definition: PorousFlowSinkPTDefiner.C:47
PorousFlowSinkPTDefiner::dptVar
virtual Real dptVar(unsigned pvar) const
Provides the d(variable)/(d PorousFlow Variable pvar)
Definition: PorousFlowSinkPTDefiner.C:55
registerMooseObject
registerMooseObject("PorousFlowApp", PorousFlowPiecewiseLinearSink)
validParams< PorousFlowSinkPTDefiner >
InputParameters validParams< PorousFlowSinkPTDefiner >()
Definition: PorousFlowSinkPTDefiner.C:14
PorousFlowSink::dmultiplier_dvar
virtual Real dmultiplier_dvar(unsigned int pvar) const
d(multiplier)/d(Porous flow variable pvar)
Definition: PorousFlowSink.C:344
PorousFlowSink::multiplier
virtual Real multiplier() const
The flux gets multiplied by this quantity.
Definition: PorousFlowSink.C:338
PorousFlowPiecewiseLinearSink::dmultiplier_dvar
virtual Real dmultiplier_dvar(unsigned int pvar) const override
d(multiplier)/d(Porous flow variable pvar)
Definition: PorousFlowPiecewiseLinearSink.C:44
PorousFlowPiecewiseLinearSink::_sink_func
const LinearInterpolation _sink_func
Piecewise-linear function of porepressure that multiplies the sink flux.
Definition: PorousFlowPiecewiseLinearSink.h:34
PorousFlowPiecewiseLinearSink
Applies a flux sink to a boundary.
Definition: PorousFlowPiecewiseLinearSink.h:27
PorousFlowPiecewiseLinearSink.h
PorousFlowPiecewiseLinearSink::PorousFlowPiecewiseLinearSink
PorousFlowPiecewiseLinearSink(const InputParameters &parameters)
Definition: PorousFlowPiecewiseLinearSink.C:31
validParams< PorousFlowPiecewiseLinearSink >
InputParameters validParams< PorousFlowPiecewiseLinearSink >()
Definition: PorousFlowPiecewiseLinearSink.C:16