In 20-sim equations can be divided in four sections: initialequations, equations, code and finalequations.
The initialequations section should contain all equations that should calculated before the simulation run. The equations are calculated once. The equations in this section form a code block, i.e. the equations themselves and the order of the equations are not rewritten during compilation and executed sequentially. The results of the initialequations section are not shown in the simulator plots and can therefore not be inspected in the Numerical Values window!
The initialequations section is used in the library model Spring Damper (stiffness):
parameters
real k = 10.0 {N/m};
real m = 1.0 {kg};
real b = 0.05 {};
variables
real x {m};
real d {damping,N.s/m};
initialequations
d = 2*b*sqrt(k*m);
equations
x = int (p.v);
p.F = k * x + d*p.v;
As you can see in the initialequations section the damping d is calculated out of the relative damping b, mass m and stiffness k.
The equations section contains all standard equations. They do not have to be entered in a sequential form. They are rewritten during compilation to get the correct order of execution. The resulting code is calculated every simulation step. You can see the use of the equations section in the example above.
The code section contains a code block. A code block contains all equations that must be calculated sequentially, i.e. the equations themselves and the order of the equations are not rewritten during compilation. The resulting sequential code is calculated every simulation step.
Example
The code section is used in the library model Spring Damper (stiffness):
parameters
real initial = 0.0;
variables
real prev, peak;
initialequations
peak = initial;
prev = 0;
output = initial;
code
if major then
peak = max([abs(input), peak]);
if (input > 0 and prev < 0) or (input < 0 and prev > 0) then
output = peak;
peak = 0;
end;
prev = input;
end;
The finalequations section should contain all equations that should be calculated after a simulation run. The equations are calculated once. The equations in this section form a code block, i.e. the equations themselves and the order of the equations are not rewritten during compilation and executed sequentially. The results of the finalequations section are not shown in the simulator plots and can therefore not be inspected in the Numerical Values window!
The finalequations section is used in the library model DoMatlab-Final:
parameters
string command = '';
finalequations
// send the command to the workspace
doMatlab (command);
As you see you can give the parameter command any value, which is then exported to Matlab at the end of the simulation run.