# ReleaseNotes.Version_4_1_0

## Information

Version 4.1.0 is backward compatible to version 4.0.0. This means, there is no need to convert user models, because no renaming or moving has been done on the library. Please note: simulation results might be affected by necessary changes and bug fixes that were applied since the 4.0.0 release, see below for more details.

Short overview:

- 17 new components (e.g. Blocks for recording of min and max of a signal)
- 12 improved components (e.g. tables can now read CSV)
- 18 potentially non-backwards-compatible changes (especially Constants.inf, Constants.small, Constants.eps)
- 26 bug fixes, which may cause the simulation results to change for the better
- 3 models marked as obsolete
- This version is based on the recent Modelica language standard version 3.6.
- About 554 issues (including 387 pull requests) have been addressed for this release.

The following libraries, that were previously using version Modelica 4.0.0, were tested successfully with version 4.1.0 without any modification, using Dymola 2025x Refresh 1 and/or OpenModelica 1.25.0 (alphabetical list):

- AviationSystems 1.6.2
- AviationSystems_Demos 1.6.2
- Battery 2.8.1
- BrushlessDCDrives 1.4.3
- Buildings 12.0.0 (LBL)
- CATIAMultiBody 2.0 (DS)
- ClaRa/ClaRaPlus 1.7.5 (TLK-Thermo)
- Claytex 2024.2
- ClaytexFluid 2024.2
- Cooling 1.5.4
- DassaultSystemes 1.14.0
- DriveControl
- DymolaModels 1.10.0
- ElectricPowerSystems 1.7.0
- ElectrifiedPowertrains 1.11.0
- EMOTH
- Engines 2024.2
- FlexibleBodies 2.4.0
- FluidDynamicsLib 2.18.0 (XRG)
- FluidPower 2024.2
- FTire 1.3.2
- Hydrogen 1.4.2
- Modelica_StateGraph2 2.1.0
- Modelica_DeviceDrivers 2.1
- FlightDynamics 1.0.4
- HanserModelica
- HumanComfortLib 2.18.0 (XRG)
- PhotoVoltaics
- PhotoVoltaics_TGM
- PlanarMechanics 1.6.0 (DLR)
- PneumaticSystems 1.7.2
- SDF 0.4.5
- TestingLib 1.10.0
- ThermalManagementDemos 1.2.1
- ThermodynamicsConnector 1.3.0
- ThermofluidStream 1.2.0 (DLR)
- TIL/TILMedia 2024.1 (TLK-Thermo)
- VehicleInterfaces 2.0.1
- VehicleDemos 2024.2
- VeSyMA 2024.2
- VeSyMA2EPTL 2024.2
- Visa2Base 1.17
- Visa2Paper 1.17
- Visa2Steam 1.17
- WindPower 1.1.5

The following new components have been added to existing libraries:

