Comparison Summary

Modelica323 with alias name: Modelica 3.2.3 Modelica322 with alias name: Modelica 3.2.2
Version: 3.2.3 Version: 3.2.2
Version date: 2019-01-23 Version date: 2016-04-03


model Blocks.Examples.PID_Controller

Component
Modelica 3.2.3
Modelica 3.2.2
driveAngle
=1.570796326794897
=1.57
PI
limiter(u(start=0))




model Blocks.Examples.BusUsage_Utilities.Part

Component
Modelica 3.2.3
Modelica 3.2.2
booleanExpression
y=time >= 0.5
y=time > 0.5



block Blocks.Continuous.Integrator

Component
Modelica 3.2.3
Modelica 3.2.2
use_reset
Present

use_set
Present

reset
Present



set
Present



local_reset
Present

local_set
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
if use_reset then
equation
der(y) = k*u;
connect(reset, local_reset);
if use_set then
connect(set, local_set);
else
local_set = y_start;
end if;
when local_reset then
reinit(y, local_set);
end when;
else
local_reset = false;
local_set = 0;
end if;
der(y) = k*u;




block Blocks.Continuous.LimIntegrator

Component
Modelica 3.2.3
Modelica 3.2.2
use_reset
Present

use_set
Present

reset
Present



set
Present



local_reset
Present

local_set
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
if use_reset then
equation
if initial() and not limitsAtInit then
connect(reset, local_reset); der(y) = k*u;
if use_set then assert(y >= outMin - 0.001*abs(outMax-outMin) and y <= outMax + 0.001*abs(outMax-outMin),
"LimIntegrator: During initialization the limits have been ignored.\n"
+ "However, the result is that the output y is not within the required limits:\n"
+ " y = " + String(y) + ", outMin = " + String(outMin) + ", outMax = " + String(outMax));
connect(set, local_set); elseif strict then

der(y) = noEvent(if y < outMin and k*u < 0 or y > outMax and k*u > 0 then 0 else k*u);
else
local_set = y_start; der(y) = if y < outMin and k*u < 0 or y > outMax and k*u > 0 then 0 else k*u;
end if;
when local_reset then
reinit(y, if local_set < outMin then outMin elseif local_set > outMax then outMax else local_set);
end when;
else
local_reset = false;
local_set = 0;
end if;
if initial() and not limitsAtInit then
der(y) = k*u;
assert(y >= outMin - 0.001*abs(outMax-outMin) and y <= outMax + 0.001*abs(outMax-outMin),
            "LimIntegrator: During initialization the limits have been ignored.\n"
          + "However, the result is that the output y is not within the required limits:\n"
          + " y = " + String(y) + ", outMin = " + String(outMin) + ", outMax = " + String(outMax));
elseif strict then
der(y) = noEvent(if y < outMin and k*u < 0 or y > outMax and k*u > 0 then 0 else k*u);
else
der(y) = if y < outMin and k*u < 0 or y > outMax and k*u > 0 then 0 else k*u;
end if;




block Blocks.Continuous.LimPID

Component
Modelica 3.2.3
Modelica 3.2.2
limiter
homotopyType=homotopyType

withFeedForward
Present

kFF
Present

homotopyType
Present

u_ff
Present



FFzero
Present



addFF
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(I.y, addPID.u3);

connect(addPID.y, gainPID.u);
connect(gainPID.y, addSat.u2);
connect(gainPID.y, limiter.u);
connect(limiter.y, addSat.u1);
...
connect(Izero.y, addPID.u3);
connect(addPID.y, gainPID.u);
connect(addFF.y, limiter.u);
connect(gainPID.y, addFF.u1);
connect(FFzero.y, addFF.u2);
connect(addFF.u2, u_ff);
connect(addFF.y, addSat.u2);




block Blocks.Continuous.LowpassButterworth



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
for i in 1:m loop
polereal[i] = Modelica323.Math.cos(pi/2 + pi/n*(i - 0.5)); polereal[i] = cos(pi/2 + pi/n*(i - 0.5));
poleimag[i] = Modelica323.Math.sin(pi/2 + pi/n*(i - 0.5)); poleimag[i] = sin(pi/2 + pi/n*(i - 0.5));
w0[i] = (polereal[i]^2 + poleimag[i]^2)*w;
...



block Blocks.Interfaces.PartialNoise

Component
Modelica 3.2.3
Modelica 3.2.2
enableNoise
=globalSeed.enableNoise
=true



block Blocks.Math.Log

Component
Modelica 3.2.3
Modelica 3.2.2
base
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
y = Modelica323.Math.log(u)/Modelica323.Math.log(base); y = Modelica322.Math.log(u);



block Blocks.Math.RectangularToPolar

Component
Modelica 3.2.3
Modelica 3.2.2
y_arg
unit="rad"




block Blocks.Math.PolarToRectangular

Component
Modelica 3.2.3
Modelica 3.2.2
u_arg
unit="rad"




block Blocks.Math.ContinuousMean

Component
Modelica 3.2.3
Modelica 3.2.2
t_eps
min=100*Modelica323.Constants.eps
min=0.0



block Blocks.Math.Variance

Component
Modelica 3.2.3
Modelica 3.2.2
t_eps
min=100*Modelica323.Constants.eps
min=0.0



block Blocks.Math.StandardDeviation

Component
Modelica 3.2.3
Modelica 3.2.2
t_eps
min=100*Modelica323.Constants.eps
min=0.0



block Blocks.Math.Harmonic

Component
Modelica 3.2.3
Modelica 3.2.2
sin1
Blocks.Sources.Cosine
Blocks.Sources.Sine
y_arg
unit="rad"

useConjugateComplex
Present

gain
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(rectangularToPolar.y_abs, y_rms);

connect(rectangularToPolar.y_arg, y_arg);
connect(sin1.y, product1.u[1]);
...
connect(sin2.y, product2.u[2]);
connect(rectangularToPolar.y_arg, gain.u);
connect(gain.y, y_arg);




block Blocks.Nonlinear.Limiter

Component
Modelica 3.2.3
Modelica 3.2.2
homotopyType
Present

simplifiedExpr
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
assert(uMax >= uMin, "Limiter: Limits must be consistent. However, uMax (=" + String(uMax) +
                       ") < uMin (=" + String(uMin) + ")");
simplifiedExpr = (if homotopyType == Types.LimiterHomotopy.Linear then u
                    else if homotopyType == Types.LimiterHomotopy.UpperLimit then uMax
                    else if homotopyType == Types.LimiterHomotopy.LowerLimit then uMin
                    else 0);

if strict then
if homotopyType == Types.LimiterHomotopy.NoHomotopy then y = homotopy(actual = smooth(0, noEvent(if u > uMax then uMax else if u < uMin then uMin else u)), simplified=u);
y = smooth(0, noEvent(if u > uMax then uMax else if u < uMin then uMin else u));

else
y = homotopy(actual = smooth(0, noEvent(if u > uMax then uMax else if u < uMin then uMin else u)),
simplified=simplifiedExpr);
y = homotopy(actual = smooth(0,if u > uMax then uMax else if u < uMin then uMin else u), simplified=u);
end if;
else
if homotopyType == Types.LimiterHomotopy.NoHomotopy then
y = smooth(0,if u > uMax then uMax else if u < uMin then uMin else u);
else
y = homotopy(actual = smooth(0,if u > uMax then uMax else if u < uMin then uMin else u),
                       simplified=simplifiedExpr);
end if;
end if;




block Blocks.Nonlinear.VariableLimiter

Component
Modelica 3.2.3
Modelica 3.2.2
homotopyType
Present

ySimplified
Present

simplifiedExpr
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
assert(limit1 >= limit2, "Input signals are not consistent: limit1 < limit2");
simplifiedExpr = (if homotopyType == Types.VariableLimiterHomotopy.Linear then u
                    else if homotopyType == Types.VariableLimiterHomotopy.Fixed then ySimplified
                    else 0);

if strict then
if homotopyType == Types.VariableLimiterHomotopy.NoHomotopy then y = homotopy(actual = smooth(0, noEvent(if u > limit1 then limit1 else if u < limit2 then limit2 else u)), simplified=u);
y = smooth(0, noEvent(if u > limit1 then limit1 else if u < limit2 then limit2 else u));

else
y = homotopy(actual = smooth(0, noEvent(if u > limit1 then limit1 else if u < limit2 then limit2 else u)),
simplified=simplifiedExpr);
y = homotopy(actual = smooth(0,if u > limit1 then limit1 else if u < limit2 then limit2 else u), simplified=u);
end if;
else
if homotopyType == Types.VariableLimiterHomotopy.NoHomotopy then
y = smooth(0,if u > limit1 then limit1 else if u < limit2 then limit2 else u);
else
y = homotopy(actual = smooth(0,if u > limit1 then limit1 else if u < limit2 then limit2 else u),
                       simplified=simplifiedExpr);
end if;
end if;




block Blocks.Nonlinear.SlewRateLimiter

Component
Modelica 3.2.3
Modelica 3.2.2
Rising
Real
SIunits.DampingCoefficient
Falling
Real
SIunits.DampingCoefficient
initType
Present

y_start
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
if initType == Modelica323.Blocks.Types.Init.SteadyState then

y = u;
elseif initType == Modelica323.Blocks.Types.Init.InitialState or initType ==
  Modelica323.Blocks.Types.Init.InitialOutput then
y = y_start;
end if;

equation
  if strict then
der(y) = smooth(1, (if noEvent(val<Falling) then Falling else if noEvent(val>Rising) then Rising else val)); der(y) = smooth(1,noEvent(if val<Falling then Falling else if val>Rising then Rising else val));
else
...



block Blocks.Nonlinear.VariableDelay

Component
Modelica 3.2.3
Modelica 3.2.2
delayMax
SIunits.Duration
Real



block Blocks.Sources.Clock

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.Ramp

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.Sine

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.Cosine

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.ExpSine

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.Pulse

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.SawTooth

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.Trapezoid

Component
Modelica 3.2.3
Modelica 3.2.2
offset

Present
startTime

Present



block Blocks.Sources.KinematicPTP2



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
endTime = Tes;
motion_ref = time < endTime; motion_ref = time <= endTime;
for i in 1:nout loop
...



block Blocks.Sources.TimeTable

Component
Modelica 3.2.3
Modelica 3.2.2
shiftTime
Present

offset

Present
startTime

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
if noEvent(size(table, 1) > 1) then timeScaled := time/timeScale;
assert(not (table[1, 1] > 0.0 or table[1, 1] < 0.0), "The first point in time has to be set to 0, but is table[1,1] = " + String(table[1, 1]));
end if;

when {time >= pre(nextEvent),initial()} then
(a,b,nextEventScaled,last) = getInterpolationCoefficients(
table,
offset,
startTime/timeScale,
timeScaled,
last,
100*Modelica323.Constants.eps,
shiftTime/timeScale);
(a,b,nextEventScaled,last) = getInterpolationCoefficients(
table,
offset,
startTime/timeScale,
timeScaled,
last,
100*Modelica322.Constants.eps);
nextEvent = nextEventScaled*timeScale;
...
equation
assert(size(table, 1) > 0, "No table values defined.");
equation
y = a*timeScaled + b;
timeScaled = time/timeScale;
y = a*timeScaled + b;




block Blocks.Sources.CombiTimeTable

Component
Modelica 3.2.3
Modelica 3.2.2
t_min
=t_minScaled*timeScale


fixed=false
t_max
=t_maxScaled*timeScale


fixed=false
t_minScaled
=Internal.getTimeTableTmin(tableID)


fixed=false
t_maxScaled
=Internal.getTimeTableTmax(tableID)


fixed=false
tableID
parameter

=Modelica323.Blocks.Types.ExternalCombiTimeTable(if tableOnFile then tableName else "NoName", if tableOnFile and fileName <> "NoName" and not Modelica323.Utilities.Strings.isEmpty(fileName) then fileName else "NoName", table, startTime/timeScale, columns, smoothness, extrapolation, shiftTime/timeScale, if smoothness == Modelica323.Blocks.Types.Smoothness.LinearSegments then timeEvents elseif smoothness == Modelica323.Blocks.Types.Smoothness.ConstantSegments then Modelica323.Blocks.Types.TimeEvents.Always else Modelica323.Blocks.Types.TimeEvents.NoTimeEvents, if tableOnFile then verboseRead else false)
=Modelica322.Blocks.Types.ExternalCombiTimeTable(if tableOnFile then tableName else "NoName", if tableOnFile and fileName <> "NoName" and not Modelica322.Utilities.Strings.isEmpty(fileName) then fileName else "NoName", table, startTime/timeScale, columns, smoothness, extrapolation)
shiftTime
Present

timeEvents
Present

verboseExtrapolation
Present

tableOnFileRead

Present
DBL_MAX

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

initial algorithm

if tableOnFile then

tableOnFileRead = readTableData(tableID, false, verboseRead);
else
tableOnFileRead = 1.;
end if;
t_minScaled = getTableTimeTmin(tableID, tableOnFileRead);
t_maxScaled = getTableTimeTmax(tableID, tableOnFileRead);
t_min = t_minScaled*timeScale;
t_max = t_maxScaled*timeScale;

equation
  if tableOnFile then
assert(tableName <> "NoName",
        "tableOnFile = true and no table name given");
...
end if;
if verboseExtrapolation and (extrapolation == Modelica323.Blocks.Types.Extrapolation.LastTwoPoints
   or extrapolation == Modelica323.Blocks.Types.Extrapolation.HoldLastPoint)
   then
