PIDTransientControl

The PIDTransientControl object is designed to use the principle of Proportional Integral Derivative control to either: - control a "Real" parameter from the input file rather than use the constant value specified in the input file.

  • modify the value of a postprocessor, used in a PostprocessorDirichletBC for example, rather than use the computed/received value

This allows a simple 1D parametric optimization to make the output of a postprocessor match the target value.

The parameter CC is replaced at every time step nn, at time tt, by: Cn=Cn1+Kintegral0tpp(s)targetds+Kproportional(pp(t)target)+Kderivativepp(t)targetdtC_{n} = C_{n-1} + K_{integral} \int_0^{t} pp(s) - target \mathrm{d}s + K_{proportional} (pp(t) - target) + K_{derivative} \dfrac{pp(t) - target}{dt}

with pp(t)pp(t) the value at time tt of the postprocessor that we are trying to match to the targettarget value and Kintegral/proportional/derivativeK_{integral/proportional/derivative} the coefficients for the integral error, current error, and backward derivative respectively.

Input Parameters

  • K_derivativeThe coefficient multiplying the derivative term

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The coefficient multiplying the derivative term

  • K_integralThe coefficient multiplying the integral term

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The coefficient multiplying the integral term

  • K_proportionalThe coefficient multiplying the difference term

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The coefficient multiplying the difference term

  • postprocessorThe postprocessor to watch for controlling the specified parameter.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The postprocessor to watch for controlling the specified parameter.

  • targetThe target value 1D time function for the postprocessor

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The target value 1D time function for the postprocessor

Required Parameters

  • depends_onThe Controls that this control relies upon (i.e. must execute before this one)

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:The Controls that this control relies upon (i.e. must execute before this one)

  • execute_onINITIAL TIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

    Default:INITIAL TIMESTEP_END

    C++ Type:ExecFlagEnum

    Unit:(no unit assumed)

    Options:NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, PRE_MULTIAPP_SETUP

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

  • maximum_change_rate1.79769e+308Can be used to limit the absolute rate of change per second of value output by the PID controller.

    Default:1.79769e+308

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Can be used to limit the absolute rate of change per second of value output by the PID controller.

  • maximum_output_value1.79769e+308Can be used to limit the maximum value output by the PID controller.

    Default:1.79769e+308

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Can be used to limit the maximum value output by the PID controller.

  • minimum_output_value-1.79769e+308Can be used to limit the minimum value output by the PID controller.

    Default:-1.79769e+308

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Can be used to limit the minimum value output by the PID controller.

  • parameterThe input parameter(s) to control. Specify a single parameter name and all parameters in all objects matching the name will be updated

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:The input parameter(s) to control. Specify a single parameter name and all parameters in all objects matching the name will be updated

  • parameter_ppThe postprocessor to control. Should be accessed by reference by the objects depending on its value.

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:The postprocessor to control. Should be accessed by reference by the objects depending on its value.

  • reset_every_timestepFalseReset the PID integral when changing timestep, for coupling iterations within a timestep

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Reset the PID integral when changing timestep, for coupling iterations within a timestep

  • reset_integral_windupTrueReset the PID integral when the error crosses zero and the integral is larger than the error.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Reset the PID integral when the error crosses zero and the integral is larger than the error.

  • start_time-1.79769e+308The time to start the PID controller at

    Default:-1.79769e+308

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The time to start the PID controller at

  • stop_time1.79769e+308The time to stop the PID controller at

    Default:1.79769e+308

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The time to stop the PID controller at

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

Advanced Parameters