22 params.addClassDescription(
23 "Control for receiving data from a Sampler via SamplerParameterTransfer.");
24 params.set<ExecFlagEnum>(
"execute_on") = EXEC_TIMESTEP_BEGIN;
33 std::size_t value_position = 0;
38 ControllableParameter control_param = getControllableParameterByName(param_name);
41 if (control_param.check<Real>())
44 if (value_position >=
_values.size())
45 mooseError(
"The supplied vector of Real values is not sized correctly, the "
48 " requires a value but no more values are available in "
49 "the supplied values which have a size of ",
52 control_param.set<Real>(
_values[value_position++]);
55 else if (control_param.check<std::vector<Real>>())
57 std::vector<std::vector<Real>> values = control_param.get<std::vector<Real>>();
58 mooseAssert(values.size() != 0,
59 "ControllableParameter must not be empty.");
60 std::size_t n = values[0].size();
63 for (
const std::vector<Real> & value : values)
64 if (value.size() != n)
66 "The std::vector<Real> parameters being controlled must all be the same size:\n",
67 control_param.dump());
70 if (value_position + n >
_values.size())
71 mooseError(
"The supplied vector of Real values is not sized correctly, the "
72 "std::vector<Real> parameter '",
77 _values.size() - value_position,
78 " are available in the supplied vector.");
81 std::vector<Real> value(
_values.begin() + value_position,
82 _values.begin() + value_position + n);
84 control_param.set<std::vector<Real>>(value);
90 mooseError(
"Unable to locate a Real or std::vector<Real> parameter with the name '",
96 if (value_position !=
_values.size())
97 mooseError(
"The number of values supplied (",
99 ") does not match the number of values consumed by setting parameter values (",