assert(noEvent(time >= t_min), "
Extrapolation warning: Time (=" + String(time) + ") must be greater or equal
than the minimum abscissa value t_min (=" + String(t_min) + ") defined in the table.
", level=AssertionLevel.warning);
assert(noEvent(time <= t_max), "
Extrapolation warning: Time (=" + String(time) + ") must be less or equal
than the maximum abscissa value t_max (=" + String(t_max) + ") defined in the table.
", level=AssertionLevel.warning);
end if;

timeScaled = time/timeScale;
when {time >= pre(nextTimeEvent), initial()} then
nextTimeEventScaled = Internal.getNextTimeEvent(tableID, timeScaled); nextTimeEventScaled = getNextTimeEvent(tableID, timeScaled, tableOnFileRead);
nextTimeEvent = if nextTimeEventScaled < Modelica323.Constants.inf then
nextTimeEventScaled*timeScale else Modelica323.Constants.inf;
if (nextTimeEventScaled < DBL_MAX) then

nextTimeEvent = nextTimeEventScaled*timeScale;
else
nextTimeEvent = DBL_MAX;
end if;
end when;
...
for i in 1:nout loop
y[i] = p_offset[i] + Internal.getTimeTableValueNoDer(tableID, i, timeScaled, nextTimeEventScaled, pre(nextTimeEventScaled)); y[i] = p_offset[i] + getTableValueNoDer(tableID, i, timeScaled, nextTimeEventScaled, pre(nextTimeEventScaled), tableOnFileRead);
end for;
...
for i in 1:nout loop
y[i] = p_offset[i] + Internal.getTimeTableValue(tableID, i, timeScaled, nextTimeEventScaled, pre(nextTimeEventScaled)); y[i] = p_offset[i] + getTableValue(tableID, i, timeScaled, nextTimeEventScaled, pre(nextTimeEventScaled), tableOnFileRead);
end for;
...



block Blocks.Sources.BooleanPulse

Component
Modelica 3.2.3
Modelica 3.2.2
pulseStart
Present

pulsStart

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
pulseStart = startTime; pulsStart = startTime;
equation
  when sample(startTime, period) then
pulseStart = time; pulsStart = time;
end when;
y = time >= pulseStart and time < pulseStart + Twidth; y = time >= pulsStart and time < pulsStart + Twidth;



block Blocks.Sources.BooleanTable

Component
Modelica 3.2.3
Modelica 3.2.2
extrapolation
Present

startTime
Present

shiftTime
Present

combiTimeTable
Present



realToBoolean
Present



nextTime

Present
index

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial algorithm
isValidTable(table); (index,nextTime,y) := getFirstIndex(table,time,startValue);
equation
assert(extrapolation
<> Modelica323.Blocks.Types.Extrapolation.LastTwoPoints,
"Unsuitable extrapolation setting.");
algorithm
connect(combiTimeTable.y[1], realToBoolean.u); when time >= pre(nextTime) and n > 0 then
connect(realToBoolean.y, y); if index < n then

index = index + 1;
nextTime = table[index];
y = not y;
elseif index == n then
index = index + 1;
y = not y;
end if;
end when;




block Blocks.Sources.IntegerTable

Component
Modelica 3.2.3
Modelica 3.2.2
extrapolation
Present

startTime
Present

shiftTime
Present

combiTimeTable
Present



realToInteger
Present



nextTime

Present
index

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial algorithm
isValidTable(table); (index,nextTime,y) := getFirstIndex(table, time);
equation
assert(n > 0, "No table values defined.");
equation
assert(size(table, 1) > 0, "No table values defined.");
assert(extrapolation <> Modelica323.Blocks.Types.Extrapolation.LastTwoPoints,
"Unsuitable extrapolation setting.");
when time >= pre(nextTime) then
connect(combiTimeTable.y[1], realToInteger.u); y = integer(table[pre(index), 2]);
connect(realToInteger.y, y); index = pre(index) + 1;

nextTime = if index <= n then table[index, 1] else pre(nextTime) - 1;
end when;



block Blocks.Tables.CombiTable1D

Component
Modelica 3.2.3
Modelica 3.2.2
tableID
parameter

=Modelica323.Blocks.Types.ExternalCombiTable1D(if tableOnFile then tableName else "NoName", if tableOnFile and fileName <> "NoName" and not Modelica323.Utilities.Strings.isEmpty(fileName) then fileName else "NoName", table, columns, smoothness, extrapolation, if tableOnFile then verboseRead else false)
=Modelica322.Blocks.Types.ExternalCombiTable1D(if tableOnFile then tableName else "NoName", if tableOnFile and fileName <> "NoName" and not Modelica322.Utilities.Strings.isEmpty(fileName) then fileName else "NoName", table, columns, smoothness)
extrapolation
Present

verboseExtrapolation
Present

u_min
Present

u_max
Present

tableOnFileRead

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

initial algorithm

if tableOnFile then

tableOnFileRead = readTableData(tableID, false, verboseRead);
else
tableOnFileRead = 1.;
end if;

equation
  if tableOnFile then
assert(tableName <> "NoName",
        "tableOnFile = true and no table name given");
...
end if;
if verboseExtrapolation and (extrapolation == Modelica323.Blocks.Types.Extrapolation.LastTwoPoints
   or extrapolation == Modelica323.Blocks.Types.Extrapolation.HoldLastPoint)
   then
for i in 1:n loop
assert(noEvent(u[i] >= u_min), "
Extrapolation warning: The value u[" + String(i) +"] (=" + String(u[i]) + ") must be greater or equal
than the minimum abscissa value u_min (=" + String(u_min) + ") defined in the table.
", level=AssertionLevel.warning);
assert(noEvent(u[i] <= u_max), "
Extrapolation warning: The value u[" + String(i) +"] (=" + String(u[i]) + ") must be less or equal
than the maximum abscissa value u_max (=" + String(u_max) + ") defined in the table.
", level=AssertionLevel.warning);
end for;
end if;

if smoothness == Modelica323.Blocks.Types.Smoothness.ConstantSegments then
for i in 1:n loop
y[i] = Internal.getTable1DValueNoDer(tableID, i, u[i]); y[i] = getTableValueNoDer(tableID, i, u[i], tableOnFileRead);
end for;
...
for i in 1:n loop
y[i] = Internal.getTable1DValue(tableID, i, u[i]); y[i] = getTableValue(tableID, i, u[i], tableOnFileRead);
end for;
...



block Blocks.Tables.CombiTable1Ds

Component
Modelica 3.2.3
Modelica 3.2.2
tableID
parameter

=Modelica323.Blocks.Types.ExternalCombiTable1D(if tableOnFile then tableName else "NoName", if tableOnFile and fileName <> "NoName" and not Modelica323.Utilities.Strings.isEmpty(fileName) then fileName else "NoName", table, columns, smoothness, extrapolation, if tableOnFile then verboseRead else false)
=Modelica322.Blocks.Types.ExternalCombiTable1D(if tableOnFile then tableName else "NoName", if tableOnFile and fileName <> "NoName" and not Modelica322.Utilities.Strings.isEmpty(fileName) then fileName else "NoName", table, columns, smoothness)
extrapolation
Present

verboseExtrapolation
Present

u_min
Present

u_max
Present

tableOnFileRead

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

initial algorithm

if tableOnFile then

tableOnFileRead = readTableData(tableID, false, verboseRead);
else
tableOnFileRead = 1.;
end if;

equation
  if tableOnFile then
assert(tableName <> "NoName",
        "tableOnFile = true and no table name given");
...
end if;
if verboseExtrapolation and (extrapolation == Modelica323.Blocks.Types.Extrapolation.LastTwoPoints
   or extrapolation == Modelica323.Blocks.Types.Extrapolation.HoldLastPoint)
   then
assert(noEvent(u >= u_min), "
Extrapolation warning: The value u (=" + String(u) + ") must be greater or equal
than the minimum abscissa value u_min (=" + String(u_min) + ") defined in the table.
", level=AssertionLevel.warning);
assert(noEvent(u <= u_max), "
Extrapolation warning: The value u (=" + String(u) + ") must be less or equal
than the maximum abscissa value u_max (=" + String(u_max) + ") defined in the table.
", level=AssertionLevel.warning);
end if;

if smoothness == Modelica323.Blocks.Types.Smoothness.ConstantSegments then
for i in 1:nout loop
y[i] = Internal.getTable1DValueNoDer(tableID, i, u); y[i] = getTableValueNoDer(tableID, i, u, tableOnFileRead);
end for;
...
for i in 1:nout loop
y[i] = Internal.getTable1DValue(tableID, i, u); y[i] = getTableValue(tableID, i, u, tableOnFileRead);
end for;
...



block Blocks.Tables.CombiTable2D

Component
Modelica 3.2.3
Modelica 3.2.2
tableOnFile

Present
table

Present
tableName

Present
fileName

Present
verboseRead

Present
smoothness

Present
tableID

Present
tableOnFileRead

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
if verboseExtrapolation and (extrapolation == Modelica323.Blocks.Types.Extrapolation.LastTwoPoints
or extrapolation == Modelica323.Blocks.Types.Extrapolation.HoldLastPoint)
then
initial algorithm
assert(noEvent(u1 >= u_min[1]), "
Extrapolation warning: The value u1 (=" + String(u1) + ") must be greater or equal
than the minimum abscissa value u_min[1] (=" + String(u_min[1]) + ") defined in the table.
", level=AssertionLevel.warning);
if tableOnFile then
assert(noEvent(u1 <= u_max[1]), "
Extrapolation warning: The value u1
(=" + String(u1) + ") must be less or equal
than the maximum abscissa value u_max[1] (=" + String(u_max[1]) + ") defined in the table.
", level=AssertionLevel.warning);
tableOnFileRead = readTableData(tableID, false, verboseRead);
assert(noEvent(u2 >= u_min[2]), "
Extrapolation warning: The value u2 (=" + String(u2) + ") must be greater or equal
than the minimum abscissa value u_min[2] (=" + String(u_min[2]) + ") defined in the table.
", level=AssertionLevel.warning);
assert(noEvent(u2 <= u_max[2]), "
Extrapolation warning: The value u2 (=" + String(u2) + ") must be less or equal
than the maximum abscissa value u_max[2] (=" + String(u_max[2]) + ") defined in the table.
", level=AssertionLevel.warning);
end if;
if smoothness == Modelica323.Blocks.Types.Smoothness.ConstantSegments then
y = Internal.getTable2DValueNoDer(tableID, u1, u2);

else
y = Internal.getTable2DValue(tableID, u1, u2); tableOnFileRead = 1.;
end if;


equation
  if tableOnFile then
assert(tableName <> "NoName",
        "tableOnFile = true and no table name given");
else
assert(size(table, 1) > 0 and size(table, 2) > 0,
        "tableOnFile = false and parameter table is an empty matrix");
end if;
if smoothness == Modelica322.Blocks.Types.Smoothness.ConstantSegments then
y = getTableValueNoDer(tableID, u1, u2, tableOnFileRead);
else
y = getTableValue(tableID, u1, u2, tableOnFileRead);
end if;



block ComplexBlocks.Interfaces.ComplexSI2SO

Component
Modelica 3.2.3
Modelica 3.2.2
u1Internal
=(if useConjugateInput1 then Modelica323.ComplexMath.conj(u1) else u1)
=(if useConjugateInput1 then Modelica322.ComplexMath.conj(u1) else u2)



block ComplexBlocks.ComplexMath.Feedback



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
y = (if useConjugateInput1 then Modelica323.ComplexMath.conj(u1) else u1) - (
if useConjugateInput2 then Modelica323.ComplexMath.conj(u2) else u2);
y = (if useConjugateInput1 then Modelica322.ComplexMath.conj(u1) else u1) - (
if useConjugateInput1 then Modelica322.ComplexMath.conj(u2) else u2);



block ComplexBlocks.ComplexMath.PolarToComplex

Component
Modelica 3.2.3
Modelica 3.2.2
phi
unit="rad"




block ComplexBlocks.ComplexMath.ComplexToPolar

Component
Modelica 3.2.3
Modelica 3.2.2
phi
unit="rad"




block ComplexBlocks.Sources.ComplexRotatingPhasor

Component
Modelica 3.2.3
Modelica 3.2.2
phi
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
phi = w*time + phi0; y = magnitude*Modelica322.ComplexMath.exp(Complex(0, w*time + phi0));
y = magnitude*Modelica323.ComplexMath.exp(Complex(0, phi));




block ComplexBlocks.Sources.LogFrequencySweep

Component
Modelica 3.2.3
Modelica 3.2.2
wMin
final min=eps


min=eps
wMax
final min=eps


min=(1 + eps)*wMin
startTime
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
y = if time < startTime then wMin else
if time < (startTime + max(duration,eps)) then
10^(log10(wMin) + (log10(wMax) - log10(wMin))*min(1, (time-startTime)/max(duration,eps)))
else
wMax;
y = 10^(log10(wMin) + (log10(wMax) - log10(wMin))*min(1, time/max(duration,eps)));



model StateGraph.Examples.ExecutionPaths

Component
Modelica 3.2.3
Modelica 3.2.2
setCondition
y=time >= 7
y=time > 7



model StateGraph.Examples.ShowCompositeStep

Component
Modelica 3.2.3
Modelica 3.2.2
setCondition
y=time >= 7
y=time > 7



model StateGraph.Examples.Utilities.CompositeStep1

Component
Modelica 3.2.3
Modelica 3.2.2
transition1
condition=time >= 8
condition=time > 8
transition2
condition=time >= 4
condition=time > 4



block StateGraph.Interfaces.PartialStep

Component
Modelica 3.2.3
Modelica 3.2.2
outerStatePort
localActive=localActive



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
end when;

outerStatePort.subgraphStatePort.activeSteps = if localActive then 1.0 else 0.0;
for i in 1:nIn loop
...



model StateGraph.PartialCompositeStep

Component
Modelica 3.2.3
Modelica 3.2.2
outerState
active=active



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
  connect(outerState.subgraphStatePort, stateGraphRoot.subgraphStatePort);

outerState.subgraphStatePort.activeSteps = if active then 1.0 else 0.0;
activeSteps = -integer(innerState.stateGraphRoot.subgraphStatePort.activeSteps);
...



model Electrical.Analog.Examples.CauerLowPassSC

Component
Modelica 3.2.3
Modelica 3.2.2
R4
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rn
R5
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rn
R8
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rn
R9
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rn
R1
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp
R2
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp
R3
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp
Rp1
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp
R7
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp
R10
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp
R11
Electrical.Analog.Examples.Utilities.SwitchedCapacitor
Electrical.Analog.Examples.CauerLowPassSC.Rp


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(V.p, Ground1.p);
connect(R4.n, n5); connect(R4.n2, n5);
connect(Op1.out, R4.p); connect(Op1.out, R4.n1);
connect(R5.p, p1); connect(R5.n1, p1);
connect(R5.n, n5); connect(R5.n2, n5);
connect(p3, R8.p); connect(p3, R8.n1);
connect(R8.n, n9); connect(R8.n2, n9);
connect(Op3.out, R9.p); connect(Op3.out, R9.n1);
connect(R9.n, n10); connect(R9.n2, n10);
connect(R1.p, V.n); connect(R1.n1, V.n);
connect(R1.n, n1); connect(R1.n2, n1);
connect(R2.n, n2); connect(R2.n2, n2);
connect(R2.p, n6); connect(R2.n1, n6);
connect(R3.p, n3); connect(R3.n1, n3);
connect(R3.n, n4); connect(R3.n2, n4);
connect(Rp1.n, n8); connect(Rp1.n2, n8);
connect(Rp1.p, n11); connect(Rp1.n1, n11);
connect(Op2.out, R7.p); connect(Op2.out, R7.n1);
connect(R7.n, n7); connect(R7.n2, n7);
connect(R10.p, Op4.out); connect(R10.n1, Op4.out);
connect(R10.n, n14); connect(R10.n2, n14);
connect(R11.n, n12); connect(R11.n2, n12);
connect(R11.p, p4); connect(R11.n1, p4);



model Electrical.Analog.Examples.CharacteristicIdealDiodes

Component
Modelica 3.2.3
Modelica 3.2.2
R1
R=1e-3
R=1.e-3
R2
R=1e-3
R=1.e-3
R3
R=1e-3
R=1.e-3



model Electrical.Analog.Examples.CharacteristicThyristors

Component
Modelica 3.2.3
Modelica 3.2.2
R3
R=1e-3
R=1.e-3
R1
R=1e-3
R=1.e-3
R2
R=1e-3
R=1.e-3
R4
R=1e-3
R=1.e-3



model Electrical.Analog.Examples.HeatingMOSInverter

Component
Modelica 3.2.3
Modelica 3.2.2
V
duration=1e-2
duration=1.e-2



model Electrical.Analog.Examples.HeatingNPN_OrGate

Component
Modelica 3.2.3
Modelica 3.2.2
T1
Is=1e-14
Is=1.e-14
Gbc=1e-12
Gbc=1.e-12
Gbe=1e-12
Gbe=1.e-12
T2
Is=1e-14
Is=1.e-14
Gbc=1e-12
Gbc=1.e-12
Gbe=1e-12
Gbe=1.e-12



model Electrical.Analog.Examples.NandGate

Component
Modelica 3.2.3
Modelica 3.2.2
VIN1
falling=1e-9
falling=1.e-9
VIN2
falling=1e-9
falling=1.e-9



model Electrical.Analog.Examples.OpAmps.InvertingSchmittTrigger

Component
Modelica 3.2.3
Modelica 3.2.2
opAmp
homotopyType=Modelica323.Blocks.Types.LimiterHomotopy.LowerLimit




model Electrical.Analog.Examples.OpAmps.SchmittTrigger

Component
Modelica 3.2.3
Modelica 3.2.2
opAmp
homotopyType=Modelica323.Blocks.Types.LimiterHomotopy.UpperLimit




model Electrical.Analog.Examples.OpAmps.SignalGenerator

Component
Modelica 3.2.3
Modelica 3.2.2
Vns
=-Vps
=-15
opAmp1
strict=false

homotopyType=Modelica323.Blocks.Types.LimiterHomotopy.UpperLimit

opAmp2
strict=false




model Electrical.Analog.Basic.SaturatingInductor



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
(Lnom - Linf)/(Lzer - Linf)=Ipar/Inom*(pi/2 - atan(Ipar/Inom)); (Lnom - Linf) = (Lzer - Linf)*Ipar/Inom*(Modelica322.Constants.pi/2 -
Modelica322.Math.atan(Ipar/Inom));
equation
assert(Lzer > Lnom*(1 + eps), "Lzer (= " + String(Lzer) +
") has to be >
Lnom (= " + String(Lnom) + ")");
equation
assert(Lzer
> Lnom + Modelica322.Constants.eps, "Lzer (= " + String(Lzer) +
") has to be > Lnom (= " + String(Lnom) + ")");
assert(Linf < Lnom*(1 - eps), "Linf (= " + String(Linf) +
") has to be <
Lnom (= " + String(Lnom) + ")");
assert(Linf < Lnom - Modelica322.Constants.eps, "Linf (= " + String(Linf) +
") has to be < Lnom (= " + String(Lnom) + ")");
Lact = Linf + (Lzer - Linf)*(if noEvent(abs(i)/Ipar<small) then 1 else atan(i/Ipar)/(i/Ipar)); (Lact - Linf)*i/Ipar = (Lzer - Linf)*noEvent(Modelica322.Math.atan(i/Ipar));
Psi = Linf*i + (Lzer - Linf)*Ipar*atan(i/Ipar); Psi = Lact*i;
v = der(Psi);



model Electrical.Analog.Basic.M_Transformer

Component
Modelica 3.2.3
Modelica 3.2.2
i
each fixed=true


fixed=true



model Electrical.Analog.Basic.EMF

Component
Modelica 3.2.3
Modelica 3.2.2
internalSupport
tau=-tau
tau=-flange.tau
tau
Present

tauElectrical
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
k*w = v;
tau = -k*i; flange.tau = -k*i;
tauElectrical = -tau;
tau = flange.tau;

connect(internalSupport.flange, support);
...



model Electrical.Analog.Basic.TranslationalEMF

Component
Modelica 3.2.3
Modelica 3.2.2
internalSupport
f=-f
f=-flange.f
f
Present

fElectrical
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
k*vel = v;
f = -k*i; flange.f = -k*i;
fElectrical = -f;
f = flange.f;

connect(internalSupport.flange, support);
...



model Electrical.Analog.Basic.OpAmpDetailed



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
i_4 = I2 + v_4/Rcm;
der(q_fr1) = 2.0*pi*fp2*(v_in - q_fr1); der(q_fr1) = 2.0*Pi*fp2*(v_in - q_fr1);
q_fr2 + (1.0/(2.0*pi*fp3))*der(q_fr2) = q_fr1 + (1.0/(2.0*pi*fz))*der(q_fr1); q_fr2 + (1.0/(2.0*Pi*fp3))*der(q_fr2) = q_fr1 + (1.0/(2.0*Pi*fz))*der(q_fr1);
der(q_fr3) = 2.0*pi*fp4*(q_fr2 - q_fr3); der(q_fr3) = 2.0*Pi*fp4*(q_fr2 - q_fr3);
q_sum = Avd0_val*q_fr3 + Avcm_val*(v_3 + v_4);
q_sum_help = FCNq_sum_limit(
      q_sum,
      q_fp1,
      v_pos,
      v_neg,
      vcp_abs,
      vcm_abs);
der(q_fp1) = 2.0*pi*fp1*(q_sum_help - q_fp1); der(q_fp1) = 2.0*Pi*fp1*(q_sum_help - q_fp1);
der(x) = (q_fp1 - v_source)/Ts;
...



model Electrical.Analog.Ideal.IdealCommutingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.Analog.Ideal.IdealIntermediateSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.Analog.Ideal.ControlledIdealCommutingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.Analog.Ideal.ControlledIdealIntermediateSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.Analog.Ideal.IdealOpAmpLimited

Component
Modelica 3.2.3
Modelica 3.2.2
s
start=0




model Electrical.Analog.Ideal.IdealizedOpAmpLimted

Component
Modelica 3.2.3
Modelica 3.2.2
strict
Present

homotopyType
Present

simplifiedExpr
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
in_n.i = 0;
simplifiedExpr = (if homotopyType == Modelica323.Blocks.Types.LimiterHomotopy.Linear
then V0*v_in else if homotopyType == Modelica323.Blocks.Types.LimiterHomotopy.UpperLimit
then vps else if homotopyType == Modelica323.Blocks.Types.LimiterHomotopy.LowerLimit
then vns else 0);
v_out = smooth(0, min(Vps, max(Vns, V0*v_in)));
if strict then
if homotopyType == Modelica323.Blocks.Types.LimiterHomotopy.NoHomotopy then
v_out = smooth(0, noEvent(if V0*v_in>vps then vps else if V0*v_in<vns then vns else V0*v_in));
else
v_out = homotopy(actual = smooth(0, noEvent(if V0*v_in>vps then vps else if V0*v_in<vns then vns else V0*v_in)),
                           simplified=simplifiedExpr);
end if;
else
if homotopyType == Modelica323.Blocks.Types.LimiterHomotopy.NoHomotopy then
v_out = smooth(0, if V0*v_in>vps then vps else if V0*v_in<vns then vns else V0*v_in);
else
v_out = homotopy(actual = smooth(0, if V0*v_in>vps then vps else if V0*v_in<vns then vns else V0*v_in),
                           simplified=simplifiedExpr);
end if;
end if;




model Electrical.Analog.Ideal.IdealTriac

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.e-5
Goff
=1e-5
=1.e-5



model Electrical.Analog.Ideal.AD_Converter



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial algorithm
initial equation
for i in 1:N loop
...



connector Electrical.Analog.Interfaces.Pin

Component
Modelica 3.2.3
Modelica 3.2.2
v
SIunits.ElectricPotential
SIunits.Voltage



connector Electrical.Analog.Interfaces.PositivePin

Component
Modelica 3.2.3
Modelica 3.2.2
v
SIunits.ElectricPotential
SIunits.Voltage



connector Electrical.Analog.Interfaces.NegativePin

Component
Modelica 3.2.3
Modelica 3.2.2
v
SIunits.ElectricPotential
SIunits.Voltage



model Electrical.Analog.Interfaces.ConditionalHeatPort

Component
Modelica 3.2.3
Modelica 3.2.2
heatPort
final T=T_heatPort

final Q_flow=-LossPower


T(start=T) = T_heatPort

Q_flow=-LossPower



model Electrical.Analog.Interfaces.IdealSemiconductor

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.Analog.Interfaces.IdealSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.Analog.Lines.OLine

Component
Modelica 3.2.3
Modelica 3.2.2
R
R=rm
R=fill(r*length/(N + 1), N + 1)
L
L=lm
L=fill(l*length/(N + 1), N + 1)
rm
Present

lm
Present




model Electrical.Analog.Lines.M_OLine

Component
Modelica 3.2.3
Modelica 3.2.2
g
={8.05e-6,3.42e-5,2.91e-5,1.76e-6,9.16e-6,7.12e-6,2.43e-5,5.93e-6,4.19e-5,6.64e-6}
={8.05e-6,3.42e-5,2 - 91e-5,1.76e-6,9.16e-6,7.12e-6,2.43e-5,5.93e-6,4.19e-5,6.64e-6}



model Electrical.Analog.Lines.ULine

Component
Modelica 3.2.3
Modelica 3.2.2
R
R=rm
R=fill(r*length/(N + 1), N + 1)
rm
Present




model Electrical.Analog.Semiconductors.Diode

Component
Modelica 3.2.3
Modelica 3.2.2
Ids
=1e-6
=1.e-6
R
=1e8
=1.e8


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
i = smooth(1, Ids*(exlin(v/Vt, Maxexp) - 1) + v/R); i = smooth(1,(if (v/Vt > Maxexp) then Ids*(exp(Maxexp)*(1 + v/Vt - Maxexp) - 1) +
v/R else Ids*(exp(v/Vt) - 1) + v/R));
LossPower = v*i;



model Electrical.Analog.Semiconductors.Diode2



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
LossPower=i*v;
assert(Bv>0, "Bv must be greater than zero"); assert(Bv>0, "Bv must be greater than zero", AssertionLevel.error);
assert(Vf>0, "Vf must be greater than zero"); assert(Vf>0, "Vf must be greater than zero", AssertionLevel.error);
assert(Vt>0, "Vt must be greater than zero"); assert(Vt>0, "Vt must be greater than zero", AssertionLevel.error);



model Electrical.Analog.Semiconductors.ZDiode

Component
Modelica 3.2.3
Modelica 3.2.2
Ids
=1e-6
=1.e-6
R
=1e8
=1.e8
maxexp

Present



model Electrical.Analog.Semiconductors.PMOS

Component
Modelica 3.2.3
Modelica 3.2.2
RDS
=1e7
=1.e+7


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
assert(W + dW > 0, "PMOS: Effective width must be positive");
gds = if (RDS < 1e-20 and RDS > -1e-20) then 1e20 else 1/RDS; gds = if (RDS < 1.e-20 and RDS > -1.e-20) then 1.e20 else 1/RDS;
v = Beta*(W + dW)/(L + dL);
...



model Electrical.Analog.Semiconductors.NMOS

Component
Modelica 3.2.3
Modelica 3.2.2
RDS
=1e7
=1.e+7


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
assert(W + dW > 0, "NMOS: Effective width must be positive");
gds = if (RDS < 1e-20 and RDS > -1e-20) then 1e20 else 1/RDS; gds = if (RDS < 1.e-20 and RDS > -1.e-20) then 1.e20 else 1/RDS;
v = Beta*(W + dW)/(L + dL);
...



model Electrical.Analog.Semiconductors.NPN

Component
Modelica 3.2.3
Modelica 3.2.2
Is
=1e-16
=1.e-16
vbc
SIunits.Voltage
Real

protected
vbe
SIunits.Voltage
Real

protected
qbk

protected
ibc
SIunits.Current
Real

protected
ibe
SIunits.Current
Real

protected
cbc
SIunits.Capacitance
Real

protected
cbe
SIunits.Capacitance
Real

protected
Capcje
SIunits.Capacitance
Real

protected
Capcjc
SIunits.Capacitance
Real

protected
ExMin

Present
ExMax

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
vbc = B.v - C.v;
equation
ExMin = exp(EMin);

ExMax = exp(EMax);
vbc = B.v - C.v;
vbe = B.v - E.v;
qbk = 1 - vbc*Vak;
ibc = smooth(1, Is*(exlin2(vbc/Vt, EMin, EMax) - 1) + vbc*Gbc); ibc = smooth(1,if (vbc/Vt < EMin) then Is*(ExMin*(vbc/Vt - EMin + 1) - 1) + vbc*Gbc else
if (vbc/Vt > EMax) then Is*(ExMax*(vbc/Vt - EMax + 1) - 1) + vbc*
Gbc else Is*(exp(vbc/Vt) - 1) + vbc*Gbc);
ibe = smooth(1, Is*(exlin2(vbe/Vt, EMin, EMax) - 1) + vbe*Gbe); ibe = smooth(1,if (vbe/Vt < EMin) then Is*(ExMin*(vbe/Vt - EMin + 1) - 1) + vbe*Gbe else
if (vbe/Vt > EMax) then Is*(ExMax*(vbe/Vt - EMax + 1) - 1) + vbe*
Gbe else Is*(exp(vbe/Vt) - 1) + vbe*Gbe);
Capcjc = smooth(1, Cjc*powlin(vbc/Phic, Mc)); Capcjc = smooth(1,(if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 - vbc
/Phic, -Mc)));
Capcje = smooth(1, Cje*powlin(vbe/Phie, Me)); Capcje = smooth(1,(if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 - vbe
/Phie, -Me)));
cbc = smooth(1, Taur*Is/Vt*exlin2(vbc/Vt, EMin, EMax) + Capcjc); cbc = smooth(1,(if (vbc/Vt < EMin) then Taur*Is/Vt*ExMin*(vbc/Vt - EMin + 1) +
Capcjc else if (vbc/Vt > EMax) then Taur*Is/Vt*ExMax*(vbc/Vt - EMax + 1)
+ Capcjc else Taur*Is/Vt*exp(vbc/Vt) + Capcjc));
cbe = smooth(1, Tauf*Is/Vt*exlin2(vbe/Vt, EMin, EMax) + Capcje); cbe = smooth(1,(if (vbe/Vt < EMin) then Tauf*Is/Vt*ExMin*(vbe/Vt - EMin + 1) +
Capcje else if (vbe/Vt > EMax) then Tauf*Is/Vt*ExMax*(vbe/Vt - EMax + 1)
+ Capcje else Tauf*Is/Vt*exp(vbe/Vt) + Capcje));
C.i = (ibe - ibc)*qbk - ibc/Br - cbc*der(vbc) + Ccs*der(C.v);
...



model Electrical.Analog.Semiconductors.PNP

Component
Modelica 3.2.3
Modelica 3.2.2
Is
=1e-16
=1.e-16
vbc
SIunits.Voltage
Real

protected
vbe
SIunits.Voltage
Real

protected
qbk

protected
ibc
SIunits.Current
Real

protected
ibe
SIunits.Current
Real

protected
cbc
SIunits.Capacitance
Real

protected
cbe
SIunits.Capacitance
Real

protected
Capcje
SIunits.Capacitance
Real

protected
Capcjc
SIunits.Capacitance
Real

protected
ExMin

Present
ExMax

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

ExMin = exp(EMin);
ExMax = exp(EMax);
vbc = C.v - B.v;
...
qbk = 1 - vbc*Vak;
ibc = smooth(1, Is*(exlin2(vbc/Vt, EMin, EMax) - 1) + vbc*Gbc); ibc = smooth(1,(if (vbc/Vt < EMin) then Is*(ExMin*(vbc/Vt - EMin + 1) - 1) + vbc*Gbc else
if (vbc/Vt > EMax) then Is*(ExMax*(vbc/Vt - EMax + 1) - 1) + vbc*
Gbc else Is*(exp(vbc/Vt) - 1) + vbc*Gbc));
ibe = smooth(1, Is*(exlin2(vbe/Vt, EMin, EMax) - 1) + vbe*Gbe); ibe = smooth(1,(if (vbe/Vt < EMin) then Is*(ExMin*(vbe/Vt - EMin + 1) - 1) + vbe*Gbe else
if (vbe/Vt > EMax) then Is*(ExMax*(vbe/Vt - EMax + 1) - 1) + vbe*
Gbe else Is*(exp(vbe/Vt) - 1) + vbe*Gbe));
Capcjc = smooth(1, Cjc*powlin(vbc/Phic, Mc)); Capcjc = smooth(1,(if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 - vbc
/Phic, -Mc)));
Capcje = smooth(1, Cje*powlin(vbe/Phie, Me)); Capcje = smooth(1,if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 - vbe
/Phie, -Me));
cbc = smooth(1, Taur*Is/Vt*exlin2(vbc/Vt, EMin, EMax) + Capcjc); cbc = smooth(1,(if (vbc/Vt < EMin) then Taur*Is/Vt*ExMin*(vbc/Vt - EMin + 1) +
Capcjc else if (vbc/Vt > EMax) then Taur*Is/Vt*ExMax*(vbc/Vt - EMax + 1)
+ Capcjc else Taur*Is/Vt*exp(vbc/Vt) + Capcjc));
cbe = smooth(1, Tauf*Is/Vt*exlin2(vbe/Vt, EMin, EMax) + Capcje); cbe = smooth(1,(if (vbe/Vt < EMin) then Tauf*Is/Vt*ExMin*(vbe/Vt - EMin + 1) +
Capcje else if (vbe/Vt > EMax) then Tauf*Is/Vt*ExMax*(vbe/Vt - EMax + 1)
+ Capcje else Tauf*Is/Vt*exp(vbe/Vt) + Capcje));
C.i = -((ibe - ibc)*qbk - ibc/Br - cbc*der(vbc) - Ccs*der(C.v));
...



model Electrical.Analog.Semiconductors.HeatingDiode

Component
Modelica 3.2.3
Modelica 3.2.2
Ids
=1e-6
=1.e-6
R
=1e8
=1.e8
vt_t
SIunits.Voltage
SIunits.Temperature
q

Present
maxexp

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
assert(T_heatPort > 0,"Temperature must be positive"); assert( T_heatPort > 0,"temperature must be positive");
htemp = T_heatPort;
vt_t = k*htemp/q;
id = Ids*(exlin(v/(N*vt_t), Maxexp) - 1); id = exlin((v/(N*vt_t)), Maxexp) - 1;
aux = (htemp/TNOM - 1)*EG/(N*vt_t);
auxp = exp(aux);
i = id*pow(htemp/TNOM, XTI/N)*auxp + v/R; i = Ids*id*pow(htemp/TNOM, XTI/N)*auxp + v/R;
LossPower = i*v;



model Electrical.Analog.Semiconductors.HeatingNMOS

Component
Modelica 3.2.3
Modelica 3.2.2
RDS
=1e7
=1.e+7
kk2
=6e-4
=6.0e-4


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
assert(T_heatPort > 0,"Heating NMOS: Temperature must be positive");
gds = if (RDS < 1e-20 and RDS > -1e-20) then 1e20 else 1/RDS; gds = if (RDS < 1.e-20 and RDS > -1.e-20) then 1.e20 else 1/RDS;
v = beta_t*(W + dW)/(L + dL);
...



model Electrical.Analog.Semiconductors.HeatingPMOS

Component
Modelica 3.2.3
Modelica 3.2.2
RDS
=1e7
=1.e+7


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
assert(T_heatPort > 0,"HeatingPMOS: Temperature must be positive");
gds = if (RDS < 1e-20 and RDS > -1e-20) then 1e20 else 1/RDS; gds = if (RDS < 1.e-20 and RDS > -1.e-20) then 1.e20 else 1/RDS;
v = beta_t*(W + dW)/(L + dL);
...



model Electrical.Analog.Semiconductors.HeatingNPN

Component
Modelica 3.2.3
Modelica 3.2.2
Is
=1e-16
=1.e-16
EG
SIunits.Voltage
Real
vbc
SIunits.Voltage
Real
vbe
SIunits.Voltage
Real
ibc
SIunits.Current
Real
ibe
SIunits.Current
Real
cbc
SIunits.Capacitance
Real
cbe
SIunits.Capacitance
Real
Capcje
SIunits.Capacitance
Real
Capcjc
SIunits.Capacitance
Real
is_t
SIunits.Current
Real
vt_t
SIunits.Voltage
Real
q

Present
ExMin

Present
ExMax

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
assert(T_heatPort > 0,"Temperature must be positive"); assert( T_heatPort > 0,"temperature must be positive");

ExMin = exp(EMin);
ExMax = exp(EMax);
vbc = B.v - C.v;
...
hexp = (T_heatPort/Tnom - 1)*EG/vt_t;
htempexp = smooth(1, exlin2(hexp, EMin, EMax)); htempexp = smooth(1,if (hexp < EMin) then ExMin*(hexp - EMin + 1) else if (
hexp > EMax) then ExMax*(hexp - EMax + 1) else exp(hexp));
is_t = Is*pow((T_heatPort/Tnom), XTI)*htempexp;
...
vt_t = (k/q)*T_heatPort;
ibc = smooth(1, is_t*(exlin2(vbc/(NR*vt_t), EMin, EMax) - 1) + vbc*Gbc); ibc = smooth(1,(if (vbc/(NR*vt_t) < EMin) then is_t*(ExMin*(vbc/(NR*vt_t) -
EMin + 1) - 1) + vbc*Gbc else if (vbc/(NR*vt_t) > EMax) then is_t*(
ExMax*(vbc/(NR*vt_t) - EMax + 1) - 1) + vbc*Gbc else is_t*(exp(vbc/
(NR*vt_t)) - 1) + vbc*Gbc));
ibe = smooth(1, is_t*(exlin2(vbe/(NF*vt_t), EMin, EMax) - 1) + vbe*Gbe); ibe = smooth(1,(if (vbe/(NF*vt_t) < EMin) then is_t*(ExMin*(vbe/(NF*vt_t) -
EMin + 1) - 1) + vbe*Gbe else if (vbe/(NF*vt_t) > EMax) then is_t*(
ExMax*(vbe/(NF*vt_t) - EMax + 1) - 1) + vbe*Gbe else is_t*(exp(vbe/
(NF*vt_t)) - 1) + vbe*Gbe));
Capcjc = smooth(1, Cjc*powlin(vbc/Phic, Mc)); Capcjc = smooth(1,(if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1
- vbc/Phic, -Mc)));
Capcje = smooth(1, Cje*powlin(vbe/Phie, Me)); Capcje = smooth(1,(if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1
- vbe/Phie, -Me)));
cbc = smooth(1, Taur*is_t/(NR*vt_t)*exlin2(vbc/(NR*vt_t), EMin, EMax) + Capcjc); cbc = smooth(1,(if (vbc/(NR*vt_t) < EMin) then Taur*is_t/(NR*vt_t)*ExMin*(vbc/(
NR*vt_t) - EMin + 1) + Capcjc else if (vbc/(NR*vt_t) > EMax) then
Taur*is_t/(NR*vt_t)*ExMax*(vbc/(NR*vt_t) - EMax + 1) + Capcjc else
Taur*is_t/(NR*vt_t)*exp(vbc/(NR*vt_t)) + Capcjc));
cbe = smooth(1, Tauf*is_t/(NF*vt_t)*exlin2(vbe/(NF*vt_t), EMin, EMax) + Capcje); cbe = smooth(1,(if (vbe/(NF*vt_t) < EMin) then Tauf*is_t/(NF*vt_t)*ExMin*(vbe/(
NF*vt_t) - EMin + 1) + Capcje else if (vbe/(NF*vt_t) > EMax) then
Tauf*is_t/(NF*vt_t)*ExMax*(vbe/(NF*vt_t) - EMax + 1) + Capcje else
Tauf*is_t/(NF*vt_t)*exp(vbe/(NF*vt_t)) + Capcje));
C.i = (ibe - ibc)*qbk - ibc/br_t - cbc*der(vbc) + Ccs*der(C.v);
...



model Electrical.Analog.Semiconductors.HeatingPNP

Component
Modelica 3.2.3
Modelica 3.2.2
Is
=1e-16
=1.e-16
EG
SIunits.Voltage
Real
vcb
SIunits.Voltage
Real

protected
veb
SIunits.Voltage
Real

protected
qbk

protected
icb
SIunits.Current
Real

protected
ieb
SIunits.Current
Real

protected
ccb
SIunits.Capacitance
Real

protected
ceb
SIunits.Capacitance
Real

protected
Capcje
SIunits.Capacitance
Real

protected
Capcjc
SIunits.Capacitance
Real

protected
is_t
SIunits.Current
Real

protected
br_t

protected
bf_t

protected
vt_t
SIunits.Voltage
Real

protected
hexp

protected
htempexp

protected
q

Present
ExMin

Present
ExMax

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
assert(T_heatPort > 0,"Temperature must be positive"); assert( T_heatPort > 0,"temperature must be positive");

ExMin = exp(EMin);
ExMax = exp(EMax);
vcb = C.v - B.v;
...
hexp = (T_heatPort/Tnom - 1)*EG/vt_t;
htempexp = smooth(1, exlin2(hexp, EMin, EMax)); htempexp = smooth(1,if (hexp < EMin) then ExMin*(hexp - EMin + 1) else if (
hexp > EMax) then ExMax*(hexp - EMax + 1) else exp(hexp));
is_t = Is*pow((T_heatPort/Tnom), XTI)*htempexp;
...
vt_t = (k/q)*T_heatPort;
icb = smooth(1, is_t*(exlin2(vcb/(NR*vt_t), EMin, EMax) - 1) + vcb*Gbc); icb = smooth(1,(if (vcb/(NR*vt_t) < EMin) then is_t*(ExMin*(vcb/(NR*vt_t) -
EMin + 1) - 1) + vcb*Gbc else if (vcb/(NR*vt_t) > EMax) then is_t*(
ExMax*(vcb/(NR*vt_t) - EMax + 1) - 1) + vcb*Gbc else is_t*(exp(vcb/
(NR*vt_t)) - 1) + vcb*Gbc));
ieb = smooth(1, is_t*(exlin2(veb/(NF*vt_t), EMin, EMax) - 1) + veb*Gbe); ieb = smooth(1,(if (veb/(NF*vt_t) < EMin) then is_t*(ExMin*(veb/(NF*vt_t) -
EMin + 1) - 1) + veb*Gbe else if (veb/(NF*vt_t) > EMax) then is_t*(
ExMax*(veb/(NF*vt_t) - EMax + 1) - 1) + veb*Gbe else is_t*(exp(veb/
(NF*vt_t)) - 1) + veb*Gbe));
Capcjc = smooth(1, Cjc*powlin(vcb/Phic, Mc)); Capcjc = smooth(1,(if (vcb/Phic > 0) then Cjc*(1 + Mc*vcb/Phic) else Cjc*pow(1
- vcb/Phic, -Mc)));
Capcje = smooth(1, Cje*powlin(veb/Phie, Me)); Capcje = smooth(1,(if (veb/Phie > 0) then Cje*(1 + Me*veb/Phie) else Cje*pow(1
- veb/Phie, -Me)));
ccb = smooth(1, Taur*is_t/(NR*vt_t)*exlin2(vcb/(NR*vt_t), EMin, EMax) + Capcjc); ccb = smooth(1,(if (vcb/(NR*vt_t) < EMin) then Taur*is_t/(NR*vt_t)*ExMin*(vcb/(
NR*vt_t) - EMin + 1) + Capcjc else if (vcb/(NR*vt_t) > EMax) then
Taur*is_t/(NR*vt_t)*ExMax*(vcb/(NR*vt_t) - EMax + 1) + Capcjc else
Taur*is_t/(NR*vt_t)*exp(vcb/(NR*vt_t)) + Capcjc));
ceb = smooth(1, Tauf*is_t/(NF*vt_t)*exlin2(veb/(NF*vt_t), EMin, EMax) + Capcje); ceb = smooth(1,(if (veb/(NF*vt_t) < EMin) then Tauf*is_t/(NF*vt_t)*ExMin*(veb/(
NF*vt_t) - EMin + 1) + Capcje else if (veb/(NF*vt_t) > EMax) then
Tauf*is_t/(NF*vt_t)*ExMax*(veb/(NF*vt_t) - EMax + 1) + Capcje else
Tauf*is_t/(NF*vt_t)*exp(veb/(NF*vt_t)) + Capcje));
C.i = icb/br_t + ccb*der(vcb) + Ccs*der(C.v) + (icb - ieb)*qbk;
...



model Electrical.Analog.Semiconductors.Thyristor

Component
Modelica 3.2.3
Modelica 3.2.2
iGK
SIunits.Current
Real
vGK
SIunits.Voltage
Real
vAK
SIunits.Voltage
Real
vControl
SIunits.Voltage
Real
vContot
SIunits.Voltage
Real
vConmain
SIunits.Voltage
Real



model Electrical.Analog.Semiconductors.SimpleTriac

Component
Modelica 3.2.3
Modelica 3.2.2
thyristor
IDRM=IDRM

VTM=VTM

IH=IH

ITM=ITM

VGT=VGT

IGT=IGT

TON=TON

TOFF=TOFF

Vt=Vt

Nbv=Nbv

thyristor1
IDRM=IDRM

VTM=VTM

IH=IH

ITM=ITM

VGT=VGT

IGT=IGT

TON=TON

TOFF=TOFF

Vt=Vt

Nbv=Nbv




model Electrical.Digital.Delay.TransportDelay

Component
Modelica 3.2.3
Modelica 3.2.2
xr
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
xr = Integer(pre(x)); x_delayed = LogicValues[integer(delay(Integer(pre(x)), delayTime))];
x_delayed = LogicValues[integer(delay(xr, delayTime))];

y = if delayTime > 0 then
           (if time >= delayTime then x_delayed else y0) else
             pre(x);



block Electrical.Digital.Converters.LogicToBoolean



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
for i in 1:n loop
y[i] = (x[i] == L.'1' or x[i] == L.'H'); y[i] = if x[i] == L.'1' or x[i] == L.'H' then true else false;
end for;



model Electrical.Digital.Memories.DLATRAM

Component
Modelica 3.2.3
Modelica 3.2.2
tHL

Present
tLH

Present
strength

Present
n_addr

Present
n_data

Present
fileName

Present
RE

Present


addr

Present


dataOut

Present


nextstate

Present
mem_word

Present
int_addr

Present
yy

Present
inertialDelaySensitive

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...

equation
  for i in 1:n_data loop
connect(yy[i], inertialDelaySensitive[i].x);
connect(inertialDelaySensitive[i].y, dataOut[i]);
end for;



model Electrical.Digital.Memories.DLATROM

Component
Modelica 3.2.3
Modelica 3.2.2
tHL

Present
tLH

Present
strength

Present
n_addr

Present
n_data

Present
fileName

Present
RE

Present


addr

Present


dataOut

Present


nextstate

Present
mem_word

Present
addr_bit

Present
int_addr

Present
yy

Present
inertialDelaySensitive

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
elseif RE == L.'1' or RE == L.'H' then
int_addr = address(n_addr, addr); int_addr = 1;

for i in 1:n_addr loop
addr_bit = T.X01Table[addr[i]];
if addr_bit == L.'1' then
int_addr = int_addr + integer(2^(i-1));
elseif addr_bit == L.'X' then
int_addr = 0;
break;
end if;
end for;
if int_addr > 0 then
...

equation
  for i in 1:n_data loop
connect(yy[i], inertialDelaySensitive[i].x);
connect(inertialDelaySensitive[i].y, dataOut[i]);
end for;



model Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_withLosses

Component
Modelica 3.2.3
Modelica 3.2.2
w_meas
displayUnit="rev/min"

combiTable1Ds
table={{Ptable[j],Itable[j],wtable[j],ctable[j],etable[j]} for j in 1:size(Ptable, 1)}
table={{Ptable[j],Itable[j],ntable[j],ctable[j],etable[j]} for j in 1:size(Ptable, 1)}
PsNominal
Present

lossNominal
Present

etaNominal
Present

wtable
Present

Ps_sim
Present

Ps_meas
Present

loss_sim
Present

loss_meas
Present

ntable

Present



model Electrical.Machines.Examples.DCMachines.DCPM_Cooling

Component
Modelica 3.2.3
Modelica 3.2.2
cooling
Thermal.FluidHeatFlow.Components.Pipe
Thermal.FluidHeatFlow.Components.HeatedPipe



model Electrical.Machines.BasicMachines.AsynchronousInductionMachines.AIM_SquirrelCage

Component
Modelica 3.2.3
Modelica 3.2.2
squirrelCageR

final T=TrRef



model Electrical.Machines.BasicMachines.SynchronousInductionMachines.SM_PermanentMagnet

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical

idq_dr
graphical

damperCage

final T=TrRef



model Electrical.Machines.BasicMachines.SynchronousInductionMachines.SM_ElectricalExcited

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical

idq_dr
graphical

damperCage

final T=TrRef
re

final T=TeRef



model Electrical.Machines.BasicMachines.SynchronousInductionMachines.SM_ReluctanceRotor

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical

idq_dr
graphical

damperCage

final T=TrRef



model Electrical.Machines.BasicMachines.DCMachines.DC_ElectricalExcited

Component
Modelica 3.2.3
Modelica 3.2.2
re

final T=TeRef



model Electrical.Machines.BasicMachines.DCMachines.DC_SeriesExcited

Component
Modelica 3.2.3
Modelica 3.2.2
re

final T=TeRef



model Electrical.Machines.Sensors.RotorDisplacementAngle

Component
Modelica 3.2.3
Modelica 3.2.2
positiveRange
Present

threshold
Present

wrapAngle
Present



lessThreshold
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(add.y, rotatorVS2R.angle);
connect(wrapAngle.y, rotorDisplacementAngle); connect(ToPolarVSR.y[2], rotorDisplacementAngle);
connect(ToPolarVSR.y, lessThreshold.u);
connect(lessThreshold.y, wrapAngle.u);




block Electrical.Machines.SpacePhasors.Blocks.Rotator

Component
Modelica 3.2.3
Modelica 3.2.2
angle
unit="rad"




model Electrical.Machines.Losses.Friction



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
tau = -(if noEvent(abs(w)>frictionParameters.wLinear) then
frictionParameters.tauRef*sign(w)*(abs(w)/frictionParameters.wRef)^frictionParameters.power_w else
frictionParameters.tauLinear*w/frictionParameters.wLinear);
tau = -smooth(1, if w >= +frictionParameters.wLinear then +
frictionParameters.tauRef*(+w/frictionParameters.wRef)^
frictionParameters.power_w else if w <= -frictionParameters.wLinear
then -frictionParameters.tauRef*(-w/frictionParameters.wRef)^
frictionParameters.power_w else frictionParameters.tauLinear*(w/
frictionParameters.wLinear));
end if;
...



model Electrical.Machines.Losses.InductionMachines.StrayLoad



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
tau = -strayLoadParameters.tauRef*(iRMS/strayLoadParameters.IRef)^2*
sign(w)*(abs(w)/strayLoadParameters.wRef)^strayLoadParameters.power_w;
tau = -strayLoadParameters.tauRef*(iRMS/strayLoadParameters.IRef)^2*
smooth(1, if w >= 0 then +(+w/strayLoadParameters.wRef)^
strayLoadParameters.power_w else -(-w/strayLoadParameters.wRef)^
strayLoadParameters.power_w);
end if;
...



model Electrical.Machines.Losses.InductionMachines.PermanentMagnetLosses



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
tau = -permanentMagnetLossParameters.tauRef*(permanentMagnetLossParameters.c + (1 - permanentMagnetLossParameters.c)*
(iRMS/permanentMagnetLossParameters.IRef)^permanentMagnetLossParameters.power_I)*
sign(w)*(abs(w)/permanentMagnetLossParameters.wRef)^permanentMagnetLossParameters.power_w;
tau = -permanentMagnetLossParameters.tauRef*(
permanentMagnetLossParameters.c + (1 -
permanentMagnetLossParameters.c)*(iRMS/
permanentMagnetLossParameters.IRef)^permanentMagnetLossParameters.power_I)
*smooth(1, if w >= 0 then +(+w/permanentMagnetLossParameters.wRef)^
permanentMagnetLossParameters.power_w else -(-w/
permanentMagnetLossParameters.wRef)^permanentMagnetLossParameters.power_w);
end if;
...



model Electrical.Machines.Losses.InductionMachines.Core

Component
Modelica 3.2.3
Modelica 3.2.2
coreParameters
m=3




model Electrical.Machines.Losses.DCMachines.Brush



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
v = smooth(0, if (i > +brushParameters.ILinear) then +brushParameters.V
else if (i < -brushParameters.ILinear) then -brushParameters.V
else brushParameters.V*i/brushParameters.ILinear);
v = smooth(1, if (i > +brushParameters.ILinear) then +brushParameters.V
else if (i < -brushParameters.ILinear) then -brushParameters.V
else brushParameters.V*i/brushParameters.ILinear);
end if;
...



model Electrical.Machines.Losses.DCMachines.StrayLoad



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
tau = -strayLoadParameters.tauRef*(i/strayLoadParameters.IRef)^2*
sign(w)*(abs(w)/strayLoadParameters.wRef)^strayLoadParameters.power_w;
tau = -strayLoadParameters.tauRef*(i/strayLoadParameters.IRef)^2*
smooth(1, if w >= 0 then +(+w/strayLoadParameters.wRef)^
strayLoadParameters.power_w else -(-w/strayLoadParameters.wRef)^
strayLoadParameters.power_w);
end if;
...



model Electrical.Machines.Losses.DCMachines.Core

Component
Modelica 3.2.3
Modelica 3.2.2
coreParameters
m=1




model Electrical.Machines.Interfaces.PartialBasicDCMachine

Component
Modelica 3.2.3
Modelica 3.2.2
ra

final T=TaRef



record Electrical.Machines.Utilities.ParameterRecords.InductionMachineData

Component
Modelica 3.2.3
Modelica 3.2.2
effectiveStatorTurns
Present




block Electrical.Machines.Utilities.VfController

Component
Modelica 3.2.3
Modelica 3.2.2
EconomyMode
Present

pow
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
amplitude = sqrt(2)*VNominal*(if abs(u) < fNominal then (abs(u)/fNominal)^pow else 1); amplitude = sqrt(2)*VNominal*(if abs(u) < fNominal then abs(u)/fNominal
else 1);
der(x) = 2*pi*u;
...



block Electrical.Machines.Utilities.ToDQ

Component
Modelica 3.2.3
Modelica 3.2.2
phi
unit="rad"




block Electrical.Machines.Utilities.FromDQ

Component
Modelica 3.2.3
Modelica 3.2.2
phi
unit="rad"




model Electrical.Machines.Utilities.CurrentController

Component
Modelica 3.2.3
Modelica 3.2.2
m
parameter
constant
phi
unit="rad"

fromSpacePhasor
final m=m




model Electrical.Machines.Utilities.VoltageController

Component
Modelica 3.2.3
Modelica 3.2.2
phi
unit="rad"

iActual
sizes= -1
sizes= 3
fromDQ
final m=m

toDQ
final m=m




record Electrical.Machines.Utilities.SynchronousMachineData

Component
Modelica 3.2.3
Modelica 3.2.2
effectiveStatorTurns
Present




model Electrical.MultiPhase.Examples.Rectifier

Component
Modelica 3.2.3
Modelica 3.2.2
V
=100
=1
f
=50
=5
L
=0.0001
=0.001
C
=0.005
=0.05
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5
sineVoltage
V=sqrt(2)*fill(V, m)
V=fill(V, m)
VDC
Present

IDC
Present

powerSensorSpacePhasor
Present



aronSensor
Present



powerSensor
Present



reactivePowerSensor
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
cDC1.v = VDC/2; cDC1.v = 0;
cDC2.v = VDC/2; cDC2.v = 0;
supplyL.i[2]=-IDC; supplyL.i[1:m - 1] = zeros(m - 1) "Y-connection";
supplyL.i[3]= IDC;


...
connect(sineVoltage.plug_p, supplyL.plug_p);

connect(idealDiode1.plug_p, supplyL.plug_n);
connect(idealDiode2.plug_n, supplyL.plug_n);
connect(idealDiode1.plug_n, star1.plug_p);
...
connect(star1.pin_n, cDC1.p);
connect(idealDiode1.plug_p, idealDiode2.plug_n);
connect(supplyL.plug_n, powerSensor.pc);
connect(powerSensor.nc, powerSensorSpacePhasor.plug_p);
connect(powerSensorSpacePhasor.plug_ni, aronSensor.plug_p);
connect(aronSensor.plug_n, reactivePowerSensor.plug_p);
connect(idealDiode1.plug_p, reactivePowerSensor.plug_n);
connect(powerSensor.pc, powerSensor.pv);
connect(starS.plug_p, powerSensor.nv);
connect(starS.plug_p, powerSensorSpacePhasor.plug_nv);




model Electrical.MultiPhase.Examples.TestSensors

Component
Modelica 3.2.3
Modelica 3.2.2
IRMS
=VRMS/Z
=VRMS/sqrt(R^2 + (2*pi*f*L)^2)
realExpression
y=Modelica.Electrical.MultiPhase.Functions.activePower(voltageQuasiRMSSensor.v, currentQuasiRMSSensor.i)
y=Modelica322.Electrical.MultiPhase.Functions.activePower(voltageQuasiRMSSensor.v, currentQuasiRMSSensor.i)
Z
Present

P
Present

Q
Present

S
Present

powerSensorSpacePhasor
Present



feedbackSpacePhasor
Present



aronSensor
Present



feedbackAron
Present



reactivePowerSensor
Present



feedbackQ
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
  connect(star.pin_n, ground.p);

connect(sineVoltage.plug_n, star.plug_p);
connect(resistor.plug_n, inductor.plug_p);
connect(inductor.plug_n, starLoad.plug_p);

connect(currentQuasiRMSSensor.I, feedbackI.u1);
connect(feedbackI.u2, constI.y);
connect(sineVoltage.plug_p, currentQuasiRMSSensor.plug_p);
connect(voltageQuasiRMSSensor.plug_n, sineVoltage.plug_n);
...
connect(powerSensor.nc, resistor.plug_p);

connect(currentQuasiRMSSensor.plug_n, powerSensor.pc);
connect(powerSensor.pc, powerSensor.pv);
...
connect(powerSensor.power, feedbackP.u1);
connect(aronSensor.plug_n, powerSensor.pc); connect(realExpression.y, feedbackP.u2);
connect(sineVoltage.plug_n, star.plug_p);
connect(feedbackI.u2, constI.y);
connect(feedbackI.u1, currentQuasiRMSSensor.I);
connect(currentQuasiRMSSensor.plug_p, sineVoltage.plug_p);
connect(feedbackP.u2, realExpression.y);
connect(powerSensorSpacePhasor.plug_p, currentQuasiRMSSensor.plug_n);
connect(powerSensorSpacePhasor.plug_nv, starLoad.plug_p);
connect(powerSensorSpacePhasor.plug_ni, reactivePowerSensor.plug_p);
connect(reactivePowerSensor.plug_n, aronSensor.plug_p);
connect(reactivePowerSensor.reactivePower, feedbackQ.u1);
connect(powerSensorSpacePhasor.Q, feedbackQ.u2);
connect(aronSensor.power, feedbackAron.u1);
connect(feedbackSpacePhasor.u1, powerSensorSpacePhasor.P);
connect(realExpression.y, feedbackAron.u2);
connect(realExpression.y, feedbackSpacePhasor.u2);




model Electrical.MultiPhase.Basic.Resistor

Component
Modelica 3.2.3
Modelica 3.2.2
resistor

final T=T



model Electrical.MultiPhase.Basic.Conductor

Component
Modelica 3.2.3
Modelica 3.2.2
conductor

final T=T



model Electrical.MultiPhase.Basic.MutualInductor

Component
Modelica 3.2.3
Modelica 3.2.2
epsilon
parameter
constant
m

Present



model Electrical.MultiPhase.Basic.VariableResistor

Component
Modelica 3.2.3
Modelica 3.2.2
variableResistor

final T=T



model Electrical.MultiPhase.Basic.VariableConductor

Component
Modelica 3.2.3
Modelica 3.2.2
variableConductor

final T=T



model Electrical.MultiPhase.Ideal.IdealDiode

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.IdealThyristor

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.IdealGTOThyristor

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.IdealCommutingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.IdealIntermediateSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.IdealOpeningSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.IdealClosingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.OpenerWithArc

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.MultiPhase.Ideal.CloserWithArc

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



function Electrical.MultiPhase.Functions.symmetricOrientationMatrix

Component
Modelica 3.2.3
Modelica 3.2.2
oM
Present

nBase
Present

mBase
Present

o
Present

oBase
Present

orientation

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
oM := zeros(m, m); orientation := zeros(m, m);
if mBase==2 then if mod(m, 2) == 0 then
oM[1:mBase,1:mBase] = {o[1:mBase],-o[1:mBase]}; if m == 2 then

orientation = {{0,+pi/2},{0,-pi/2}};
else
for j in 1:mBase loop orientation[1:integer(m/2), 1:integer(m/2)] =
symmetricOrientationMatrix(integer(m/2));
oM[j,1:mBase] = j*o[1:mBase]; orientation[1 + integer(m/2):m, 1 + integer(m/2):m] =
symmetricOrientationMatrix(integer(m/2)) - fill(
pi/m,
integer(m/2),
integer(m/2));
end for;

end if;
for i in 2:nBase loop else
for k in 1:mBase loop for k in 1:m loop
oM[(i - 1)*mBase + k, (i - 1)*mBase + 1:i*mBase] = oM[k, 1:mBase] + fill(oBase[i], mBase); orientation[k, :] =
Modelica322.Electrical.MultiPhase.Functions.symmetricOrientation(m)*k;
end for;
end for; end if;



function Electrical.MultiPhase.Functions.symmetricTransformationMatrix

Component
Modelica 3.2.3
Modelica 3.2.2
tM
Present

nBase
Present

mBase
Present

factor
Present

oM
Present

transformation

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
for i in 1:nBase loop transformation := Modelica322.ComplexMath.fromPolar(fill(
numberOfSymmetricBaseSystems(m)/m,
m,
m),
Electrical.MultiPhase.Functions.symmetricOrientationMatrix(m));
for j in 1:nBase loop
for ii in (i - 1)*mBase + 1:i*mBase loop
for jj in (j - 1)*mBase + 1:j*mBase loop
tM[ii,jj] = fromPolar(if i==j then factor else 0, oM[ii,jj]);
end for;
end for;
end for;
end for;





function Electrical.MultiPhase.Functions.indexPositiveSequence

Component
Modelica 3.2.3
Modelica 3.2.2
n
=numberOfSymmetricBaseSystems(m)
=Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m)



function Electrical.MultiPhase.Functions.indexNonPositiveSequence

Component
Modelica 3.2.3
Modelica 3.2.2
nBase
Present

mBase
Present

n

Present
mbas

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
if mBase == 1 then if mbas == 1 then
ind = fill(0, 0);
elseif mBase == 2 then elseif mbas == 2 then
for k in 1:nBase loop for k in 1:n loop
ind[k] = 2 + 2*(k - 1);
...
else
for k in 1:nBase loop for k in 1:n loop
ind[(mBase - 1)*(k - 1) + 1:(mBase - 1)*k] = (2:mBase) + mBase*(k - 1)*ones(mBase - 1); ind[(mbas - 1)*(k - 1) + 1:(mbas - 1)*k] = (2:mbas) + mbas*(k - 1)*
ones(mbas - 1);
end for;
...



model Electrical.PowerConverters.Examples.ACDC.RectifierCenterTapmPulse.DiodeCenterTapmPulse

Component
Modelica 3.2.3
Modelica 3.2.2
sineVoltage_p
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.PowerConverters.Examples.ACDC.RectifierBridge2mPulse.DiodeBridge2mPulse

Component
Modelica 3.2.3
Modelica 3.2.2
sineVoltage
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.PowerConverters.Examples.ACDC.RectifierBridge2mPulse.ThyristorBridge2mPulse_DC_Drive

Component
Modelica 3.2.3
Modelica 3.2.2
Vrms
=dcpmData.VaNominal/Modelica323.Electrical.MultiPhase.Functions.factorY2DC(m)
=dcpmData.VaNominal/Modelica.Electrical.MultiPhase.Functions.factorY2DC(m)



model Electrical.PowerConverters.Examples.ACDC.RectifierCenterTap2mPulse.DiodeCenterTap2mPulse

Component
Modelica 3.2.3
Modelica 3.2.2
sineVoltage_p
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)
sineVoltage_n
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.PowerConverters.Examples.ACDC.ExampleTemplates.ThyristorCenterTap2Pulse

Component
Modelica 3.2.3
Modelica 3.2.2
model
partial




model Electrical.PowerConverters.Examples.ACDC.ExampleTemplates.ThyristorCenterTapmPulse

Component
Modelica 3.2.3
Modelica 3.2.2
sineVoltage_p
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.PowerConverters.Examples.ACDC.ExampleTemplates.ThyristorBridge2mPulse

Component
Modelica 3.2.3
Modelica 3.2.2
sineVoltage
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.PowerConverters.Examples.ACDC.ExampleTemplates.ThyristorCenterTap2mPulse

Component
Modelica 3.2.3
Modelica 3.2.2
sineVoltage_p
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)
sineVoltage_n
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.PowerConverters.Examples.DCDC.ExampleTemplates.ChopperStepDown

Component
Modelica 3.2.3
Modelica 3.2.2
constantVoltage
final V=Vsource


V=100
signalPWM
final constantDutyCycle=dutyCycle

final f=f


constantDutyCycle=0.25

f=f
Vsource
Present

dutyCycle
Present

V0
Present




block Electrical.PowerConverters.ACDC.Control.Signal2mPulse

Component
Modelica 3.2.3
Modelica 3.2.2
limiter
final uMax=min(Modelica323.Constants.pi, firingAngleMax)
final uMax=max(Modelica322.Constants.pi, firingAngleMax)
filter
each final fCut=fCut
each final fCut=2*f



block Electrical.PowerConverters.DCDC.Control.VoltageToDutyCycle

Component
Modelica 3.2.3
Modelica 3.2.2
vMax
=0

add
k1=0.5

k2=1

useConstantMaximumVoltage
Present

divisionUnipolar
Present



divisionBipolar
Present



vMaxExt
Present



vMaxConst
Present



vMaxInt
Present



gainUnipolar

Present


gainBipolar

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
connect(divisionBipolar.y, add.u1); connect(v, gainUnipolar.u);

connect(v, gainBipolar.u);
connect(gainBipolar.y, add.u1);
connect(offset.y, add.u2);
connect(divisionUnipolar.y, dutyCycle); connect(gainUnipolar.y, dutyCycle);
connect(add.y, dutyCycle);
connect(v, divisionUnipolar.u1);
connect(v, divisionBipolar.u1);
connect(vMaxExt, vMaxInt);
connect(vMaxInt, divisionUnipolar.u2);
connect(vMaxInt, vMaxConst.y);
connect(vMaxInt, divisionBipolar.u2);




model Electrical.PowerConverters.DCDC.HBridge

Component
Modelica 3.2.3
Modelica 3.2.2
dc_p1

Present


dc_n1

Present


dc_n2

Present


dc_p2

Present





model Electrical.PowerConverters.Interfaces.ACDC.ACtwoPin

Component
Modelica 3.2.3
Modelica 3.2.2
powerAC
Present




model Electrical.PowerConverters.Interfaces.ACDC.ACplug

Component
Modelica 3.2.3
Modelica 3.2.2
powerAC
Present

powerTotalAC
Present




model Electrical.PowerConverters.Interfaces.ACDC.ACtwoPlug

Component
Modelica 3.2.3
Modelica 3.2.2
powerAC
Present

powerTotalAC
Present




model Electrical.PowerConverters.Interfaces.ACDC.DCtwoPin

Component
Modelica 3.2.3
Modelica 3.2.2
powerDC
Present




model Electrical.PowerConverters.Interfaces.ACDC.DCpin

Component
Modelica 3.2.3
Modelica 3.2.2
powerDC
Present




model Electrical.PowerConverters.Interfaces.DCAC.DCtwoPin

Component
Modelica 3.2.3
Modelica 3.2.2
powerDC
Present




model Electrical.PowerConverters.Interfaces.DCAC.ACpin

Component
Modelica 3.2.3
Modelica 3.2.2
powerAC
Present




model Electrical.PowerConverters.Interfaces.DCAC.ACplug

Component
Modelica 3.2.3
Modelica 3.2.2
powerAC
Present

powerTotalAC
Present




model Electrical.PowerConverters.Interfaces.DCDC.DCtwoPin1

Component
Modelica 3.2.3
Modelica 3.2.2
powerDC1
Present




model Electrical.PowerConverters.Interfaces.DCDC.DCtwoPin2

Component
Modelica 3.2.3
Modelica 3.2.2
powerDC2
Present




model Electrical.QuasiStationary.SinglePhase.Basic.Impedance

Component
Modelica 3.2.3
Modelica 3.2.2
frequencyDependent
Present

f_ref
Present

X_actual
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
R_actual = R_ref*(1 + alpha_ref*(T_heatPort - T_ref));
X_actual = X_ref*(if not frequencyDependent then 1 else (if X_ref >= 0 then
omega/(2*Modelica323.Constants.pi*f_ref) else 2*Modelica323.Constants.pi*
f_ref/omega));
v = Complex(R_actual, X_ref)*i;
v = Complex(R_actual, X_actual) * i;

LossPower = real(v*conj(i));



model Electrical.QuasiStationary.SinglePhase.Basic.Admittance

Component
Modelica 3.2.3
Modelica 3.2.2
frequencyDependent
Present

f_ref
Present

B_actual
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
G_actual = G_ref/(1 + alpha_ref*(T_heatPort - T_ref));
B_actual = B_ref*(if not frequencyDependent then 1 else (if B_ref >= 0 then
omega/(2*Modelica323.Constants.pi*f_ref) else 2*Modelica323.Constants.pi*
f_ref/omega));
i = Complex(G_actual, B_ref)*v;
i = Complex(G_actual, B_actual) * v;

LossPower = real(v*conj(i));



model Electrical.QuasiStationary.SinglePhase.Basic.VariableImpedance

Component
Modelica 3.2.3
Modelica 3.2.2
frequencyDependent
Present

f_ref
Present

X_actual
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
R_actual = R_ref*(1 + alpha_ref*(T_heatPort - T_ref));
X_actual = X_ref*(if not frequencyDependent then 1 else (if X_ref >= 0 then
omega/(2*Modelica323.Constants.pi*f_ref) else 2*Modelica323.Constants.pi*
f_ref/omega));
v = Complex(R_actual, X_ref)*i;
v = Complex(R_actual, X_actual) * i;

LossPower = real(v*conj(i));



model Electrical.QuasiStationary.SinglePhase.Basic.VariableAdmittance

Component
Modelica 3.2.3
Modelica 3.2.2
frequencyDependent
Present

f_ref
Present

B_actual
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
G_actual = G_ref/(1 + alpha_ref*(T_heatPort - T_ref));
B_actual = B_ref*(if not frequencyDependent then 1 else (if B_ref >= 0 then
omega/(2*Modelica323.Constants.pi*f_ref) else 2*Modelica323.Constants.pi*
f_ref/omega));
i = Complex(G_actual, B_ref)*v;
i = Complex(G_actual, B_actual) * v;

LossPower = real(v*conj(i));



model Electrical.QuasiStationary.SinglePhase.Ideal.IdealCommutingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.QuasiStationary.SinglePhase.Ideal.IdealIntermediateSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
=1e-5
=1.E-5
Goff
=1e-5
=1.E-5



model Electrical.QuasiStationary.SinglePhase.Ideal.IdealOpeningSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron

graphical
=1e-5
=1.E-5
Goff

graphical
=1e-5
=1.E-5



model Electrical.QuasiStationary.SinglePhase.Ideal.IdealClosingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron

graphical
=1e-5
=1.E-5
Goff

graphical
=1e-5
=1.E-5



model Electrical.QuasiStationary.SinglePhase.Ideal.IdealTransformer

Component
Modelica 3.2.3
Modelica 3.2.2
abs_v1
Present

arg_v1
Present

abs_i1
Present

arg_i1
Present

P1
Present

Q1
Present

S1
Present

pf1
Present

abs_v2
Present

arg_v2
Present

abs_i2
Present

arg_i2
Present

P2
Present

Q2
Present

S2
Present

pf2
Present




model Electrical.QuasiStationary.SinglePhase.Sensors.ReferenceSensor

Component
Modelica 3.2.3
Modelica 3.2.2
y
unit="rad"




model Electrical.QuasiStationary.SinglePhase.Sensors.FrequencySensor

Component
Modelica 3.2.3
Modelica 3.2.2
y
unit="Hz"




model Electrical.QuasiStationary.SinglePhase.Sources.VariableVoltageSource

Component
Modelica 3.2.3
Modelica 3.2.2
f
unit="Hz"




model Electrical.QuasiStationary.SinglePhase.Sources.VariableCurrentSource

Component
Modelica 3.2.3
Modelica 3.2.2
f
unit="Hz"




connector Electrical.QuasiStationary.SinglePhase.Interfaces.Pin

Component
Modelica 3.2.3
Modelica 3.2.2
v
SIunits.ComplexElectricPotential
SIunits.ComplexVoltage



model Electrical.QuasiStationary.Machines.Examples.TransformerTestbench



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(load.plug_n, starL.plug_p);

connect(source.plug_p, electricalPowerSensorS.currentP);
connect(electricalPowerSensorS.currentP, electricalPowerSensorS.voltageP);
...
connect(symmetricalComponentsVL.y[1], polarVL.u);
connect(electricalPowerSensorS.currentP, source.plug_p);




model Electrical.QuasiStationary.Machines.BasicMachines.Components.PartialCore



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
plug_p1.reference.gamma = plug_p3.reference.gamma;

Connections.potentialRoot(plug_p1.reference);
Connections.potentialRoot(plug_p2.reference);
Connections.potentialRoot(plug_p3.reference);
plug_p1.pin.i + plug_n1.pin.i = fill(Complex(0), m);
...



model Electrical.QuasiStationary.MultiPhase.Basic.MultiStar

Component
Modelica 3.2.3
Modelica 3.2.2
mSystems
=Modelica323.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m)
=Modelica.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m)



model Electrical.QuasiStationary.MultiPhase.Basic.MultiDelta

Component
Modelica 3.2.3
Modelica 3.2.2
mSystems
=Modelica323.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m)
=Modelica.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m)



