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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
driveAngle | =1.570796326794897 | =1.57 |
PI | limiter(u(start=0)) | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
booleanExpression | y=time >= 0.5 | y=time > 0.5 |
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; |
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; |
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); |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
enableNoise | =globalSeed.enableNoise | =true |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
y_arg | unit="rad" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
u_arg | unit="rad" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
t_eps | min=100*Modelica323.Constants.eps | min=0.0 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
t_eps | min=100*Modelica323.Constants.eps | min=0.0 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
t_eps | min=100*Modelica323.Constants.eps | min=0.0 |
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); |
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; |
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; |
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 ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
delayMax | SIunits.Duration | Real |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
offset | Present | |
startTime | Present |
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 ... |
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; |
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; ... |
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; |
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; |
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; |
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; ... |
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; ... |
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; |
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) |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | unit="rad" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | unit="rad" | |
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)); |
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))); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
setCondition | y=time >= 7 | y=time > 7 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
setCondition | y=time >= 7 | y=time > 7 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
transition1 | condition=time >= 8 | condition=time > 8 |
transition2 | condition=time >= 4 | condition=time > 4 |
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 ... |
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); ... |
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); |
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 |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
V | duration=1e-2 | duration=1.e-2 |
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 |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
opAmp | homotopyType=Modelica323.Blocks.Types.LimiterHomotopy.LowerLimit | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
opAmp | homotopyType=Modelica323.Blocks.Types.LimiterHomotopy.UpperLimit | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Vns | =-Vps | =-15 |
opAmp1 | strict=false | |
homotopyType=Modelica323.Blocks.Types.LimiterHomotopy.UpperLimit | | |
opAmp2 | strict=false | |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
i | each fixed=true | |
| fixed=true |
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); ... |
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); ... |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
s | start=0 | |
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; |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.e-5 |
Goff | =1e-5 | =1.e-5 |
Equations in Modelica 3.2.3 | Equations in Modelica 3.2.2 |
initial algorithm |
initial equation |
for i in 1:N loop ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
v | SIunits.ElectricPotential | SIunits.Voltage |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
v | SIunits.ElectricPotential | SIunits.Voltage |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
v | SIunits.ElectricPotential | SIunits.Voltage |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
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 |
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} |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
R | R=rm | R=fill(r*length/(N + 1), N + 1) |
rm | Present |
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; |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ids | =1e-6 | =1.e-6 |
R | =1e8 | =1.e8 |
maxexp | Present |
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); ... |
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); ... |
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); ... |
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)); ... |
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; |
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); ... |
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); ... |
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); ... |
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; ... |
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 |
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 | |
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); |
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; |
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; |
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; |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
cooling | Thermal.FluidHeatFlow.Components.Pipe | Thermal.FluidHeatFlow.Components.HeatedPipe |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
squirrelCageR | | final T=TrRef |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
idq_dr | graphical | |
damperCage | | final T=TrRef |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
idq_dr | graphical | |
damperCage | | final T=TrRef |
re | | final T=TeRef |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
idq_dr | graphical | |
damperCage | | final T=TrRef |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
re | | final T=TeRef |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
re | | final T=TeRef |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
angle | unit="rad" | |
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; ... |
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; ... |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
coreParameters | m=3 | |
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; ... |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
coreParameters | m=1 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ra | | final T=TaRef |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
effectiveStatorTurns | Present |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | unit="rad" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | unit="rad" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
m | parameter | constant |
phi | unit="rad" | |
fromSpacePhasor | final m=m | |
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 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
effectiveStatorTurns | Present |
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); |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
resistor | | final T=T |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
conductor | | final T=T |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
epsilon | parameter | constant |
m | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
variableResistor | | final T=T |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
variableConductor | | final T=T |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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; |
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; |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
n | =numberOfSymmetricBaseSystems(m) | =Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m) |
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; ... |
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) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
sineVoltage | phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m) | phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m) |
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) |
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) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
model | partial
|
|
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) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
sineVoltage | phase=-Modelica323.Electrical.MultiPhase.Functions.symmetricOrientation(m) | phase=-Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m) |
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) |
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 |
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 |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
dc_p1 | Present | |
dc_n1 | Present | |
dc_n2 | Present | |
dc_p2 | Present | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerAC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerAC | Present | |
powerTotalAC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerAC | Present | |
powerTotalAC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerDC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerDC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerDC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerAC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerAC | Present | |
powerTotalAC | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerDC1 | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
powerDC2 | Present |
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)); |
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)); |
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)); |
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)); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | =1e-5 | =1.E-5 |
Goff | =1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | | graphical |
=1e-5 | =1.E-5 | |
Goff | | graphical |
=1e-5 | =1.E-5 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Ron | | graphical |
=1e-5 | =1.E-5 | |
Goff | | graphical |
=1e-5 | =1.E-5 |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
y | unit="rad" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
y | unit="Hz" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
f | unit="Hz" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
f | unit="Hz" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
v | SIunits.ComplexElectricPotential | SIunits.ComplexVoltage |
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); |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
mSystems | =Modelica323.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m) | =Modelica.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
mSystems | =Modelica323.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m) | =Modelica.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m) |
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 |
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 |
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 |
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 |
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) |
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) |
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) |
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) |
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; |
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); |
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 |
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)); |
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}; |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | =Electrical.MultiPhase.Functions.symmetricOrientation(m) | =Modelica322.Electrical.MultiPhase.Functions.symmetricOrientation(m) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C1 | C=1e-6 | C=1.e-6 |
Equations in Modelica 3.2.3 | Equations in Modelica 3.2.2 |
initial equation |
|
if UIC then |
|
vinternal = IC; | |
end if; |
|
... |
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]; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
IS | =1e-14 | =1.e-14 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
UCRIT | =1e4 | =1.e4 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
IS | =1e-14 | =1.e-14 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
TC1 | SIunits.LinearTemperatureCoefficientResistance | SIunits.Conversions.NonSIunits.FirstOrderTemperaturCoefficient |
TC2 | SIunits.QuadraticTemperatureCoefficientResistance | SIunits.Conversions.NonSIunits.SecondOrderTemperaturCoefficient |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
CONSTvt0 | final unit="(J)/(A.s)" | final unit="(J/K)/(A.s)" |
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); |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phibtemp | SIunits.GapEnergy | SIunits.Voltage |
phibtnom | SIunits.GapEnergy | SIunits.Voltage |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
max_current | =1e4 | =1.e4 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
max_current | =1e4 | =1.e4 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ret | SIunits.GapEnergy | SIunits.Voltage |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
dbsrdb | =0.0 | |
x4 | =fill(0.0, 8) | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
dbsrdb | =0.0 | |
x4 | =fill(0.0, 8) | |
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 |
Equations in Modelica 3.2.3 | Equations in Modelica 3.2.2 |
... connect(electroTranslationalConverter.flange, armature.flange_a); |
|
connect(p, p); |
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); |
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); |
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); |
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); |
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); |
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); |
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); |
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; ... |
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); ... |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
derHstat | | fixed=true |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
fNominal | =aimcData.fsNominal | =50 |
aimcM | effectiveStatorTurns=aimcData.effectiveStatorTurns | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
fNominal | =aimcData.fsNominal | =50 |
aimcM | effectiveStatorTurns=aimcData.effectiveStatorTurns | |
aimc3 | effectiveStatorTurns=aimcData.effectiveStatorTurns | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
fNominal | =aimsData.fsNominal | =50 |
aimsM | effectiveStatorTurns=aimsData.effectiveStatorTurns | |
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) |
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 |
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) |
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) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
fsNominal | =smeeData.fsNominal | =50 |
smeeM | effectiveStatorTurns=smeeData.effectiveStatorTurns | |
thetaM | Present | |
thetaE | Present |
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 |
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) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
groundR | Present | |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
groundR | Present | |
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); |
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; ... |
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); |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
resistor | final T=fill(TOperational, m) | final T=fill(TRef, m) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
V_m | SIunits.ComplexMagneticPotential | SIunits.ComplexMagneticPotentialDifference |
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 |
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); |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
smpmQS | effectiveStatorTurns=smpmData.effectiveStatorTurns | |
smpm | effectiveStatorTurns=smpmData.effectiveStatorTurns | |
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); |
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); |
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); |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ir | graphical | |
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; ... |
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); |
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); |
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) |
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"); |
... |
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; ... |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
u | unit="Hz" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
gamma | unit="rad" | |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
revolute2 | phi(start=Modelica323.Constants.pi/2) | |
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}) | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
world | animateGround=true | |
groundLength_u=4 | | |
groundColor={130,200,130} | | |
ground | Present | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
world | animateGround=true | |
groundLength_u=3 | | |
groundColor={130,200,130} | | |
ground | Present | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
world | animateGround=true | |
groundLength_u=3 | | |
groundColor={130,200,130} | | |
ground | Present | |
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 | |
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; ... |
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) |
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) |
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); |
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."); |
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); |
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); |
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); ... |
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); ... |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
joint | stateSelect=StateSelect.always | stateSelect=StateSelect.never |
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); |
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); |
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); |
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; |
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; |
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); |
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 |
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 |
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); |
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}); |
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; ... |
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)); |
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)); |
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; |
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; |
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); |
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]; |
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; ... |
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 |
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 |
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); ... |
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; |
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. "); |
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); ... |
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); ... |
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 ... |
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 ... |
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 ... |
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 ... |
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); ... |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
frame_a | Present | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
frame_a | Present | |
frame_b | Present | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
s_small | =1e-10 | =1.E-10 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
ri | SIunits.Length | SIunits.Radius |
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) |
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) |
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; ... |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
BodyCylinderDiameterFraction | Real | SIunits.Diameter |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
sin2 | phase=1.570796326794897 | phase=1.57 |
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); |
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); |
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); |
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); |
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); |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
flange_a | Present | |
flange_b | Present | |
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; |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | Present | |
tau | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | Present | |
tau | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
phi | Present | |
tau | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
force3 | useSupport=false | useSupport=true |
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; ... |
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; ... |
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; |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
s | Present | |
f | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
s | Present | |
f | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
s | Present | |
f | Present |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
tank | ports(each p(start=1.1e5)) | ports(each p(start=1e5)) |
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" | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
V | unit="m3" | |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
on | start=false | |
fixed=true | | |
table | y(start=false, fixed=true) | |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
BooleanExpression1 | y=time >= 2500 | y=time > 2500 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughness_1 | Fluid.Types.Roughness | SIunits.Length |
roughness_2 | Fluid.Types.Roughness | SIunits.Length |
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)) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
system | m_flow_start=0.4 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
perimeter | min=0 | |
roughness | Fluid.Types.Roughness | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughnesses | Fluid.Types.Roughness | SIunits.Height |
roughnessesFM | Fluid.Types.Roughness | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughnesses | Fluid.Types.Roughness | SIunits.Height |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughnesses | Fluid.Types.Roughness | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughness | Fluid.Types.Roughness | SIunits.Length |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
g_times_height_ab | unit="m2/s2" | |
roughness | Fluid.Types.Roughness | SIunits.Length |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughness | Fluid.Types.Roughness | SIunits.Length |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
g_times_height_ab | unit="m2/s2" | |
roughness | Fluid.Types.Roughness | SIunits.Length |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
dp_grav_a | SIunits.Pressure | Real |
dp_grav_b | SIunits.Pressure | Real |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
m_flow_a | SIunits.MassFlowRate | Real |
m_flow_b | SIunits.MassFlowRate | Real |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Delta | min=0 | |
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)) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
head_op | SIunits.Position | SIunits.Height |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
head | SIunits.Position | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
head_nominal | SIunits.Position | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
head_nominal | SIunits.Position | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
head_nominal | SIunits.Position | SIunits.Height |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
NPSHa | SIunits.Position | SIunits.Length |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
roughness | Fluid.Types.Roughness | SIunits.Length |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C | =Medium.C_default | =fill(0, Medium.nC) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C | =Medium.C_default | =fill(0, Medium.nC) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C | =Medium.C_default | =fill(0, Medium.nC) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C | =Medium.C_default | =fill(0, Medium.nC) |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C | =Medium.C_default | =fill(0, Medium.nC) |
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 ... |
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 ... |
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; ... |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C_start | =Medium.C_default | =fill(0, Medium.nC) |
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)) |
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)) |
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)) |
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)) |
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); ... |
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)) |
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); ... |
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 ... |
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); ... |
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)) |
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); ... |
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)) |
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); ... |
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)) |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Re | =(rho*velocity*L/eta) | =max(1e-3, rho*velocity*L/eta) |
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); ... |
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); ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
Re | =abs(rho*velocity*L/eta) | =max(1e-3, abs(rho*velocity*L/eta)) |
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); ... |
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)) |
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); ... |
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)) |
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); ... |
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) |
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; |
|
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); |
|
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 |
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)) |
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)) |
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)) |
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 = ""; ... |
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)); |
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)); ... |
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); ... |
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) |
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) |
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 |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
C_default | Present |
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; ... |
Component |
Modelica 3.2.3 |
Modelica 3.2.2 |
u | Present |
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; |
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 |