21 "Adjusts a parameter postprocessor to match a sub-app output to a target function using a "
22 "finite-difference Newton update formed over two consecutive fixed-point iterations.");
28 "Finite-difference perturbation applied on each base iteration to estimate df/dp.");
33 "nonconverged_residual",
35 "nonconverged_residual>0",
36 "Large residual written on perturbed iterations so that convergence is only ever declared on "
37 "a base iteration (where the recorded parameter is un-perturbed). Must stay well above the "
38 "convergence tolerance so a perturbed iteration is never accepted.");
45 _parameter_delta(getParam<Real>(
"parameter_delta")),
46 _nonconverged_residual(getParam<Real>(
"nonconverged_residual")),
76 if (!MooseUtils::relativeFuzzyEqual(p_used, p_perturbed))
79 "' changed between the base and perturbed solves (expected ",
83 "); the finite-difference derivative would be invalid. Do not relax it via the "
84 "executioner's 'transformed_postprocessors' or otherwise modify it between "
const std::vector< double > y
registerMooseObject("OptimizationApp", NewtonInversionControl)
Base class for controls that adjust a single scalar parameter (held in a postprocessor) once per fixe...
Real normalizedResidual(Real y) const
Normalized convergence residual for output value y: |y - targetValue()| / max(absolute_tolerance,...
Real linearRootUpdate(Real p_a, Real y_a, Real p_b, Real y_b, Real y_target)
One guarded linear-model root update from two (parameter, output) samples – a secant step shared by t...
const PostprocessorName _param_name
Name of the parameter postprocessor to update with the next guess.
static InputParameters validParams()
void mooseError(Args &&... args) const
Control that adjusts a scalar parameter (held in a postprocessor) to match a sub-app output to a targ...
Real _y_base
Output value of the current base solve (re-seeded each fixed-point solve; not restartable)
Real _p_base
Parameter value of the current base solve (re-seeded each fixed-point solve; not restartable)
virtual IterationUpdate computeUpdate(unsigned int it, Real p_used, Real y, Real y_target) override
Compute this iteration's update from the current sample: the 1-based fixed-point iteration it and the...
const Real _parameter_delta
Finite-difference perturbation applied on each base iteration to form df/dp.
NewtonInversionControl(const InputParameters ¶meters)
const Real _nonconverged_residual
Residual written on perturbed iterations so convergence is only declared on base iterations.
static InputParameters validParams()
One iteration's update, produced by the derived scheme and applied by execute().