20 params.
addClassDescription(
"Compute a property using a piecewise linear interpolation to define " 21 "its dependence on a variable");
23 "The name of the property this material will compute");
26 "The name of the variable whose value is used as the abscissa in the interpolation");
27 params.
addParam<std::vector<Real>>(
"x",
"The abscissa values");
28 params.
addParam<std::vector<Real>>(
"y",
"The ordinate values");
29 params.
addParam<std::vector<Real>>(
"xy_data",
30 "All function data, supplied in abscissa, ordinate pairs");
31 params.
addParam<
Real>(
"scale_factor", 1.0,
"Scale factor to be applied to the ordinate values");
35 "Use linear extrapolation to evaluate points that lie outside given data set domain. ");
42 _prop_name(getParam<
std::string>(
"property")),
43 _coupled_var(adCoupledValue(
"variable")),
44 _scale_factor(getParam<
Real>(
"scale_factor")),
45 _extrap(getParam<bool>(
"extrapolation")),
46 _property(declareADProperty<
Real>(_prop_name))
54 mooseError(
"In ",
_name,
": Both 'x' and 'y' must be specified if either one is specified.");
57 mooseError(
"In ",
_name,
": Cannot specify 'x', 'y', and 'xy_data' together.");
59 x = getParam<std::vector<Real>>(
"x");
60 y = getParam<std::vector<Real>>(
"y");
64 std::vector<Real> xy = getParam<std::vector<Real>>(
"xy_data");
65 unsigned int xy_size = xy.size();
67 mooseError(
"In ",
_name,
": Length of data provided in 'xy_data' must be a multiple of 2.");
69 unsigned int x_size = xy_size / 2;
72 for (
unsigned int i = 0; i < xy_size / 2; ++i)
74 x.push_back(xy[i * 2]);
75 y.push_back(xy[i * 2 + 1]);
83 catch (std::domain_error & e)
std::unique_ptr< LinearInterpolation > _linear_interp
LinearInterpolation object.
const std::string & _name
The name of this class, reference to value stored in InputParameters.
This material uses a LinearInterpolation object to define the dependence of the material's value on a...
static InputParameters validParams()
ADMaterialProperty< Real > & _property
Material property to be calculated.
static InputParameters validParams()
Materials compute MaterialProperties.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("MooseApp", ADPiecewiseLinearInterpolationMaterial)
const bool _extrap
use linear extrapolation
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
virtual void computeQpProperties() override
Users must override this method.
const ADVariableValue & _coupled_var
Value of the coupled variable to be used as the abscissa in the piecewise linear interpolation.
ADPiecewiseLinearInterpolationMaterial(const InputParameters ¶meters)
const Real _scale_factor
Factor to scale the ordinate values by (default = 1)