IEA EBC Annex 60 EBC logo

Annex60.Utilities.Math

Library with functions such as for smoothing

Information

This package contains blocks and functions for commonly used mathematical operations. The classes in this package augment the classes Modelica.Blocks.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Annex60.Utilities.Math.Average Average Average of a vector
Annex60.Utilities.Math.Bicubic Bicubic Bicubic function
Annex60.Utilities.Math.Biquadratic Biquadratic Biquadratic function
Annex60.Utilities.Math.BooleanReplicator BooleanReplicator Boolean signal replicator
Annex60.Utilities.Math.IntegerReplicator IntegerReplicator Integer signal replicator
Annex60.Utilities.Math.IntegratorWithReset IntegratorWithReset Output the integral of the input signal
Annex60.Utilities.Math.InverseXRegularized InverseXRegularized Function that approximates 1/x by a twice continuously differentiable function
Annex60.Utilities.Math.Max Max Maximum element of a vector
Annex60.Utilities.Math.Min Min Minimum element of a vector
Annex60.Utilities.Math.Polynominal Polynominal Polynominal function
Annex60.Utilities.Math.PowerLinearized PowerLinearized Power function that is linearized below a user-defined threshold
Annex60.Utilities.Math.QuadraticLinear QuadraticLinear Function that is quadratic in first argument and linear in second argument
Annex60.Utilities.Math.RegNonZeroPower RegNonZeroPower Power function, regularized near zero, but nonzero value for x=0
Annex60.Utilities.Math.SmoothExponential SmoothExponential Once continuously differentiable approximation to exp(-|x|) in interval |x| < delta
Annex60.Utilities.Math.SmoothHeaviside SmoothHeaviside Once continuously differentiable approximation to the Heaviside function
Annex60.Utilities.Math.SmoothLimit SmoothLimit Once continuously differentiable approximation to the limit function
Annex60.Utilities.Math.SmoothMax SmoothMax Once continuously differentiable approximation to the maximum function
Annex60.Utilities.Math.SmoothMin SmoothMin Once continuously differentiable approximation to the minimum function
Annex60.Utilities.Math.Splice Splice Block for splice function opertation
Annex60.Utilities.Math.TrapezoidalIntegration TrapezoidalIntegration Integration using the trapezoidal rule
Annex60.Utilities.Math.Functions Functions Package with mathematical functions
Annex60.Utilities.Math.Examples Examples Collection of models that illustrate model use and test models

Annex60.Utilities.Math.Average Annex60.Utilities.Math.Average

Average of a vector

Annex60.Utilities.Math.Average

Information

This block outputs the average of the vector.

