Regularization for step function around zero
Hypothesis and equations
This function is used to approximate the equationy = if x > 0 then y1 else y2;
by a smooth characteristic, so that the expression is continuous and differentiable:
y = smooth(1, if x > x_small then y1 else if x < -x_small then y2 else f(y1, y2));
In the region -x_small < x < x_small
a 2nd order polynomial is used
for a smooth transition from y1
to y2
.
Bibliography
Based on the regStep fucntion from Modelica Standard Library and recommandation in IEA ANNEX 60 to inline the function.
Instructions for use
none
Known limits / Use precautions
none
Validations
Validated function - Gilles PLESSIS 07/2016
--------------------------------------------------------------
Licensed by EDF under a 3-clause BSD-license
Copyright © EDF 2009 - 2023
BuildSysPro version 3.6.0
Initial model : regStep, Martin Otter, Copyright © 2002-2016, ABB, DLR, Dassault Systèmes AB, Modelon, TU Braunschweig, TU Hamburg-Harburg, Politecnico di Milano.
--------------------------------------------------------------
function regStep extends Modelica.Icons.Function; input Real x "Abscissa value"; input Real y1 "Ordinate value for x > 0"; input Real y2 "Ordinate value for x < 0"; input Real x_small(min = 0) = 1e-5 "Approximation of step for -x_small <= x <= x_small; x_small >= 0 required"; output Real y "Ordinate value to approximate y = if x > 0 then y1 else y2"; end regStep;
Inline = true
in annotations to package for better performance,
as suggested in #300 .x_small -> 0
without division by zero.