class Version_2_1 "Version 2.1 (Nov. 11, 2004)"
    extends Modelica.Icons.ReleaseNotes;

    annotation (Documentation(info = "<html>\n\n<p> This is a major change with respect to previous versions of the\n        Modelica Standard Library, because <strong>many new libraries</strong> and components\n        are included and because the input/output blocks (Modelica.Blocks)\n        have been considerably simplified:\n</p>\n<ul>\n<li> An input/output connector is defined <strong>without</strong> a hierarchy (this is possible\n         due to new features of the Modelica language). For example, the input\n         signal of a block \"FirstOrder\" was previously accessed as \"FirstOrder.inPort.signal[1]\".\n         Now it is accessed as \"FirstOrder.u\". This simplifies the understanding and usage\n         especially for beginners.</li>\n<li> De-vectorized the <strong>Modelica.Blocks</strong> library. All blocks in the\n         Modelica.Blocks library are now scalar blocks. As a result,\n         the parameters of the Blocks are scalars and no vectors any\n         more. For example, a parameter \"amplitude\" that might had\n         a value of \"{1}\" previously, has now a value of \"1\". This simplifies\n         the understanding and usage especially for beginners.<br>\n         If a vector of blocks is needed, this can be easily\n         accomplished by adding a dimension to the instance. For example\n         \"Constant const[3](k={1,2,3})\" defines three Constant blocks.\n         An additional advantage of the new approach is that\n         the implementation of Modelica.Blocks is much simpler and is easier to\n         understand.\n</li>\n</ul>\n\n<p>\nThe discussed changes of Modelica.Blocks are not backward compatible.\nA script to <strong>automatically</strong> convert models to this new version is\nprovided. There might be rare cases, where this script does not convert.\nIn this case models have to be manually converted.\nIn any case you should make a back-up copy of your model\nbefore automatic conversion is performed.\n</p>\n<p>\nThe following <strong>new libraries</strong> have been added:\n</p>\n<table border=\"1\" cellspacing=0 cellpadding=2>\n<tr><td><a href=\"modelica://Modelica.Electrical.Digital\">Modelica.Electrical.Digital</a></td>\n          <td>Digital electrical components based on 2-,3-,4-, and 9-valued logic<br>\n                  according to the VHDL standard</td></tr>\n<tr><td><a href=\"modelica://Modelica.Electrical.Machines\">Modelica.Electrical.Machines</a></td>\n          <td>Asynchronous, synchronous and DC motor and generator models</td></tr>\n<tr><td><a href=\"modelica://Modelica.Math.Matrices\">Modelica.Math.Matrices</a></td>\n          <td>Functions operating on matrices such as solve() (A*x=b), leastSquares(),<br>\n                  norm(), LU(), QR(),  eigenValues(), singularValues(), exp(), ...</td></tr>\n<tr><td><a href=\"modelica://Modelica.StateGraph\">Modelica.StateGraph</a></td>\n          <td> Modeling of <strong>discrete event</strong> and <strong>reactive</strong> systems in a convenient way using<br>\n                   <strong>hierarchical state machines</strong> and <strong>Modelica</strong> as <strong>action language</strong>.<br>\n                   It is based on JGrafchart and Grafcet and  has a similar modeling power as<br>\n                   StateCharts. It avoids deficiencies of usually used action languages.<br>\n                   This library makes the ModelicaAdditions.PetriNets library obsolete.</td></tr>\n<tr><td><a href=\"modelica://Modelica.Utilities.Files\">Modelica.Utilities.Files</a></td>\n          <td>Functions to operate on files and directories (copy, move, remove files etc.)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Utilities.Streams\">Modelica.Utilities.Streams</a></td>\n          <td>Read from files and write to files (print, readLine, readFile, error, ...)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Utilities.Strings\">Modelica.Utilities.Strings</a></td>\n          <td>Operations on strings (substring, find, replace, sort, scanToken, ...)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Utilities.System\">Modelica.Utilities.System</a></td>\n          <td>Get/set current directory, get/set environment variable, execute shell command, etc.</td></tr>\n</table>\n<p>\nThe following existing libraries outside of the Modelica standard library\nhave been improved and added as <strong>new libraries</strong>\n(models using the previous libraries are automatically converted\nto the new sublibraries inside package Modelica):\n</p>\n<table border=\"1\" cellspacing=0 cellpadding=2>\n<tr><td><a href=\"modelica://Modelica.Blocks.Discrete\">Modelica.Blocks.Discrete</a></td>\n          <td> Discrete input/output blocks with fixed sample period<br>\n                   (from ModelicaAdditions.Blocks.Discrete)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Blocks.Logical\">Modelica.Blocks.Logical</a></td>\n          <td> Logical components with Boolean input and output signals<br>\n                   (from ModelicaAdditions.Blocks.Logical)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Blocks.Nonlinear\">Modelica.Blocks.Nonlinear</a></td>\n          <td> Discontinuous or non-differentiable algebraic control blocks such as variable limiter,<br>\n                   fixed, variable and Pade delay etc. (from ModelicaAdditions.Blocks.Nonlinear)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Blocks.Routing\">Modelica.Blocks.Routing</a></td>\n          <td> Blocks to combine and extract signals, such as multiplexer<br>\n                   (from ModelicaAdditions.Blocks.Multiplexer)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Blocks.Tables\">Modelica.Blocks.Tables</a></td>\n          <td> One and two-dimensional interpolation in tables. CombiTimeTable is available<br>\n                   in Modelica.Blocks.Sources (from ModelicaAdditions.Tables)</td></tr>\n<tr><td><a href=\"modelica://Modelica.Mechanics.MultiBody\">Modelica.Mechanics.MultiBody</a></td>\n          <td> Components to model the movement of 3-dimensional mechanical systems. Contains<br>\n                   body, joint, force and sensor components, analytic handling of kinematic loops,<br>\n                   force elements with mass, series/parallel connection of 3D force elements etc.<br>\n                   (from MultiBody 1.0 where the new signal connectors are used;<br>\n                   makes the ModelicaAdditions.MultiBody library obsolete)</td></tr>\n</table>\n<p>\nAs a result, the ModelicaAdditions library is obsolete, because all components\nare either included in the Modelica library or are replaced by much more\npowerful libraries (MultiBody, StateGraph).\n</p>\n<p>\nThe following <strong>new components</strong> have been added to <strong>existing</strong> libraries.\n</p>\n<table border=\"1\" cellspacing=0 cellpadding=2>\n<tr><td colspan=\"2\"><strong>Modelica.Blocks.Logical.</strong></td></tr>\n<tr><td>Pre</td>\n          <td>y = pre(u): Breaks algebraic loops by an infinitesimal small<br>\n                  time delay (event iteration continues until u = pre(u))</td></tr>\n<tr><td>Edge</td>\n          <td>y = edge(u): Output y is true, if the input u has a rising edge </td></tr>\n<tr><td>FallingEdge</td>\n          <td>y = edge(not u): Output y is true, if the input u has a falling edge </td></tr>\n<tr><td>Change</td>\n          <td>y = change(u): Output y is true, if the input u has a rising or falling edge </td></tr>\n<tr><td>GreaterEqual</td>\n          <td>Output y is true, if input u1 is greater or equal than input u2 </td></tr>\n<tr><td>Less</td>\n          <td>Output y is true, if input u1 is less than input u2 </td></tr>\n<tr><td>LessEqual</td>\n          <td>Output y is true, if input u1 is less or equal than input u2 </td></tr>\n<tr><td>Timer</td>\n          <td>Timer measuring the time from the time instant where the<br>\n                  Boolean input became true </td></tr>\n<tr><td colspan=\"2\"><strong>Modelica.Blocks.Math.</strong></td></tr>\n<tr><td>BooleanToReal</td>\n          <td>Convert Boolean to Real signal</td></tr>\n<tr><td>BooleanToInteger</td>\n          <td>Convert Boolean to Integer signal</td></tr>\n<tr><td>RealToBoolean</td>\n          <td>Convert Real to Boolean signal</td></tr>\n<tr><td>IntegerToBoolean</td>\n          <td>Convert Integer to Boolean signal</td></tr>\n<tr><td colspan=\"2\"><strong>Modelica.Blocks.Sources.</strong></td></tr>\n<tr><td>RealExpression</td>\n          <td>Set output signal to a time varying Real expression</td></tr>\n<tr><td>IntegerExpression</td>\n          <td>Set output signal to a time varying Integer expression</td></tr>\n<tr><td>BooleanExpression</td>\n          <td>Set output signal to a time varying Boolean expression</td></tr>\n<tr><td>BooleanTable</td>\n          <td>Generate a Boolean output signal based on a vector of time instants</td></tr>\n<tr><td colspan=\"2\"><strong>Modelica.Mechanics.MultiBody.</strong></td></tr>\n<tr><td>Frames.from_T2</td>\n          <td>Return orientation object R from transformation matrix T and its derivative der(T)</td></tr>\n<tr><td colspan=\"2\"><strong>Modelica.Mechanics.Rotational.</strong></td></tr>\n<tr><td>LinearSpeedDependentTorque</td>\n          <td>Linear dependency of torque versus speed (acts as load torque)</td></tr>\n<tr><td>QuadraticSpeedDependentTorque</td>\n          <td>Quadratic dependency of torque versus speed (acts as load torque)</td></tr>\n<tr><td>ConstantTorque</td>\n          <td>Constant torque, not dependent on speed (acts as load torque)</td></tr>\n<tr><td>ConstantSpeed</td>\n          <td>Constant speed, not dependent on torque (acts as load torque)</td></tr>\n<tr><td>TorqueStep</td>\n          <td>Constant torque, not dependent on speed (acts as load torque)</td></tr>\n</table>\n<p>\nThe following <strong>bugs</strong> have been <strong>corrected</strong>:\n</p>\n<table border=\"1\" cellspacing=0 cellpadding=2>\n<tr><td colspan=\"2\"><strong>Modelica.Mechanics.MultiBody.Forces.</strong></td></tr>\n<tr><td>LineForceWithMass<br>\n                  Spring</td>\n          <td>If mass of the line force or spring component is not zero, the<br>\n                  mass was (implicitly) treated as \"mass*mass\" instead of as \"mass\"</td></tr>\n<tr><td colspan=\"2\"><strong>Modelica.Mechanics.Rotational.</strong></td></tr>\n<tr><td>Speed</td>\n          <td>If parameter exact=<strong>false</strong>, the filter was wrong<br>\n                  (position was filtered and not the speed input signal)</td></tr>\n</table>\n<p>\nOther changes:\n</p>\n<ul>\n<li> All connectors are now smaller in the diagram layer. This gives\n         a nicer layout when connectors and components are used together\n         in a diagram</li>\n<li> Default instance names are defined for all connectors, according\n         to a new annotation introduced in Modelica 2.1. For example,\n         when dragging connector \"Flange_a\" from the Rotational library to\n         the diagram layer, the default connector instance name is\n         \"flange_a\" and not \"Flange_a1\".</li>\n<li> The Modelica.Mechanics.Rotational connectors are changed from\n         a square to a circle</li>\n<li> The Modelica.Mechanics.Translational connectors are changed from a\n         green to a dark green color in order that connection lines\n         can be better seen, especially when printed.</li>\n<li> The Modelica.Blocks connectors for Real signals are changed from\n         blue to dark blue in order to distinguish them from electrical signals.</li>\n</ul>\n</html>"));
end Version_2_1;