# .ModelicaReference.Operators.'semiLinear()'

## Information

Returns "if x >= 0 then positiveSlope*x else negativeSlope*x" and handle x=0 in a meaningful way

#### Syntax

```semiLinear(x, positiveSlope, negativeSlope)
```

#### Description

Returns "if x >= 0 then positiveSlope*x else negativeSlope*x". In some situations, equations with the semiLinear function become underdetermined if the first argument (x) becomes zero, i.e., there are an infinite number of solutions. It is recommended that the following rules are used to transform the equations during the translation phase in order to select one meaningful solution in such cases:

Rule 1: The equations

```y = semiLinear(x, sa, s1);
y = semiLinear(x, s1, s2);
y = semiLinear(x, s2, s3);
...
y = semiLinear(x, sN, sb);
```

may be replaced by

```s1 = if x >= 0 then sa else sb
s2 = s1;
s3 = s2;
...
sN = sN-1;
y = semiLinear(x, sa, sb);
```

Rule 2: The equations

```x = 0;
y = 0;
y = semiLinear(x, sa, sb);
```

may be replaced by

```x = 0
y = 0;
sa = sb;
```

[For symbolic transformations, the following property is useful (this follows from the definition):

```semiLinear(m_flow, port_h, h);
```

is identical to

```-semiLinear(-m_flow, h, port_h);
```

The semiLinear function is designed to handle reversing flow in fluid systems, such as

```H_flow = semiLinear(m_flow, port.h, h);
```

i.e., the enthalpy flow rate H _flow is computed from the mass flow rate m_flow and the upstream specific enthalpy depending on the flow direction.]

Generated at 2019-12-15T02:38:26Z by OpenModelicaOpenModelica 1.16.0~dev-83-g5b8ff4c using GenerateDoc.mos