Extends from Modelica.Blocks.Interfaces.MISO (Multiple Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Integernin1Number of inputs

Connectors

TypeNameDescription
input RealInputu[nin]Connector of Real input signals
output RealOutputyConnector of Real output signal

Modelica definition

block Average "Average of a vector" extends Modelica.Blocks.Interfaces.MISO; equation y = Annex60.Utilities.Math.Functions.average(u=u, nin=nin); end Average;

Annex60.Utilities.Math.Bicubic Annex60.Utilities.Math.Bicubic

Bicubic function

Annex60.Utilities.Math.Bicubic

Information

This block computes

y = a1 + a2 x1 + a3 x12 + a4 x2 + a5 x22 + a6 x1 x2 + a7 x1^3 + a8 x2^3 + a9 x12 x2 + a10 x1 x22

Extends from Modelica.Blocks.Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

Connectors

TypeNameDescription
input RealInputu1Connector of Real input signal 1
input RealInputu2Connector of Real input signal 2
output RealOutputyConnector of Real output signal

Modelica definition

block Bicubic "Bicubic function" extends Modelica.Blocks.Interfaces.SI2SO; input Real a[10] "Coefficients"; equation y = Annex60.Utilities.Math.Functions.bicubic(a=a, x1=u1, x2=u2); end Bicubic;

Annex60.Utilities.Math.Biquadratic Annex60.Utilities.Math.Biquadratic

Biquadratic function

Annex60.Utilities.Math.Biquadratic

Information

This block computes

y = a1 + a2 x1 + a3 x12 + a4 x2 + a5 x22 + a6 x1 x2

Extends from Modelica.Blocks.Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Reala[6] Coefficients

Connectors

TypeNameDescription
input RealInputu1Connector of Real input signal 1
input RealInputu2Connector of Real input signal 2
output RealOutputyConnector of Real output signal

Modelica definition

block Biquadratic "Biquadratic function" extends Modelica.Blocks.Interfaces.SI2SO; parameter Real a[6] "Coefficients"; equation y = Annex60.Utilities.Math.Functions.biquadratic(a=a, x1=u1, x2=u2); end Biquadratic;

Annex60.Utilities.Math.BooleanReplicator Annex60.Utilities.Math.BooleanReplicator

Boolean signal replicator

Annex60.Utilities.Math.BooleanReplicator

Information

This block replicates the boolean input signal to an array of nout identical output signals.

Extends from Modelica.Blocks.Icons.BooleanBlock (Basic graphical layout of Boolean block).

Parameters

TypeNameDefaultDescription
Integernout1Number of outputs

Connectors

TypeNameDescription
input BooleanInputuConnector of boolean input signal
output BooleanOutputy[nout]Connector of boolean output signals

Modelica definition

block BooleanReplicator "Boolean signal replicator" extends Modelica.Blocks.Icons.BooleanBlock; parameter Integer nout=1 "Number of outputs"; Modelica.Blocks.Interfaces.BooleanInput u "Connector of boolean input signal"; Modelica.Blocks.Interfaces.BooleanOutput y[nout] "Connector of boolean output signals"; equation y = Annex60.Utilities.Math.Functions.booleanReplicator(u=u, nout=nout); end BooleanReplicator;

Annex60.Utilities.Math.IntegerReplicator Annex60.Utilities.Math.IntegerReplicator

Integer signal replicator

Annex60.Utilities.Math.IntegerReplicator

Information

This block replicates the integer input signal to an array of nout identical output signals.

Extends from Modelica.Blocks.Icons.IntegerBlock (Basic graphical layout of Integer block).

Parameters

TypeNameDefaultDescription
Integernout1Number of outputs

Connectors

TypeNameDescription
input IntegerInputuConnector of integer input signal
output IntegerOutputy[nout]Connector of integer output signals

Modelica definition

block IntegerReplicator "Integer signal replicator" extends Modelica.Blocks.Icons.IntegerBlock; parameter Integer nout=1 "Number of outputs"; Modelica.Blocks.Interfaces.IntegerInput u "Connector of integer input signal"; Modelica.Blocks.Interfaces.IntegerOutput y[nout] "Connector of integer output signals"; equation y = Annex60.Utilities.Math.Functions.integerReplicator(u=u, nout=nout); end IntegerReplicator;

Annex60.Utilities.Math.IntegratorWithReset Annex60.Utilities.Math.IntegratorWithReset

Output the integral of the input signal

Annex60.Utilities.Math.IntegratorWithReset

Information

This model is similar to Modelica.Blocks.Continuous.Integrator except that it optionally allows to reset the output y of the integrator.

The output of the integrator can be reset as follows:

See Annex60.Utilities.Math.Examples.IntegratorWithReset for an example.

Implementation

To adjust the icon layer, the code of Modelica.Blocks.Continuous.Integrator has been copied into this model rather than extended.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Realk1Integrator gain [1]
ResetresetAnnex60.Types.Reset.DisabledType of integrator reset
Initialization
RealOutputy.starty_startConnector of Real output signal
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization (1: no init, 2: steady state, 3,4: initial output)
Realy_start0Initial or guess value of output (= state)
Integrator reset
Realy_reset0Value to which integrator is reset, used if reset = Annex60.Types.Reset.Parameter

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
input RealInputy_reset_inInput signal for state to which integrator is reset, enabled if reset = Annex60.Types.Reset.Input
input BooleanInputtriggerResets the integrator output when trigger becomes true

Modelica definition

block IntegratorWithReset "Output the integral of the input signal" extends Modelica.Blocks.Interfaces.SISO(y(start=y_start)); parameter Real k(unit="1")=1 "Integrator gain"; /* InitialState is the default, because it was the default in Modelica 2.2 and therefore this setting is backward compatible */ parameter Modelica.Blocks.Types.Init initType=Modelica.Blocks.Types.Init.InitialState "Type of initialization (1: no init, 2: steady state, 3,4: initial output)"; parameter Real y_start=0 "Initial or guess value of output (= state)"; parameter Annex60.Types.Reset reset = Annex60.Types.Reset.Disabled "Type of integrator reset"; parameter Real y_reset = 0 "Value to which integrator is reset, used if reset = Annex60.Types.Reset.Parameter"; Modelica.Blocks.Interfaces.RealInput y_reset_in if reset == Annex60.Types.Reset.Input "Input signal for state to which integrator is reset, enabled if reset = Annex60.Types.Reset.Input"; Modelica.Blocks.Interfaces.BooleanInput trigger if reset <> Annex60.Types.Reset.Disabled "Resets the integrator output when trigger becomes true"; protected Modelica.Blocks.Interfaces.RealInput y_reset_internal "Internal connector for integrator reset"; Modelica.Blocks.Interfaces.BooleanInput trigger_internal "Needed to use conditional connector trigger"; initial equation if initType == Modelica.Blocks.Types.Init.SteadyState then der(y) = 0; elseif initType == Modelica.Blocks.Types.Init.InitialState or initType == Modelica.Blocks.Types.Init.InitialOutput then y = y_start; end if; equation der(y) = k*u; // Equations for integrator reset connect(trigger, trigger_internal); connect(y_reset_in, y_reset_internal); if reset <> Annex60.Types.Reset.Input then y_reset_internal = y_reset; end if; if reset == Annex60.Types.Reset.Disabled then trigger_internal = false; else when trigger_internal then reinit(y, y_reset_internal); end when; end if; end IntegratorWithReset;

Annex60.Utilities.Math.InverseXRegularized Annex60.Utilities.Math.InverseXRegularized

Function that approximates 1/x by a twice continuously differentiable function

Annex60.Utilities.Math.InverseXRegularized

Information

Function that approximates y=1 ⁄ x inside the interval -δ ≤ x ≤ δ. The approximation is twice continuously differentiable with a bounded derivative on the whole real line.

See the package Examples for the graph.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Realdelta Abscissa value below which approximation occurs

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block InverseXRegularized "Function that approximates 1/x by a twice continuously differentiable function" extends Modelica.Blocks.Interfaces.SISO; parameter Real delta(min=0) "Abscissa value below which approximation occurs"; equation y = Annex60.Utilities.Math.Functions.inverseXRegularized(x=u, delta=delta); end InverseXRegularized;

Annex60.Utilities.Math.Max Annex60.Utilities.Math.Max

Maximum element of a vector

Annex60.Utilities.Math.Max

Information

Outputs the maximum of the vector.

Extends from Modelica.Blocks.Interfaces.MISO (Multiple Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Integernin1Number of inputs

Connectors

TypeNameDescription
input RealInputu[nin]Connector of Real input signals
output RealOutputyConnector of Real output signal

Modelica definition

block Max "Maximum element of a vector" extends Modelica.Blocks.Interfaces.MISO; equation y = max(u); end Max;

Annex60.Utilities.Math.Min Annex60.Utilities.Math.Min

Minimum element of a vector

Annex60.Utilities.Math.Min

Information

Outputs the minimum of the vector.

Extends from Modelica.Blocks.Interfaces.MISO (Multiple Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Integernin1Number of inputs

Connectors

TypeNameDescription
input RealInputu[nin]Connector of Real input signals
output RealOutputyConnector of Real output signal

Modelica definition

block Min "Minimum element of a vector" extends Modelica.Blocks.Interfaces.MISO; equation y = min(u); end Min;

Annex60.Utilities.Math.Polynominal Annex60.Utilities.Math.Polynominal

Polynominal function

Annex60.Utilities.Math.Polynominal

Information

This block computes a polynomial of arbitrary order. The polynomial has the form

y = a1 + a2 x + a3 x2 + ...

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Reala[:] Coefficients

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block Polynominal "Polynominal function" extends Modelica.Blocks.Interfaces.SISO; parameter Real a[:] "Coefficients"; equation y = Annex60.Utilities.Math.Functions.polynomial(a=a, x=u); end Polynominal;

Annex60.Utilities.Math.PowerLinearized Annex60.Utilities.Math.PowerLinearized

Power function that is linearized below a user-defined threshold

Annex60.Utilities.Math.PowerLinearized

Information

Function that approximates y=xn where 0 < n so that

For x < x0, this function replaces y=xn by a linear function that is continuously differentiable everywhere.

A typical use of this function is to replace T = T4(1/4) in a radiation balance to ensure that the function is defined everywhere. This can help solving the initialization problem when a solver may be far from a solution and hence T4 < 0.

See the package Examples for the graph.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Realn Exponent
Realx0 Abscissa value below which linearization occurs

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block PowerLinearized "Power function that is linearized below a user-defined threshold" extends Modelica.Blocks.Interfaces.SISO; parameter Real n "Exponent"; parameter Real x0 "Abscissa value below which linearization occurs"; equation y = Annex60.Utilities.Math.Functions.powerLinearized(x=u, n=n, x0=x0); end PowerLinearized;

Annex60.Utilities.Math.QuadraticLinear Annex60.Utilities.Math.QuadraticLinear

Function that is quadratic in first argument and linear in second argument

Annex60.Utilities.Math.QuadraticLinear

Information

Block for function quadraticLinear, which computes

y = a1 + a2 x1 + a3 x12 + (a4 + a5 x1 + a6 x12) x2

Extends from Modelica.Blocks.Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Reala[6] Coefficients

Connectors

TypeNameDescription
input RealInputu1Connector of Real input signal 1
input RealInputu2Connector of Real input signal 2
output RealOutputyConnector of Real output signal

Modelica definition

block QuadraticLinear "Function that is quadratic in first argument and linear in second argument" extends Modelica.Blocks.Interfaces.SI2SO; parameter Real a[6] "Coefficients"; equation y = Annex60.Utilities.Math.Functions.quadraticLinear(a=a, x1=u1, x2=u2); end QuadraticLinear;

Annex60.Utilities.Math.RegNonZeroPower Annex60.Utilities.Math.RegNonZeroPower

Power function, regularized near zero, but nonzero value for x=0

Annex60.Utilities.Math.RegNonZeroPower

Information

Function that approximates y=|x|n where n > 0 so that

This function replaces y=|x|n in the interval -δ...+δ by a 4-th order polynomial that has the same function value and the first and second derivative at x=± δ.

A typical use of this function is to replace the function for the convective heat transfer coefficient for forced or free convection that is of the form h=c |dT|n for some constant c and exponent 0 ≤ n ≤ 1. By using this function, the original function that has an infinite derivative near zero and that takes on zero at the origin is replaced by a function with a bounded derivative and a non-zero value at the origin. Physically, the region -δ...+δ may be interpreted as the region where heat conduction dominates convection in the boundary layer.

See the package Examples for the graph.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Realn Exponent
Realdelta0.01Abscissa value where transition occurs

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block RegNonZeroPower "Power function, regularized near zero, but nonzero value for x=0" extends Modelica.Blocks.Interfaces.SISO; parameter Real n "Exponent"; parameter Real delta = 0.01 "Abscissa value where transition occurs"; equation y = Annex60.Utilities.Math.Functions.regNonZeroPower(x=u, n=n, delta=delta); end RegNonZeroPower;

Annex60.Utilities.Math.SmoothExponential Annex60.Utilities.Math.SmoothExponential

Once continuously differentiable approximation to exp(-|x|) in interval |x| < delta

Annex60.Utilities.Math.SmoothExponential

Information

Function to provide a once continuously differentiable approximation to exp(- |x| ) in the interval |x| for some positive δ

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Realdelta Transition point where approximation occurs

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block SmoothExponential "Once continuously differentiable approximation to exp(-|x|) in interval |x| < delta" extends Modelica.Blocks.Interfaces.SISO; parameter Real delta "Transition point where approximation occurs"; equation y = Annex60.Utilities.Math.Functions.smoothExponential(x=u, delta=delta); end SmoothExponential;

Annex60.Utilities.Math.SmoothHeaviside Annex60.Utilities.Math.SmoothHeaviside

Once continuously differentiable approximation to the Heaviside function

Annex60.Utilities.Math.SmoothHeaviside

Information

Once Lipschitz continuously differentiable approximation to the Heaviside(.,.) function. See Example Annex60.Utilities.Math.Examples.SmoothHeaviside.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Realdelta Width of transition interval

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block SmoothHeaviside "Once continuously differentiable approximation to the Heaviside function" extends Modelica.Blocks.Interfaces.SISO; parameter Real delta "Width of transition interval"; equation y = Annex60.Utilities.Math.Functions.smoothHeaviside(x=u, delta=delta); end SmoothHeaviside;

Annex60.Utilities.Math.SmoothLimit Annex60.Utilities.Math.SmoothLimit

Once continuously differentiable approximation to the limit function

Annex60.Utilities.Math.SmoothLimit

Information

Once continuously differentiable approximation to the limit(.,.) function. The output is bounded to be in [lower, upper].

Note that the limit need not be respected, such as illustrated in Annex60.Utilities.Math.Examples.SmoothMin.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
RealdeltaX Width of transition interval
Realupper Upper limit
Reallower Lower limit

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Modelica definition

block SmoothLimit "Once continuously differentiable approximation to the limit function" extends Modelica.Blocks.Interfaces.SISO; parameter Real deltaX "Width of transition interval"; parameter Real upper "Upper limit"; parameter Real lower "Lower limit"; equation y = Annex60.Utilities.Math.Functions.smoothLimit(u, lower, upper, deltaX); end SmoothLimit;

Annex60.Utilities.Math.SmoothMax Annex60.Utilities.Math.SmoothMax

Once continuously differentiable approximation to the maximum function

Annex60.Utilities.Math.SmoothMax

Information

Once continuously differentiable approximation to the max(.,.) function.

Note that the maximum need not be respected, such as illustrated in Annex60.Utilities.Math.Examples.SmoothMin.

Extends from Modelica.Blocks.Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

Parameters

TypeNameDefaultDescription
RealdeltaX Width of transition interval

Connectors

TypeNameDescription
input RealInputu1Connector of Real input signal 1
input RealInputu2Connector of Real input signal 2
output RealOutputyConnector of Real output signal

Modelica definition

block SmoothMax "Once continuously differentiable approximation to the maximum function" extends Modelica.Blocks.Interfaces.SI2SO; parameter Real deltaX "Width of transition interval"; equation y = Annex60.Utilities.Math.Functions.smoothMax(x1=u1, x2=u2, deltaX=deltaX); end SmoothMax;

Annex60.Utilities.Math.SmoothMin Annex60.Utilities.Math.SmoothMin

Once continuously differentiable approximation to the minimum function

Annex60.Utilities.Math.SmoothMin

Information

Once continuously differentiable approximation to the min(.,.) function.

Note that the minimum need not be respected, such as illustrated in Annex60.Utilities.Math.Examples.SmoothMin.

Extends from Modelica.Blocks.Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

Parameters

TypeNameDefaultDescription
RealdeltaX Width of transition interval

Connectors

TypeNameDescription
input RealInputu1Connector of Real input signal 1
input RealInputu2Connector of Real input signal 2
output RealOutputyConnector of Real output signal

Modelica definition

block SmoothMin "Once continuously differentiable approximation to the minimum function" extends Modelica.Blocks.Interfaces.SI2SO; parameter Real deltaX "Width of transition interval"; equation y = Annex60.Utilities.Math.Functions.smoothMin(x1=u1, x2=u2, deltaX=deltaX); end SmoothMin;

Annex60.Utilities.Math.Splice Annex60.Utilities.Math.Splice

Block for splice function opertation

Annex60.Utilities.Math.Splice

Information

This block implements Annex60.Utilities.Math.Functions.spliceFunction, which provides a continuously differentiable transition between two arguments.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Realdeltax Half width of transition interval

Connectors

TypeNameDescription
input RealInputxIndependent value
input RealInputu1Argument of u > 0 (pos)
input RealInputu2Argument of u < 0 (neg)
output RealOutputySmoothed value

Modelica definition

block Splice "Block for splice function opertation" extends Modelica.Blocks.Icons.Block; Modelica.Blocks.Interfaces.RealInput x "Independent value"; Modelica.Blocks.Interfaces.RealInput u1 "Argument of u > 0 (pos)"; Modelica.Blocks.Interfaces.RealInput u2 "Argument of u < 0 (neg)"; Modelica.Blocks.Interfaces.RealOutput y "Smoothed value"; parameter Real deltax "Half width of transition interval"; equation y=Annex60.Utilities.Math.Functions.spliceFunction( pos=u1, neg= u2, x= x, deltax= deltax); end Splice;

Annex60.Utilities.Math.TrapezoidalIntegration Annex60.Utilities.Math.TrapezoidalIntegration

Integration using the trapezoidal rule

Annex60.Utilities.Math.TrapezoidalIntegration

Information

This function computes a definite integral using the trapezoidal rule.

Extends from Modelica.Blocks.Interfaces.MISO (Multiple Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Integernin1Number of inputs
IntegerN Number of integrand points
RealdeltaX Width of interval for Trapezoidal integration

Connectors

TypeNameDescription
input RealInputu[nin]Connector of Real input signals
output RealOutputyConnector of Real output signal

Modelica definition

model TrapezoidalIntegration "Integration using the trapezoidal rule" extends Modelica.Blocks.Interfaces.MISO; parameter Integer N "Number of integrand points"; parameter Real deltaX "Width of interval for Trapezoidal integration"; equation y = Annex60.Utilities.Math.Functions.trapezoidalIntegration(N=N, f=u, deltaX=deltaX); end TrapezoidalIntegration;

http://iea-annex60.org