model Electrical.QuasiStationary.MultiPhase.Basic.Impedance

Component
Modelica 3.2.3
Modelica 3.2.2
impedance
final frequencyDependent=fill(frequencyDependent, m)

final f_ref=fill(f_ref, m)

frequencyDependent
Present

f_ref
Present




model Electrical.QuasiStationary.MultiPhase.Basic.Admittance

Component
Modelica 3.2.3
Modelica 3.2.2
admittance
final frequencyDependent=fill(frequencyDependent, m)

final f_ref=fill(f_ref, m)

frequencyDependent
Present

f_ref
Present




model Electrical.QuasiStationary.MultiPhase.Basic.VariableImpedance

Component
Modelica 3.2.3
Modelica 3.2.2
variableImpedance
final frequencyDependent=fill(frequencyDependent, m)

final f_ref=fill(f_ref, m)

frequencyDependent
Present

f_ref
Present




model Electrical.QuasiStationary.MultiPhase.Basic.VariableAdmittance

Component
Modelica 3.2.3
Modelica 3.2.2
variableImpedance
final frequencyDependent=fill(frequencyDependent, m)

final f_ref=fill(f_ref, m)

frequencyDependent
Present

f_ref
Present




model Electrical.QuasiStationary.MultiPhase.Ideal.IdealCommutingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.QuasiStationary.MultiPhase.Ideal.IdealIntermediateSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.QuasiStationary.MultiPhase.Ideal.IdealOpeningSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



