# ReleaseNotes.Version_4_0_0

## Information

Version 4.0.0 is not backward compatible to previous versions. A tested conversion script is provided to transform models and libraries of previous versions 3.x.y to the new version. Short Overview:

- About 649 issues (including 432 pull requests) have been addressed for this release.
- This version is based on the recent Modelica language standard version 3.4.
- The library version (i.e., "4.0.0") follows semantic versioning using the convention `MAJOR.MINOR.BUGFIX` (see Version Management for details) and was decoupled from the version of the utilized version of the Modelica language standard.
- Obsolete classes of previous versions 3.x.y have been replaced.
- Obsolete classes, that could not be automatically converted to alternative implementations, have been moved to library ObsoleteModelica4.
- Major emphasis was put on improvements of the overall quality with respect to class naming and package structuring, conventions and style guide-lines, icons, documentation style and example models. The following sublibraries have been renamed.
  1. Modelica.SIunits → Modelica.Units.{SI, NonSI, Conversions}
  2. Modelica.Electrical.MultiPhase → Modelica.Electrical.Polyphase
  3. Modelica.Electrical.QuasiStationary → Modelica.Electrical.QuasiStatic
- The licenses of the utilized open-source third-party software components as well as the BSD 3-clause license of the Modelica Standard Library itself are available as separate resources.

The exact difference between package Modelica version 4.0.0 and version 3.2.3 is summarized in a comparison table.

The following Modelica packages have been tested that they work together with this release of package Modelica (alphabetical list). Hereby simulation results of the listed packages have been produced with package Modelica version 3.2.3 and compared with the simulation results produced with version 4.0.0 Beta.1. The tests have been performed with Dymola 2020/2020x/2021:

Library | Version | Library provider
--- | --- | ---
Buildings | > 6.0.0 | LBNL
BrushlessDCDrives | 1.1.1 | Dassault Systèmes
Clara | 1.5.0 | XRG Simulation GmbH and TLK-Thermo GmbH
ClaraPlus | 1.3.0 | XRG Simulation GmbH and TLK-Thermo GmbH
DriveControl | 4.0.0 | Anton Haumer
DymolaModels | 1.1 | Dassault Systèmes
EDrives | 1.0.1 | Anton Haumer and Christian Kral
ElectricalMachines | 0.9.1 | Anton Haumer
ElectricPowerSystems | 1.3.1 | Dassault Systèmes
ElectrifiedPowertrains | 1.3.2 | Dassault Systèmes
ElectroMechanicalDrives | 2.2.0 | Christian Kral
EMOTH | 1.4.1 | Anton Haumer
HanserModelica | 1.1.0 | Christian Kral
IBPSA | > 3.0.0 | IBPSA Project 1
KeywordIO | 0.9.0 | Christian Kral
Modelica_DeviceDrivers | 1.8.1 | DLR, ESI ITI, and Linköping University (PELAB)
Optimization | 2.2.4 | DLR
PhotoVoltaics | 1.6.0 | Christian Kral
PlanarMechanics | 1.4.1 | Dirk Zimmer
Testing | 1.3 | Dassault Systèmes
ThermalSystems | 1.6.0 | TLK-Thermo GmbH
TIL | 3.9.0 | TLK-Thermo GmbH
TILMedia | 3.9.0 | TLK-Thermo GmbH
TSMedia | 1.6.0 | TLK-Thermo GmbH
VehicleInterfaces | 1.2.5 | Modelica Association
WindPowerPlants | 1.2.0 | Christian Kral

The following new libraries have been added:

Modelica.Clocked | This library can be used to precisely define and synchronize sampled data systems with different sampling rates. The library previously was available as separate package Modelica_Synchronous. (This library was developed by DLR in close cooperation with Dassault Systèmes Lund.)
Modelica.Electrical.Batteries | This library offers simple battery models. (This library was developed by Anton Haumer and Christian Kral.)

The following new components have been added to existing libraries:

Modelica.Blocks.Sources
SineVariableFrequencyAndAmplitude CosineVariableFrequencyAndAmplitude | Added signal sources with variable amplitude and frequency; sine and cosine waveforms are provided.
Sinc | Added signal source of `amplitude*sin(2*π*f*t)/(2*π*f*t)`.
Modelica.Electrical.Analog.Sources
SineVoltageVariableFrequencyAndAmplitude CosineVoltageVariableFrequencyAndAmplitude SineCurrentVariableFrequencyAndAmplitude CosineCurrentVariableFrequencyAndAmplitude | Added voltage and current sources with variable amplitude and frequency; sine and cosine waveforms are provided.
Modelica.Electrical.Machines.Sensors
SinCosResolver | Added resolver with two sine and two cosine tracks to be used in drive control applications.
Modelica.Electrical.Machines.Utilities
SwitchYDwithArc | Added wye delta switch with arc model and time delay between the two switching events.
Modelica.Electrical.PowerConverters
ACAC | Added single-phase and polyphase triac models (AC/AC converters).
Modelica.Magnetic.FluxTubes.Shapes.FixedShape
HollowCylinderCircumferentialFlux Toroid | Added circumferential flux models of hollow cylinder and toroid with circular cross section.
Magnetic.QuasiStatic.FluxTubes.Shapes.FixedShape
HollowCylinderCircumferentialFlux Toroid | Added circumferential flux models of hollow cylinder and toroid with circular cross section.
Modelica.Mechanics.MultiBody.Visualizers.Advanced
Vector | Added 3-dimensional animation for visualization of vector quantities (force, torque, etc.)
Modelica.Mechanics.Translational.Components
RollingResistance | Added resistance of a rolling wheel incorporating the inclination and rolling resistance coefficient.
Vehicle | Added simple vehicle model considering mass and inertia, drag and rolling resistance, inclination resistance.
Modelica.Math
BooleanVectors.andTrue | Similar to `allTrue`, but return `true` on empty input vector.
Matrices.LAPACK.dgeqp3 | Compute the QR factorization with column pivoting of square or rectangular matrix.
Random.Utilities.automaticLocalSeed | Create an automatic local seed from the instance name.

The following existing components have been improved in a backward compatible way:

Modelica.Blocks.Sources
CombiTimeTable | Added second derivative and modified Akima interpolation.
Modelica.Blocks.Tables
CombiTable1Ds CombiTable1Dv | Added second derivatives and modified Akima interpolation.
CombiTable2Ds CombiTable2Dv | Added second derivatives.
Modelica.Electrical.Analog.Basic
Gyrator | Serves as generalized gyrator model as IdealGyrator was removed.
Modelica.Electrical.Analog.Ideal
IdealizedOpAmpLimited | Added homotopy to operational amplifier.
Modelica.Electrical.Semiconductors
NPN PNP | Added optional substrate connector.

The following existing components have been changed in a non-backward compatible way:

Modelica.Blocks
Nonlinear.Limiter Nonlinear.VariableLimiter | The superfluous parameter `limitsAtInit` has been removed.
Continuous.PID | The initialization option `initType` = `InitPID.DoNotUse_InitialIntegratorState` to only initialize the integrator state has been removed. This option has been converted to both initialize the integrator state and the derivative state, i.e., `initType` = `Init.InitialState`.
Continuous.LimPID | The superfluous parameter `limitsAtInit` has been removed. The initialization option `initType` = `InitPID.DoNotUse_InitialIntegratorState` to only initialize the integrator state has been removed. This option has been converted to both initialize the integrator state and the derivative state, i.e., `initType` = `Init.InitialState`.
Nonlinear.DeadZone | The superfluous parameter `deadZoneAtInit` has been removed.
Interfaces.PartialNoise Noise.UniformNoise Noise.NormalNoise Noise.TruncatedNormalNoise Noise.BandLimitedWhiteNoise | As a side-effect of the updated computation in Modelica.Math.Random.Utilities.automaticLocalSeed the `localSeed` parameter is computed differently if `useAutomaticLocalSeed` is set to true.
Types.InitPID | The enumeration type has been converted to `Types.Init` with exception of the alternative `InitPID.DoNotUse_InitialIntegratorState`, that was converted to `Init.InitialState` leading to a different initialization behaviour.
Modelica.Electrical.Machines.Utilities
SwitchYD | The IdealCommutingSwitch is replaced by an IdealOpeningSwitch and an IdealClosingSwitch to allow a time delay between the two switching actions.
Modelica.Electrical.Spice3
Internal.MOS2 Semiconductors.M_NMOS2 Semiconductors.M_PMOS2 | The final parameter `vp` has been removed. The obsolete variables `cc_obsolete`, `icqmGB`, `icqmGS`, `icqmGD`, `MOScapgd`, `MOScapgs`, `MOScapgb`, `qm` and `vDS` have been removed.
Modelica.Magnetic.QuasiStatic.FundamentalWave.Utilities
SwitchYD | The IdealCommutingSwitch is replaced by an IdealOpeningSwitch and an IdealClosingSwitch to allow a time delay between the two switching actions.
Modelica.Mechanics.MultiBody.Forces
WorldForce | The parameters `diameter` and `N_to_m` have been removed.
WorldTorque | The parameters `diameter` and `Nm_to_m` have been removed.
WorldForceAndTorque | The parameters `forceDiameter`, `torqueDiameter`, `N_to_m`, and `Nm_to_m` have been removed.
Force | The parameter `N_to_m` has been removed.
Torque | The parameter `Nm_to_m` has been removed.
ForceAndTorque | The parameters `N_to_m` and `Nm_to_m` have been removed.
Modelica.Mechanics.MultiBody.Joints
Prismatic | The superfluous constant `s_offset` has been removed.
Revolute | The superfluous constant `phi_offset` has been removed.
FreeMotion FreeMotionScalarInit | The parameter `arrowDiameter` has been removed.
Modelica.Mechanics.MultiBody.Parts
Body | The superfluous parameter `z_a_start` has been removed.
Modelica.Mechanics.MultiBody.Sensors
AbsoluteSensor RelativeSensor Distance | The parameter `arrowDiameter` has been removed.
CutForce | The parameters `forceDiameter` and `N_to_m` have been removed.
CutForce | The parameters `torqueDiameter` and `Nm_to_m` have been removed.
CutForceAndTorque | The parameters `forceDiameter`, `torqueDiameter`, `N_to_m`, and `Nm_to_m` have been removed.
Modelica.Mechanics.MultiBody.Visualizers
Advanced.Arrow Advanced.DoubleArrow FixedArrow SignalArrow | The parameter `diameter` has been removed.
Modelica.Fluid.Machines
PartialPump | The superfluous parameter `show_NPSHa` has been removed.
Modelica.Thermal.HeatTransfer
Fahrenheit.FromKelvin Rankine.FromKelvin Rankine.ToKelvin | The superfluous parameter `n` has been removed.

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

Modelica.Blocks.Math
Pythagoras | The case with negative `y2` was not correctly considered if `u1IsHypotenuse` is `true`. This has been corrected.
Modelica.Electrical.Semiconductors
Diode | Fixed unit error in current equations.
Modelica.Electrical.Spice3.Additionals
poly | The case with one coefficient and one variable was not correctly considered. This has been corrected.
Modelica.Fluid.Dissipation.PressureLoss.General
dp_volumeFlowRate_DP dp_volumeFlowRate_MFLOW | The mass flow rate was not correctly computed if the pressure drop is a linear function of the volume flow rate. This has been corrected.
Modelica.Media.Air.MoistAir
density_derX s_pTX s_pTX_der | The calculation was wrong. This has been corrected.
Modelica.Media.Air.ReferenceAir.Air_Base
BaseProperties | The unit of the specific gas constant `R_s` was not correctly considered. This has been corrected.
Modelica.Media.IdealGases.Common.Functions
s0_Tlow_der | The calculation was wrong. This has been corrected.
Modelica.Media.IdealGases.Common.MixtureGasNasa
T_hX | The function inputs `exclEnthForm`, `refChoice` and `h_off` were not considered. This has been corrected.
Modelica.Media.Incompressible.TableBased
T_ph | The pressure negligence was not considered. This has been corrected.
Modelica.Media.R134a.R134a_ph
setState_pTX | Only applicable in one-phase regime: The Newton iteration for the calculation of the density may possibly converge to the wrong root. This has been improved.
setState_dTX setState_psX | The calculation was wrong in two-phase regime. This has been corrected.
Modelica.Utilities.System
getTime | The month and year was only correctly returned if the implementing source file (ModelicaInternal.c) was compiled for Windows OS. This has been corrected.

Generated at 2020-06-04T16:16:44Z by OpenModelica 1.16.0~dev-371-geb234c0