# ReleaseNotes.Version_3_0_1

## Information

This Modelica package is provided under the Modelica License 2 and no longer under Modelica License 1.1. There are the following reasons why the Modelica Association changes from Modelica License 1.1 to this new license text (note, the text below is not a legal interpretation of the Modelica License 2. In case of a conflict, the language of the license shall prevail):

1. The rights of licensor and licensee are much more clearly defined. For example:
   - The licensed work (Original Work) can be used in unmodified form in open source and commercial software (the licensee cannot change the license and the work must be provided without fees)
   - If a model component is copied out of a Modelica package under Modelica License 2 and is modified in order to adapt it to the needs of the modeler, then the result can be licensed under any license (including a commercial license).
   - It is practically not possible to change the license of a Modelica package under Modelica License 2 to another license, i.e., a licensee cannot change the license by adding material or changing classes, so the work must remain under Modelica License 2 (to be more precise, if the licensee makes modifications to the Original Work "which represents, as a whole, an original work of authorship", he/she can change the license to another license. However, for a Modelica package this would require a lot of changes which is usually unrealistic).
   - If an executable is constructed using a Modelica package under Modelica License 2, then this executable can be licensed under any license (including a commercial license).
   We hope that this compromise between open source contributors, commercial Modelica environments and Modelica users will motivate even more people to provide their Modelica packages freely under the Modelica License 2.
2. There are several new provisions that shall make law suites against licensors and licensees more unlikely (so the small risk is further reduced).

The following new components have been added to existing libraries:

Electrical.Analog.Basic.
M_Transformer | Transformer, with the possibility to choose the number of inductors. The inductances and the coupled inductances can be chosen arbitrarily.
Electrical.Analog.Lines.
M_OLine | Segmented line model that enables the use of multiple lines, that means, the number of segments and the number of single lines can be chosen by the user. The model allows to investigate phenomena at multiple lines like mutual magnetic or capacitive influence.
Mechanics.Translational.Components.Examples.
Brake | Demonstrates the usage of the translational brake component.
Media.Interfaces.PartialMedium.
ThermoStates | Enumeration type for independent variables to identify the independent variables of the medium (pT, ph, phX, pTX, dTX). An implementation of this enumeration is provided for every medium. (This is useful for fluid libraries that do not use the PartialMedium.BaseProperties model).
setSmoothState | Function that returns the thermodynamic state which smoothly approximates: if x > 0 then state_a else state_b. (This is useful for pressure drop components in fluid libraries where the upstream density and/or viscosity has to be computed and these properties should be smooth a zero mass flow rate) An implementation of this function is provided for every medium.
Media.Common.
smoothStep | Approximation of a general step, such that the characteristic is continuous and differentiable.
Media.UsersGuide.
Future | Short description of goals and changes of upcoming release of Modelica.Media.
Media.Media.Air.MoistAir.
isentropicExponent | Implemented Missing Function from interface.
isentropicEnthalpyApproximation | Implemented function that approximates the isentropic enthalpy change. This is only correct as long as there is no liquid in the stream.

The following existing components have been changed (in a backward compatible way):

Mechanics.Rotational.Interfaces.
PartialFriction | Improvement of friction model so that in certain situations the number of iterations is much smaller.
Mechanics.Translational.Components.Examples.
Friction | Added a third variant, where friction is modelled with the SupportFriction component.
Mechanics.Translational.Components.
MassWithStopAndFriction | Improvement of friction model so that in certain situations the number of iterations is much smaller.
Mechanics.Translational.Interfaces.
PartialFriction | Improvement of friction model so that in certain situations the number of iterations is much smaller.
Media.Examples.
SimpleLiquidWater IdealGasH20 WaterIF97 MixtureGases MoistAir | Added equations to test the new setSmoothState(..) functions including the analytic derivatives of these functions.
Media.Interfaces.PartialLinearFluid.
setState_pTX setState_phX setState_psX setState_dTX | Rewritten function in one statement so that it is usually inlined.
Media.Interfaces.PartialLinearFluid.
consistent use of reference_d instead of density(state | Change was done to achieve consistency with analytic inverse functions.
Media.Air.MoistAir.
T_phX | Interval of nonlinear solver to compute T from p,h,X changed from 200..6000 to 240 ..400 K.

The following critical errors have been fixed (i.e., errors that can lead to wrong simulation results):

Mechanics.MultiBody.Forces
WorldTorque | Parameter "ResolveInFrame" was not propagated and therefore always the default (resolved in world frame) was used, independently of the setting of this parameter.
WorldForceAndTorque | Parameter "ResolveInFrame" was not propagated and therefore always the default (resolved in world frame) was used, independently of the setting of this parameter. Furthermore, internally WorldTorque was used instead of Internal.BasicWorldTorque and therefore the visualization of worldTorque was performed twice.
Mechanics.MultiBody.Sensors
AbsoluteSensor | Velocity, acceleration and angular acceleration were computed by differentiating in the resolveInFrame frame. This has been corrected, by first transforming the vectors in to the world frame, differentiating here and then transforming into resolveInFrame. The parameter in the Advanced menu resolveInFrameAfterDifferentiation is then superfluous and was removed .
AbsoluteVelocity | The velocity was computed by differentiating in the resolveInFrame frame. This has been corrected, by first transforming the velocity in to the world frame, differentiating here and then transforming into resolveInFrame
RelativeSensor | If resolveInFrame <> frame_resolve and resolveInFrameAfterDifferentiation = frame_resolve, a translation error occurred, since frame_resolve was not enabled in this situation. This has been corrected.
RelativeVelocity | The velocity has have been computed by differentiating in the resolveInFrame frame. This has been corrected, by first transforming the relative position in to frame_a, differentiating here and then transforming into resolveInFrame
TransformRelativeVector | The transformation was wrong, since the parameters frame_r_in and frame_r_out have not been propagated to the submodel that performs the transformation. This has been corrected.
Mechanics.Translational.Components.
SupportFriction Brake | The sign of the friction force was wrong and therefore friction accelerated instead of decelerated. This was fixed.
SupportFriction | The component was only correct for fixed support. This was corrected.
Media.Interfaces.
PartialSimpleMedium PartialSimpleIdealGasMedium | BaseProperties.p was not defined as preferred state and BaseProperties.T was always defined as preferred state. This has been fixed by Defining p,T as preferred state if parameter preferredMediumState = true. This error had the effect that mass m is selected as state instead of p and if default initialization is used then m=0 could give not the expected behavior. This means, simulation is not wrong but the numerics is not as good and if a model relies on default initial values, the result could be not as expected.

The following uncritical errors have been fixed (i.e., errors that do not lead to wrong simulation results, but, e.g., units are wrong or errors in documentation):

Blocks.Math.
InverseBlockConstraint | Changed annotation preserveAspectRatio from true to false.
Blocks.Sources.
RealExpression IntegerExpression BooleanExpression | Changed annotation preserveAspectRatio from true to false.
Electrical.Analog.Basic.
SaturatingInductor | Replaced non-standard "arctan" by "atan" function.
Modelica.Electrical.Digital.
UsersGuide | Removed empty documentation placeholders and added the missing release comment for version 1.0.7
Modelica.Mechanics.Translational.Components.
MassWithStopAndFriction | Changed usage of reinit(..), in order that it appears only once for one variable according to the language specification (if a tool could simulate the model, there is no difference).
Media.Interfaces.PartialSimpleMedium
pressure temperature density specificEnthalpy | Missing functions added.

Generated at 2018-08-07T07:53:32Z by OpenModelicaOpenModelica 1.13.0~dev-1195-g6d891ea