model Electrical.QuasiStationary.MultiPhase.Ideal.IdealClosingSwitch

Component
Modelica 3.2.3
Modelica 3.2.2
Ron
start=fill(1e-5, m)
start=fill(1.E-5, m)
Goff
start=fill(1e-5, m)
start=fill(1.E-5, m)



function Electrical.QuasiStationary.MultiPhase.Functions.quasiRMS



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
y :=sum({sqrt(u[k].re^2 + u[k].im^2) for k in 1:m})/m; y := sum({'abs'(u[k]) for k in 1:m})/m;



block Electrical.QuasiStationary.MultiPhase.Blocks.QuasiRMS



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
y = Modelica323.Electrical.QuasiStationary.MultiPhase.Functions.quasiRMS(u); y = Modelica.Electrical.QuasiStationary.MultiPhase.Functions.quasiRMS(u);



block Electrical.QuasiStationary.MultiPhase.Blocks.SymmetricalComponents

Component
Modelica 3.2.3
Modelica 3.2.2
sTM
=Electrical.MultiPhase.Functions.symmetricTransformationMatrix(m)
=Modelica322.Electrical.MultiPhase.Functions.symmetricTransformationMatrix(m)
abs_u
Present

arg_u
Present

abs_y
Present

arg_y
Present




block Electrical.QuasiStationary.MultiPhase.Blocks.SingleToMultiPhase



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
y = u*Modelica323.ComplexMath.fromPolar(fill(1, m), -
Electrical.MultiPhase.Functions.symmetricOrientation(m));
y = u*Modelica322.ComplexMath.fromPolar(fill(1, m), -
Modelica322.Electrical.MultiPhase.Functions.symmetricOrientation(m));



block Electrical.QuasiStationary.MultiPhase.Blocks.ToSpacePhasor

Component
Modelica 3.2.3
Modelica 3.2.2
phi
=Electrical.MultiPhase.Functions.symmetricOrientation(m)
=Modelica322.Electrical.MultiPhase.Functions.symmetricOrientation(m)


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
c.re = sqrt(2)/m*sum(u[k].re*cos(phi[k])-u[k].im*sin(phi[k]) for k in 1:m); c = sqrt(2)/m*'sum'({u[k]*exp(j*phi[k]) for k in 1:m});
c.im = sqrt(2)/m*sum(u[k].re*sin(phi[k])+u[k].im*cos(phi[k]) for k in 1:m);

y = {c.re,c.im};



block Electrical.QuasiStationary.MultiPhase.Blocks.FromSpacePhasor

Component
Modelica 3.2.3
Modelica 3.2.2
phi
=Electrical.MultiPhase.Functions.symmetricOrientation(m)
=Modelica322.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Electrical.Spice3.Examples.CoupledInductors

Component
Modelica 3.2.3
Modelica 3.2.2
C1
C=1e-6
C=1.e-6



model Electrical.Spice3.Basic.C_Capacitor



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
if UIC then

vinternal = IC;
end if;


...



function Electrical.Spice3.Additionals.poly



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
ia = 0;
if n == 1 and na == 1 then if (na == 1) then
v = a[1] * s[1];
...



record Electrical.Spice3.Internal.ModelcardMOS

Component
Modelica 3.2.3
Modelica 3.2.2
IS
=1e-14
=1.e-14



record Electrical.Spice3.Internal.ModelcardMOS2

Component
Modelica 3.2.3
Modelica 3.2.2
UCRIT
=1e4
=1.e4



record Electrical.Spice3.Internal.ModelcardJFET

Component
Modelica 3.2.3
Modelica 3.2.2
IS
=1e-14
=1.e-14



record Electrical.Spice3.Internal.ModelcardR

Component
Modelica 3.2.3
Modelica 3.2.2
TC1
SIunits.LinearTemperatureCoefficientResistance
SIunits.Conversions.NonSIunits.FirstOrderTemperaturCoefficient
TC2
SIunits.QuadraticTemperatureCoefficientResistance
SIunits.Conversions.NonSIunits.SecondOrderTemperaturCoefficient



record Electrical.Spice3.Internal.SpiceConstants

Component
Modelica 3.2.3
Modelica 3.2.2
CONSTvt0
final unit="(J)/(A.s)"
final unit="(J/K)/(A.s)"



function Electrical.Spice3.Internal.Functions.junctionPotDepTemp

Component
Modelica 3.2.3
Modelica 3.2.2
phibtemp
SIunits.GapEnergy
SIunits.Voltage
phibtnom
SIunits.GapEnergy
SIunits.Voltage
unitGapEnergy
Present

unitVoltage
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
vt = Spice3.Internal.SpiceConstants.CONSTKoverQ*
    temp;
ret = (phi0 - phibtnom*(unitVoltage/unitGapEnergy))*temp/tnom + phibtemp*(
unitVoltage/unitGapEnergy) + vt*3*Modelica323.Math.log(tnom/temp);
ret = (phi0 - phibtnom)*temp/tnom + phibtemp + vt*3*Modelica322.Math.log(tnom/
temp);



function Electrical.Spice3.Internal.Functions.saturationCurDepTempSPICE3MOSFET

Component
Modelica 3.2.3
Modelica 3.2.2
energygaptnom
SIunits.GapEnergy
SIunits.Voltage
energygaptemp
SIunits.GapEnergy
SIunits.Voltage
unitGapEnergy
Present

unitVoltage
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
energygaptemp =
  Modelica323.Electrical.Spice3.Internal.Functions.energyGapDepTemp(temp);
ret = satcur0 * exp( energygaptnom*(unitVoltage/unitGapEnergy) / vtnom - energygaptemp*(unitVoltage/unitGapEnergy) / vt); ret = satcur0 * exp( energygaptnom / vtnom - energygaptemp / vt);



function Electrical.Spice3.Internal.Functions.junctionParamDepTempSPICE3

Component
Modelica 3.2.3
Modelica 3.2.2
phibtemp
SIunits.GapEnergy
SIunits.Voltage
phibtnom
SIunits.GapEnergy
SIunits.Voltage



function Electrical.Spice3.Internal.Functions.junction2SPICE3MOSFETRevised

Component
Modelica 3.2.3
Modelica 3.2.2
max_current
=1e4
=1.e4



function Electrical.Spice3.Internal.Functions.junction2SPICE3MOSFET

Component
Modelica 3.2.3
Modelica 3.2.2
max_current
=1e4
=1.e4



function Electrical.Spice3.Internal.Functions.energyGapDepTemp

Component
Modelica 3.2.3
Modelica 3.2.2
ret
SIunits.GapEnergy
SIunits.Voltage



function Electrical.Spice3.Internal.Mos2.drainCurRevised

Component
Modelica 3.2.3
Modelica 3.2.2
dbsrdb
=0.0

x4
=fill(0.0, 8)




function Electrical.Spice3.Internal.Mos2.drainCur

Component
Modelica 3.2.3
Modelica 3.2.2
dbsrdb
=0.0

x4
=fill(0.0, 8)




record Electrical.Spice3.Internal.Rsemiconductor.ResistorModelLineParams

Component
Modelica 3.2.3
Modelica 3.2.2
m_dTC1
SIunits.LinearTemperatureCoefficientResistance
SIunits.Conversions.NonSIunits.FirstOrderTemperaturCoefficient
m_dTC2
SIunits.QuadraticTemperatureCoefficientResistance
SIunits.Conversions.NonSIunits.SecondOrderTemperaturCoefficient



model Magnetic.FluxTubes.Examples.MovingCoilActuator.Components.ConstantActuator



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(electroTranslationalConverter.flange, armature.flange_a);
connect(p, p);




model Magnetic.FluxTubes.Examples.Hysteresis.HysteresisModelComparison

Component
Modelica 3.2.3
Modelica 3.2.2
winding1
Present



resistor1
Present



vSource1
Present



winding2
Present



tellinenTable
Present



resistor2
Present



vSource2
Present



winding3
Present



preisachEverett
Present



resistor3
Present



vSource3
Present



tellinenSoft
Present



W1

Present


R1

Present


V1

Present


W2

Present


TellinenTable

Present


R2

Present


V2

Present


W3

Present


PreisachEverett

Present


R3

Present


V3

Present


TellinenSoft

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
connect(winding1.port_n, magGnd1.port); connect(W1.port_n, magGnd1.port);
connect(resistor1.n, winding1.p); connect(R1.n, W1.p);
connect(winding1.n, elGnd1.p); connect(W1.n, elGnd1.p);
connect(vSource1.p, resistor1.p); connect(V1.p, R1.p);
connect(elGnd1.p, vSource1.n); connect(elGnd1.p, V1.n);
connect(winding2.port_n, magGnd2.port); connect(W2.port_n, magGnd2.port);
connect(winding2.port_p, tellinenTable.port_p); connect(W2.port_p, TellinenTable.port_p);
connect(resistor2.n, winding2.p); connect(R2.n, W2.p);
connect(winding2.n, elGnd2.p); connect(W2.n, elGnd2.p);
connect(vSource2.p, resistor2.p); connect(V2.p, R2.p);
connect(elGnd2.p, vSource2.n); connect(elGnd2.p, V2.n);
connect(tellinenTable.port_n, magGnd2.port); connect(TellinenTable.port_n, magGnd2.port);
connect(vSource2.v, vSource1.v); connect(V2.v, V1.v);
connect(winding3.port_n, magGnd3.port); connect(W3.port_n, magGnd3.port);
connect(winding3.port_p, preisachEverett.port_p); connect(W3.port_p, PreisachEverett.port_p);
connect(resistor3.n, winding3.p); connect(R3.n, W3.p);
connect(winding3.n, elGnd3.p); connect(W3.n, elGnd3.p);
connect(vSource3.p, resistor3.p); connect(V3.p, R3.p);
connect(elGnd3.p, vSource3.n); connect(elGnd3.p, V3.n);
connect(preisachEverett.port_n, magGnd3.port); connect(PreisachEverett.port_n, magGnd3.port);
connect(vSource3.v, vSource1.v); connect(V3.v, V1.v);
connect(timeTable.y, gain.u);
connect(gain.y, vSource1.v); connect(gain.y, V1.v);
connect(winding1.port_p, tellinenSoft.port_p); connect(W1.port_p, TellinenSoft.port_p);
connect(magGnd1.port,tellinenSoft. port_n); connect(magGnd1.port, TellinenSoft.port_n);



model Magnetic.FluxTubes.Examples.Hysteresis.InductorWithHysteresis

Component
Modelica 3.2.3
Modelica 3.2.2
winding
Present



resistor
Present



vSource
Present



core
Present



Winding

Present


R

Present


SineVoltage

Present


Core

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
connect(winding.port_n, mag_ground.port); connect(Winding.port_n, mag_ground.port);
connect(vSource.p, resistor.p); connect(SineVoltage.p, R.p);
connect(vSource.n, el_ground.p); connect(SineVoltage.n, el_ground.p);
connect(winding.n, el_ground.p); connect(Winding.n, el_ground.p);
connect(resistor.n, winding.p); connect(R.n, Winding.p);
connect(winding.port_p,core. port_p); connect(Winding.port_p, Core.port_p);
connect(mag_ground.port,core. port_n); connect(mag_ground.port, Core.port_n);



model Magnetic.FluxTubes.Examples.Hysteresis.SinglePhaseTransformerWithHysteresis1

Component
Modelica 3.2.3
Modelica 3.2.2
winding1
Present



resistor1
Present



vSource
Present



winding2
Present



resistor2
Present



core
Present



WindingPrim

Present


Rprim

Present


SineVoltage

Present


WindingSec

Present


Rsec

Present


Core

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
connect(WindingPrim.port_n, mag_ground.port);
core.derHstat = 0.0; connect(SineVoltage.p, Rprim.p);
connect(SineVoltage.n, el_ground1.p);
equation
connect(winding1.port_n, mag_ground.port);
connect(WindingPrim.n, el_ground1.p);
connect(vSource.p, resistor1.p); connect(Rprim.n, WindingPrim.p);
connect(vSource.n, el_ground1.p); connect(WindingSec.port_n, mag_ground.port);
connect(winding1.n, el_ground1.p); connect(WindingSec.p, Rsec.p);
connect(resistor1.n, winding1.p); connect(WindingSec.n, el_ground2.p);
connect(winding2.port_n, mag_ground.port); connect(Rsec.n, el_ground2.p);
connect(winding2.p, resistor2.p); connect(WindingPrim.port_p, Core.port_p);
connect(winding2.n, el_ground2.p); connect(Core.port_n, WindingSec.port_p);
connect(resistor2.n, el_ground2.p);
connect(winding1.port_p, core.port_p);
connect(core.port_n, winding2.port_p);




model Magnetic.FluxTubes.Examples.Hysteresis.SinglePhaseTransformerWithHysteresis2

Component
Modelica 3.2.3
Modelica 3.2.2
resistor1
Present



resistor2
Present



transformer
Present



Rprim

Present


Rsec

Present


tr

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
connect(SineVoltage.p, Rprim.p);
transformer.core.derHstat = 0.0;

equation
  connect(SineVoltage.p, resistor1.p);

connect(SineVoltage.n, el_ground1.p);
connect(resistor2.n, el_ground2.p); connect(Rsec.n, el_ground2.p);
connect(resistor1.n, transformer.p1); connect(Rprim.n, tr.p_A);
connect(transformer.n1, el_ground1.p); connect(tr.p_N, el_ground1.p);
connect(transformer.p2, resistor2.p); connect(tr.p_a, Rsec.p);
connect(transformer.n2, el_ground2.p); connect(tr.p_n, el_ground2.p);



model Magnetic.FluxTubes.Examples.Hysteresis.ThreePhaseTransformerWithRectifier

Component
Modelica 3.2.3
Modelica 3.2.2
rExp1
y=transformer.LossPowerStat
y=TR3PhaseYy.LossPowerStat
rExp2
y=transformer.LossPowerEddy
y=TR3PhaseYy.LossPowerEddy
rExp3
y=transformer.LossPowerWinding
y=TR3PhaseYy.LossPowerWinding
ground1
Present



ground2
Present



vSource1
Present



transformer
Present



vSource2
Present



vSource3
Present



resistor1
Present



resistor2
Present



resistor3
Present



diode1
Present



diode2
Present



resistorL
Present



diode3
Present



diode4
Present



diode5
Present



diode6
Present



inductor3
Present



pdissStatAvg
Present



pdissEddyAvg
Present



pdissCopAvg
Present



G1

Present


G2

Present


VA

Present


TR3PhaseYy

Present


VB

Present


VC

Present


RA

Present


RB

Present


RC

Present


D1

Present


D2

Present


RL

Present


D3

Present


D4

Present


D5

Present


D6

Present


inductor

Present


PdissStatAvg

Present


PdissEddyAvg

Present


PdissCopAvg

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
connect(VA.n, G1.p);
transformer.core1.derHstat = 0.0; connect(VB.n, G1.p);
transformer.core2.derHstat = 0.0; connect(VC.n, G1.p);
transformer.core3.derHstat = 0.0; connect(RA.n, TR3PhaseYy.p_A);
connect(RA.p, VA.p);
equation
connect(vSource1.n, ground1.p);
connect(RB.n, TR3PhaseYy.p_B);
connect(vSource2.n, ground1.p); connect(RB.p, VB.p);
connect(vSource3.n, ground1.p); connect(VC.p, RC.p);
connect(resistor1.n, transformer.p1); connect(RC.n, TR3PhaseYy.p_C);
connect(resistor1.p, vSource1.p); connect(D2.n, D1.p);
connect(resistor2.n, transformer.p2); connect(D4.n, D3.p);
connect(resistor2.p, vSource2.p); connect(D6.n, D5.p);
connect(vSource3.p, resistor3.p); connect(D2.p, D4.p);
connect(resistor3.n, transformer.p3); connect(D4.p, D6.p);
connect(diode2.n, diode1.p); connect(D1.n, D3.n);
connect(diode4.n, diode3.p); connect(D3.n, D5.n);
connect(diode6.n, diode5.p); connect(D5.n, capacitor1.p);
connect(diode2.p, diode4.p); connect(RL.p, capacitor1.p);
connect(diode4.p, diode6.p); connect(TR3PhaseYy.p_a, inductor.p);
connect(diode1.n, diode3.n); connect(TR3PhaseYy.p_b, inductor1.p);
connect(diode3.n, diode5.n); connect(inductor1.n, D3.p);
connect(diode5.n, capacitor1.p); connect(inductor2.p, TR3PhaseYy.p_c);
connect(resistorL.p, capacitor1.p); connect(inductor2.n, D6.n);
connect(transformer.n1, inductor1.p); connect(capacitor2.n, D6.p);
connect(transformer.n2, inductor2.p);
connect(inductor2.n, diode3.p);
connect(inductor3.p, transformer.n3);
connect(inductor3.n, diode6.n);
connect(capacitor2.n, diode6.p);

connect(capacitor2.p, capacitor1.n);
connect(inductor1.n, diode1.p); connect(inductor.n, D1.p);
connect(resistorL.n, capacitor2.n); connect(RL.n, capacitor2.n);
connect(transformer.starPoint1, ground1.p); connect(TR3PhaseYy.pN, G1.p);
connect(transformer.starPoint2, ground2.p); connect(TR3PhaseYy.pn, G2.p);
connect(ground2.p, capacitor2.p); connect(G2.p, capacitor2.p);
connect(rExp3.y,pdissCopAvg. u); connect(rExp3.y, PdissCopAvg.u);
connect(rExp2.y,pdissEddyAvg. u); connect(rExp2.y, PdissEddyAvg.u);
connect(rExp1.y,pdissStatAvg. u); connect(rExp1.y, PdissStatAvg.u);



model Magnetic.FluxTubes.Examples.Hysteresis.Components.Transformer1PhaseWithHysteresis

Component
Modelica 3.2.3
Modelica 3.2.2
n1
Present



p1
Present



n2
Present



p2
Present



tempSource
Present



N1
Present

L1
Present

d1
Present

rho1
Present

alpha1
Present

N2
Present

L2
Present

d2
Present

rho2
Present

alpha2
Present

v1
Present

v2
Present

R1
Present

R2
Present

i1
Present

i2
Present

I1Start
Present

I1Fixed
Present

L_l1
Present

A_l1
Present

mu_rel1
Present

L_l2
Present

A_l2
Present

mu_rel2
Present

winding1
Present



winding2
Present



resistor1
Present



resistor2
Present



core
Present



p_N

Present


p_A

Present


p_n

Present


p_a

Present


Temp

Present


N_p

Present
l_p

Present
d_p

Present
rho_p

Present
alpha_p

Present
N_s

Present
l_s

Present
d_s

Present
rho_s

Present
alpha_s

Present
v_p

Present
v_s

Present
R_p

Present
R_s

Present
i_p

Present
i_s

Present
IpStart

Present
IpFixed

Present
L_lp

Present
A_lp

Present
mu_relp

Present
L_ls

Present
A_ls

Present
mu_rels

Present
Wp

Present


Ws

Present


Rp

Present


Rs

Present


Core

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
v1 =p1.v - n1.v; v_p = p_A.v-p_N.v;
i1 =resistor1.i; i_p = Rp.i;
R1 =resistor1.R_actual; R_p = Rp.R_actual;
v2 =p2.v - n2.v; v_s = p_a.v-p_n.v;
i2 =resistor2.i; i_s = Rs.i;
R2 =resistor2.R_actual; R_s = Rs.R_actual;
B =core.B; B = Core.B;
Hstat =core.Hstat; Hstat = Core.Hstat;
Heddy =core.Heddy; Heddy = Core.Heddy;
H =core.H; H = Core.H;
tempSource.T = if useHeatPort then T_heatPort else T; Temp.T = if useHeatPort then T_heatPort else T;
LossPowerWinding =resistor1.LossPower + resistor2.LossPower; LossPowerWinding = Rp.LossPower + Rs.LossPower;
LossPowerStat =core.LossPowerStat; LossPowerStat = Core.LossPowerStat;
LossPowerEddy =core.LossPowerEddy; LossPowerEddy = Core.LossPowerEddy;
LossPower = LossPowerWinding + LossPowerEddy + LossPowerStat;
connect(winding1.port_n, ground.port); connect(Wp.port_n, ground.port);
connect(resistor1.n, winding1.p); connect(Rp.n, Wp.p);
connect(resistor1.p, p1); connect(Rp.p, p_A);
connect(resistor2.n, p2); connect(Rs.n, p_a);
connect(winding1.n, n1); connect(Wp.n, p_N);
connect(tempSource.port, resistor1.heatPort); connect(Temp.port, Rp.heatPort);
connect(resistor2.heatPort, tempSource.port); connect(Rs.heatPort, Temp.port);
connect(winding2.port_n, ground.port); connect(Ws.port_n, ground.port);
connect(winding2.n, resistor2.p); connect(Ws.n, Rs.p);
connect(n2, winding2.p); connect(p_n, Ws.p);
connect(core.port_p, winding1.port_p); connect(Core.port_p, Wp.port_p);
connect(core.port_n, winding2.port_p); connect(Core.port_n, Ws.port_p);



model Magnetic.FluxTubes.Examples.Hysteresis.Components.Transformer3PhaseYyWithHysteresis

Component
Modelica 3.2.3
Modelica 3.2.2
ground

protected
N1
Present

L1
Present

d1
Present

rho1
Present

alpha1
Present

N2
Present

L2
Present

d2
Present

rho2
Present

alpha2
Present

v1
Present

v2
Present

R1
Present

R2
Present

i1
Present

i2
Present

I1Start
Present

I1Fixed
Present

I2Start
Present

I2Fixed
Present

L_l1
Present

A_l1
Present

mu_rel1
Present

L_l2
Present

A_l2
Present

mu_rel2
Present

core1
Present



core2
Present



core3
Present



winding11
Present



winding12
Present



winding13
Present



winding21
Present



winding22
Present



winding23
Present



resistor11
Present



resistor21
Present



resistor12
Present



resistor22
Present



resistor23
Present



resistor13
Present



leakage
Present



p1
Present



p2
Present



p3
Present



n1
Present



n2
Present



n3
Present



starPoint2
Present



starPoint1
Present



N_p

Present
l_p

Present
d_p

Present
rho_p

Present
alpha_p

Present
N_s

Present
l_s

Present
d_s

Present
rho_s

Present
alpha_s

Present
v_p

Present
v_s

Present
R_p

Present
R_s

Present
i_p

Present
i_s

Present
IprimStart

Present
IprimFixed

Present
IsecStart

Present
IsecFixed

Present
L_lp

Present
A_lp

Present
mu_relp

Present
L_ls

Present
A_ls

Present
mu_rels

Present
CoreA

Present


CoreB

Present


CoreC

Present


WA

Present


WB

Present


WC

Present


Wa

Present


Wb

Present


Wc

Present


RA

Present


Ra

Present


RB

Present


Rb

Present


Rc

Present


RC

Present


Leakage

Present


p_A

Present


p_B

Present


p_C

Present


p_a

Present


p_b

Present


p_c

Present


pn

Present