#### Modelica.Blocks.Logical
AssertCondition | This block is useful for applying asserts via graphical layer.
#### Modelica.Blocks.Math
Exponentiation | Performs general exponentiation.
SignalExtrema | This block calculates the `min` and the `max` of the input signal `u` and stores the time at which the last minimum or maximum was reached in the variables `t_min` and `t_max` respectively.
ContinuousSignalExtrema | This block detects positive and negative peaks of differentiable and non-differentiable input signals without sampling.
#### Modelica.Electrical.Analog.Lines
TLine | Lossless transmission line with characteristic impedance `Z0` and transmission delay `TD`.
#### Modelica.Electrical.Analog.Sources
LightningImpulse | Block that provides the simplified trajectory of an impulse (like the current of lightnings) as one of two approximation functions.
LightningImpulseCurrent | Lightning impulse current using either a double exponential function or a Heidler function
LightningImpulseVoltage | Lightning impulse voltage using either a double exponential function or a Heidler function
DCPowerSupply | This is a simple model of a DC power supply, as used in laboratories. It can only work in one quadrant.
#### Modelica.Electrical.Machines.Utilities
RotationalCoupling | Ideal stiff coupling: one device connected to the coupling is turning clockwise (looking at the shaft end), the other device connected to the coupling is turning counter-clockwise (looking at the shaft end). The torque at flange_b has the same magnitude as the torque at flange_a but opposite sign.
#### Modelica.Electrical.PowerConverters.DCDC
ChopperBuckBoost | This is a bidirectional buck / boost - converter with 2 transistors and 2 freewheeling diodes.
#### Modelica.Electrical.QuasiStatic.SinglePhase.Basic
Transformer | Models a quasistatic singlephase transformer using a two-port matrix.
#### Modelica.Electrical.QuasiStatic.SinglePhase.Sensors
CurrentRMSSensor | This sensor determines the continuous root mean square (RMS) value of a single-phase current system.
VoltageRMSSensor | This sensor determines the continuous root mean square (RMS) value of a single-phase voltage system.
#### Modelica.Mechanics.Rotational.Components
Coupling | This is a model of an ideal stiff coupling (face to face).
#### Modelica.Mechanics.Rotational.Sources
InverseSpeedDependentTorque | Model of inverse speed-dependent torque.
#### Modelica.Mechanics.Translational.Sources
InverseSpeedDependentForce | Model of inverse speed-dependent force.
#### Modelica.Units.SI
StoichiometricCoefficient | New SI unit type

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

#### Modelica.Blocks.Sources
CombiTimeTable | Added support of reading CSV files.
#### Modelica.Blocks.Tables
CombiTable1Ds CombiTable1Dv CombiTable2Ds CombiTable2Dv | Added support of reading CSV files.
#### Modelica.Electrical.PowerConverters.DCDC
HBridge | An enhanced distribution of the fire signals avoids a short circuit on the source, and enables an enhanced pwm algorithm.
Control.SignalPWM | The reference signal can be chosen between sawtooth and triangle, and the comparison between `dutyCycle` and reference signal is either applied common or separated for both fire ports.
#### Modelica.Mechanics.Rotational.Components
BearingFriction | The table interpolation in `tau_pos` utilizes the interpolation based on ExternalCombiTable1D.
LossyGear | The table interpolation in `lossTable` utilizes the interpolation based on ExternalCombiTable1D.
#### Modelica.Mechanics.Rotational.Sources
EddyCurrentTorque | Enhanced with optional influence of variable excitation.
#### Modelica.Mechanics.Translational.Components
SupportFriction | The table interpolation in `f_pos` utilizes the interpolation based on ExternalCombiTable1D.
#### Modelica.Mechanics.Translational.Sources
EddyCurrentForce | Enhanced with optional influence of variable excitation.

The following existing components have been changed in a non-backward compatible way, even though this is not expected in general to affect models using the library, except in very rare cases:

#### Modelica.Blocks
Discrete.Sampler Discrete.ZeroOrderHold | Fixed the start time of `ZeroOrderHold` and `Sampler`. Parameter `startTime` was implemented, but ignored.
Continuous.PID | Removed the `min` attribute of gain in Blocks.Continuous.LimPID
Math.ContinuousMean | Simplified the mean formula
Routing.Extractor | The block will now trigger an assert if `index` is out range, unless `allowOutOfRange` is set.
Sources.ContinuousClock | Updated to declare that the output is smooth
#### Modelica.Constants
inf small eps | Definitions changed to make them consistent with commonly accepted ones, see, e.g. Wikipedia. As a consequence, their tool-specific implementations in `ModelicaServices` may have changed compared to version 4.0.0. Tools may provide a compatibility flag to keep the old values.
#### Modelica.Fluid.Vessels
OpenTank | Assertion for empty tank to prevent singular energy balance
#### Modelica.Magnetic.FundamentalWave.BaseClasses
Machine | Internal used ports of the optional mechanical housing port and the optional thermal port is made `protected`
#### Modelica.Magnetic.QuasiStatic.FundamentalWave.BaseClasses
Machine | Internal used ports of the optional mechanical housing port and the optional thermal port is made `protected`
#### Modelica.Mechanics.MultiBody
World | The protected parameters `ndim`, `ndim2` and `ndim_pointGravity` have been removed.
#### Modelica.Mechanics.MultiBody.Forces
Spring | Propagation of lifted parameters in Spring's lineForce component made final.
#### Modelica.Mechanics.Rotational.Components
Brake Clutch OneWayClutch | The table interpolation in `mu_pos` utilizes the interpolation based on ExternalCombiTable1D. The public variable `mu0` was changed to a `protected final` parameter.
#### Modelica.Mechanics.Translational.Components
Brake | The table interpolation in `mu_pos` utilizes the interpolation based on ExternalCombiTable1D. The public variable `mu0` was changed to a `protected final` parameter.

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

