Reinitialize state variable

#### Syntax

**reinit**(x, expr)

#### Description

The operator reinitializes `x`

with expr at an event
instant. `x`

is a Real variable (or an array of Real
variables) that must be selected as a state (resp., states), that
is reinit on `x`

implies ```
stateSelect =
StateSelect.always
```

on `x`

. `expr`

needs to be type-compatible with `x`

. The reinit
operator can for the same variable (resp. array of variables) only
be applied (either as an individual variable or as part of an array
of variables) in one equation (having reinit of the same variable
in when and else-when of the same variable is allowed). The reinit
operator can only be used in the body of a when-equation. It cannot
be used in an algorithm section.

The reinit operator does not break the single assignment rule,
because reinit(x,expr) in equations evaluates expr to a value
(value), then at the end of the current event iteration step it
assigns this value to x (this copying from values to reinitialized
state(s) is done after all other evaluations of the model and
before copying x to pre(x)).

*[If a higher index system is present, that is constraints
between state variables, some state variables need to be redefined
to non-state variables. During simulation, non-state variables
should be chosen in such a way that variables with an applied
reinit operator are selected as states at least when the
corresponding when-clauses become active. If this is not possible,
an error occurs, since otherwise the reinit operator would be
applied on a non-state variable.]*

#### Examples

// Bouncing ball
**parameter** Real e=0.5 "Coefficient of restitution"
Real h, v;
Boolean flying;
**equation**
**der**(h) = v;
**der**(v) = **if** flying **then** -g **else** 0;
flying = **not** (h<=0 **and** v<=0);
**when** h < 0 **then**
**reinit**(v, -e***pre**(v));
**end when**;

Generated at 2021-04-21T01:03:25Z by OpenModelicaOpenModelica
1.18.0~dev-230-gf39a4fe using GenerateDoc.mos