pN

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
v1[1] =resistor11.p.v - winding11.n.v; v_p[1] = RA.p.v-WA.n.v;
v1[2] =resistor12.p.v - winding12.n.v; v_p[2] = RB.p.v-WB.n.v;
v1[3] =resistor13.p.v - winding13.n.v; v_p[3] = RC.p.v-WC.n.v;
i1[1] =resistor11.i; i_p[1] = RA.i;
i1[2] =resistor12.i; i_p[2] = RB.i;
i1[3] =resistor13.i; i_p[3] = RC.i;
R1[1] =resistor11.R_actual; R_p[1] = RA.R_actual;
R1[2] =resistor12.R_actual; R_p[2] = RB.R_actual;
R1[3] =resistor13.R_actual; R_p[3] = RC.R_actual;
v2[1] =resistor21.n.v - winding21.n.v; v_s[1] = Ra.n.v-Wa.n.v;
v2[2] =resistor21.n.v - winding21.n.v; v_s[2] = Ra.n.v-Wa.n.v;
v2[3] =resistor21.n.v - winding21.n.v; v_s[3] = Ra.n.v-Wa.n.v;
i2[1] =resistor21.i; i_s[1] = Ra.i;
i2[2] =resistor22.i; i_s[2] = Rb.i;
i2[3] =resistor23.i; i_s[3] = Rc.i;
R2[1] =resistor21.R_actual; R_s[1] = Ra.R_actual;
R2[2] =resistor22.R_actual; R_s[2] = Rb.R_actual;
R2[3] =resistor23.R_actual; R_s[3] = Rc.R_actual;
B[1] =core1.B; B[1] = CoreA.B;
B[2] =core2.B; B[2] = CoreB.B;
B[3] =core3.B; B[3] = CoreC.B;
Phi[1] =core1.Phi; Phi[1] = CoreA.Phi;
Phi[2] =core2.Phi; Phi[2] = CoreB.Phi;
Phi[3] =core3.Phi; Phi[3] = CoreC.Phi;
Hstat[1] =core1.Hstat; Hstat[1] = CoreA.Hstat;
Hstat[2] =core2.Hstat; Hstat[2] = CoreB.Hstat;
Hstat[3] =core3.Hstat; Hstat[3] = CoreC.Hstat;
Heddy[1] =core1.Heddy; Heddy[1] = CoreA.Heddy;
Heddy[2] =core2.Heddy; Heddy[2] = CoreB.Heddy;
Heddy[3] =core3.Heddy; Heddy[3] = CoreC.Heddy;
H[1] =core1.H; H[1] = CoreA.H;
H[2] =core2.H; H[2] = CoreB.H;
H[3] =core3.H; H[3] = CoreC.H;
Temp.T = if useHeatPort then T_heatPort else T;
LossPowerWinding =resistor11.LossPower + resistor12.LossPower + resistor13.LossPower + resistor21.LossPower + resistor22.LossPower + resistor23.LossPower; LossPowerWinding = RA.LossPower + RB.LossPower + RC.LossPower + Ra.LossPower + Rb.LossPower + Rc.LossPower;
LossPowerStat =core1.LossPowerStat +core2.LossPowerStat +core3.LossPowerStat; LossPowerStat = CoreA.LossPowerStat + CoreB.LossPowerStat + CoreC.LossPowerStat;
LossPowerEddy =core1.LossPowerEddy +core2.LossPowerEddy +core3.LossPowerEddy; LossPowerEddy = CoreA.LossPowerEddy + CoreB.LossPowerEddy + CoreC.LossPowerEddy;
LossPower = LossPowerWinding + LossPowerEddy + LossPowerStat;
connect(winding11.port_n, winding21.port_p); connect(WA.port_n, Wa.port_p);
connect(winding11.p, resistor11.n); connect(WA.p, RA.n);
connect(resistor11.p, p1); connect(RA.p, p_A);
connect(winding12.p, resistor12.n); connect(WB.p, RB.n);
connect(winding13.p, resistor13.n); connect(WC.p, RC.n);
connect(winding12.port_p, core2.port_n); connect(WB.port_p, CoreB.port_n);
connect(winding12.port_n, winding22.port_p); connect(WB.port_n, Wb.port_p);
connect(winding21.port_n, ground.port); connect(Wa.port_n, ground.port);
connect(ground.port, winding22.port_n); connect(ground.port, Wb.port_n);
connect(winding23.port_n, ground.port); connect(Wc.port_n, ground.port);
connect(winding23.port_p, winding13.port_n); connect(Wc.port_p, WC.port_n);
connect(winding13.port_p, core3.port_n); connect(WC.port_p, CoreC.port_n);
connect(p2, resistor12.p); connect(p_B, RB.p);
connect(p3, resistor13.p); connect(p_C, RC.p);
connect(Temp.port, resistor11.heatPort); connect(Temp.port, RA.heatPort);
connect(resistor12.heatPort, Temp.port); connect(RB.heatPort, Temp.port);
connect(resistor13.heatPort, Temp.port); connect(RC.heatPort, Temp.port);
connect(resistor23.heatPort, Temp.port); connect(Rc.heatPort, Temp.port);
connect(resistor22.heatPort, Temp.port); connect(Rb.heatPort, Temp.port);
connect(resistor21.heatPort, Temp.port); connect(Ra.heatPort, Temp.port);
connect(resistor21.p, winding21.p); connect(Ra.p, Wa.p);
connect(resistor22.p, winding22.p); connect(Rb.p, Wb.p);
connect(resistor23.p, winding23.p); connect(Rc.p, Wc.p);
connect(resistor21.n, n1); connect(Ra.n, p_a);
connect(resistor22.n, n2); connect(Rb.n, p_b);
connect(resistor23.n, n3); connect(Rc.n, p_c);
connect(leakage.port_n, ground.port); connect(Leakage.port_n, ground.port);
connect(winding11.port_p, core1.port_n); connect(WA.port_p, CoreA.port_n);
connect(core1.port_p,core2. port_p); connect(CoreA.port_p, CoreB.port_p);
connect(core3.port_p,core1. port_p); connect(CoreC.port_p, CoreA.port_p);
connect(leakage.port_p,core3. port_p); connect(Leakage.port_p, CoreC.port_p);
connect(winding11.n, starPoint1); connect(WA.n, pN);
connect(starPoint1, winding13.n); connect(pN, WC.n);
connect(starPoint1, winding12.n); connect(pN, WB.n);
connect(winding21.n, starPoint2); connect(Wa.n, pn);
connect(starPoint2, winding22.n); connect(pn, Wb.n);
connect(winding23.n, starPoint2); connect(Wc.n, pn);



model Magnetic.FluxTubes.Basic.ElectroMagneticConverter



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Phi = port_p.Phi;
V_m = i*N "Ampere's law"; V_m = i*N;
N*der(Phi) = -v "Faraday's law"; N*der(Phi) = -v;
Psi = N*Phi;
...



model Magnetic.FluxTubes.Shapes.HysteresisAndMagnets.GenericHystPreisachEverett



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
init2 = time >= 1.5*t1;
equation
init2 = time > 1.5*t1;
init3 = edge(init2);
...
del = delAsc or delDesc or evInit;
init = (abs(alpha) >= pre(hmax)) and time>=2*t1; init = (abs(alpha) >= pre(hmax)) and time>2*t1;
evInit = init and not pre(init);
...



model Magnetic.FluxTubes.Interfaces.ConditionalHeatPort

Component
Modelica 3.2.3
Modelica 3.2.2
heatPort
final T=T_heatPort

final Q_flow=-LossPower


T(start=T) = T_heatPort

Q_flow=-LossPower



model Magnetic.FluxTubes.Interfaces.PartialGenericHysteresis

Component
Modelica 3.2.3
Modelica 3.2.2
derHstat

fixed=true



model Magnetic.FundamentalWave.Examples.BasicMachines.AIMC_DOL

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=aimcData.fsNominal
=50
aimcM
effectiveStatorTurns=aimcData.effectiveStatorTurns




model Magnetic.FundamentalWave.Examples.BasicMachines.AIMC_DOL_MultiPhase

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=aimcData.fsNominal
=50
aimcM
effectiveStatorTurns=aimcData.effectiveStatorTurns

aimc3
effectiveStatorTurns=aimcData.effectiveStatorTurns




model Magnetic.FundamentalWave.Examples.BasicMachines.AIMS_Start

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=aimsData.fsNominal
=50
aimsM
effectiveStatorTurns=aimsData.effectiveStatorTurns




model Magnetic.FundamentalWave.Examples.BasicMachines.AIMS_Start_MultiPhase

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=aimsData.fsNominal
=50
w_Load
=Modelica323.SIunits.Conversions.from_rpm(1440.45)
=Modelica.SIunits.Conversions.from_rpm(1440.45)
aimsM
effectiveStatorTurns=aimsData.effectiveStatorTurns

aims3
effectiveStatorTurns=aimsData.effectiveStatorTurns

sineVoltageM
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)
sineVoltage3
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m3)



model Magnetic.FundamentalWave.Examples.BasicMachines.SMPM_Inverter

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smpmData.fsNominal
=50
smpmM
ir(each fixed=true)

effectiveStatorTurns=smpmData.effectiveStatorTurns


ir(fixed=true)
smpmE
ir(each fixed=true)


ir(fixed=true)
thetaM
Present

thetaE
Present




model Magnetic.FundamentalWave.Examples.BasicMachines.SMPM_Inverter_MultiPhase

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smpmData.fsNominal
=50
vfController3
BasePhase=+Modelica323.Constants.pi/2
BasePhase=+Modelica.Constants.pi/2
orientation=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
orientation=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
smpmM
ir(each fixed=true)

effectiveStatorTurns=smpmData.effectiveStatorTurns


ir(fixed=true)
smpm3
ir(each fixed=true)

effectiveStatorTurns=smpmData.effectiveStatorTurns


ir(fixed=true)
vfController
BasePhase=+Modelica323.Constants.pi/2
BasePhase=+Modelica.Constants.pi/2
orientation=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
orientation=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Magnetic.FundamentalWave.Examples.BasicMachines.SMEE_Generator_MultiPhase

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smeeData.fsNominal
=50
w
=Modelica323.SIunits.Conversions.from_rpm(1499)
=Modelica.SIunits.Conversions.from_rpm(1499)
Lssigma
=0.1/(2*Modelica323.Constants.pi*fsNominal)
=0.1/(2*Modelica.Constants.pi*fsNominal)
Lmd
=1.5/(2*Modelica323.Constants.pi*fsNominal)
=1.5/(2*Modelica.Constants.pi*fsNominal)
Lmq
=1.5/(2*Modelica323.Constants.pi*fsNominal)
=1.5/(2*Modelica.Constants.pi*fsNominal)
Lrsigmad
=0.05/(2*Modelica323.Constants.pi*fsNominal)
=0.05/(2*Modelica.Constants.pi*fsNominal)
sineVoltage3
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
smeeM
phiMechanical(start=-(Modelica323.Constants.pi + gamma0)/p, fixed=true)
phiMechanical(start=-(Modelica.Constants.pi + gamma0)/p, fixed=true)
sigmae=smeeData.sigmae*m/3
sigmae=smeeData.sigmae
ir(each fixed=true)

effectiveStatorTurns=smeeData.effectiveStatorTurns


ir(fixed=true)
smee3
phiMechanical(start=-(Modelica323.Constants.pi + gamma0)/p, fixed=true)
phiMechanical(start=-(Modelica.Constants.pi + gamma0)/p, fixed=true)
ir(each fixed=true)

effectiveStatorTurns=smeeData.effectiveStatorTurns


ir(fixed=true)
smeeData
alpha20s(displayUnit="1/K") = Modelica323.Electrical.Machines.Thermal.Constants.alpha20Zero
alpha20s(displayUnit="1/K") = Modelica.Electrical.Machines.Thermal.Constants.alpha20Zero
alpha20r(displayUnit="1/K") = Modelica323.Electrical.Machines.Thermal.Constants.alpha20Zero
alpha20r(displayUnit="1/K") = Modelica.Electrical.Machines.Thermal.Constants.alpha20Zero
alpha20e(displayUnit="1/K") = Modelica323.Electrical.Machines.Thermal.Constants.alpha20Zero
alpha20e(displayUnit="1/K") = Modelica.Electrical.Machines.Thermal.Constants.alpha20Zero
sineVoltageM
phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Magnetic.FundamentalWave.Examples.BasicMachines.SMEE_Generator

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smeeData.fsNominal
=50
smeeM
effectiveStatorTurns=smeeData.effectiveStatorTurns

thetaM
Present

thetaE
Present




model Magnetic.FundamentalWave.Examples.BasicMachines.SMR_Inverter

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smrData.fsNominal
=50
smrM
ir(each fixed=true)

effectiveStatorTurns=smrData.effectiveStatorTurns


ir(fixed=true)
smrE
ir(each fixed=true)


ir(fixed=true)
thetaM
Present

thetaE
Present




model Magnetic.FundamentalWave.Examples.BasicMachines.SMR_Inverter_MultiPhase

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smrData.fsNominal
=50
smrM
ir(each fixed=true)

effectiveStatorTurns=smrData.effectiveStatorTurns


ir(fixed=true)
smr3
ir(each fixed=true)

effectiveStatorTurns=smrData.effectiveStatorTurns


ir(fixed=true)
vfController3
BasePhase=+Modelica323.Constants.pi/2
BasePhase=+Modelica.Constants.pi/2
orientation=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
orientation=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m3)
vfControllerM
BasePhase=+Modelica323.Constants.pi/2
BasePhase=+Modelica.Constants.pi/2
orientation=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
orientation=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)



model Magnetic.FundamentalWave.BasicMachines.SynchronousInductionMachines.SM_PermanentMagnet

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical

groundR

Present





model Magnetic.FundamentalWave.BasicMachines.SynchronousInductionMachines.SM_ElectricalExcited

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical

irRMS
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
connect(ir, rotorCage.i);
connect(irRMS, rotorCage.iRMS);

connect(damperCageLossPower, rotorCage.lossPower);
...



model Magnetic.FundamentalWave.BasicMachines.SynchronousInductionMachines.SM_ReluctanceRotor

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical

groundR

Present





model Magnetic.FundamentalWave.BasicMachines.Components.SymmetricMultiPhaseWinding

Component
Modelica 3.2.3
Modelica 3.2.2
nBase
Present

mBase
Present

short
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(resistor.plug_n, zeroInductor.plug_p);

connect(zeroInductor.plug_n, electroMagneticConverter.plug_p);
connect(electroMagneticConverter.plug_n, plug_n);
...
connect(strayReluctance.port_p, electroMagneticConverter.port_p);
connect(zeroInductor.plug_n, electroMagneticConverter.plug_p);
connect(resistor.plug_n, short.plug_p);
connect(electroMagneticConverter.plug_p, short.plug_n);




model Magnetic.FundamentalWave.BasicMachines.Components.RotorSaliencyAirGap



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
port_sp.Phi = Phi_ss "Stator flux into positive stator port"; port_sp.Phi = Phi_ss;
port_sp.Phi + port_sn.Phi = Complex(0, 0) "Balance of stator flux"; port_sp.Phi + port_sn.Phi = Complex(0, 0);
port_rp.Phi = Phi_rr "Rotor flux into positive rotor port"; port_rp.Phi = Phi_rr;
port_rp.Phi + port_rn.Phi = Complex(0, 0) "Balance of rotor flux"; port_rp.Phi + port_rn.Phi = Complex(0, 0);
port_sp.V_m - port_sn.V_m = V_mss "Magnetomotive force of stator"; port_sp.V_m - port_sn.V_m = V_mss;
port_rp.V_m - port_rn.V_m = V_mrr "Magnetomotive force of rotor"; port_rp.V_m - port_rn.V_m = V_mrr;
V_msr = V_mss*Modelica323.ComplexMath.conj(rotator);

Phi_sr = Phi_ss*Modelica323.ComplexMath.conj(rotator);
Phi_sr = Phi_rr;

V_msr = V_mss*Modelica322.ComplexMath.conj(rotator);
(pi/2.0)*(V_mrr.re + V_msr.re) = Phi_rr.re*R_m.d;
...



model Magnetic.FundamentalWave.BasicMachines.Components.SymmetricMultiPhaseCageWinding

Component
Modelica 3.2.3
Modelica 3.2.2
alphaRef
=Modelica323.Electrical.Machines.Thermal.convertAlpha(alpha20, TRef, 293.15)
=Modelica.Electrical.Machines.Thermal.convertAlpha(alpha20, TRef, 293.15)
electroMagneticConverter
final orientation=Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m)
final orientation=Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m)
resistor
final T=fill(TOperational, m)
final T=fill(TRef, m)
star
final m=nBase
final m=m
nBase
Present

multiStar
Present



starAuxiliary

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(ground.p, star.pin_n);

connect(star.plug_p, electroMagneticConverter.plug_n);
connect(thermalCollector.port_a, resistor.heatPort);
connect(thermalCollector.port_b, heatPortWinding);

connect(resistor.plug_n, starAuxiliary.plug_p);
connect(strayReluctance.port_p, port_p);
...
connect(electroMagneticConverter.plug_p, resistor.plug_p);
connect(electroMagneticConverter.plug_n, multiStar.plug_p);
connect(multiStar.starpoints, star.plug_p);
connect(resistor.plug_n, multiStar.plug_p);




model Magnetic.FundamentalWave.BasicMachines.Components.SaliencyCageWinding

Component
Modelica 3.2.3
Modelica 3.2.2
alphaRef
=Modelica323.Electrical.Machines.Thermal.convertAlpha(alpha20, TRef, 293.15)
=Modelica.Electrical.Machines.Thermal.convertAlpha(alpha20, TRef, 293.15)
electroMagneticConverter
final orientation={0,Modelica323.Constants.pi/2}
final orientation={0,Modelica.Constants.pi/2}
iRMS
Present




model Magnetic.FundamentalWave.BasicMachines.Components.SymmetricMultiPhaseCageWinding_obsolete

Component
Modelica 3.2.3
Modelica 3.2.2
resistor
final T=fill(TOperational, m)
final T=fill(TRef, m)



connector Magnetic.FundamentalWave.Interfaces.MagneticPort

Component
Modelica 3.2.3
Modelica 3.2.2
V_m
SIunits.ComplexMagneticPotential
SIunits.ComplexMagneticPotentialDifference



model Magnetic.FundamentalWave.Interfaces.PartialBasicInductionMachine

Component
Modelica 3.2.3
Modelica 3.2.2
pi
SIunits.Angle
Real

protected
statorCoreParameters
final m=m
final m=3
internalThermalPort

protected
internalSupport

protected



model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.InductionMachines.IMC_DOL

Component
Modelica 3.2.3
Modelica 3.2.2
m
=3
=5
fNominal
=imc.fsNominal
=50
imc
effectiveStatorTurns=imcData.effectiveStatorTurns

imcQS
effectiveStatorTurns=imcData.effectiveStatorTurns

terminalBox
Present



starMachine
Present



groundMachine
Present



terminalBoxM

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
sum(imc.is) = 0;

imc.is[1:2] = zeros(2);
imc.rotorCage.electroMagneticConverter.V_m = Complex(0, 0); imc.rotorCage.electroMagneticConverter.Phi = Complex(0, 0);

...
connect(loadInertia.flange_b, quadraticLoadTorque.flange);
connect(terminalBox.plug_sn, imc.plug_sn); connect(terminalBoxM.plug_sn, imc.plug_sn);
connect(terminalBox.plug_sp, imc.plug_sp); connect(terminalBoxM.plug_sp, imc.plug_sp);
connect(booleanStep.y, idealCloser.control);
...
connect(powerSensor.nc, currentQuasiRMSSensor.plug_p);
connect(currentQuasiRMSSensor.plug_n, terminalBox.plugSupply); connect(currentQuasiRMSSensor.plug_n, terminalBoxM.plugSupply);
connect(loadInertiaQS.flange_b, quadraticLoadTorqueQS.flange);
...
connect(starMachineQS.pin_n, groundMachineQS.pin);
connect(starMachine.plug_p, terminalBox.starpoint);
connect(groundMachine.p, starMachine.pin_n);




model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.InductionMachines.IMS_Start

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=ims.fsNominal
=50
terminalBoxM
Electrical.Machines.Utilities.MultiTerminalBox
Electrical.Machines.Utilities.TerminalBox
ims
effectiveStatorTurns=imsData.effectiveStatorTurns

imsQS
effectiveStatorTurns=imsData.effectiveStatorTurns

rheostatQS
Present



loadInertiaQS
Present



quadraticLoadTorqueQS
Present



starMachine
Present



groundMachine
Present



rheostatE

Present


loadInertiaE

Present


quadraticLoadTorqueE

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
sum(ims.is) = 0;

ims.is[1:2] = zeros(2);
sum(ims.ir) = 0; ims.ir[1:mr] = zeros(mr);
ims.ir[1:2] = zeros(2);


...
connect(sineVoltage.plug_n, star.plug_p);
connect(loadInertiaQS.flange_b, quadraticLoadTorqueQS.flange); connect(loadInertiaE.flange_b, quadraticLoadTorqueE.flange);
connect(imsQS.flange, loadInertiaQS.flange_a); connect(imsQS.flange, loadInertiaE.flange_a);
connect(booleanStep.y, idealCloser.control);
...
connect(idealCloser.plug_p, sineVoltage.plug_p);
connect(imsQS.plug_rp, rheostatQS.plug_p); connect(imsQS.plug_rp, rheostatE.plug_p);
connect(rheostatQS.plug_n, imsQS.plug_rn); connect(rheostatE.plug_n, imsQS.plug_rn);
connect(groundQS.pin, starQS.pin_n);
...
connect(starMachineQS.plug_p, terminalBoxQS.starpoint);
connect(groundMachine.p,starMachine. pin_n);
connect(terminalBoxM.starpoint, starMachine.plug_p);




model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.SynchronousMachines.SMPM_OpenCircuit

Component
Modelica 3.2.3
Modelica 3.2.2
smpmQS
effectiveStatorTurns=smpmData.effectiveStatorTurns

smpm
effectiveStatorTurns=smpmData.effectiveStatorTurns




model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.SynchronousMachines.SMPM_Mains

Component
Modelica 3.2.3
Modelica 3.2.2
smpmQS
effectiveStatorTurns=smpmData.effectiveStatorTurns

smpm
ir(each fixed=true, start=zeros(2))

effectiveStatorTurns=smpmData.effectiveStatorTurns


ir(fixed=true, start=zeros(2))
terminalBox
Electrical.Machines.Utilities.MultiTerminalBox
Electrical.Machines.Utilities.TerminalBox
starMachine
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
sum(smpm.is)=0; smpm.is=zeros(m);
smpm.is[1:2]=zeros(2);


...
connect(star.pin_n, ground.p);

connect(groundMachine.p, terminalBox.starpoint);
connect(powerSensor.nv, star.plug_p);
connect(terminalBox.starpoint, starMachine.plug_p);
connect(starMachine.pin_n, groundMachine.p);




model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.SynchronousMachines.SMPM_CurrentSource

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=smpmData.fsNominal
=50
smpm
m=m

effectiveStatorTurns=smpmData.effectiveStatorTurns

currentController
m=m

iq
k=84.6*3/m
k=84.6
id
k=-53.5*3/m
k=-53.5
voltageQuasiRMSSensor
m=m

terminalBox
Electrical.Machines.Utilities.MultiTerminalBox
Electrical.Machines.Utilities.TerminalBox
currentRMSsensor
m=m

smpmQS
m=m

effectiveStatorTurns=smpmData.effectiveStatorTurns

thetaQS
Present

theta
Present

rotorAngle
Present



currentControllerQS
Present



referenceCurrentSourceQS
Present



resistorQS
Present



rotorAngleQS
Present



currentRMSSensorQS
Present



voltageQuasiRMSSensorQS
Present



starMQS
Present



starMachine
Present



rotorDisplacementAngle

Present


currentController1

Present


referenceCurrentSource

Present


resistor

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
connect(star.pin_n, ground.p);
connect(rotorAngle.plug_n, smpm.plug_sn); connect(rotorDisplacementAngle.plug_n, smpm.plug_sn);
connect(rotorAngle.plug_p, smpm.plug_sp); connect(rotorDisplacementAngle.plug_p, smpm.plug_sp);
connect(terminalBox.plug_sn, smpm.plug_sn);
connect(terminalBox.plug_sp, smpm.plug_sp);
connect(smpm.flange, rotorAngle.flange); connect(smpm.flange, rotorDisplacementAngle.flange);
connect(signalCurrent.plug_p, star.plug_p);
connect(angleSensor.flange, rotorAngle.flange); connect(angleSensor.flange, rotorDisplacementAngle.flange);

connect(angleSensor.phi, currentController.phi);
connect(id.y, currentController.id_rms);
connect(iq.y, currentController.iq_rms);
connect(groundM.p, terminalBox.starpoint);
connect(voltageQuasiRMSSensor.plug_p, terminalBox.plugSupply);
...
connect(starM.pin_n, groundM.p);

connect(currentController.y, signalCurrent.i);
connect(quadraticSpeedDependentTorque.flange, inertiaLoad.flange_b);
...
connect(quadraticSpeedDependentTorqueQS.flange, inertiaLoadQS.flange_b);

connect(smpmQS.flange, inertiaLoadQS.flange_a);
connect(starMachineQS.plug_p, terminalBoxQS.starpoint);
...
connect(terminalBoxQS.plug_sp, smpmQS.plug_sp);
connect(currentControllerQS.I, referenceCurrentSourceQS.I); connect(angleSensorQS.phi, currentController1.phi);
connect(referenceCurrentSourceQS.plug_p, starQS.plug_p); connect(currentController1.I, referenceCurrentSource.I);

connect(referenceCurrentSource.plug_p, starQS.plug_p);
connect(starQS.pin_n, groundeQS.pin);

connect(currentController1.id_rms, id.y);
connect(iq.y, currentController1.iq_rms);
connect(angleSensorQS.flange, smpmQS.flange);
connect(referenceCurrentSourceQS.plug_p, resistorQS.plug_p); connect(currentController1.gamma, referenceCurrentSource.gamma);
connect(resistorQS.plug_n, referenceCurrentSourceQS.plug_n); connect(referenceCurrentSource.plug_n, terminalBoxQS.plugSupply);
connect(id.y, currentControllerQS.id_rms); connect(referenceCurrentSource.plug_p, resistor.plug_p);
connect(id.y, currentController.id_rms); connect(resistor.plug_n, referenceCurrentSource.plug_n);
connect(iq.y, currentControllerQS.iq_rms);
connect(iq.y, currentController.iq_rms);
connect(currentController.y, signalCurrent.i);
connect(currentControllerQS.gamma, referenceCurrentSourceQS.gamma);
connect(angleSensorQS.phi, currentControllerQS.phi);
connect(angleSensor.phi, currentController.phi);
connect(smpmQS.flange, rotorAngleQS.flange);
connect(terminalBoxQS.plug_sp, rotorAngleQS.plug_p);
connect(terminalBoxQS.plugSupply, currentRMSSensorQS.plug_n);
connect(currentRMSSensorQS.plug_p, referenceCurrentSourceQS.plug_n);
connect(inertiaLoadQS.flange_a, smpmQS.flange);
connect(rotorAngleQS.plug_n, terminalBoxQS.plug_sn);
connect(voltageQuasiRMSSensorQS.plug_n, currentRMSSensorQS.plug_n);
connect(starMQS.pin_n, starMachineQS.pin_n);
connect(starMQS.plug_p, voltageQuasiRMSSensorQS.plug_p);
connect(starMachine.plug_p, terminalBox.starpoint);
connect(starMachine.pin_n, groundM.p);




model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.SynchronousMachines.SMEE_Generator

Component
Modelica 3.2.3
Modelica 3.2.2
fsNominal
=smeeData.fsNominal
=50
terminalBoxM
Electrical.Machines.Utilities.MultiTerminalBox
Electrical.Machines.Utilities.TerminalBox
smee
sigmae=smeeData.sigmae*m/3
sigmae=smeeData.sigmae
ir(each fixed=true)

effectiveStatorTurns=smeeData.effectiveStatorTurns


ir(fixed=true)
smeeQS
effectiveStatorTurns=smeeData.effectiveStatorTurns

thetaQS
Present

theta
Present

rotorAngle
Present



rotorAngleQS
Present



groundMachine
Present



starMachine
Present





Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial equation
sum(smee.is) = 0;

smee.is[1:2] = zeros(2);
...
connect(star.plug_p, sineVoltage.plug_n);

connect(smeeQS.flange, mechanicalPowerSensorQS.flange_a);
connect(mechanicalPowerSensorQS.flange_b, constantSpeedQS.flange);
...
connect(starMachineQS.plug_p, terminalBoxQS.starpoint);
connect(smee.flange, rotorAngle.flange);
connect(rotorAngle.plug_p, smee.plug_sp);
connect(smee.plug_sn, rotorAngle.plug_n);
connect(terminalBoxQS.plug_sp, rotorAngleQS.plug_p);
connect(rotorAngleQS.plug_n, terminalBoxQS.plug_sn);
connect(smeeQS.flange, rotorAngleQS.flange);
connect(smeeQS.flange, mechanicalPowerSensorQS.flange_a);
connect(starMachine.pin_n,groundMachine. p);
connect(starMachine.plug_p, terminalBoxM.starpoint);




model Magnetic.QuasiStatic.FundamentalWave.Examples.BasicMachines.SynchronousMachines.SMR_CurrentSource

Component
Modelica 3.2.3
Modelica 3.2.2
fNominal
=smrData.fsNominal
=50
currentController
m=m

iq
k=84.6*3/m
k=84.6
id
k=53.5*3/m
k=53.5
voltageQuasiRMSSensor
m=m

terminalBox
Electrical.Machines.Utilities.MultiTerminalBox
Electrical.Machines.Utilities.TerminalBox
rotorDisplacementAngle
m=m

currentRMSsensor
m=m

referenceCurrentSource
m=m

smrQS
effectiveStatorTurns=smrData.effectiveStatorTurns

smr
ir(each fixed=true)

effectiveStatorTurns=smrData.effectiveStatorTurns


ir(fixed=true)
thetaQS
Present

theta
Present

currentControllerQS
Present



resistorQS
Present



rotorAngleQS
Present



currentRMSSensorQS
Present



voltageQuasiRMSSensorQS
Present



starMQS
Present



starMachine
Present



currentController1

Present


resistor

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(angleSensor.flange, rotorDisplacementAngle.flange);

connect(angleSensor.phi, currentController.phi);
connect(id.y, currentController.id_rms);
connect(iq.y, currentController.iq_rms);
connect(groundM.p, terminalBox.starpoint);
connect(voltageQuasiRMSSensor.plug_p, terminalBox.plugSupply);
...
connect(starM.pin_n, groundM.p);

connect(currentController.y, signalCurrent.i);
connect(quadraticSpeedDependentTorque.flange, inertiaLoad.flange_b);
...
connect(groundMQS.pin, starMachineQS.pin_n);
connect(currentControllerQS.I, referenceCurrentSource.I); connect(angleSensorQS.phi, currentController1.phi);

connect(currentController1.I, referenceCurrentSource.I);
connect(referenceCurrentSource.plug_p, starQS.plug_p);
connect(starQS.pin_n, groundeQS.pin);
connect(referenceCurrentSource.plug_p, resistorQS.plug_p); connect(currentController1.id_rms, id.y);
connect(resistorQS.plug_n, referenceCurrentSource.plug_n); connect(iq.y, currentController1.iq_rms);