#### Modelica.Blocks.Tables
CombiTable2Ds CombiTable2Dv | The derivatives for one-sided extrapolation by constant continuation (i.e., extrapolation=`Modelica.Blocks.Types.Extrapolation.HoldLastPoint`) returned a constant zero value. This has been corrected.
#### Modelica.ComplexBlocks.ComplexMath
TransferFunction | Fixed interpretation of coefficients of complex transfer function
#### Modelica.ComplexBlocks.Sources
ComplexRampPhasor | Simplify ComplexRampPhasor.
#### Modelica.Electrical.Batteries.Utilities
PulseSeries | Clarified usage of pause between pulses and between pulse series
#### Modelica.Electrical.Polyphase.Basic
Resistor Conductor VariableResistor VariableConductor | Propagate parameter `T` in `Resistor` and `Conductor`
#### Modelica.Electrical.PowerConverters.DCAC.Control
SVPWM | Corrected a bug in the equation
#### Modelica.Fluid.Dissipation.PressureLoss.General
dp_volumeFlowRate_MFLOW | The function now correctly computes the pressure loss in the linear case, i.e., `a = 0` and `b > 0`.
#### Modelica.Fluid.Fittings.GenericResistances
VolumeFlowRate | The model now correctly computes the pressure loss in the linear case, i.e., `a = 0` and `b > 0`.
#### Modelica.Magnetic.FluxTubes.Material.HysteresisTableData
M400_50A | The value of parameter `sigma` has been corrected.
#### Modelica.Magnetic.FluxTubes.Shapes.FixedShape
HollowCylinderAxialFlux HollowCylinderRadialFlux | Usage of parameter `alpha` (central angle) instead of pi without any choice Usage of parameter `alpha` (central angle) instead of pi without any choice
#### Modelica.Magnetic.QuasiStatic.FluxTubes.Shapes.FixedShape
HollowCylinderAxialFlux HollowCylinderRadialFlux | Propagated the angle `alpha` also in the calculation of `A` in `HollowCylinderRadialFlux`
#### Modelica.Mechanics.MultiBody.Frames.Quaternions
from_T | The calculation was not stable. This has been corrected.
#### Modelica.Mechanics.MultiBody.Sensors.Internal
BasicAbsoluteAngularVelocity | Corrected the error with `frame_resolve` math in `BasicAbsoluteAngularVelocity` sensor
#### Modelica.Fluid.Fittings.BaseClasses.QuadraticTurbulent.LossFactorData
sharpEdgedOrifice | Bug in `SharpEdgedOrifice` for Loss factors resolved
#### Modelica.Fluid.Utilities
regFun3 | The function produced wrong results in horizontal wall friction models. This is fixed.
#### Modelica.Media.Air.MoistAir.Utilities
spliceFunction spliceFunction_der | Refactor `spliceFunction_der`
#### Modelica.Media.Air.ReferenceMoistAir.Utilities
pd_pTX_der | Corrected the error in the function for computation of partial pressure derivative of steam
#### Modelica.Media.R134a.R134a_ph
dofpT | Changed code to ensure convergence to correct values throughout the entire p,T validity range
#### Modelica.Math
isPowerOf2 | Corrected the issue of wrong results for large inputs

The following models were declared as obsolete, thus to be preferably replaced with better, more general ones:

#### Modelica.Electrical.Analog.Lines
TLine1 TLine2 Tline3 | Replaced by generic `Tline` model with appropriate parametrization.