26 params.
addRequiredParam<PostprocessorName>(
"input_signal",
"The input signal postprocessor");
28 "drift_function", 0.0,
"Drift function describing signal drift over time");
29 params.
addParam<
Real>(
"vector_size", 1000000000.0,
"The maximum size of vector to be saved");
30 params.
addClassDescription(
"This is a GeneralSensorPostprocessor, and functions as a base class " 31 "for other sensor postprocessors");
33 "efficiency_function", 0.8,
"Efficiency function describing efficiency over time");
35 "noise_std_dev_function",
37 "Standard deviation of noise function describing noise standard deviation over time");
39 "signalToNoise_function", 0.2,
"Signal to noise ratio for the modeled sensor");
41 "delay_function", 0.1,
"Delay function describing the delay over time");
43 "uncertainty_std_dev_function",
45 "Standard deviation of uncertainty function describing uncertainty std dev over time");
46 params.
addParam<FunctionName>(
"R_function", 1,
"The function R for the integration term.");
47 params.
addParam<
Real>(
"proportional_weight", 1,
"The weight assigned to the proportional term");
48 params.
addParam<
Real>(
"integral_weight", 0,
"The weight assigned to the integral term");
49 params.
addParam<
unsigned int>(
"seed", 1,
"Seed for the random number generator");
55 _input_signal(getPostprocessorValue(
"input_signal")),
56 _drift_function(getFunction(
"drift_function")),
57 _vector_size(getParam<
Real>(
"vector_size")),
58 _pp_old(getPostprocessorValueOld(
"input_signal")),
59 _efficiency_function(getFunction(
"efficiency_function")),
60 _noise_std_dev_function(getFunction(
"noise_std_dev_function")),
61 _delay_function(getFunction(
"delay_function")),
62 _signalToNoise_function(getFunction(
"signalToNoise_function")),
63 _uncertainty_std_dev_function(getFunction(
"uncertainty_std_dev_function")),
64 _R_function(getFunction(
"R_function")),
65 _proportional_weight(getParam<
Real>(
"proportional_weight")),
66 _integral_weight(getParam<
Real>(
"integral_weight")),
67 _time_values(declareRestartableData<
std::vector<
Real>>(
"time_values")),
68 _input_signal_values(declareRestartableData<
std::vector<
Real>>(
"input_signal_values")),
69 _integrand(declareRestartableData<
std::vector<
Real>>(
"integrand")),
70 _R_function_values(declareRestartableData<
std::vector<
Real>>(
"R_function_values")),
71 _seed(getParam<unsigned
int>(
"seed")),
94 efficiency_value * (
_input_signal + signalToNoise_value * noise_value) +
119 Real proportional_value = _input_signal_delayed + signalToNoise_value * noise_value;
137 mooseAssert(vec1.size() == vec2.size(),
138 "Vectors must have the same size for element-wise multiplication.");
140 std::vector<Real> result;
142 result.reserve(vec1.size());
144 result.push_back(vec1[i] * vec2[i]);
153 Real input_signal_delayed;
156 input_signal_delayed = 0;
162 else if (t_desired >
_time_values[0] && t_desired <= _t && t_desired >=
_t -
_dt)
168 input_signal_delayed = time_and_input_signal.
sample(t_desired);
172 mooseError(
"Unhandled case in interpolation values.");
174 return input_signal_delayed;
187 Real integration_value;
207 while (static_cast<int>(n) % 3 != 0)
213 vector<Real> time_vec_simp;
215 vector<Real> integrand_vec_simp;
217 for (
Real i = 0; i < n + 1; i++)
220 time_vec_simp.push_back(new_time);
221 Real new_integrand = spline.SplineInterpolation::sample(new_time);
222 integrand_vec_simp.push_back(new_integrand);
226 integration_value = integrand_vec_simp[0] + integrand_vec_simp[n];
229 for (
int i = 1; i < n; ++i)
233 integration_value += 2 * integrand_vec_simp[i];
235 integration_value += 3 * integrand_vec_simp[i];
239 integration_value *= (3 * h) / 8.0;
248 integration_value = integral.
integrate();
251 return integration_value;
const Function & _signalToNoise_function
Signal to noise function.
std::vector< Real > & _input_signal_values
Input Signal vector for calculating delay.
std::vector< Real > elementwiseMultiply(std::vector< Real > &vec1, std::vector< Real > &vec2)
Function for element-wise multiplication of vectors.
const Function & _uncertainty_std_dev_function
Uncertainty std dev function.
void seed(std::size_t i, unsigned int seed)
const Function & _efficiency_function
Efficiency function.
T sample(const T &x) const
virtual PostprocessorValue getValue() const override
virtual void initialize() override
Real integrand(const Point &p)
Real randNormal(std::size_t i, Real mean, Real sigma)
const Function & _R_function
Function R for integration term.
registerMooseObject("MiscApp", GeneralSensorPostprocessor)
virtual vector< Real > getRVector()
Function to calculate R vector.
const Function & _drift_function
The drift function to be evaluated and returned.
static InputParameters validParams()
std::vector< Real > & _R_function_values
vector to store R function values
const Function & _noise_std_dev_function
Noise standard deviation function.
Real getIntegral(std::vector< Real > integrand)
Function to calculate integral term.
std::vector< Real > & _integrand
Vector to store integrand data for numerical integration.
Real _sensor_value
for getValue() output
const Real _proportional_weight
A weighing factor for the proportional term.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const PostprocessorValue & _pp_old
The old value of the postprocessor.
Real _delay_value
Variable to store delay value.
FEProblemBase & _fe_problem
const PostprocessorValue & _input_signal
A postprocessor used as the sensor input signal.
void mooseError(Args &&... args) const
std::vector< Real > & _time_values
Time vector for calculating delay.
virtual bool isTransient() const override
GeneralSensorPostprocessor(const InputParameters ¶meters)
virtual Real value(Real t, const Point &p) const
Real _integration_value
the output of the integrand
A generalized sensor Postprocessor.
const Real _integral_weight
A weighing factor for the integral term.
void ErrorVector unsigned int
auto index_range(const T &sizable)
const Real _vector_size
Size of vector to be stored.
const unsigned int _seed
To get fixed seed random numbers.
static InputParameters validParams()
Real getDelayedInputSignal()
Function to calculate delayed input signal.