connect(currentController1.gamma, referenceCurrentSource.gamma);
connect(referenceCurrentSource.plug_n, terminalBoxQS.plugSupply);
connect(referenceCurrentSource.plug_p, resistor.plug_p);
connect(resistor.plug_n, referenceCurrentSource.plug_n);
connect(terminalBoxQS.plug_sn, smrQS.plug_sn);
connect(terminalBoxQS.plug_sp, smrQS.plug_sp);

connect(smrQS.flange, inertiaLoadQS.flange_a);
connect(angleSensorQS.flange, smrQS.flange);
...
connect(rotorDisplacementAngle.flange, inertiaLoad.flange_a);
connect(smrQS.flange, rotorAngleQS.flange);
connect(smrQS.plug_sp, rotorAngleQS.plug_p);
connect(smrQS.plug_sn, rotorAngleQS.plug_n);
connect(inertiaLoadQS.flange_a, smrQS.flange);
connect(currentRMSSensorQS.plug_p, referenceCurrentSource.plug_n);
connect(currentRMSSensorQS.plug_n, terminalBoxQS.plugSupply);
connect(id.y, currentControllerQS.id_rms);
connect(id.y, currentController.id_rms);
connect(iq.y, currentControllerQS.iq_rms);
connect(iq.y, currentController.iq_rms);
connect(angleSensor.phi, currentController.phi);
connect(currentController.y, signalCurrent.i);
connect(currentControllerQS.gamma, referenceCurrentSource.gamma);
connect(angleSensorQS.phi, currentControllerQS.phi);
connect(starMQS.plug_p, voltageQuasiRMSSensorQS.plug_p);
connect(voltageQuasiRMSSensorQS.plug_n, currentRMSSensorQS.plug_n);
connect(starMQS.pin_n, groundMQS.pin);
connect(starMachine.pin_n, groundM.p);
connect(starMachine.plug_p, terminalBox.starpoint);




model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.SynchronousMachines.SM_PermanentMagnet

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical




model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.SynchronousMachines.SM_ElectricalExcited

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical




model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.SynchronousMachines.SM_ReluctanceRotor

Component
Modelica 3.2.3
Modelica 3.2.2
ir
graphical




model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.Components.RotorSaliencyAirGap



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
port_sp.Phi = Phi_s "Stator flux into positive stator port"; port_sp.Phi = Phi_s;
port_sp.Phi + port_sn.Phi = Complex(0, 0) "Balance of stator flux"; port_sp.Phi + port_sn.Phi = Complex(0, 0);
port_rp.Phi = Phi_r "Rotor flux into positive rotor port"; port_rp.Phi = Phi_r;
port_rp.Phi + port_rn.Phi = Complex(0, 0) "Balance of rotor flux"; port_rp.Phi + port_rn.Phi = Complex(0, 0);
port_sp.V_m - port_sn.V_m = V_ms "Magnetomotive force of stator"; port_sp.V_m - port_sn.V_m = V_ms;
port_rp.V_m - port_rn.V_m = V_mr "Magnetomotive force of rotor"; port_rp.V_m - port_rn.V_m = V_mr;
Phi_s = Phi_r;
...



model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.Components.SymmetricMultiPhaseCageWinding

Component
Modelica 3.2.3
Modelica 3.2.2
resistor
final T=fill(TOperational, m)
final T=fill(TRef, m)
star
final m=nBase
final m=m
nBase
Present

multiStar
Present



starAuxiliary

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(electroMagneticConverter.port_n, port_n);

connect(starAuxiliary.plug_p, resistor.plug_n);
connect(electroMagneticConverter.plug_n, star.plug_p);
connect(star.pin_n, ground.pin);

connect(starAuxiliary.pin_n, ground.pin);
connect(strayReluctance.port_p, port_p);
...
connect(electroMagneticConverter.plug_p, resistor.plug_p);
connect(electroMagneticConverter.plug_n, multiStar.plug_p);
connect(multiStar.starpoints, star.plug_p);
connect(multiStar.plug_p, resistor.plug_n);




model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.Components.SaliencyCageWinding



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(electroMagneticConverter.port_n, port_n);

connect(electroMagneticConverter.plug_n, resistor.plug_n);
connect(resistor.plug_n, star.plug_p);
connect(star.pin_n, ground.pin);

connect(electroMagneticConverter.plug_p, resistor.plug_p);
connect(strayReluctance.port_p, port_p);
connect(strayReluctance.port_n, port_n);
connect(electroMagneticConverter.plug_p, resistor.plug_p);
connect(electroMagneticConverter.plug_n, star.plug_p);
connect(star.plug_p, resistor.plug_n);




model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.Components.PermanentMagnet

Component
Modelica 3.2.3
Modelica 3.2.2
abs_V_m
=Modelica323.ComplexMath.'abs'(V_m)
=Modelica.ComplexMath.'abs'(V_m)
arg_V_m
=Modelica323.ComplexMath.arg(V_m)
=Modelica.ComplexMath.arg(V_m)
abs_Phi
=Modelica323.ComplexMath.'abs'(Phi)
=Modelica.ComplexMath.'abs'(Phi)
arg_Phi
=Modelica323.ComplexMath.arg(Phi)
=Modelica.ComplexMath.arg(Phi)
V_mGamma
=V_m*Modelica323.ComplexMath.fromPolar(1, -gamma)
=V_m*Modelica.ComplexMath.fromPolar(1, -gamma)



model Magnetic.QuasiStatic.FundamentalWave.BasicMachines.BaseClasses.PartialBasicMachine

Component
Modelica 3.2.3
Modelica 3.2.2
pi
SIunits.Angle
Real

protected
statorCoreParameters
final m=m
final m=3
abs_vs
=Modelica323.ComplexMath.'abs'(vs)
=Modelica.ComplexMath.'abs'(vs)
arg_vs
=Modelica323.ComplexMath.arg(vs)
=Modelica.ComplexMath.arg(vs)
abs_is
=Modelica323.ComplexMath.'abs'(is)
=Modelica.ComplexMath.'abs'(is)
arg_is
=Modelica323.ComplexMath.arg(is)
=Modelica.ComplexMath.arg(is)
Ps
={Modelica323.ComplexMath.real(vs[k]*Modelica323.ComplexMath.conj(is[k])) for k in 1:m}
={Modelica.ComplexMath.real(vs[k]*Modelica.ComplexMath.conj(is[k])) for k in 1:m}
Qs
={Modelica323.ComplexMath.imag(vs[k]*Modelica323.ComplexMath.conj(is[k])) for k in 1:m}
={Modelica.ComplexMath.imag(vs[k]*Modelica.ComplexMath.conj(is[k])) for k in 1:m}
Ss
={Modelica323.ComplexMath.'abs'(vs[k]*Modelica323.ComplexMath.conj(is[k])) for k in 1:m}
={Modelica.ComplexMath.'abs'(vs[k]*Modelica.ComplexMath.conj(is[k])) for k in 1:m}
pfs
={cos(Modelica323.ComplexMath.arg(Complex(Ps[k], Qs[k]))) for k in 1:m}
={cos(Modelica.ComplexMath.arg(Complex(Ps[k], Qs[k]))) for k in 1:m}
internalThermalPort

protected
internalSupport

protected


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
initial algorithm
assert(not Modelica323.Math.isPowerOf2(m), String(m) +
" phases are currently not supported in this version of FundametalWave");
assert(not Modelica.Math.isPowerOf2(m), String(m) +
" phases are currently not supported in this version of FundametalWave");

...



model Magnetic.QuasiStatic.FundamentalWave.Losses.StrayLoad



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
tau = -strayLoadParameters.tauRef*(iRMS/strayLoadParameters.IRef)^2*
sign(w)*(abs(w)/strayLoadParameters.wRef)^strayLoadParameters.power_w;
tau = -strayLoadParameters.tauRef*(iRMS/strayLoadParameters.IRef)^2*
smooth(1, if w >= 0 then +(+w/strayLoadParameters.wRef)^
strayLoadParameters.power_w else -(-w/strayLoadParameters.wRef)^
strayLoadParameters.power_w);
end if;
...



model Magnetic.QuasiStatic.FundamentalWave.Losses.PermanentMagnetLosses



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
else
tau = -permanentMagnetLossParameters.tauRef*(permanentMagnetLossParameters.c + (1 - permanentMagnetLossParameters.c)*
(iRMS/permanentMagnetLossParameters.IRef)^permanentMagnetLossParameters.power_I)*
sign(w)*(abs(w)/permanentMagnetLossParameters.wRef)^permanentMagnetLossParameters.power_w;
tau = -permanentMagnetLossParameters.tauRef*(
permanentMagnetLossParameters.c + (1 - permanentMagnetLossParameters.c)
*(iRMS/permanentMagnetLossParameters.IRef)^
permanentMagnetLossParameters.power_I)*smooth(1, if w >= 0 then +(+w/
permanentMagnetLossParameters.wRef)^permanentMagnetLossParameters.power_w
else -(-w/permanentMagnetLossParameters.wRef)^
permanentMagnetLossParameters.power_w);
end if;
...



block Magnetic.QuasiStatic.FundamentalWave.Utilities.VfController

Component
Modelica 3.2.3
Modelica 3.2.2
u
unit="Hz"




model Magnetic.QuasiStatic.FundamentalWave.Utilities.CurrentController

Component
Modelica 3.2.3
Modelica 3.2.2
gamma
unit="rad"




model Mechanics.MultiBody.World

Component
Modelica 3.2.3
Modelica 3.2.2
g
=Modelica323.Constants.g_n
=9.81
mue
=3.986004418e14
=3.986e14
animateGround
Present

groundAxis_u
Present

groundLength_u
Present

groundLength_v
Present

groundColor
Present

surface
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
Connections.root(frame_b.R);
assert(Modelica323.Math.Vectors.length(n) > 1e-10,
"Parameter n of World object is wrong (length(n) > 0 required)");
assert(Modelica322.Math.Vectors.length(n) > 1.e-10,
"Parameter n of World object is wrong (length(n) > 0 required)");
frame_b.r_0 = zeros(3);
...



model Mechanics.MultiBody.Examples.Elementary.DoublePendulumInitTip

Component
Modelica 3.2.3
Modelica 3.2.2
revolute2
phi(start=Modelica323.Constants.pi/2)




model Mechanics.MultiBody.Examples.Elementary.PointGravityWithPointMasses2

Component
Modelica 3.2.3
Modelica 3.2.2
pointMass3
r_0(start={2,1,0}, fixed={true,false,false})
r_0(start={2,1,0}, each fixed=true)
v_0(start={0,0,-1}, fixed={true,false,false})
v_0(start={0,0,-1}, each fixed=true)
pointMass4
r_0(start={2,-1,0}, fixed={false,false,true})

v_0(start={0,0,-1}, fixed={false,false,true})

pointMass5
r_0(start={2,0,1}, fixed={false,false,true})

v_0(start={0,0,-1}, fixed={false,false,true})




model Mechanics.MultiBody.Examples.Elementary.RollingWheel

Component
Modelica 3.2.3
Modelica 3.2.2
world
animateGround=true

groundLength_u=4

groundColor={130,200,130}

ground

Present





model Mechanics.MultiBody.Examples.Elementary.RollingWheelSetDriving

Component
Modelica 3.2.3
Modelica 3.2.2
world
animateGround=true

groundLength_u=3

groundColor={130,200,130}

ground

Present





model Mechanics.MultiBody.Examples.Elementary.RollingWheelSetPulling

Component
Modelica 3.2.3
Modelica 3.2.2
world
animateGround=true

groundLength_u=3

groundColor={130,200,130}

ground

Present





model Mechanics.MultiBody.Examples.Elementary.Surfaces

Component
Modelica 3.2.3
Modelica 3.2.2
world
animateGround=true

groundLength_u=4

groundColor={215,215,215}

pipeWithScalarField
T=Modelica323.Math.sin(Modelica323.Constants.pi*pipeWithScalarField.xsi)*Modelica323.Math.cos(Modelica323.Constants.pi*time) .+ 1
T=sin(Modelica322.Constants.pi*pipeWithScalarField.xsi)*cos(Modelica322.Constants.pi*time) .+ 1
ground

Present





function Mechanics.MultiBody.Examples.Elementary.Utilities.sineSurface



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Y[i,j] = aux_y;
Z[i, j] = A*Modelica323.Math.sin(wz + 0.1*j + 0.1*i) + A; Z[i,j] = A*sin(wz + 0.1*j + 0.1*i)+A;
end for;
...



model Mechanics.MultiBody.Examples.Loops.Fourbar2

Component
Modelica 3.2.3
Modelica 3.2.2
j1
useAxisFlange=false
useAxisFlange=true
w(displayUnit="deg/s", start=5.235987755983, fixed=true)
w(displayUnit="deg/s", start=5.235987755982989, fixed=true)



model Mechanics.MultiBody.Examples.Loops.Fourbar_analytic

Component
Modelica 3.2.3
Modelica 3.2.2
j1
useAxisFlange=false
useAxisFlange=true
w(displayUnit="deg/s", start=5.235987755983, fixed=true)
w(displayUnit="deg/s", start=5.235987755982989, fixed=true)



model Mechanics.MultiBody.Examples.Loops.Utilities.Cylinder

Component
Modelica 3.2.3
Modelica 3.2.2
CylinderInclination
n_y={0,Modelica323.Math.cos(cylinderInclination),Modelica323.Math.sin(cylinderInclination)}
n_y={0,cos(cylinderInclination),sin(cylinderInclination)}
CrankAngle1
n_y={0,Modelica323.Math.cos(crankAngleOffset),Modelica323.Math.sin(crankAngleOffset)}
n_y={0,cos(crankAngleOffset),sin(crankAngleOffset)}
CrankAngle2
n_y={0,Modelica323.Math.cos(-crankAngleOffset),Modelica323.Math.sin(-crankAngleOffset)}
n_y={0,cos(-crankAngleOffset),sin(-crankAngleOffset)}
gasForce
Mechanics.MultiBody.Examples.Loops.Utilities.GasForce2
Mechanics.MultiBody.Examples.Loops.Utilities.GasForce


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(Crank4.frame_b, CrankAngle2.frame_a);

connect(Cylinder.support, gasForce.flange_b);
connect(Cylinder.axis, gasForce.flange_a);
connect(CylinderInclination.frame_b, CylinderTop.frame_a);
...
connect(CrankAngle2.frame_b, crank_b);
connect(Cylinder.axis, gasForce.flange_b);
connect(Cylinder.support, gasForce.flange_a);




model Mechanics.MultiBody.Examples.Loops.Utilities.GasForce2

Component
Modelica 3.2.3
Modelica 3.2.2
R_air
constant



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
v_rel = der(s_rel);
press = 1e5 * (
if
v_rel < 0 then (
if x < 0.986061 then 177.4132*x^4 - 287.2189*x^3 + 151.8252*x^2 - 24.9973*x + 2.4
else 2836360*x^4 - 10569296*x^3 + 14761814*x^2 - 9158505*x + 2129670)
else (
if x > 0.933 then -3929704*x^4 + 14748765*x^3 - 20747000*x^2 + 12964477*x - 3036495
else 145.930*x^4 - 131.707*x^3 + 17.3438*x^2 + 17.9272*x + 2.4));
press = 1.0E5*(if v_rel < 0 then (if x < 0.987 then 177.4132*x^4 - 287.2189*x^3 +
151.8252*x^2 - 24.9973*x + 2.4 else 2836360*x^4 - 10569296*x^3 + 14761814
*x^2 - 9158505*x + 2129670) else (if x > 0.93 then -3929704*x^4 +
14748765*x^3 - 20747000*x^2 + 12964477*x - 3036495 else 145.930*x^4 -
131.707*x^3 + 17.3438*x^2 + 17.9272*x + 2.4));
f = -press*pi*d^2/4;
...
press*V = k*T;
assert(s_rel >= -1e-12, "flange_b.s - flange_a.s (= " + String(s_rel,
significantDigits=14) + ") >= 0 required for GasForce component.\n" +
"Most likely, the component has to be flipped.");
assert(s_rel >= -1.e-12, "flange_b.s - flange_a.s (= " + String(s_rel,
significantDigits=14) + ") >= 0 required for GasForce component.\n" +
"Most likely, the component has to be flipped.");
assert(s_rel <= L + 1e-12, " flange_b.s - flange_a.s (= " + String(s_rel,
significantDigits=14) + ") <= L (= " + String(L, significantDigits=14) +
") required for GasForce component.\n" +
"Most likely, parameter L is not correct.");
assert(s_rel <= L + 1.e-12, " flange_b.s - flange_a.s (= " + String(s_rel,
significantDigits=14) + ") <= L (= " + String(L, significantDigits=14) +
") required for GasForce component.\n" +
"Most likely, parameter L is not correct.");



model Mechanics.MultiBody.Examples.Loops.Utilities.CylinderBase

Component
Modelica 3.2.3
Modelica 3.2.2
gasForce
Mechanics.MultiBody.Examples.Loops.Utilities.GasForce2
Mechanics.MultiBody.Examples.Loops.Utilities.GasForce


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(Mid.frame_b, jointRRP.frame_a);

connect(gasForce.flange_a, jointRRP.axis);
connect(jointRRP.bearing, gasForce.flange_b);
connect(jointRRP.frame_ib, Piston.frame_b);
...
connect(Crank.frame_b, crank_b);
connect(gasForce.flange_a, jointRRP.bearing);
connect(gasForce.flange_b, jointRRP.axis);




model Mechanics.MultiBody.Examples.Loops.Utilities.Engine1bBase



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(Crank2.frame_a, Crank1.frame_b);

connect(Crank2.frame_b, Crank3.frame_a);
connect(Bearing.frame_b, Crank1.frame_a);
...
connect(Inertia.flange_b, Bearing.axis);
connect(Crank2.frame_b, Crank3.frame_a); connect(Mid.frame_a, Crank2.frame_b);
connect(Crank2.frame_b, Mid.frame_a);




model Mechanics.MultiBody.Examples.Rotational3DEffects.ActuatedDrive



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(torque.frame_b, bodyCylinder.frame_b);

connect(torque.frame_resolve, world.frame_b);
connect(torque.frame_a, world.frame_b);
...



model Mechanics.MultiBody.Examples.Rotational3DEffects.MovingActuatedDrive



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(r1.frame_b, revolute.frame_a);

connect(torque.frame_resolve, revolute.frame_a);
connect(torque.frame_a, revolute.frame_a);
...



model Mechanics.MultiBody.Examples.Constraints.PrismaticConstraint

Component
Modelica 3.2.3
Modelica 3.2.2
jointPrismatic_x
stateSelect=StateSelect.always
stateSelect=StateSelect.never
jointPrismatic_y
stateSelect=StateSelect.always
stateSelect=StateSelect.never



model Mechanics.MultiBody.Examples.Constraints.RevoluteConstraint

Component
Modelica 3.2.3
Modelica 3.2.2
joint
stateSelect=StateSelect.always
stateSelect=StateSelect.never



model Mechanics.MultiBody.Examples.Constraints.UniversalConstraint



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(joint.frame_b, bodyOfJoint.frame_a);

connect(sensorConstraintRelative.frame_b, constraint.frame_b);
connect(fixedTranslation.frame_b, springOfJoint.frame_a);
...
connect(bodyOfConstraint.frame_a, freeMotionScalarInit.frame_b);
connect(bodyOfConstraint.frame_a, sensorConstraintRelative.frame_b);




model Mechanics.MultiBody.Examples.Systems.RobotR3.Components.AxisType2



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(gear.flange_b, accSensor.flange);

connect(controller.axisControlBus, axisControlBus);
connect(motor.axisControlBus, axisControlBus);
...
connect(const.y, initializeFlange.a_start);
connect(controller.axisControlBus, axisControlBus);




model Mechanics.MultiBody.Examples.Systems.RobotR3.Components.MechanicalStructure



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

connect(r6.frame_b, b6.frame_a);
q = {r1.phi,r2.phi,r3.phi,r4.phi,r5.phi,r6.phi};
...
connect(r6.axis, axis6);
connect(r6.frame_b, b6.frame_a);




model Mechanics.MultiBody.Forces.LineForceWithMass

Component
Modelica 3.2.3
Modelica 3.2.2
s_small

Present
fixedRotationAtFrame_a

Present
fixedRotationAtFrame_b

Present
length

Present
r_rel_0

Present
e_rel_0

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

