y = Functions.limitByStriple(x_max, x_sat, y_max, y_sat, x);
A point symmetric interpolation between points (0, 0), (x_max, y_max) and (x_sat, y_sat), provided x_max < x_sat. The approximation is done in such a way that the 1st function's derivative is zero at points (x_max, y_max) and (x_sat, y_sat). Thus, the 1st function's derivative is continuous for all x. The higher derivatives are, in contrast, discontinuous at these points.
The figure below shows the function y and its 1st derivative dy/dx for the following input: x_max = 0.2, x_sat = 0.5, y_max = 1.4, y_sat = 1.2.
function limitByStriple extends Modelica.Icons.Function; input Real x_max "Abscissa for y_max"; input Real x_sat "Abscissa for y_sat"; input Real y_max "Peak ordinate"; input Real y_sat "Saturated ordinate"; input Real x "Current abscissa value"; output Real y "Current ordinate"; end limitByStriple;
Developed 2010 at the DLR Institute of System Dynamics and Control