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 is replaced at every time step , at time , by:

with the value at time of the postprocessor that we are trying to match to the value and 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