assert(noEvent(length > s_small), "
The distance between the origin of frame_a and the origin of frame_b
of a LineForceWithMass component became smaller as parameter s_small
(= a small number, defined in the \"Advanced\" menu). The distance is
set to s_small, although it is smaller, to avoid a division by zero
when computing the direction of the line force. Possible reasons
for this situation:
- At initial time the distance may already be zero: Change the initial
  positions of the bodies connected by this element.
- Hardware stops are not modeled or are modeled not stiff enough.
  Include stops, e.g., stiff springs, or increase the stiffness
  if already present.
- Another error in your model may lead to unrealistically large forces
  and torques that would in reality destroy the stops.
- The flange_b connector might be defined by a pre-defined motion,
  e.g., with Modelica.Mechanics.Translational.Position and the
  predefined flange_b.s is zero or negative.
");
r_rel_0 = frame_b.r_0 - frame_a.r_0;
length = Modelica322.Math.Vectors.length(r_rel_0);
flange_a.s = 0;
flange_b.s = length;

e_rel_0 = r_rel_0/Frames.Internal.maxWithoutEvent(length, s_small);
if cardinality(flange_a) > 0 and cardinality(flange_b) > 0 then
...
end if;

if fixedRotationAtFrame_a then
Connections.root(frame_a.R);
frame_a.R = Frames.nullRotation();
else
frame_a.t = zeros(3);
end if;
if fixedRotationAtFrame_b then
Connections.root(frame_b.R);
frame_b.R = Frames.nullRotation();
else
frame_b.t = zeros(3);
end if;



model Mechanics.MultiBody.Forces.LineForceWithTwoMasses

Component
Modelica 3.2.3
Modelica 3.2.2
s_small

Present
fixedRotationAtFrame_a

Present
fixedRotationAtFrame_b

Present
length

Present
r_rel_0

Present
e_rel_0

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

assert(noEvent(length > s_small), "
The distance between the origin of frame_a and the origin of frame_b
of a LineForceWithTwoMasses component became smaller as parameter s_small
(= a small number, defined in the \"Advanced\" menu). The distance is
set to s_small, although it is smaller, to avoid a division by zero
when computing the direction of the line force. Possible reasons
for this situation:
- At initial time the distance may already be zero: Change the initial
  positions of the bodies connected by this element.
- Hardware stops are not modeled or are modeled not stiff enough.
  Include stops, e.g., stiff springs, or increase the stiffness
  if already present.
- Another error in your model may lead to unrealistically large forces
  and torques that would in reality destroy the stops.
- The flange_b connector might be defined by a pre-defined motion,
  e.g., with Modelica.Mechanics.Translational.Position and the
  predefined flange_b.s is zero or negative.
");
r_rel_0 = frame_b.r_0 - frame_a.r_0;
length = Modelica322.Math.Vectors.length(r_rel_0);
flange_a.s = 0;
flange_b.s = length;

e_rel_0 = r_rel_0/Frames.Internal.maxWithoutEvent(length, s_small);
if cardinality(flange_a) > 0 and cardinality(flange_b) > 0 then
...
end if;

if fixedRotationAtFrame_a then
Connections.root(frame_a.R);
frame_a.R = Frames.nullRotation();
else
frame_a.t = zeros(3);
end if;
if fixedRotationAtFrame_b then
Connections.root(frame_b.R);
frame_b.R = Frames.nullRotation();
else
frame_b.t = zeros(3);
end if;



model Mechanics.MultiBody.Forces.Spring

Component
Modelica 3.2.3
Modelica 3.2.2
lineForce
s_small=s_small

s_small
Present

r_rel_a
Present

e_a
Present

f
Present

length
Present

s
Present

r_rel_0
Present

e_rel_0
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
r_rel_a = Frames.resolve2(frame_a.R, r_rel_0); connect(lineForce.frame_a, frame_a);
e_a = r_rel_a/s; connect(lineForce.frame_b, frame_b);
f = spring.f; connect(spring.flange_b, lineForce.flange_b);
length = lineForce.length; connect(spring.flange_a, lineForce.flange_a);
s = lineForce.s;
r_rel_0 = lineForce.r_rel_0;
e_rel_0 = lineForce.e_rel_0;
connect(lineForce.frame_a, frame_a);
connect(lineForce.frame_b, frame_b);
connect(spring.flange_b, lineForce.flange_b);
connect(spring.flange_a, lineForce.flange_a);




model Mechanics.MultiBody.Forces.SpringDamperParallel

Component
Modelica 3.2.3
Modelica 3.2.2
shape
specularCoefficient=specularCoefficient

length_a
Present

diameter_a
Present

diameter_b
Present

color_a
Present

color_b
Present

shape_a
Present

shape_b
Present




model Mechanics.MultiBody.Forces.SpringDamperSeries

Component
Modelica 3.2.3
Modelica 3.2.2
animation
Present

length_a
Present

diameter_a
Present

diameter_b
Present

color_a
Present

color_b
Present

specularCoefficient
Present

width
Present

coilWidth
Present

numberOfWindings
Present

color
Present

shape_a
Present

shape_b
Present

shape
Present




function Mechanics.MultiBody.Frames.planarRotation



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
R := Orientation(T=outerProduct(e,e) + (identity(3) - outerProduct(e,e))*
Math.cos(angle) - skew(e)*Math.sin(angle),w= e*der_angle);
R := Orientation(T=[e]*transpose([e]) + (identity(3) - [e]*transpose([e]))*
Math.cos(angle) - skew(e)*Math.sin(angle),w= e*der_angle);



function Mechanics.MultiBody.Frames.axisRotation



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
R := Orientation(T=(if axis == 1 then [1,0,0; 0,Modelica323.Math.cos(angle),
Modelica323.Math.sin(angle); 0,-Modelica323.Math.sin(angle),
Modelica323.Math.cos(angle)] else if axis == 2 then [Modelica323.Math.cos(
angle),0,-Modelica323.Math.sin(angle); 0,1,0; Modelica323.Math.sin(angle),0,
Modelica323.Math.cos(angle)] else [Modelica323.Math.cos(angle),
Modelica323.Math.
sin(angle),0; -Modelica323.Math.sin(angle),
Modelica323.Math.cos(angle),0; 0,0,1]), w=if axis == 1 then {der_angle,0,0}
else if axis == 2 then {0,der_angle,0} else {0,0,der_angle});
R := Orientation(T=(if axis == 1 then [1, 0, 0; 0, cos(angle), sin(angle);
0, -sin(angle), cos(angle)] else if axis == 2 then [cos(angle), 0, -sin(
angle);
0, 1, 0; sin(angle), 0, cos(angle)] else [cos(angle), sin(angle),
0; -sin(angle), cos(angle), 0; 0, 0, 1]),w= if axis == 1 then {der_angle,
0,0} else if axis == 2 then {0,der_angle,0} else {0,0,der_angle});



function Mechanics.MultiBody.Frames.axesRotationsAngles



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
B = cross(e1_1, e2_1a)*e3_1;
if abs(A) <= 1e-12 and abs(B) <= 1e-12 then if abs(A) <= 1.e-12 and abs(B) <= 1.e-12 then
angles[1] = guessAngle1;
...



function Mechanics.MultiBody.Frames.from_nxy

Component
Modelica 3.2.3
Modelica 3.2.2
abs_n_x

Present
e_x

Present
n_z_aux

Present
n_y_aux

Present
e_z_aux

Present
e_z

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
R := Orientation(T=TransformationMatrices.from_nxy(n_x,n_y),w= zeros(3)); R := Orientation(T={e_x,cross(e_z, e_x),e_z},w= zeros(3));



function Mechanics.MultiBody.Frames.from_nxz

Component
Modelica 3.2.3
Modelica 3.2.2
abs_n_x

Present
e_x

Present
n_y_aux

Present
n_z_aux

Present
e_y_aux

Present
e_y

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
R := Orientation(T=TransformationMatrices.from_nxz(n_x,n_z),w= zeros(3)); R := Orientation(T={e_x,e_y,cross(e_x, e_y)},w= zeros(3));



function Mechanics.MultiBody.Frames.Quaternions.multipleResolve1



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
v1 := ((2*Q[4]*Q[4] - 1)*identity(3) + 2*(outerProduct(Q[1:3],Q[1:3]) +
Q[4]*skew(Q[1:3])))*v2;
v1 := ((2*Q[4]*Q[4] - 1)*identity(3) + 2*([Q[1:3]]*transpose([Q[1:3]]) +
Q[4]*skew(Q[1:3])))*v2;



function Mechanics.MultiBody.Frames.Quaternions.multipleResolve2



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
v2 := ((2*Q[4]*Q[4] - 1)*identity(3) + 2*(outerProduct(Q[1:3],Q[1:3]) -
Q[4]*skew(Q[1:3])))*v1;
v2 := ((2*Q[4]*Q[4] - 1)*identity(3) + 2*([Q[1:3]]*transpose([Q[1:3]]) -
Q[4]*skew(Q[1:3])))*v1;



function Mechanics.MultiBody.Frames.TransformationMatrices.planarRotation



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
T := outerProduct(e,e) + (identity(3) - outerProduct(e,e))*Math.cos(
angle) - skew(e)*Math.sin(angle);
T := [e]*transpose([e]) + (identity(3) - [e]*transpose([e]))*Math.cos(
angle) - skew(e)*Math.sin(angle);



function Mechanics.MultiBody.Frames.TransformationMatrices.axisRotation



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
T := if axis == 1 then [1,0,0; 0,Modelica323.Math.cos(angle),
Modelica323.Math.sin(angle); 0,-Modelica323.Math.sin(angle),
Modelica323.Math.cos(angle)] else if axis == 2 then [Modelica323.Math.cos(
angle),0,-Modelica323.Math.sin(angle); 0,1,0; Modelica323.Math.sin(angle),0,
Modelica323.Math.cos(angle)] else [Modelica323.Math.cos(angle),
Modelica323.Math.sin(angle),0; -Modelica323.Math.sin(angle),
Modelica323.Math.cos(angle),0;
0,0,1];
T := if axis == 1 then [1, 0, 0; 0, cos(angle), sin(angle); 0, -sin(angle),
cos(angle)] else if axis == 2 then [cos(angle), 0, -sin(angle); 0, 1,
0; sin(angle), 0, cos(angle)] else [cos(angle), sin(angle), 0; -sin(
angle), cos(angle), 0; 0, 0, 1];



function Mechanics.MultiBody.Frames.TransformationMatrices.axesRotationsAngles



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
B = cross(e1_1, e2_1a)*e3_1;
if abs(A) <= 1e-12 and abs(B) <= 1e-12 then if abs(A) <= 1.e-12 and abs(B) <= 1.e-12 then
angles[1] = guessAngle1;
...



function Mechanics.MultiBody.Frames.TransformationMatrices.from_nxy

Component
Modelica 3.2.3
Modelica 3.2.2
e_x
=if length(n_x) < 1e-10 then {1,0,0} else normalize(n_x)
=if abs_n_x < 1.e-10 then {1,0,0} else n_x/abs_n_x
e_z
=normalize(e_z_aux)
=e_z_aux/sqrt(e_z_aux*e_z_aux)
abs_n_x

Present



function Mechanics.MultiBody.Frames.TransformationMatrices.from_nxz

Component
Modelica 3.2.3
Modelica 3.2.2
e_x
=if length(n_x) < 1e-10 then {1,0,0} else normalize(n_x)
=if abs_n_x < 1.e-10 then {1,0,0} else n_x/abs_n_x
e_y
=normalize(e_y_aux)
=e_y_aux/sqrt(e_y_aux*e_y_aux)
abs_n_x

Present



model Mechanics.MultiBody.Interfaces.PartialForce

Component
Modelica 3.2.3
Modelica 3.2.2
frame_a

Present


frame_b

Present


world

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

assert(cardinality(frame_a) > 0,
    "Connector frame_a of force object is not connected");
assert(cardinality(frame_b) > 0,
    "Connector frame_b of force object is not connected");
r_rel_b = Frames.resolve2(frame_b.R, frame_b.r_0 - frame_a.r_0);
...



model Mechanics.MultiBody.Interfaces.PartialLineForce

Component
Modelica 3.2.3
Modelica 3.2.2
s_small

Present
fixedRotationAtFrame_a

Present
fixedRotationAtFrame_b

Present
frame_a

Present


frame_b

Present


s

Present
world

Present


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
r_rel_a = Frames.resolve2(frame_a.R, r_rel_0); assert(cardinality(frame_a) > 0,
"Connector frame_a of line force object is not connected");

assert(cardinality(frame_b) > 0,
    "Connector frame_b of line force object is not connected");
r_rel_a = Frames.resolve2(frame_a.R, frame_b.r_0 - frame_a.r_0);
s = noEvent(max(Modelica322.Math.Vectors.length(r_rel_a), s_small));
e_a = r_rel_a/s;
...
frame_b.f = -Frames.resolve2(Frames.relativeRotation(frame_a.R, frame_b.R), frame_a.f);

if fixedRotationAtFrame_a then
Connections.root(frame_a.R);
frame_a.R = Frames.nullRotation();
else
frame_a.t = zeros(3);
end if;
if fixedRotationAtFrame_b then
Connections.root(frame_b.R);
frame_b.R = Frames.nullRotation();
else
frame_b.t = zeros(3);
end if;



model Mechanics.MultiBody.Joints.RevolutePlanarLoopConstraint



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
ey_b = Frames.resolve2(R_rel, ey_a);
assert(noEvent(abs(e*r_rel_a) <= 1e-10 and abs(e*ex_b) <= 1e-10 and
abs(e*ey_b) <= 1e-10), "
The MultiBody.Joints.RevolutePlanarLoopConstraint joint is used as cut-joint of a
planar loop. However, the revolute joint is not part of a planar loop where the
axis of the revolute joint (parameter n) is orthogonal to the possible movements.
Either use instead joint MultiBody.Joints.Revolute or correct the
definition of the axes vectors n in the revolute joints of the planar loop.
");
assert(noEvent(abs(e*r_rel_a) <= 1.e-10 and abs(e*ex_b) <= 1.e-10 and
abs(e*ey_b) <= 1.e-10), "
The MultiBody.Joints.RevolutePlanarLoopConstraint joint is used as cut-joint of a
planar loop. However, the revolute joint is not part of a planar loop where the
axis of the revolute joint (parameter n) is orthogonal to the possible movements.
Either use instead joint MultiBody.Joints.Revolute or correct the
definition of the axes vectors n in the revolute joints of the planar loop.
");



model Mechanics.MultiBody.Joints.UniversalSpherical



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
length2_n2_a = n2_a*n2_a;
assert(length2_n2_a > 1e-10, "
A Modelica.Mechanics.MultiBody.Joints.UniversalSpherical joint (consisting of
a universal joint and a spherical joint connected together
by a rigid rod) is in the singular configuration of the
universal joint. This means that axis 1 of the universal
joint defined via parameter \"n1_a\" is parallel to vector
\"rRod_ia\" that is directed from the origin of frame_a to the
origin of frame_b.
You may try to use another \"n1_a\" vector. If this fails,
use instead Modelica.Mechanics.MultiBody.Joints.SphericalSpherical, if this is
possible, because this joint aggregation does not have a
singular configuration.
");
assert(length2_n2_a > 1.e-10, "
A Modelica.Mechanics.MultiBody.Joints.UniversalSpherical joint (consisting of
a universal joint and a spherical joint connected together
by a rigid rod) is in the singular configuration of the
universal joint. This means that axis 1 of the universal
joint defined via parameter \"n1_a\" is parallel to vector
\"rRod_ia\" that is directed from the origin of frame_a to the
origin of frame_b.
You may try to use another \"n1_a\" vector. If this fails,
use instead Modelica.Mechanics.MultiBody.Joints.SphericalSpherical, if this is
possible, because this joint aggregation does not have a
singular configuration.
");
length_n2_a = sqrt(length2_n2_a);
...



model Mechanics.MultiBody.Joints.Assemblies.JointUPS



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
length2_n2_a = n2_a*n2_a;
assert(noEvent(length2_n2_a > 1e-10), "
A Modelica.Mechanics.MultiBody.Joints.Assemblies.JointUPS joint (consisting of
a universal, prismatic and spherical joint) is in the singular
configuration of the universal joint. This means that axis 1 of
the universal joint defined via parameter \"n1_a\" is parallel to vector
\"eAxis_ia\" that is directed from the origin of frame_a to the
origin of frame_b. You may try to use another \"n1_a\" vector.
");
assert(noEvent(length2_n2_a > 1.e-10), "
A Modelica.Mechanics.MultiBody.Joints.Assemblies.JointUPS joint (consisting of
a universal, prismatic and spherical joint) is in the singular
configuration of the universal joint. This means that axis 1 of
the universal joint defined via parameter \"n1_a\" is parallel to vector
\"eAxis_ia\" that is directed from the origin of frame_a to the
origin of frame_b. You may try to use another \"n1_a\" vector.
");
length_n2_a = sqrt(length2_n2_a);
...



model Mechanics.MultiBody.Joints.Assemblies.JointUSR



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
aux = cross(revolute.e, rRod2_ib)*Frames.resolveRelative(rod1.eRod_a,
    rod1.frame_a.R, rod1.frame_b.R);
f_rod = (-revolute.tau - revolute.e*(frame_ib.t + frame_im.t + cross(
rRod2_ib, frame_im.f) - cross(rRod2_ib, Frames.resolveRelative(rod1.
f_b_a1, rod1.frame_a.R, rod1.frame_b.R))))/noEvent(if abs(aux) < 1e-10 then
1e-10 else aux);
f_rod = (-revolute.tau - revolute.e*(frame_ib.t + frame_im.t + cross(
rRod2_ib, frame_im.f) - cross(rRod2_ib, Frames.resolveRelative(rod1.
f_b_a1, rod1.frame_a.R, rod1.frame_b.R))))/noEvent(if abs(aux) < 1.e-10 then
1.e-10 else aux);
if checkTotalPower then
...



model Mechanics.MultiBody.Joints.Assemblies.JointUSP



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
aux = prismatic.e*Frames.resolveRelative(rod1.eRod_a, rod1.frame_a.R,
    rod1.frame_b.R);
f_rod = (-prismatic.f - prismatic.e*(frame_ib.f + frame_im.f -
Frames.resolveRelative(rod1.f_b_a1, rod1.frame_a.R, rod1.frame_b.R)))/
noEvent(if abs(aux) < 1e-10 then 1e-10 else aux);
f_rod = (-prismatic.f - prismatic.e*(frame_ib.f + frame_im.f -
Frames.resolveRelative(rod1.f_b_a1, rod1.frame_a.R, rod1.frame_b.R)))/
noEvent(if abs(aux) < 1.e-10 then 1.e-10 else aux);
if checkTotalPower then
...



model Mechanics.MultiBody.Joints.Assemblies.JointSSR



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
aux = cross(revolute.e, rRod2_ib)*Frames.resolveRelative(rod1.eRod_a,
    rod1.frame_a.R, rod1.frame_b.R);
f_rod = (-revolute.tau - revolute.e*(frame_ib.t + frame_im.t + cross(
rRod2_ib, frame_im.f) - cross(rRod2_ib, Frames.resolveRelative(rod1.
f_b_a1, rod1.frame_a.R, rod1.frame_b.R))))/noEvent(if abs(aux) < 1e-10 then
1e-10 else aux);
f_rod = (-revolute.tau - revolute.e*(frame_ib.t + frame_im.t + cross(
rRod2_ib, frame_im.f) - cross(rRod2_ib, Frames.resolveRelative(rod1.
f_b_a1, rod1.frame_a.R, rod1.frame_b.R))))/noEvent(if abs(aux) < 1.e-10 then
1.e-10 else aux);
if checkTotalPower then
...



model Mechanics.MultiBody.Joints.Assemblies.JointSSP



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
aux = prismatic.e*Frames.resolveRelative(rod1.eRod_a, rod1.frame_a.R,
    rod1.frame_b.R);
f_rod = (-prismatic.f - prismatic.e*(frame_ib.f + frame_im.f))/
noEvent(if abs(aux) < 1e-10 then 1e-10 else aux);
f_rod = (-prismatic.f - prismatic.e*(frame_ib.f + frame_im.f))/
noEvent(if abs(aux) < 1.e-10 then 1.e-10 else aux);
if checkTotalPower then
...



model Mechanics.MultiBody.Joints.Internal.RevoluteWithLengthConstraint



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
k1a = k1 - C*C;
assert(k1a > 1e-10, "
Singular position of loop (either no or two analytic solutions;
the mechanism has lost one-degree-of freedom in this position).
Try first to use another Modelica.Mechanics.MultiBody.Joints.Assemblies.JointXXX component.
In most cases it is best that the joints outside of the JointXXX
component are revolute and NOT prismatic joints. If this also
lead to singular positions, it could be that this kinematic loop
cannot be solved analytically. In this case you have to build
up the loop with basic joints (NO aggregation JointXXX components)
and rely on dynamic state selection, i.e., during simulation
the states will be dynamically selected in such a way that in no
position a degree of freedom is lost.
");
assert(k1a > 1.e-10, "
Singular position of loop (either no or two analytic solutions;
the mechanism has lost one-degree-of freedom in this position).
Try first to use another Modelica.Mechanics.MultiBody.Joints.Assemblies.JointXXX component.
In most cases it is best that the joints outside of the JointXXX
component are revolute and NOT prismatic joints. If this also
lead to singular positions, it could be that this kinematic loop
cannot be solved analytically. In this case you have to build
up the loop with basic joints (NO aggregation JointXXX components)
and rely on dynamic state selection, i.e., during simulation
the states will be dynamically selected in such a way that in no
position a degree of freedom is lost.
");
k1b = Frames.Internal.maxWithoutEvent(k1a, 1.0e-12);
...



model Mechanics.MultiBody.Joints.Internal.PrismaticWithLengthConstraint



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
k1a = k1*k1 - C;
assert(noEvent(k1a > 1e-10), "
Singular position of loop (either no or two analytic solutions;
the mechanism has lost one-degree-of freedom in this position).
Try first to use another Modelica.Mechanics.MultiBody.Joints.Assemblies.JointXXX component.
If this also lead to singular positions, it could be that this
kinematic loop cannot be solved analytically with a fixed state
selection. In this case you have to build up the loop with
basic joints (NO aggregation JointXXX components) and rely on
dynamic state selection, i.e., during simulation the states will
be dynamically selected in such a way that in no position a
degree of freedom is lost.
");
assert(noEvent(k1a > 1.e-10), "
Singular position of loop (either no or two analytic solutions;
the mechanism has lost one-degree-of freedom in this position).
Try first to use another Modelica.Mechanics.MultiBody.Joints.Assemblies.JointXXX component.
If this also lead to singular positions, it could be that this
kinematic loop cannot be solved analytically with a fixed state
selection. In this case you have to build up the loop with
basic joints (NO aggregation JointXXX components) and rely on
dynamic state selection, i.e., during simulation the states will
be dynamically selected in such a way that in no position a
degree of freedom is lost.
");
k1b = Frames.Internal.maxWithoutEvent(k1a, 1.0e-12);
...



model Mechanics.MultiBody.Sensors.AbsoluteAngles

Component
Modelica 3.2.3
Modelica 3.2.2
frame_a

Present





model Mechanics.MultiBody.Sensors.RelativeAngles

Component
Modelica 3.2.3
Modelica 3.2.2
frame_a

Present


frame_b

Present





model Mechanics.MultiBody.Sensors.Distance

Component
Modelica 3.2.3
Modelica 3.2.2
s_small
=1e-10
=1.E-10



model Mechanics.MultiBody.Visualizers.VoluminousWheel

Component
Modelica 3.2.3
Modelica 3.2.2
ri
SIunits.Length
SIunits.Radius



model Mechanics.MultiBody.Visualizers.Advanced.Arrow

Component
Modelica 3.2.3
Modelica 3.2.2
e_x
=noEvent(if length < 1e-10 then {1,0,0} else r_head/length)
=noEvent(if length < 1.e-10 then {1,0,0} else r_head/length)



model Mechanics.MultiBody.Visualizers.Advanced.DoubleArrow

Component
Modelica 3.2.3
Modelica 3.2.2
e_x
=noEvent(if length < 1e-10 then {1,0,0} else r_head/length)
=noEvent(if length < 1.e-10 then {1,0,0} else r_head/length)



function Mechanics.MultiBody.Visualizers.Advanced.SurfaceCharacteristics.torus

Component
Modelica 3.2.3
Modelica 3.2.2
ri
SIunits.Length
SIunits.Radius
ro
SIunits.Length
SIunits.Radius


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
beta = phi_start + (phi_stop-phi_start)*(j-1)/(nv-1);
X[i, j] = (ri + ro*Modelica323.Math.cos(beta))*Modelica323.Math.sin(alpha); X[i,j] = (ri + ro*cos(beta))*sin(alpha);
Y[i, j] = ro*Modelica323.Math.sin(beta); Y[i,j] = ro*sin(beta);
Z[i, j] = (ri + ro*Modelica323.Math.cos(beta))*Modelica323.Math.cos(alpha); Z[i,j] = (ri + ro*cos(beta))*cos(alpha);
end for;
...



function Mechanics.MultiBody.Visualizers.Advanced.SurfaceCharacteristics.pipeWithScalarField



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
X[i,j] = length*xsi_i;
Y[i, j] = rOuter*Modelica323.Math.sin(beta); Y[i,j] = rOuter*sin(beta);
Z[i, j] = rOuter*Modelica323.Math.cos(beta); Z[i,j] = rOuter*cos(beta);
C[i,j,:] = Ci;
...



package Mechanics.MultiBody.Types.Defaults

Component
Modelica 3.2.3
Modelica 3.2.2
BodyCylinderDiameterFraction
Real
SIunits.Diameter



model Mechanics.Rotational.Examples.CoupledClutches

Component
Modelica 3.2.3
Modelica 3.2.2
sin2
phase=1.570796326794897
phase=1.57



model Mechanics.Rotational.Examples.GenerationOfFMUs

Component
Modelica 3.2.3
Modelica 3.2.2
force3
Present



sine2

Present


sine3

Present


torque3

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
connect(inverseInertia.tau, directInertia.tau);
connect(sine1.y, torque2.tau);
connect(sine1.y, force3.tau);
connect(torqueToAngle2b.flange, inertia2b.flange_a);
connect(inertia2a.flange_b, torqueToAngle2a.flange);

connect(torque2.flange, inertia2a.flange_a);

connect(sine2.y, torque2.tau);
connect(inertia2a.flange_b, torqueToAngle2a.flange);
connect(torqueToAngle2a.phi, springDamper.phi1);
connect(torqueToAngle2a.w, springDamper.w1);
connect(springDamper.tau1, torqueToAngle2a.tau);
connect(torqueToAngle2b.phi, springDamper.phi2);
connect(torqueToAngle2b.w, springDamper.w2);
connect(springDamper.tau2, torqueToAngle2b.tau);
connect(inertia2b.flange_a, torqueToAngle2b.flange);
connect(torque3.flange, inertia3a.flange_a);
connect(sine3.y, torque3.tau);
connect(inertia3a.flange_b, torqueToAngle3a.flange);
connect(force3.flange, inertia3a.flange_a); connect(torqueToAngle3a.phi, spring.phi1);
connect(torqueToAngle3b.flange, inertia3b.flange_a); connect(spring.tau1, torqueToAngle3a.tau);
connect(torqueToAngle2a.phi, springDamper.phi1); connect(torqueToAngle3b.phi, spring.phi2);
connect(torqueToAngle2a.w, springDamper.w1); connect(spring.tau2, torqueToAngle3b.tau);
connect(torqueToAngle2a.tau, springDamper.tau1); connect(inertia3b.flange_a, torqueToAngle3b.flange);
connect(springDamper.tau2, torqueToAngle2b.tau);
connect(springDamper.phi2, torqueToAngle2b.phi);
connect(springDamper.w2, torqueToAngle2b.w);
connect(torqueToAngle3a.phi, spring.phi1);
connect(torqueToAngle3a.tau, spring.tau1);
connect(spring.phi2, torqueToAngle3b.phi);
connect(spring.tau2, torqueToAngle3b.tau);




model Mechanics.Rotational.Examples.Utilities.DirectInertia

Component
Modelica 3.2.3
Modelica 3.2.2
torqueSource
Present



torque

Present




Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
connect(tauDrive, torqueSource.tau); connect(torque.flange, inertia.flange_a);
connect(torqueSource.flange, inertia.flange_a); connect(torque.tau, tauDrive);
connect(inertia.flange_b, torqueToAngle.flange);
...
connect(torqueToAngle.w, w);

connect(torqueToAngle.tau, tau);
connect(torqueToAngle.a, a);
connect(torqueToAngle.tau, tau);




model Mechanics.Rotational.Examples.Utilities.InverseInertia

Component
Modelica 3.2.3
Modelica 3.2.2
inertia
phi(start=0)
phi(start=0, fixed=false)
w(start=0)
w(start=0, fixed=false)


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

connect(angleToTorque.phi, phi);
connect(angleToTorque.w, w);
connect(angleToTorque.a, a);
connect(angleToTorque.flange, inertia.flange_a);
connect(phi, angleToTorque.phi); connect(angleToTorque.tau, tau);
connect(w, angleToTorque.w);
connect(a, angleToTorque.a);
connect(tau, angleToTorque.tau);




model Mechanics.Rotational.Examples.Utilities.SpringDamper



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

connect(angleToTorque1.phi, phi1);
connect(angleToTorque1.w, w1);
connect(angleToTorque1.tau, tau1);
connect(angleToTorque1.flange, springDamper.flange_a);
connect(springDamper.flange_b, angleToTorque2.flange);
connect(angleToTorque1.flange, springDamper.flange_a); connect(phi2, angleToTorque2.phi);
connect(phi1, angleToTorque1.phi); connect(w2, angleToTorque2.w);
connect(w1, angleToTorque1.w); connect(angleToTorque2.tau, tau2);
connect(tau1, angleToTorque1.tau);
connect(angleToTorque2.phi, phi2);
connect(w2, angleToTorque2.w);
connect(angleToTorque2.tau, tau2);




model Mechanics.Rotational.Examples.Utilities.Spring



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

connect(angleToTorque1.phi, phi1);
connect(angleToTorque1.tau, tau1);
connect(angleToTorque1.flange, spring.flange_a);
connect(spring.flange_b, angleToTorque2.flange);
connect(phi1, angleToTorque1.phi); connect(phi2, angleToTorque2.phi);
connect(tau1, angleToTorque1.tau); connect(angleToTorque2.tau, tau2);
connect(angleToTorque2.phi, phi2);
connect(angleToTorque2.tau, tau2);




model Mechanics.Rotational.Components.Inertia

Component
Modelica 3.2.3
Modelica 3.2.2
flange_a

Present


flange_b

Present





model Mechanics.Rotational.Sources.SignTorque



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
if reg == Modelica323.Blocks.Types.Regularization.Exp then
tau = tau_constant*(2/(1 + Modelica323.Math.exp(-w/(0.01*w0))) - 1); tau = tau_constant*(2/(1+exp(-w/(0.01*w0)))-1);
elseif reg == Modelica323.Blocks.Types.Regularization.Sine then
tau = tau_constant*smooth(1, (if abs(w) >= w0 then sign(w) else
Modelica323.Math.sin(pi/2*w/w0)));
tau = tau_constant*smooth(1, (if abs(w)>=w0 then sign(w) else sin(pi/2*w/w0)));
elseif reg == Modelica323.Blocks.Types.Regularization.Linear then
...
else
tau = tau_constant*(if abs(w) >= w0 then sign(w) else sign(w)*(1 -
Modelica323.Math.cos(pi/2*w/w0)));
tau = tau_constant*(if abs(w)>=w0 then sign(w) else sign(w)*(1 - cos(pi/2*w/w0)));
end if;



connector Mechanics.Rotational.Interfaces.Flange_a

Component
Modelica 3.2.3
Modelica 3.2.2
phi

Present
tau

Present



connector Mechanics.Rotational.Interfaces.Flange_b

Component
Modelica 3.2.3
Modelica 3.2.2
phi

Present
tau

Present



connector Mechanics.Rotational.Interfaces.Support

Component
Modelica 3.2.3
Modelica 3.2.2
phi

Present
tau

Present



model Mechanics.Translational.Examples.SignConvention

Component
Modelica 3.2.3
Modelica 3.2.2
force3
useSupport=false
useSupport=true



function Mechanics.Translational.Examples.Utilities.GenerateStribeckFrictionTable



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
table[i, 1] = v_max*(i - 1)/(nTable - 1);
table[i, 2] = F_Coulomb + F_prop*table[i, 1] + F_Stribeck*Modelica323.Math.exp(
-fexp*table[i, 1]);
table[i, 2] = F_Coulomb + F_prop*table[i, 1] + F_Stribeck*exp(-fexp*
table[i, 1]);
end for;
...



model Mechanics.Translational.Components.MassWithStopAndFriction



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
0 = flange_a.f + flange_b.f - f - m*der(v);
f = if locked then sa*unitForce else if free then 0 else (if startForward then
F_prop*v + F_Coulomb + F_Stribeck else if startBackward then F_prop*v -
F_Coulomb - F_Stribeck else if pre(mode) == Forward then F_prop*v + F_Coulomb
+ F_Stribeck*Modelica323.Math.exp(-fexp*abs(v)) else F_prop*v - F_Coulomb -
F_Stribeck*Modelica323.Math.exp(-fexp*abs(v)));
f = if locked then sa*unitForce else if free then 0 else (if startForward
then F_prop*v + F_Coulomb + F_Stribeck else if startBackward then
F_prop*v - F_Coulomb - F_Stribeck else if pre(mode) == Forward then
F_prop*v + F_Coulomb + F_Stribeck*exp(-fexp*abs(v)) else F_prop*v -
F_Coulomb - F_Stribeck*exp(-fexp*abs(v)));
lossPower = f*v_relfric;
...



model Mechanics.Translational.Sources.SignForce



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
if reg == Modelica323.Blocks.Types.Regularization.Exp then
f = -f_nominal*(2/(1 + Modelica323.Math.exp(-v/(0.01*v0))) - 1); f = -f_nominal*(2/(1+exp(-v/(0.01*v0)))-1);
elseif reg == Modelica323.Blocks.Types.Regularization.Sine then
f = -f_nominal*smooth(1, (if abs(v) >= v0 then sign(v) else
Modelica323.Math.sin(pi/2*v/v0)));
f = -f_nominal*smooth(1, (if abs(v)>=v0 then sign(v) else sin(pi/2*v/v0)));
elseif reg == Modelica323.Blocks.Types.Regularization.Linear then
...
else
f = -f_nominal*(if abs(v) >= v0 then sign(v) else sign(v)*(1 -
Modelica323.Math.cos(pi/2*v/v0)));
f = -f_nominal*(if abs(v)>=v0 then sign(v) else sign(v)*(1 - cos(pi/2*v/v0)));
end if;



connector Mechanics.Translational.Interfaces.Flange_a

Component
Modelica 3.2.3
Modelica 3.2.2
s

Present
f

Present



connector Mechanics.Translational.Interfaces.Flange_b

Component
Modelica 3.2.3
Modelica 3.2.2
s

Present
f

Present



connector Mechanics.Translational.Interfaces.Support

Component
Modelica 3.2.3
Modelica 3.2.2
s

Present
f

Present



model Fluid.Examples.HeatingSystem

Component
Modelica 3.2.3
Modelica 3.2.2
tank
ports(each p(start=1.1e5))
ports(each p(start=1e5))



model Fluid.Examples.DrumBoiler.DrumBoiler

Component
Modelica 3.2.3
Modelica 3.2.2
T_S
final unit="degC"

p_S
final unit="bar"

qm_S
unit="kg/s"

V_l
unit="m3"




model Fluid.Examples.DrumBoiler.BaseClasses.EquilibriumDrumBoiler

Component
Modelica 3.2.3
Modelica 3.2.2
V
unit="m3"




model Fluid.Examples.Tanks.TanksWithOverflow

Component
Modelica 3.2.3
Modelica 3.2.2
upperTank
portsData={Modelica323.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1),Modelica323.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1),Modelica323.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1, height=6)}
portsData={Modelica322.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1),Modelica322.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1),Modelica322.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1, height=10)}
pipe
height_ab=-5
height_ab=-20
lowerTank
portsData={Modelica323.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1),Modelica323.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1, height=6)}
portsData={Modelica322.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1),Modelica322.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.1, height=10)}
overflow
height_ab=-5
height_ab=-20



block Fluid.Examples.ControlledTankSystem.Utilities.RadioButton

Component
Modelica 3.2.3
Modelica 3.2.2
on
start=false

fixed=true

table
y(start=false, fixed=true)




model Fluid.Examples.AST_BatchPlant.BaseClasses.TankWith3InletOutletArraysWithEvaporatorCondensor

Component
Modelica 3.2.3
Modelica 3.2.2
height

min=0
level_start

min=0
sat
Media.Water.WaterIF97_base.SaturationProperties
Media.Interfaces.Types.SaturationProperties



model Fluid.Examples.AST_BatchPlant.BaseClasses.Controller

Component
Modelica 3.2.3
Modelica 3.2.2
BooleanExpression1
y=time >= 2500
y=time > 2500



model Fluid.Examples.HeatExchanger.BaseClasses.BasicHX

Component
Modelica 3.2.3
Modelica 3.2.2
roughness_1
Fluid.Types.Roughness
SIunits.Length
roughness_2
Fluid.Types.Roughness
SIunits.Length



model Fluid.Examples.TraceSubstances.RoomCO2WithControls

Component
Modelica 3.2.3
Modelica 3.2.2
volume
medium(Xi(each nominal=0.01))


medium(Xi(nominal=0.01))
ductOut
mediums(each Xi(each nominal=0.01))


mediums(each Xi(nominal=0.01))
ductIn
mediums(each Xi(each nominal=0.01))


mediums(each Xi(nominal=0.01))



model Fluid.Examples.InverseParameterization

Component
Modelica 3.2.3
Modelica 3.2.2
system
m_flow_start=0.4




model Fluid.Pipes.BaseClasses.PartialStraightPipe

Component
Modelica 3.2.3
Modelica 3.2.2
perimeter
min=0

roughness
Fluid.Types.Roughness
SIunits.Height



model Fluid.Pipes.BaseClasses.PartialTwoPortFlow

Component
Modelica 3.2.3
Modelica 3.2.2
roughnesses
Fluid.Types.Roughness
SIunits.Height
roughnessesFM
Fluid.Types.Roughness
SIunits.Height



model Fluid.Pipes.BaseClasses.FlowModels.PartialStaggeredFlowModel

Component
Modelica 3.2.3
Modelica 3.2.2
roughnesses
Fluid.Types.Roughness
SIunits.Height



model Fluid.Pipes.BaseClasses.FlowModels.PartialGenericPipeFlow



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
equation
  for i in 1:n-1 loop
assert(m_flows[i] > -m_flow_small or allowFlowReversal, "Reversing flow occurs even though allowFlowReversal is false"); assert(m_flows[i] > -m_flow_small or allowFlowReversal, "Reverting flow occurs even though allowFlowReversal is false");
end for;
...



model Fluid.Pipes.BaseClasses.HeatTransfer.PartialFlowHeatTransfer

Component
Modelica 3.2.3
Modelica 3.2.2
roughnesses
Fluid.Types.Roughness
SIunits.Height



function Fluid.Pipes.BaseClasses.WallFriction.PartialWallFriction.massFlowRate_dp

Component
Modelica 3.2.3
Modelica 3.2.2
roughness
Fluid.Types.Roughness
SIunits.Length



function Fluid.Pipes.BaseClasses.WallFriction.PartialWallFriction.massFlowRate_dp_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
g_times_height_ab
unit="m2/s2"

roughness
Fluid.Types.Roughness
SIunits.Length



function Fluid.Pipes.BaseClasses.WallFriction.PartialWallFriction.pressureLoss_m_flow

Component
Modelica 3.2.3
Modelica 3.2.2
roughness
Fluid.Types.Roughness
SIunits.Length



function Fluid.Pipes.BaseClasses.WallFriction.PartialWallFriction.pressureLoss_m_flow_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
g_times_height_ab
unit="m2/s2"

roughness
Fluid.Types.Roughness
SIunits.Length



function Fluid.Pipes.BaseClasses.WallFriction.Laminar.massFlowRate_dp_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
dp_grav_a
SIunits.Pressure
Real
dp_grav_b
SIunits.Pressure
Real



function Fluid.Pipes.BaseClasses.WallFriction.Laminar.pressureLoss_m_flow_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
dp_grav_a
SIunits.Pressure
Real
dp_grav_b
SIunits.Pressure
Real
m_flow_a
SIunits.MassFlowRate
Real
m_flow_b
SIunits.MassFlowRate
Real



function Fluid.Pipes.BaseClasses.WallFriction.QuadraticTurbulent.pressureLoss_m_flow_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
m_flow_a
SIunits.MassFlowRate
Real
m_flow_b
SIunits.MassFlowRate
Real



function Fluid.Pipes.BaseClasses.WallFriction.LaminarAndQuadraticTurbulent.massFlowRate_dp_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.LaminarAndQuadraticTurbulent.pressureLoss_m_flow_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.LaminarAndQuadraticTurbulent.Internal.m_flow_of_dp_fric

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.LaminarAndQuadraticTurbulent.Internal.dp_fric_of_m_flow

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.Detailed.massFlowRate_dp

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.Detailed.pressureLoss_m_flow

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.Detailed.massFlowRate_dp_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.Detailed.pressureLoss_m_flow_staticHead

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.Detailed.Internal.m_flow_of_dp_fric

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




function Fluid.Pipes.BaseClasses.WallFriction.Detailed.Internal.dp_fric_of_m_flow

Component
Modelica 3.2.3
Modelica 3.2.2
Delta
min=0




model Fluid.Pipes.BaseClasses.WallFriction.TestWallFrictionAndGravity

Component
Modelica 3.2.3
Modelica 3.2.2
roughness
Fluid.Types.Roughness
SIunits.Length
mu_a
=if not WallFriction.use_mu then 1e-10 else (if use_nominal then mu_nominal else Medium.dynamicViscosity(state_a))
=if not WallFriction.use_mu then 1.e-10 else (if use_nominal then mu_nominal else Medium.dynamicViscosity(state_a))
mu_b
=if not WallFriction.use_mu then 1e-10 else (if use_nominal then mu_nominal else Medium.dynamicViscosity(state_b))
=if not WallFriction.use_mu then 1.e-10 else (if use_nominal then mu_nominal else Medium.dynamicViscosity(state_b))



model Fluid.Machines.ControlledPump

Component
Modelica 3.2.3
Modelica 3.2.2
head_op
SIunits.Position
SIunits.Height



model Fluid.Machines.BaseClasses.PartialPump

Component
Modelica 3.2.3
Modelica 3.2.2
delta_head_init
SIunits.Position
SIunits.Height
head
SIunits.Position
SIunits.Height
unitHead
SIunits.Position
SIunits.Height


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
if not checkValve then
head = homotopy((N/N_nominal)^2*flowCharacteristic(V_flow_single*N_nominal/N),
N/N_nominal*(flowCharacteristic(V_flow_single_init)+(V_flow_single-V_flow_single_init)*noEvent(if abs(V_flow_single_init)>0 then delta_head_init/(0.1*V_flow_single_init) else 0)));
head = homotopy((N/N_nominal)^2*flowCharacteristic(V_flow_single*N_nominal/N),
N/N_nominal*(flowCharacteristic(0)+delta_head_init*V_flow_single));
s = 0;
else
head = homotopy(if s > 0 then (N/N_nominal)^2*flowCharacteristic(V_flow_single*N_nominal/N)
else (N/N_nominal)^2*flowCharacteristic(0) - s*unitHead,
N/N_nominal*(flowCharacteristic(V_flow_single_init)+(V_flow_single-V_flow_single_init)*noEvent(if abs(V_flow_single_init)>0 then delta_head_init/(0.1*V_flow_single_init) else 0)));
head = homotopy(if s > 0 then (N/N_nominal)^2*flowCharacteristic(V_flow_single*N_nominal/N)
else (N/N_nominal)^2*flowCharacteristic(0) - s*unitHead,
N/N_nominal*(flowCharacteristic(0)+delta_head_init*V_flow_single));
V_flow_single = homotopy(if s > 0 then s*unitMassFlowRate/rho else 0,
                               s*unitMassFlowRate/rho_nominal);
...



function Fluid.Machines.BaseClasses.PumpCharacteristics.baseFlow

Component
Modelica 3.2.3
Modelica 3.2.2
head
SIunits.Position
SIunits.Height



function Fluid.Machines.BaseClasses.PumpCharacteristics.linearFlow

Component
Modelica 3.2.3
Modelica 3.2.2
head_nominal
SIunits.Position
SIunits.Height



function Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticFlow

Component
Modelica 3.2.3
Modelica 3.2.2
head_nominal
SIunits.Position
SIunits.Height



function Fluid.Machines.BaseClasses.PumpCharacteristics.polynomialFlow

Component
Modelica 3.2.3
Modelica 3.2.2
head_nominal
SIunits.Position
SIunits.Height



model Fluid.Machines.BaseClasses.PumpMonitoring.PumpMonitoringNPSH

Component
Modelica 3.2.3
Modelica 3.2.2
NPSHa
SIunits.Position
SIunits.Length



model Fluid.Valves.BaseClasses.PartialValve

Component
Modelica 3.2.3
Modelica 3.2.2
Av
fixed=CvData == Modelica323.Fluid.Types.CvTypes.Av
fixed=if CvData == Modelica322.Fluid.Types.CvTypes.Av then true else false



model Fluid.Fittings.BaseClasses.QuadraticTurbulent.TestWallFriction

Component
Modelica 3.2.3
Modelica 3.2.2
roughness
Fluid.Types.Roughness
SIunits.Length



model Fluid.Sources.FixedBoundary

Component
Modelica 3.2.3
Modelica 3.2.2
C
=Medium.C_default
=fill(0, Medium.nC)



model Fluid.Sources.Boundary_pT

Component
Modelica 3.2.3
Modelica 3.2.2
C
=Medium.C_default
=fill(0, Medium.nC)



model Fluid.Sources.Boundary_ph

Component
Modelica 3.2.3
Modelica 3.2.2
C
=Medium.C_default
=fill(0, Medium.nC)



model Fluid.Sources.MassFlowSource_T

Component
Modelica 3.2.3
Modelica 3.2.2
C
=Medium.C_default
=fill(0, Medium.nC)



model Fluid.Sources.MassFlowSource_h

Component
Modelica 3.2.3
Modelica 3.2.2
C
=Medium.C_default
=fill(0, Medium.nC)



model Fluid.Sources.BaseClasses.PartialFlowSource



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
assert(abs(sum(abs(ports.m_flow)) - max(abs(ports.m_flow))) <= Modelica323.Constants.small,
  "FlowSource only supports one connection with flow");
assert(nPorts > 0, "At least one port needs to be present (nPorts > 0), otherwise the model is singular");

for i in 1:nPorts loop
...



model Fluid.Sensors.MassFractionsTwoPort



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
ind:= -1;
for i in 1:Medium.nXi loop for i in 1:Medium.nC loop
if (Modelica323.Utilities.Strings.isEqual(Medium.substanceNames[i],
  substanceName)) then
...



model Fluid.Interfaces.PartialTwoPortTransport



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
m_flow = port_a.m_flow;
assert(m_flow > -m_flow_small or allowFlowReversal, "Reversing flow occurs even though allowFlowReversal is false"); assert(m_flow > -m_flow_small or allowFlowReversal, "Reverting flow occurs even though allowFlowReversal is false");
port_a.m_flow + port_b.m_flow = 0;
...



model Fluid.Interfaces.PartialLumpedVolume

Component
Modelica 3.2.3
Modelica 3.2.2
C_start
=Medium.C_default
=fill(0, Medium.nC)
medium
preferredMediumStates=(if energyDynamics == Dynamics.SteadyState and massDynamics == Dynamics.SteadyState then false else true)
preferredMediumStates=true



model Fluid.Interfaces.PartialDistributedVolume

Component
Modelica 3.2.3
Modelica 3.2.2
C_start
=Medium.C_default
=fill(0, Medium.nC)



function Fluid.Dissipation.HeatTransfer.Channel.kc_evenGapLaminar_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*d_hyd/max(MIN, IN_var.eta))
=max(1, IN_var.rho*velocity*d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.Channel.kc_evenGapOverall_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*d_hyd/max(MIN, IN_var.eta))
=max(1, IN_var.rho*velocity*d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.Channel.kc_evenGapTurbulent_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=max(MIN, (IN_var.rho*velocity*d_hyd/max(MIN, IN_var.eta)))
=max(2.6, IN_var.rho*velocity*d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.General.kc_approxForcedConvection_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(4*abs(IN_var.m_flow)/max(MIN, IN_con.perimeter*IN_var.eta))
=max(1, 4*abs(IN_var.m_flow)/max(MIN, IN_con.perimeter*IN_var.eta))



function Fluid.Dissipation.HeatTransfer.HeatExchanger.kc_flatTube



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
if IN_con.geometry == TYP.LouverFin then
Re = abs(IN_var.m_flow)*IN_con.L_p/(IN_var.eta*A_c); Re = max(1e-3, abs(IN_var.m_flow)*IN_con.L_p/(IN_var.eta*A_c));
Nu = max(1e-3, kc*IN_con.L_p/IN_var.lambda);
elseif IN_con.geometry == TYP.RectangularFin then
Re = abs(IN_var.m_flow)*IN_con.D_h/(IN_var.eta*A_c); Re = max(1e-3, abs(IN_var.m_flow)*IN_con.D_h/(IN_var.eta*A_c));
Nu = max(1e-3, kc*IN_con.D_h/IN_var.lambda);
...



function Fluid.Dissipation.HeatTransfer.HeatExchanger.kc_flatTube_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re_Dh
=max(MIN, (abs(IN_var.m_flow)*IN_con.D_h/(IN_var.eta*A_c)))
=max(1e-3, abs(IN_var.m_flow)*IN_con.D_h/(IN_var.eta*A_c))
Re_Lp
=max(MIN, (abs(IN_var.m_flow)*IN_con.L_p/(IN_var.eta*A_c)))
=max(1e-3, abs(IN_var.m_flow)*IN_con.L_p/(IN_var.eta*A_c))



function Fluid.Dissipation.HeatTransfer.HeatExchanger.kc_roundTube



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
if IN_con.geometry == TYP.PlainFin or IN_con.geometry == TYP.LouverFin or
      IN_con.geometry == TYP.SlitFin or IN_con.geometry == TYP.WavyFin then
Re = abs(IN_var.m_flow)*IN_con.D_c/(IN_var.eta*A_c); Re = max(1e-3, abs(IN_var.m_flow)*IN_con.D_c/(IN_var.eta*A_c));
Nu = max(1e-3, kc*IN_con.D_c/IN_var.lambda);
...



function Fluid.Dissipation.HeatTransfer.HeatExchanger.kc_roundTube_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re_Dc
=max(MIN, (abs(IN_var.m_flow)*IN_con.D_c/(IN_var.eta*A_c)))
=max(1e-3, abs(IN_var.m_flow)*IN_con.D_c/(IN_var.eta*A_c))
Re_i
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
elseif IN_con.geometry == TYP.WavyFin then
Re_i = 2*exp(2.921)^(1/(A_c/IN_con.A_fr)); if Re_Dc < exp(2.921) then
if Re_Dc > Re_i then j = 1.201/(log(exp(2.921)^(A_c/IN_con.A_fr)))^2.921;
j = 1.201/((Modelica323.Math.log(Re_Dc^(A_c/IN_con.A_fr)))^2.921); kc = j*(exp(2.921)*Pr^(1/3)*IN_var.lambda/IN_con.D_c);
else
j = (Re_Dc - Re_i)*(-1.201*2.921*(A_c/IN_con.A_fr)/((Modelica323.Math.log(Re_i^
(A_c/IN_con.A_fr)))^3.921*Re_i)) + 1.201/((Modelica323.Math.log(Re_i^(A_c/
IN_con.A_fr)))^2.921);
j = 1.201/((log(Re_Dc^(A_c/IN_con.A_fr)))^2.921);

kc = j*(Re_Dc*Pr^(1/3)*IN_var.lambda/IN_con.D_c);
end if;
kc = j*(Re_Dc*Pr^(1/3)*IN_var.lambda/IN_con.D_c);

else
...



function Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_laminar



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda));
Re = abs(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta)); Re = max(1, abs(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta)));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_laminar_KC(
  IN_con, IN_var);
...



function Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_laminar_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))
=max(1, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_overall



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda));
Re = (IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta)); Re = max(MIN, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_overall_KC(
  IN_con, IN_var);
...



function Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_overall_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))
=max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_turbulent



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/IN_var.lambda);
Re = abs(IN_var.rho*velocity*IN_con.d_hyd/IN_var.eta); Re = max(1e-3, abs(IN_var.rho*velocity*IN_con.d_hyd/IN_var.eta));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_turbulent_KC(
  IN_con, IN_var);
...



function Fluid.Dissipation.HeatTransfer.HelicalPipe.kc_turbulent_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))
=max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.Plate.kc_laminar



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda);
Re = abs(IN_var.rho*IN_var.velocity*IN_con.L/max(MIN, IN_var.eta)); Re = max(1e-3, abs(IN_var.rho*IN_var.velocity*IN_con.L/max(MIN, IN_var.eta)));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.Plate.kc_laminar_KC(IN_con,
  IN_var);
...



function Fluid.Dissipation.HeatTransfer.Plate.kc_laminar_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(rho*velocity*L/eta)
=max(1e-3, rho*velocity*L/eta)



function Fluid.Dissipation.HeatTransfer.Plate.kc_overall



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda);
Re = abs(IN_var.rho*IN_var.velocity*IN_con.L/max(MIN, IN_var.eta)); Re = max(1e-3, abs(IN_var.rho*IN_var.velocity*IN_con.L/max(MIN, IN_var.eta)));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.Plate.kc_overall_KC(IN_con,
  IN_var);
...



function Fluid.Dissipation.HeatTransfer.Plate.kc_turbulent



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda));
Re = abs(IN_var.rho*IN_var.velocity*IN_con.L/max(MIN, IN_var.eta)); Re = max(1e-3, abs(IN_var.rho*IN_var.velocity*IN_con.L/max(MIN, IN_var.eta)));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.Plate.kc_turbulent_KC(IN_con,
  IN_var);
...



function Fluid.Dissipation.HeatTransfer.Plate.kc_turbulent_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=abs(rho*velocity*L/eta)
=max(1e-3, abs(rho*velocity*L/eta))



function Fluid.Dissipation.HeatTransfer.StraightPipe.kc_laminar



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda));
Re = (IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta)); Re = max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_laminar_KC(
  IN_con, IN_var);
...



function Fluid.Dissipation.HeatTransfer.StraightPipe.kc_laminar_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))
=max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda));
Re = (IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta)); Re = max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall_KC(
  IN_con, IN_var);
...



function Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=(IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))
=max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta))



function Fluid.Dissipation.HeatTransfer.StraightPipe.kc_turbulent



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
Pr := abs(IN_var.eta*IN_var.cp/max(MIN, IN_var.lambda));
Re = (IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta)); Re = max(1e-3, IN_var.rho*velocity*IN_con.d_hyd/max(MIN, IN_var.eta));
kc = Modelica323.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_turbulent_KC(
  IN_con, IN_var);
...



function Fluid.Dissipation.HeatTransfer.StraightPipe.kc_turbulent_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re
=max(MIN, (IN_var.rho*velocity*IN_con.d_hyd/IN_var.eta))
=max(2.6, IN_var.rho*velocity*IN_con.d_hyd/IN_var.eta)



function Fluid.Dissipation.PressureLoss.General.dp_volumeFlowRate_DP

Component
Modelica 3.2.3
Modelica 3.2.2
a
=abs(IN_con.a)
=max(Modelica322.Constants.eps, abs(IN_con.a))
b
=abs(IN_con.b)
=max(Modelica322.Constants.eps, abs(IN_con.b))
dp_min
=max(Modelica323.Constants.eps, abs(IN_con.dp_min))
=IN_con.dp_min
V_flow_smooth
=if a > 0 and b <= 0 then (dp_min/a)^0.5 else 0
=if IN_con.a > 0 then -(b/(2*a) + ((-b/(2*a))^2 + dp_min/a)^0.5) else dp_min/b


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
assert(a+b>0, "Please provide non-zero factors for either a or b of function dp=a*V_flow^2 + b*V_flow"); DP := a*Dissipation.Utilities.Functions.General.SmoothPower(
V_flow,
V_flow_smooth,
2) + b*V_flow;
DP = a*(if a>0 and b<=0 then Dissipation.Utilities.Functions.General.SmoothPower(
          V_flow,
          V_flow_smooth,
          2) elseif a>0 and b>0 then V_flow*abs(V_flow) else 0) + b*V_flow;




function Fluid.Dissipation.PressureLoss.General.dp_volumeFlowRate_MFLOW

Component
Modelica 3.2.3
Modelica 3.2.2
a
=abs(IN_con.a)
=max(Modelica322.Constants.eps, abs(IN_con.a))
b
=abs(IN_con.b)
=max(Modelica322.Constants.eps, abs(IN_con.b))
dp_min
=max(Modelica323.Constants.eps, abs(IN_con.dp_min))
=IN_con.dp_min


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
assert(a+b>0, "Please provide non-zero factors for either a or b of function dp=a*V_flow^2 + b*V_flow"); M_FLOW := IN_var.rho*(-b/(2*a) +
Modelica322.Fluid.Dissipation.Utilities.Functions.General.SmoothPower(
(b/(2*a))^2 + (1/a)*dp,
(b/(2*a))^2 + (1/a)*dp_min,
0.5));
M_FLOW = IN_var.rho*(if a > 0 and b <= 0 then
  Modelica323.Fluid.Dissipation.Utilities.Functions.General.SmoothPower(
  (1/a)*dp,
  (1/a)*dp_min,
  0.5) elseif a > 0 and b > 0 then sign(dp)*(-b/(2*a) + sqrt((b/(2*a))^2 + (1/a)
  *abs(dp))) else b*dp);




function Fluid.Dissipation.PressureLoss.StraightPipe.dp_twoPhaseOverall_DP

Component
Modelica 3.2.3
Modelica 3.2.2
DP_fric
=if IN_con.frictionalPressureLoss == TYP.Friedel then Modelica323.Fluid.Dissipation.Utilities.Functions.PressureLoss.TwoPhase.dp_twoPhaseFriedel_DP(Modelica323.Fluid.Dissipation.Utilities.Records.General.TwoPhaseFlow_con(A_cross=IN_con.A_cross, perimeter=IN_con.perimeter, length=IN_con.length), Modelica323.Fluid.Dissipation.Utilities.Records.General.TwoPhaseFlow_var(rho_g=IN_var.rho_g, rho_l=IN_var.rho_l, eta_g=IN_var.eta_g, eta_l=IN_var.eta_l, sigma=IN_var.sigma, x_flow=IN_var.x_flow), m_flow) else if IN_con.frictionalPressureLoss == TYP.Chisholm then Modelica323.Fluid.Dissipation.Utilities.Functions.PressureLoss.TwoPhase.dp_twoPhaseChisholm_DP(Modelica323.Fluid.Dissipation.Utilities.Records.General.TwoPhaseFlow_con(A_cross=IN_con.A_cross, perimeter=IN_con.perimeter, length=IN_con.length), Modelica323.Fluid.Dissipation.Utilities.Records.General.TwoPhaseFlow_var(rho_g=IN_var.rho_g, rho_l=IN_var.rho_l, eta_g=IN_var.eta_g, eta_l=IN_var.eta_l, sigma=IN_var.sigma, x_flow=IN_var.x_flow), m_flow) else 0
=if IN_con.frictionalPressureLoss == TYP.Friedel then Modelica322.Fluid.Dissipation.Utilities.Functions.PressureLoss.TwoPhase.dp_twoPhaseFriedel_DP(IN_con, IN_var, m_flow) else if IN_con.frictionalPressureLoss == TYP.Chisholm then Modelica322.Fluid.Dissipation.Utilities.Functions.PressureLoss.TwoPhase.dp_twoPhaseChisholm_DP(IN_con, IN_var, m_flow) else 0



function Fluid.Dissipation.Utilities.Functions.HeatTransfer.TwoPhase.kc_twoPhase_condensationHorizontal_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re_l
=(IN_var.rho_l*velocity*d_hyd/max(MIN, IN_var.eta_l))
=max(1, IN_var.rho_l*velocity*d_hyd/max(MIN, IN_var.eta_l))



function Fluid.Dissipation.Utilities.Functions.HeatTransfer.TwoPhase.kc_twoPhase_boilingVertical_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re_l
=(IN_var.rho_l*velocity_l*d_hyd/max(MIN, IN_var.eta_l))
=max(1, IN_var.rho_l*velocity_l*d_hyd/max(MIN, IN_var.eta_l))



function Fluid.Dissipation.Utilities.Functions.HeatTransfer.TwoPhase.kc_twoPhase_boilingHorizontal_KC

Component
Modelica 3.2.3
Modelica 3.2.2
Re_l
=(IN_var.rho_l*velocity_l*d_hyd/max(MIN, IN_var.eta_l))
=max(1, IN_var.rho_l*velocity_l*d_hyd/max(MIN, IN_var.eta_l))



function Fluid.Utilities.checkBoundary



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2

...
end for;
if nX > 0 and abs(sum(X_boundary) - 1.0) > 1e-10 then if nX > 0 and abs(sum(X_boundary) - 1.0) > 1.e-10 then
X_str = "";
...



function Fluid.Utilities.regRoot2

Component
Modelica 3.2.3
Modelica 3.2.2
sqrt_k1
Present

sqrt_k2
Present



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
y := smooth(2, if x >= x_small then sqrt_k1*sqrt(x) else
if x <= -x_small then -sqrt_k2*sqrt(abs(x)) else
if k1 >= k2 then regRoot2_utility(x,x_small,k1,k2,use_yd0,yd0) else
-regRoot2_utility(-x,x_small,k2,k1,use_yd0,yd0));
y := smooth(2, if x >= x_small then sqrt(k1*x) else
if x <= -x_small then -sqrt(k2*abs(x)) else
if k1 >= k2 then regRoot2_utility(x,x_small,k1,k2,use_yd0,yd0) else
-regRoot2_utility(-x,x_small,k2,k1,use_yd0,yd0));



model Media.Examples.ReferenceAir.Inverse_sh_T



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
h1 = if time < 0 then h_min else if time >= 1 then h_max else h_min + time
/timeUnit*(h_max - h_min);
h1 = if time < 0 then h_min else if time > 1 then h_max else h_min + time
/timeUnit*(h_max - h_min);
s1 = if time < 0 then s_min else if time >= 1 then s_max else s_min + time
/timeUnit*(s_max - s_min);
s1 = if time < 0 then s_min else if time > 1 then s_max else s_min + time
/timeUnit*(s_max - s_min);
Th = Medium.temperature_phX(
          p,
          h1,
          fill(0.0, 0));
...



model Media.Examples.ReferenceAir.Inverse_sh_TX



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
h1 = if time < 0 then h_min else if time >= 1 then h_max else h_min + time
/timeUnit*(h_max - h_min);
h1 = if time < 0 then h_min else if time > 1 then h_max else h_min + time
/timeUnit*(h_max - h_min);
s1 = if time < 0 then s_min else if time >= 1 then s_max else s_min + time
/timeUnit*(s_max - s_min);
s1 = if time < 0 then s_min else if time > 1 then s_max else s_min + time
/timeUnit*(s_max - s_min);
Th = Medium.temperature_phX(
          p,
          h1,
          X);
...



model Media.Examples.TestOnly.MixIdealGasAir

Component
Modelica 3.2.3
Modelica 3.2.2
medium2
X(start={0.2,0.8}, each fixed=true)
X(start={0.2,0.8}, fixed=true)



model Media.Examples.TestOnly.FlueGas

Component
Modelica 3.2.3
Modelica 3.2.2
medium2
X(start={0.2,0.1,0.3,0.4}, each fixed=true)
X(start={0.2,0.1,0.3,0.4}, fixed=true)



model Media.Examples.Tests.Components.ShortPipe

Component
Modelica 3.2.3
Modelica 3.2.2
dp_nominal
min=1e-10
min=1.e-10
m_flow_nominal
min=1e-10
min=1.e-10



package Media.Interfaces.PartialMedium

Component
Modelica 3.2.3
Modelica 3.2.2
C_default
Present




model Media.Air.ReferenceAir.Air_Base.BaseProperties



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
MM = Air_Utilities.Basic.Constants.MM; MM = ReferenceAir.Air_Utilities.Basic.Constants.MM;
if dT_explicit then
...
u = h - p/d;
R = Air_Utilities.Basic.Constants.R; R = Constants.R;
h = state.h;
...



function Media.Air.MoistAir.specificInternalEnergy

Component
Modelica 3.2.3
Modelica 3.2.2
u

Present



function Media.Air.MoistAir.density_derX



Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
dddX[Water] := - pressure(state)*(steam.R - dryair.R)/(((steam.R - dryair.R)
*state.X[Water] + dryair.R)^2*temperature(state));
dddX[Water] := pressure(state)*(steam.R - dryair.R)/((steam.R - dryair.R)
*state.X[Water]*temperature(state) + dryair.R*temperature(state))^2;
dddX[Air] = - pressure(state)*(dryair.R - steam.R)/((steam.R + (dryair.R - steam.R)*
state.X[Air])^2*temperature(state));
dddX[Air] = pressure(state)*(dryair.R - steam.R)/((dryair.R - steam.R)*
state.X[Air]*temperature(state) + steam.R*temperature(state))^2;



function Media.Air.MoistAir.molarMass


Equations in Modelica 3.2.3 Equations in Modelica 3.2.2
algorithm
MM := Modelica323.Constants.R/Modelica323.Media.Air.MoistAir.gasConstant(state); MM := Modelica322.Media.Air.MoistAir.gasC