Ticket #2429: asmaFlowTotalSCode.mo

File asmaFlowTotalSCode.mo, 48.3 KB (added by Adrian Pop, 11 years ago)

Total model of the asmaFlow

Line 
1model asmaFlow
2 parameter Modelica.SIunits.AngularVelocity DeltaOmEl = 25;
3 Modelica.Electrical.Machines.Utilities.TerminalBox terminalBox;
4 Modelica.Electrical.Machines.BasicMachines.AsynchronousInductionMachines.AIM_SquirrelCage aimc(p = 2, fsNominal = 50, Rs = 0.435, Lssigma = 0.004, Lrsigma = 0.002, Rr = 0.4, Jr = 2, Lm = 0.06931);
5 Modelica.Electrical.Analog.Basic.Ground ground;
6 Modelica.Electrical.MultiPhase.Basic.Star star;
7 Modelica.Mechanics.Rotational.Sources.Torque torque;
8 Modelica.Blocks.Sources.Constant const(k = -15);
9 Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor;
10 Modelica.Electrical.MultiPhase.Sources.SineVoltage sinevoltage1(V = 230 * sqrt(2) / sqrt(3) * ones(3), freqHz = 50 * ones(3));
11equation
12 connect(sinevoltage1.plug_n, terminalBox.plugSupply);
13 connect(sinevoltage1.plug_p, star.plug_p);
14 connect(terminalBox.plug_sn, aimc.plug_sn);
15 connect(terminalBox.plug_sp, aimc.plug_sp);
16 connect(ground.p, star.pin_n);
17 connect(torque.flange, aimc.flange);
18 connect(const.y, torque.tau);
19 connect(speedSensor.flange, torque.flange);
20end asmaFlow;
21
22package ModelicaServices
23 extends Modelica.Icons.Package;
24
25 package Machine
26 extends Modelica.Icons.Package;
27 final constant Real eps = 0.000000000000001;
28 final constant Real small = 1e-60;
29 final constant Real inf = 1e+60;
30 final constant Integer Integer_inf = OpenModelica.Internal.Architecture.integerMax();
31 end Machine;
32end ModelicaServices;
33
34package Modelica
35 extends Modelica.Icons.Package;
36
37 package Blocks
38 extends Modelica.Icons.Package;
39
40 package Interfaces
41 extends Modelica.Icons.InterfacesPackage;
42 connector RealInput = input Real;
43 connector RealOutput = output Real;
44
45 partial block SO
46 extends Modelica.Blocks.Icons.Block;
47 RealOutput y;
48 end SO;
49
50 partial block SignalSource
51 extends SO;
52 parameter Real offset = 0;
53 parameter .Modelica.SIunits.Time startTime = 0;
54 end SignalSource;
55 end Interfaces;
56
57 package Sources
58 extends Modelica.Icons.SourcesPackage;
59
60 block Constant
61 parameter Real k(start = 1);
62 extends .Modelica.Blocks.Interfaces.SO;
63 equation
64 y = k;
65 end Constant;
66
67 block Sine
68 parameter Real amplitude = 1;
69 parameter .Modelica.SIunits.Frequency freqHz(start = 1);
70 parameter .Modelica.SIunits.Angle phase = 0;
71 parameter Real offset = 0;
72 parameter .Modelica.SIunits.Time startTime = 0;
73 extends .Modelica.Blocks.Interfaces.SO;
74 protected
75 constant Real pi = Modelica.Constants.pi;
76 equation
77 y = offset + (if time < startTime then 0 else amplitude * Modelica.Math.sin(2 * pi * freqHz * (time - startTime) + phase));
78 end Sine;
79 end Sources;
80
81 package Icons
82 extends Modelica.Icons.IconsPackage;
83
84 partial block Block end Block;
85 end Icons;
86 end Blocks;
87
88 package Electrical
89 extends Modelica.Icons.Package;
90
91 package Analog
92 extends Modelica.Icons.Package;
93
94 package Basic
95 extends Modelica.Icons.Package;
96
97 model Ground
98 Interfaces.Pin p;
99 equation
100 p.v = 0;
101 end Ground;
102
103 model Resistor
104 parameter Modelica.SIunits.Resistance R(start = 1);
105 parameter Modelica.SIunits.Temperature T_ref = 300.15;
106 parameter Modelica.SIunits.LinearTemperatureCoefficient alpha = 0;
107 extends Modelica.Electrical.Analog.Interfaces.OnePort;
108 extends Modelica.Electrical.Analog.Interfaces.ConditionalHeatPort(T = T_ref);
109 Modelica.SIunits.Resistance R_actual;
110 equation
111 assert(1 + alpha * (T_heatPort - T_ref) >= Modelica.Constants.eps, "Temperature outside scope of model!");
112 R_actual = R * (1 + alpha * (T_heatPort - T_ref));
113 v = R_actual * i;
114 LossPower = v * i;
115 end Resistor;
116
117 model Inductor
118 extends Interfaces.OnePort(i(start = 0));
119 parameter .Modelica.SIunits.Inductance L(start = 1);
120 equation
121 L * der(i) = v;
122 end Inductor;
123 end Basic;
124
125 package Interfaces
126 extends Modelica.Icons.InterfacesPackage;
127
128 connector Pin
129 Modelica.SIunits.Voltage v;
130 flow Modelica.SIunits.Current i;
131 end Pin;
132
133 connector PositivePin
134 Modelica.SIunits.Voltage v;
135 flow Modelica.SIunits.Current i;
136 end PositivePin;
137
138 connector NegativePin
139 Modelica.SIunits.Voltage v;
140 flow Modelica.SIunits.Current i;
141 end NegativePin;
142
143 partial model OnePort
144 .Modelica.SIunits.Voltage v;
145 .Modelica.SIunits.Current i;
146 PositivePin p;
147 NegativePin n;
148 equation
149 v = p.v - n.v;
150 0 = p.i + n.i;
151 i = p.i;
152 end OnePort;
153
154 partial model ConditionalHeatPort
155 parameter Boolean useHeatPort = false;
156 parameter Modelica.SIunits.Temperature T = 293.15;
157 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPort(T(start = T) = T_heatPort, Q_flow = -LossPower) if useHeatPort;
158 Modelica.SIunits.Power LossPower;
159 Modelica.SIunits.Temperature T_heatPort;
160 equation
161 if not useHeatPort then
162 T_heatPort = T;
163 end if;
164 end ConditionalHeatPort;
165
166 partial model VoltageSource
167 extends OnePort;
168 parameter .Modelica.SIunits.Voltage offset = 0;
169 parameter .Modelica.SIunits.Time startTime = 0;
170 replaceable Modelica.Blocks.Interfaces.SignalSource signalSource(final offset = offset, final startTime = startTime);
171 equation
172 v = signalSource.y;
173 end VoltageSource;
174 end Interfaces;
175
176 package Sources
177 extends Modelica.Icons.SourcesPackage;
178
179 model SineVoltage
180 parameter .Modelica.SIunits.Voltage V(start = 1);
181 parameter .Modelica.SIunits.Angle phase = 0;
182 parameter .Modelica.SIunits.Frequency freqHz(start = 1);
183 extends Interfaces.VoltageSource(redeclare Modelica.Blocks.Sources.Sine signalSource(amplitude = V, freqHz = freqHz, phase = phase));
184 end SineVoltage;
185 end Sources;
186 end Analog;
187
188 package Machines
189 extends Modelica.Icons.Package;
190
191 package BasicMachines
192 extends Modelica.Icons.Package;
193
194 package AsynchronousInductionMachines
195 extends Modelica.Icons.VariantsPackage;
196
197 model AIM_SquirrelCage
198 extends Machines.Interfaces.PartialBasicInductionMachine(final idq_ss = airGapS.i_ss, final idq_sr = airGapS.i_sr, final idq_rs = airGapS.i_rs, final idq_rr = airGapS.i_rr, redeclare final Machines.Thermal.AsynchronousInductionMachines.ThermalAmbientAIMC thermalAmbient(final Tr = TrOperational), redeclare final Machines.Interfaces.InductionMachines.ThermalPortAIMC thermalPort, redeclare final Machines.Interfaces.InductionMachines.ThermalPortAIMC internalThermalPort, redeclare final Machines.Interfaces.InductionMachines.PowerBalanceAIMC powerBalance(final lossPowerRotorWinding = squirrelCageR.LossPower, final lossPowerRotorCore = 0), statorCore(final w = statorCoreParameters.wRef));
199 output Modelica.SIunits.Current[2] ir = -squirrelCageR.spacePhasor_r.i_;
200 Machines.BasicMachines.Components.AirGapS airGapS(final p = p, final Lm = Lm, final m = m);
201 parameter Modelica.SIunits.Inductance Lm(start = 3 * sqrt(1 - 0.0667) / (2 * pi * fsNominal));
202 parameter Modelica.SIunits.Inductance Lrsigma(start = 3 * (1 - sqrt(1 - 0.0667)) / (2 * pi * fsNominal));
203 parameter Modelica.SIunits.Resistance Rr(start = 0.04);
204 parameter Modelica.SIunits.Temperature TrRef(start = 293.15);
205 parameter Machines.Thermal.LinearTemperatureCoefficient20 alpha20r(start = 0);
206 parameter Modelica.SIunits.Temperature TrOperational(start = 293.15);
207 Machines.BasicMachines.Components.SquirrelCage squirrelCageR(final Lrsigma = Lrsigma, final Rr = Rr, final useHeatPort = true, final T_ref = TrRef, final T = TrRef, final alpha = Machines.Thermal.convertAlpha(alpha20r, TrRef));
208 equation
209 connect(airGapS.spacePhasor_r, squirrelCageR.spacePhasor_r);
210 connect(airGapS.flange, inertiaRotor.flange_a);
211 connect(lssigma.spacePhasor_b, airGapS.spacePhasor_s);
212 connect(squirrelCageR.heatPort, internalThermalPort.heatPortRotorWinding);
213 connect(airGapS.support, internalSupport);
214 end AIM_SquirrelCage;
215 end AsynchronousInductionMachines;
216
217 package Components
218 extends Modelica.Icons.Package;
219
220 partial model PartialAirGap
221 parameter Integer m = 3;
222 parameter Integer p(min = 1);
223 output Modelica.SIunits.Torque tauElectrical;
224 Modelica.SIunits.Angle gamma;
225 Modelica.SIunits.Current[2] i_ss;
226 Modelica.SIunits.Current[2] i_sr;
227 Modelica.SIunits.Current[2] i_rs;
228 Modelica.SIunits.Current[2] i_rr;
229 Modelica.SIunits.MagneticFlux[2] psi_ms;
230 Modelica.SIunits.MagneticFlux[2] psi_mr;
231 Real[2, 2] RotationMatrix;
232 Modelica.Mechanics.Rotational.Interfaces.Flange_a flange;
233 Modelica.Mechanics.Rotational.Interfaces.Flange_a support;
234 Machines.Interfaces.SpacePhasor spacePhasor_s;
235 Machines.Interfaces.SpacePhasor spacePhasor_r;
236 equation
237 gamma = p * (flange.phi - support.phi);
238 RotationMatrix = {{+cos(gamma), -sin(gamma)}, {+sin(gamma), +cos(gamma)}};
239 i_ss = spacePhasor_s.i_;
240 i_ss = RotationMatrix * i_sr;
241 i_rr = spacePhasor_r.i_;
242 i_rs = RotationMatrix * i_rr;
243 spacePhasor_s.v_ = der(psi_ms);
244 spacePhasor_r.v_ = der(psi_mr);
245 tauElectrical = m / 2 * p * (spacePhasor_s.i_[2] * psi_ms[1] - spacePhasor_s.i_[1] * psi_ms[2]);
246 flange.tau = -tauElectrical;
247 support.tau = tauElectrical;
248 end PartialAirGap;
249
250 model AirGapS
251 parameter Modelica.SIunits.Inductance Lm;
252 extends PartialAirGap;
253 Modelica.SIunits.Current[2] i_ms;
254 protected
255 parameter Modelica.SIunits.Inductance[2, 2] L = {{Lm, 0}, {0, Lm}};
256 equation
257 i_ms = i_ss + i_rs;
258 psi_ms = L * i_ms;
259 psi_mr = transpose(RotationMatrix) * psi_ms;
260 end AirGapS;
261
262 model Inductor
263 parameter Modelica.SIunits.Inductance[2] L;
264 Modelica.SIunits.Voltage[2] v_;
265 Modelica.SIunits.Current[2] i_;
266 Machines.Interfaces.SpacePhasor spacePhasor_a;
267 Machines.Interfaces.SpacePhasor spacePhasor_b;
268 equation
269 spacePhasor_a.i_ + spacePhasor_b.i_ = zeros(2);
270 v_ = spacePhasor_a.v_ - spacePhasor_b.v_;
271 i_ = spacePhasor_a.i_;
272 v_[1] = L[1] * der(i_[1]);
273 v_[2] = L[2] * der(i_[2]);
274 end Inductor;
275
276 model SquirrelCage
277 parameter Modelica.SIunits.Inductance Lrsigma;
278 parameter Modelica.SIunits.Resistance Rr;
279 parameter Modelica.SIunits.Temperature T_ref = 293.15;
280 parameter Modelica.SIunits.LinearTemperatureCoefficient alpha = 0;
281 extends Modelica.Electrical.Analog.Interfaces.ConditionalHeatPort(T = T_ref);
282 Modelica.SIunits.Resistance Rr_actual;
283 Machines.Interfaces.SpacePhasor spacePhasor_r;
284 equation
285 assert(1 + alpha * (T_heatPort - T_ref) >= Modelica.Constants.eps, "Temperature outside scope of model!");
286 Rr_actual = Rr * (1 + alpha * (T_heatPort - T_ref));
287 spacePhasor_r.v_ = Rr_actual * spacePhasor_r.i_ + Lrsigma * der(spacePhasor_r.i_);
288 2 / 3 * LossPower = Rr_actual * (spacePhasor_r.i_[1] * spacePhasor_r.i_[1] + spacePhasor_r.i_[2] * spacePhasor_r.i_[2]);
289 end SquirrelCage;
290 end Components;
291 end BasicMachines;
292
293 package SpacePhasors
294 extends Modelica.Icons.Package;
295
296 package Components
297 extends Modelica.Icons.Package;
298
299 model SpacePhasor
300 constant Integer m = 3;
301 constant Real pi = Modelica.Constants.pi;
302 parameter Real turnsRatio = 1;
303 Modelica.SIunits.Voltage[m] v;
304 Modelica.SIunits.Current[m] i;
305 protected
306 parameter Real[2, m] TransformationMatrix = 2 / m * {array(cos(+(k - 1) / m * 2 * pi) for k in 1:m), array(+sin(+(k - 1) / m * 2 * pi) for k in 1:m)};
307 parameter Real[m, 2] InverseTransformation = array({cos(-(k - 1) / m * 2 * pi), -sin(-(k - 1) / m * 2 * pi)} for k in 1:m);
308 public
309 Modelica.Electrical.MultiPhase.Interfaces.PositivePlug plug_p(final m = m);
310 Modelica.Electrical.MultiPhase.Interfaces.NegativePlug plug_n(final m = m);
311 Modelica.Electrical.Analog.Interfaces.PositivePin zero;
312 Modelica.Electrical.Analog.Interfaces.NegativePin ground;
313 Machines.Interfaces.SpacePhasor spacePhasor;
314 equation
315 v / turnsRatio = plug_p.pin.v - plug_n.pin.v;
316 i * turnsRatio = +plug_p.pin.i;
317 i * turnsRatio = -plug_n.pin.i;
318 m * zero.v = sum(v);
319 spacePhasor.v_ = TransformationMatrix * v;
320 -m * zero.i = sum(i);
321 -spacePhasor.i_ = TransformationMatrix * i;
322 ground.v = 0;
323 end SpacePhasor;
324 end Components;
325
326 package Functions
327 extends Modelica.Icons.Package;
328
329 function activePower
330 extends Modelica.Icons.Function;
331 input Modelica.SIunits.Voltage[m] v;
332 input Modelica.SIunits.Current[m] i;
333 output Modelica.SIunits.Power p;
334 protected
335 constant Integer m = 3;
336 constant Modelica.SIunits.Angle pi = Modelica.Constants.pi;
337 Modelica.SIunits.Voltage[2] v_;
338 Modelica.SIunits.Current[2] i_;
339 algorithm
340 v_ := zeros(2);
341 i_ := zeros(2);
342 for k in 1:m loop
343 v_ := v_ + 2 / m * {+cos((k - 1) / m * 2 * pi), +sin(+(k - 1) / m * 2 * pi)} * v[k];
344 i_ := i_ + 2 / m * {+cos((k - 1) / m * 2 * pi), +sin(+(k - 1) / m * 2 * pi)} * i[k];
345 end for;
346 p := m / 2 * (+v_[1] * i_[1] + v_[2] * i_[2]);
347 end activePower;
348 end Functions;
349 end SpacePhasors;
350
351 package Losses
352 extends Modelica.Icons.Package;
353
354 record FrictionParameters
355 extends Modelica.Icons.Record;
356 parameter Modelica.SIunits.Power PRef(min = 0) = 0;
357 parameter Modelica.SIunits.AngularVelocity wRef(displayUnit = "1/min", min = Modelica.Constants.small);
358 parameter Real power_w(min = Modelica.Constants.small) = 2;
359 final parameter Modelica.SIunits.Torque tauRef = if PRef <= 0 then 0 else PRef / wRef;
360 final parameter Real linear = 0.001;
361 final parameter Modelica.SIunits.AngularVelocity wLinear = linear * wRef;
362 final parameter Modelica.SIunits.Torque tauLinear = if PRef <= 0 then 0 else tauRef * (wLinear / wRef) ^ power_w;
363 end FrictionParameters;
364
365 record StrayLoadParameters
366 extends Modelica.Icons.Record;
367 parameter Modelica.SIunits.Power PRef(min = 0) = 0;
368 parameter Modelica.SIunits.Current IRef(min = Modelica.Constants.small);
369 parameter Modelica.SIunits.AngularVelocity wRef(displayUnit = "1/min", min = Modelica.Constants.small);
370 parameter Real power_w(min = Modelica.Constants.small) = 1;
371 final parameter Modelica.SIunits.Torque tauRef = if PRef <= 0 then 0 else PRef / wRef;
372 end StrayLoadParameters;
373
374 record CoreParameters
375 extends Modelica.Icons.Record;
376 parameter Integer m;
377 parameter Modelica.SIunits.Power PRef(min = 0) = 0;
378 parameter Modelica.SIunits.Voltage VRef(min = Modelica.Constants.small);
379 parameter Modelica.SIunits.AngularVelocity wRef(min = Modelica.Constants.small);
380 final parameter Real ratioHysteresis(min = 0, max = 1, start = 0.775) = 0;
381 final parameter Modelica.SIunits.Conductance GcRef = if PRef <= 0 then 0 else PRef / VRef ^ 2 / m;
382 final parameter Modelica.SIunits.AngularVelocity wMin = 0.000001 * wRef;
383 end CoreParameters;
384
385 model Friction
386 extends Machines.Interfaces.FlangeSupport;
387 parameter FrictionParameters frictionParameters;
388 extends Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT(useHeatPort = false);
389 equation
390 if frictionParameters.PRef <= 0 then
391 tau = 0;
392 else
393 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);
394 end if;
395 lossPower = -tau * w;
396 end Friction;
397
398 package InductionMachines
399 extends Modelica.Icons.VariantsPackage;
400
401 model StrayLoad
402 extends Modelica.Electrical.MultiPhase.Interfaces.OnePort;
403 extends Machines.Interfaces.FlangeSupport;
404 parameter Machines.Losses.StrayLoadParameters strayLoadParameters;
405 extends Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT(useHeatPort = false);
406 Modelica.SIunits.Current iRMS = .Modelica.Electrical.MultiPhase.Functions.quasiRMS(i);
407 equation
408 v = zeros(m);
409 if strayLoadParameters.PRef <= 0 then
410 tau = 0;
411 else
412 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);
413 end if;
414 lossPower = -tau * w;
415 end StrayLoad;
416
417 model Core
418 parameter Machines.Losses.CoreParameters coreParameters(final m = m);
419 final parameter Integer m = 3;
420 parameter Real turnsRatio(final min = Modelica.Constants.small);
421 extends Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT(useHeatPort = false);
422 Machines.Interfaces.SpacePhasor spacePhasor;
423 input Modelica.SIunits.AngularVelocity w;
424 Modelica.SIunits.Conductance Gc;
425 protected
426 Modelica.SIunits.AngularVelocity wLimit = noEvent(max(noEvent(abs(w)), coreParameters.wMin));
427 equation
428 if coreParameters.PRef <= 0 then
429 Gc = 0;
430 spacePhasor.i_ = zeros(2);
431 else
432 Gc = coreParameters.GcRef;
433 spacePhasor.i_ = Gc * spacePhasor.v_;
434 end if;
435 lossPower = 3 / 2 * (+spacePhasor.v_[1] * spacePhasor.i_[1] + spacePhasor.v_[2] * spacePhasor.i_[2]);
436 end Core;
437 end InductionMachines;
438 end Losses;
439
440 package Thermal
441 extends Modelica.Icons.Package;
442 type LinearTemperatureCoefficient20 = Modelica.SIunits.LinearTemperatureCoefficient;
443
444 function convertAlpha
445 extends Modelica.Icons.Function;
446 input Modelica.SIunits.LinearTemperatureCoefficient alpha1;
447 input Modelica.SIunits.Temperature T2;
448 input Modelica.SIunits.Temperature T1 = 293.15;
449 output Modelica.SIunits.LinearTemperatureCoefficient alpha2;
450 algorithm
451 alpha2 := alpha1 / (1 + alpha1 * (T2 - T1));
452 end convertAlpha;
453
454 package AsynchronousInductionMachines
455 extends Modelica.Icons.VariantsPackage;
456
457 model ThermalAmbientAIMC
458 extends Machines.Interfaces.InductionMachines.PartialThermalAmbientInductionMachines(redeclare final Machines.Interfaces.InductionMachines.ThermalPortAIMC thermalPort);
459 parameter Modelica.SIunits.Temperature Tr(start = TDefault);
460 output Modelica.SIunits.HeatFlowRate Q_flowRotorWinding = temperatureRotorWinding.port.Q_flow;
461 output Modelica.SIunits.HeatFlowRate Q_flowTotal = Q_flowStatorWinding + Q_flowRotorWinding + Q_flowStatorCore + Q_flowRotorCore + Q_flowStrayLoad + Q_flowFriction;
462 Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature temperatureRotorWinding;
463 Modelica.Blocks.Interfaces.RealInput TRotorWinding if useTemperatureInputs;
464 Modelica.Blocks.Sources.Constant constTr(final k = Tr) if not useTemperatureInputs;
465 equation
466 connect(constTr.y, temperatureRotorWinding.T);
467 connect(temperatureRotorWinding.port, thermalPort.heatPortRotorWinding);
468 connect(TRotorWinding, temperatureRotorWinding.T);
469 end ThermalAmbientAIMC;
470 end AsynchronousInductionMachines;
471 end Thermal;
472
473 package Interfaces
474 extends Modelica.Icons.InterfacesPackage;
475
476 connector SpacePhasor
477 Modelica.SIunits.Voltage[2] v_;
478 flow Modelica.SIunits.Current[2] i_;
479 end SpacePhasor;
480
481 partial model PartialBasicMachine
482 extends Machines.Icons.TransientMachine;
483 constant Modelica.SIunits.Angle pi = Modelica.Constants.pi;
484 parameter Modelica.SIunits.Inertia Jr;
485 parameter Boolean useSupport = false;
486 parameter Modelica.SIunits.Inertia Js(start = Jr);
487 parameter Boolean useThermalPort = false;
488 parameter Machines.Losses.FrictionParameters frictionParameters;
489 output Modelica.SIunits.Angle phiMechanical(start = 0) = flange.phi - internalSupport.phi;
490 output Modelica.SIunits.AngularVelocity wMechanical(displayUnit = "1/min", start = 0) = der(phiMechanical);
491 output Modelica.SIunits.Torque tauElectrical = inertiaRotor.flange_a.tau;
492 output Modelica.SIunits.Torque tauShaft = -flange.tau;
493 Modelica.Mechanics.Rotational.Interfaces.Flange_a flange;
494 Modelica.Mechanics.Rotational.Components.Inertia inertiaRotor(final J = Jr);
495 Modelica.Mechanics.Rotational.Interfaces.Flange_a support if useSupport;
496 Modelica.Mechanics.Rotational.Components.Inertia inertiaStator(final J = Js);
497 Modelica.Mechanics.Rotational.Components.Fixed fixed if not useSupport;
498 Machines.Losses.Friction friction(final frictionParameters = frictionParameters);
499 protected
500 Modelica.Mechanics.Rotational.Interfaces.Support internalSupport;
501 equation
502 connect(inertiaRotor.flange_b, flange);
503 connect(inertiaStator.flange_b, support);
504 connect(internalSupport, fixed.flange);
505 connect(internalSupport, inertiaStator.flange_a);
506 connect(inertiaRotor.flange_b, friction.flange);
507 connect(friction.support, internalSupport);
508 end PartialBasicMachine;
509
510 partial model PartialBasicInductionMachine
511 final parameter Integer m = 3;
512 parameter Integer p(min = 1, start = 2);
513 parameter Modelica.SIunits.Frequency fsNominal(start = 50);
514 parameter Modelica.SIunits.Temperature TsOperational(start = 293.15);
515 parameter Modelica.SIunits.Resistance Rs(start = 0.03);
516 parameter Modelica.SIunits.Temperature TsRef(start = 293.15);
517 parameter Machines.Thermal.LinearTemperatureCoefficient20 alpha20s(start = 0);
518 parameter Modelica.SIunits.Inductance Lszero = Lssigma;
519 parameter Modelica.SIunits.Inductance Lssigma(start = 3 * (1 - sqrt(1 - 0.0667)) / (2 * pi * fsNominal));
520 extends PartialBasicMachine(Jr(start = 0.29), frictionParameters(wRef = 2 * pi * fsNominal / p), friction(final useHeatPort = true));
521 parameter Machines.Losses.CoreParameters statorCoreParameters(final m = 3, VRef(start = 100), wRef = 2 * pi * fsNominal);
522 parameter Machines.Losses.StrayLoadParameters strayLoadParameters(IRef(start = 100), wRef = 2 * pi * fsNominal / p);
523 replaceable output Machines.Interfaces.InductionMachines.PartialPowerBalanceInductionMachines powerBalance(final powerStator = Machines.SpacePhasors.Functions.activePower(vs, is), final powerMechanical = wMechanical * tauShaft, final powerInertiaStator = inertiaStator.J * inertiaStator.a * inertiaStator.w, final powerInertiaRotor = inertiaRotor.J * inertiaRotor.a * inertiaRotor.w, final lossPowerStatorWinding = sum(rs.resistor.LossPower), final lossPowerStatorCore = statorCore.lossPower, final lossPowerStrayLoad = strayLoad.lossPower, final lossPowerFriction = friction.lossPower);
524 output Modelica.SIunits.Voltage[m] vs = plug_sp.pin.v - plug_sn.pin.v;
525 output Modelica.SIunits.Current[m] is = plug_sp.pin.i;
526 output Modelica.SIunits.Current i_0_s(stateSelect = StateSelect.prefer) = spacePhasorS.zero.i;
527 input Modelica.SIunits.Current[2] idq_ss;
528 input Modelica.SIunits.Current[2] idq_sr(each stateSelect = StateSelect.prefer);
529 input Modelica.SIunits.Current[2] idq_rs;
530 input Modelica.SIunits.Current[2] idq_rr(each stateSelect = StateSelect.prefer);
531 Modelica.Electrical.MultiPhase.Interfaces.PositivePlug plug_sp(final m = m);
532 Modelica.Electrical.MultiPhase.Interfaces.NegativePlug plug_sn(final m = m);
533 Modelica.Electrical.MultiPhase.Basic.Resistor rs(final m = m, final R = fill(Rs, m), final T_ref = fill(TsRef, m), final alpha = fill(Machines.Thermal.convertAlpha(alpha20s, TsRef), m), final useHeatPort = true, final T = fill(TsRef, m));
534 Machines.BasicMachines.Components.Inductor lssigma(final L = fill(Lssigma, 2));
535 Modelica.Electrical.Analog.Basic.Inductor lszero(final L = Lszero);
536 Machines.Losses.InductionMachines.Core statorCore(final coreParameters = statorCoreParameters, final useHeatPort = true, final turnsRatio = 1);
537 Machines.SpacePhasors.Components.SpacePhasor spacePhasorS(final turnsRatio = 1);
538 Machines.Losses.InductionMachines.StrayLoad strayLoad(final strayLoadParameters = strayLoadParameters, final useHeatPort = true, final m = m);
539 replaceable Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines thermalPort(final m = m) if useThermalPort;
540 replaceable Machines.Interfaces.InductionMachines.PartialThermalAmbientInductionMachines thermalAmbient(final useTemperatureInputs = false, final Ts = TsOperational, final m = m) if not useThermalPort;
541 protected
542 replaceable Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines internalThermalPort(final m = m);
543 equation
544 connect(spacePhasorS.plug_n, plug_sn);
545 connect(thermalPort, internalThermalPort);
546 connect(thermalAmbient.thermalPort, internalThermalPort);
547 connect(strayLoad.plug_n, rs.plug_p);
548 connect(strayLoad.plug_p, plug_sp);
549 connect(strayLoad.support, internalSupport);
550 connect(spacePhasorS.plug_p, rs.plug_n);
551 connect(spacePhasorS.zero, lszero.p);
552 connect(lszero.n, spacePhasorS.ground);
553 connect(spacePhasorS.spacePhasor, lssigma.spacePhasor_a);
554 connect(statorCore.spacePhasor, lssigma.spacePhasor_a);
555 connect(statorCore.heatPort, internalThermalPort.heatPortStatorCore);
556 connect(strayLoad.heatPort, internalThermalPort.heatPortStrayLoad);
557 connect(rs.heatPort, internalThermalPort.heatPortStatorWinding);
558 connect(friction.heatPort, internalThermalPort.heatPortFriction);
559 connect(strayLoad.flange, inertiaRotor.flange_b);
560 end PartialBasicInductionMachine;
561
562 package InductionMachines
563 extends Modelica.Icons.VariantsPackage;
564
565 connector PartialThermalPortInductionMachines
566 parameter Integer m = 3;
567 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a[m] heatPortStatorWinding;
568 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortStatorCore;
569 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortRotorCore;
570 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortStrayLoad;
571 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortFriction;
572 end PartialThermalPortInductionMachines;
573
574 model PartialThermalAmbientInductionMachines
575 parameter Integer m = 3;
576 parameter Boolean useTemperatureInputs = false;
577 constant Modelica.SIunits.Temperature TDefault = 293.15;
578 parameter Modelica.SIunits.Temperature Ts(start = TDefault);
579 output Modelica.SIunits.HeatFlowRate Q_flowStatorWinding = temperatureStatorWinding.port.Q_flow;
580 output Modelica.SIunits.HeatFlowRate Q_flowStatorCore = temperatureStatorCore.port.Q_flow;
581 output Modelica.SIunits.HeatFlowRate Q_flowRotorCore = temperatureRotorCore.port.Q_flow;
582 output Modelica.SIunits.HeatFlowRate Q_flowStrayLoad = temperatureStrayLoad.port.Q_flow;
583 output Modelica.SIunits.HeatFlowRate Q_flowFriction = temperatureFriction.port.Q_flow;
584 replaceable Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines thermalPort(final m = m);
585 Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature temperatureStatorWinding;
586 Modelica.Thermal.HeatTransfer.Sources.FixedTemperature temperatureStatorCore(final T = TDefault);
587 Modelica.Thermal.HeatTransfer.Sources.FixedTemperature temperatureRotorCore(final T = TDefault);
588 Modelica.Thermal.HeatTransfer.Sources.FixedTemperature temperatureStrayLoad(final T = TDefault);
589 Modelica.Thermal.HeatTransfer.Sources.FixedTemperature temperatureFriction(final T = TDefault);
590 Modelica.Blocks.Interfaces.RealInput TStatorWinding if useTemperatureInputs;
591 Modelica.Blocks.Sources.Constant constTs(final k = Ts) if not useTemperatureInputs;
592 Modelica.Thermal.HeatTransfer.Components.ThermalCollector thermalCollectorStator(final m = m);
593 equation
594 connect(constTs.y, temperatureStatorWinding.T);
595 connect(TStatorWinding, temperatureStatorWinding.T);
596 connect(temperatureStrayLoad.port, thermalPort.heatPortStrayLoad);
597 connect(temperatureFriction.port, thermalPort.heatPortFriction);
598 connect(thermalCollectorStator.port_b, temperatureStatorWinding.port);
599 connect(thermalCollectorStator.port_a, thermalPort.heatPortStatorWinding);
600 connect(temperatureStatorCore.port, thermalPort.heatPortStatorCore);
601 connect(temperatureRotorCore.port, thermalPort.heatPortRotorCore);
602 end PartialThermalAmbientInductionMachines;
603
604 record PartialPowerBalanceInductionMachines
605 extends Modelica.Icons.Record;
606 Modelica.SIunits.Power powerStator = 0;
607 Modelica.SIunits.Power powerMechanical = 0;
608 Modelica.SIunits.Power powerInertiaStator = 0;
609 Modelica.SIunits.Power powerInertiaRotor = 0;
610 Modelica.SIunits.Power lossPowerTotal = 0;
611 Modelica.SIunits.Power lossPowerStatorWinding = 0;
612 Modelica.SIunits.Power lossPowerStatorCore = 0;
613 Modelica.SIunits.Power lossPowerRotorCore = 0;
614 Modelica.SIunits.Power lossPowerStrayLoad = 0;
615 Modelica.SIunits.Power lossPowerFriction = 0;
616 end PartialPowerBalanceInductionMachines;
617
618 connector ThermalPortAIMC
619 extends Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines;
620 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortRotorWinding;
621 end ThermalPortAIMC;
622
623 record PowerBalanceAIMC
624 extends Machines.Interfaces.InductionMachines.PartialPowerBalanceInductionMachines(final lossPowerTotal = lossPowerStatorWinding + lossPowerStatorCore + lossPowerRotorCore + lossPowerStrayLoad + lossPowerFriction + lossPowerRotorWinding);
625 Modelica.SIunits.Power lossPowerRotorWinding;
626 end PowerBalanceAIMC;
627 end InductionMachines;
628
629 partial model FlangeSupport
630 Modelica.Mechanics.Rotational.Interfaces.Flange_a flange;
631 Modelica.Mechanics.Rotational.Interfaces.Flange_a support;
632 Modelica.SIunits.Angle phi;
633 Modelica.SIunits.Torque tau;
634 Modelica.SIunits.AngularVelocity w;
635 equation
636 phi = flange.phi - support.phi;
637 w = der(phi);
638 tau = -flange.tau;
639 tau = support.tau;
640 end FlangeSupport;
641 end Interfaces;
642
643 package Icons
644 extends Modelica.Icons.IconsPackage;
645
646 partial model TransientMachine end TransientMachine;
647 end Icons;
648
649 package Utilities
650 extends Modelica.Icons.UtilitiesPackage;
651
652 model TerminalBox
653 parameter Integer m = 3;
654 parameter String terminalConnection(start = "Y");
655 Modelica.Electrical.MultiPhase.Interfaces.PositivePlug plug_sp(final m = m);
656 Modelica.Electrical.MultiPhase.Interfaces.NegativePlug plug_sn(final m = m);
657 Modelica.Electrical.MultiPhase.Basic.Star star(final m = m) if terminalConnection <> "D";
658 Modelica.Electrical.MultiPhase.Basic.Delta delta(final m = m) if terminalConnection == "D";
659 Modelica.Electrical.MultiPhase.Interfaces.PositivePlug plugSupply(final m = m);
660 Modelica.Electrical.Analog.Interfaces.NegativePin starpoint if terminalConnection <> "D";
661 equation
662 connect(plug_sn, star.plug_p);
663 connect(plug_sn, delta.plug_n);
664 connect(delta.plug_p, plug_sp);
665 connect(plug_sp, plugSupply);
666 connect(star.pin_n, starpoint);
667 end TerminalBox;
668 end Utilities;
669 end Machines;
670
671 package MultiPhase
672 extends Modelica.Icons.Package;
673
674 package Basic
675 extends Modelica.Icons.Package;
676
677 model Star
678 parameter Integer m(final min = 1) = 3;
679 Interfaces.PositivePlug plug_p(final m = m);
680 Modelica.Electrical.Analog.Interfaces.NegativePin pin_n;
681 equation
682 for j in 1:m loop
683 plug_p.pin[j].v = pin_n.v;
684 end for;
685 sum(plug_p.pin.i) + pin_n.i = 0;
686 end Star;
687
688 model Delta
689 parameter Integer m(final min = 2) = 3;
690 Interfaces.PositivePlug plug_p(final m = m);
691 Interfaces.NegativePlug plug_n(final m = m);
692 equation
693 for j in 1:m loop
694 if j < m then
695 plug_n.pin[j].v = plug_p.pin[j + 1].v;
696 plug_n.pin[j].i + plug_p.pin[j + 1].i = 0;
697 else
698 plug_n.pin[j].v = plug_p.pin[1].v;
699 plug_n.pin[j].i + plug_p.pin[1].i = 0;
700 end if;
701 end for;
702 end Delta;
703
704 model Resistor
705 extends Interfaces.TwoPlug;
706 parameter Modelica.SIunits.Resistance[m] R(start = fill(1, m));
707 parameter Modelica.SIunits.Temperature[m] T_ref = fill(300.15, m);
708 parameter Modelica.SIunits.LinearTemperatureCoefficient[m] alpha = zeros(m);
709 extends Modelica.Electrical.MultiPhase.Interfaces.ConditionalHeatPort(final mh = m, T = T_ref);
710 Modelica.Electrical.Analog.Basic.Resistor[m] resistor(final R = R, final T_ref = T_ref, final alpha = alpha, each final useHeatPort = useHeatPort, final T = T);
711 equation
712 connect(resistor.p, plug_p.pin);
713 connect(resistor.n, plug_n.pin);
714 connect(resistor.heatPort, heatPort);
715 end Resistor;
716 end Basic;
717
718 package Functions
719 extends Modelica.Icons.Package;
720
721 function quasiRMS
722 extends Modelica.Icons.Function;
723 input Real[:] x;
724 output Real y;
725 algorithm
726 y := sqrt(sum(x .^ 2 / size(x, 1)));
727 end quasiRMS;
728
729 function symmetricOrientation
730 extends Modelica.Icons.Function;
731 input Integer m;
732 output Modelica.SIunits.Angle[m] orientation;
733 algorithm
734 if mod(m, 2) == 0 then
735 if m == 2 then
736 orientation[1] := 0;
737 orientation[2] := +.Modelica.Constants.pi / 2;
738 else
739 orientation[1:integer(m / 2)] := symmetricOrientation(integer(m / 2));
740 orientation[integer(m / 2) + 1:m] := symmetricOrientation(integer(m / 2)) - fill(.Modelica.Constants.pi / m, integer(m / 2));
741 end if;
742 else
743 orientation := array((k - 1) * 2 * .Modelica.Constants.pi / m for k in 1:m);
744 end if;
745 end symmetricOrientation;
746 end Functions;
747
748 package Sources
749 extends Modelica.Icons.SourcesPackage;
750
751 model SineVoltage
752 extends Interfaces.TwoPlug;
753 parameter Modelica.SIunits.Voltage[m] V(start = fill(1, m));
754 parameter Modelica.SIunits.Angle[m] phase = -Modelica.Electrical.MultiPhase.Functions.symmetricOrientation(m);
755 parameter Modelica.SIunits.Frequency[m] freqHz(start = fill(1, m));
756 parameter Modelica.SIunits.Voltage[m] offset = zeros(m);
757 parameter Modelica.SIunits.Time[m] startTime = zeros(m);
758 Modelica.Electrical.Analog.Sources.SineVoltage[m] sineVoltage(final V = V, final phase = phase, final freqHz = freqHz, final offset = offset, final startTime = startTime);
759 equation
760 connect(sineVoltage.p, plug_p.pin);
761 connect(sineVoltage.n, plug_n.pin);
762 end SineVoltage;
763 end Sources;
764
765 package Interfaces
766 extends Modelica.Icons.InterfacesPackage;
767
768 connector Plug
769 parameter Integer m(final min = 1) = 3;
770 Modelica.Electrical.Analog.Interfaces.Pin[m] pin;
771 end Plug;
772
773 connector PositivePlug
774 extends Plug;
775 end PositivePlug;
776
777 connector NegativePlug
778 extends Plug;
779 end NegativePlug;
780
781 partial model ConditionalHeatPort
782 parameter Integer mh(min = 1) = 3;
783 parameter Boolean useHeatPort = false;
784 parameter Modelica.SIunits.Temperature[mh] T = fill(293.15, mh);
785 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a[mh] heatPort if useHeatPort;
786 end ConditionalHeatPort;
787
788 partial model TwoPlug
789 parameter Integer m(min = 1) = 3;
790 Modelica.SIunits.Voltage[m] v;
791 Modelica.SIunits.Current[m] i;
792 PositivePlug plug_p(final m = m);
793 NegativePlug plug_n(final m = m);
794 equation
795 v = plug_p.pin.v - plug_n.pin.v;
796 i = plug_p.pin.i;
797 end TwoPlug;
798
799 partial model OnePort
800 extends TwoPlug;
801 equation
802 plug_p.pin.i + plug_n.pin.i = zeros(m);
803 end OnePort;
804 end Interfaces;
805 end MultiPhase;
806 end Electrical;
807
808 package Mechanics
809 extends Modelica.Icons.Package;
810
811 package Rotational
812 extends Modelica.Icons.Package;
813
814 package Components
815 extends Modelica.Icons.Package;
816
817 model Fixed
818 parameter .Modelica.SIunits.Angle phi0 = 0;
819 Interfaces.Flange_b flange;
820 equation
821 flange.phi = phi0;
822 end Fixed;
823
824 model Inertia
825 Rotational.Interfaces.Flange_a flange_a;
826 Rotational.Interfaces.Flange_b flange_b;
827 parameter .Modelica.SIunits.Inertia J(min = 0, start = 1);
828 parameter StateSelect stateSelect = StateSelect.default;
829 .Modelica.SIunits.Angle phi(stateSelect = stateSelect);
830 .Modelica.SIunits.AngularVelocity w(stateSelect = stateSelect);
831 .Modelica.SIunits.AngularAcceleration a;
832 equation
833 phi = flange_a.phi;
834 phi = flange_b.phi;
835 w = der(phi);
836 a = der(w);
837 J * a = flange_a.tau + flange_b.tau;
838 end Inertia;
839 end Components;
840
841 package Sensors
842 extends Modelica.Icons.SensorsPackage;
843
844 model SpeedSensor
845 extends Rotational.Interfaces.PartialAbsoluteSensor;
846 Modelica.Blocks.Interfaces.RealOutput w(unit = "rad/s");
847 equation
848 w = der(flange.phi);
849 end SpeedSensor;
850 end Sensors;
851
852 package Sources
853 extends Modelica.Icons.SourcesPackage;
854
855 model Torque
856 extends Modelica.Mechanics.Rotational.Interfaces.PartialElementaryOneFlangeAndSupport2;
857 Modelica.Blocks.Interfaces.RealInput tau(unit = "N.m");
858 equation
859 flange.tau = -tau;
860 end Torque;
861 end Sources;
862
863 package Interfaces
864 extends Modelica.Icons.InterfacesPackage;
865
866 connector Flange_a
867 .Modelica.SIunits.Angle phi;
868 flow .Modelica.SIunits.Torque tau;
869 end Flange_a;
870
871 connector Flange_b
872 .Modelica.SIunits.Angle phi;
873 flow .Modelica.SIunits.Torque tau;
874 end Flange_b;
875
876 connector Support
877 .Modelica.SIunits.Angle phi;
878 flow .Modelica.SIunits.Torque tau;
879 end Support;
880
881 partial model PartialElementaryOneFlangeAndSupport2
882 parameter Boolean useSupport = false;
883 Flange_b flange;
884 Support support(phi = phi_support, tau = -flange.tau) if useSupport;
885 protected
886 Modelica.SIunits.Angle phi_support;
887 equation
888 if not useSupport then
889 phi_support = 0;
890 end if;
891 end PartialElementaryOneFlangeAndSupport2;
892
893 partial model PartialAbsoluteSensor
894 extends Modelica.Icons.RotationalSensor;
895 Flange_a flange;
896 equation
897 0 = flange.tau;
898 end PartialAbsoluteSensor;
899 end Interfaces;
900 end Rotational;
901 end Mechanics;
902
903 package Thermal
904 extends Modelica.Icons.Package;
905
906 package HeatTransfer
907 extends Modelica.Icons.Package;
908
909 package Components
910 extends Modelica.Icons.Package;
911
912 model ThermalCollector
913 parameter Integer m(min = 1) = 3;
914 Interfaces.HeatPort_a[m] port_a;
915 Interfaces.HeatPort_b port_b;
916 equation
917 port_b.Q_flow + sum(port_a.Q_flow) = 0;
918 port_a.T = fill(port_b.T, m);
919 end ThermalCollector;
920 end Components;
921
922 package Sources
923 extends Modelica.Icons.SourcesPackage;
924
925 model FixedTemperature
926 parameter Modelica.SIunits.Temperature T;
927 Interfaces.HeatPort_b port;
928 equation
929 port.T = T;
930 end FixedTemperature;
931
932 model PrescribedTemperature
933 Interfaces.HeatPort_b port;
934 Modelica.Blocks.Interfaces.RealInput T(unit = "K");
935 equation
936 port.T = T;
937 end PrescribedTemperature;
938 end Sources;
939
940 package Interfaces
941 extends Modelica.Icons.InterfacesPackage;
942
943 partial connector HeatPort
944 Modelica.SIunits.Temperature T;
945 flow Modelica.SIunits.HeatFlowRate Q_flow;
946 end HeatPort;
947
948 connector HeatPort_a
949 extends HeatPort;
950 end HeatPort_a;
951
952 connector HeatPort_b
953 extends HeatPort;
954 end HeatPort_b;
955
956 partial model PartialElementaryConditionalHeatPortWithoutT
957 parameter Boolean useHeatPort = false;
958 Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPort(final Q_flow = -lossPower) if useHeatPort;
959 Modelica.SIunits.Power lossPower;
960 end PartialElementaryConditionalHeatPortWithoutT;
961 end Interfaces;
962 end HeatTransfer;
963 end Thermal;
964
965 package Math
966 extends Modelica.Icons.Package;
967
968 package Icons
969 extends Modelica.Icons.IconsPackage;
970
971 partial function AxisLeft end AxisLeft;
972
973 partial function AxisCenter end AxisCenter;
974 end Icons;
975
976 function sin
977 extends Modelica.Math.Icons.AxisLeft;
978 input Modelica.SIunits.Angle u;
979 output Real y;
980 external "builtin" y = sin(u);
981 end sin;
982
983 function asin
984 extends Modelica.Math.Icons.AxisCenter;
985 input Real u;
986 output .Modelica.SIunits.Angle y;
987 external "builtin" y = asin(u);
988 end asin;
989
990 function exp
991 extends Modelica.Math.Icons.AxisCenter;
992 input Real u;
993 output Real y;
994 external "builtin" y = exp(u);
995 end exp;
996 end Math;
997
998 package Constants
999 extends Modelica.Icons.Package;
1000 final constant Real pi = 2 * Math.asin(1.0);
1001 final constant Real eps = ModelicaServices.Machine.eps;
1002 final constant Real small = ModelicaServices.Machine.small;
1003 final constant .Modelica.SIunits.Velocity c = 299792458;
1004 final constant Real mue_0(final unit = "N/A2") = 4 * pi * 0.0000001;
1005 end Constants;
1006
1007 package Icons
1008 extends Icons.Package;
1009
1010 partial package Package end Package;
1011
1012 partial package VariantsPackage
1013 extends Modelica.Icons.Package;
1014 end VariantsPackage;
1015
1016 partial package InterfacesPackage
1017 extends Modelica.Icons.Package;
1018 end InterfacesPackage;
1019
1020 partial package SourcesPackage
1021 extends Modelica.Icons.Package;
1022 end SourcesPackage;
1023
1024 partial package SensorsPackage
1025 extends Modelica.Icons.Package;
1026 end SensorsPackage;
1027
1028 partial package UtilitiesPackage
1029 extends Modelica.Icons.Package;
1030 end UtilitiesPackage;
1031
1032 partial package IconsPackage
1033 extends Modelica.Icons.Package;
1034 end IconsPackage;
1035
1036 partial class RotationalSensor end RotationalSensor;
1037
1038 partial function Function end Function;
1039
1040 partial record Record end Record;
1041 end Icons;
1042
1043 package SIunits
1044 extends Modelica.Icons.Package;
1045
1046 package Conversions
1047 extends Modelica.Icons.Package;
1048
1049 package NonSIunits
1050 extends Modelica.Icons.Package;
1051 type Temperature_degC = Real(final quantity = "ThermodynamicTemperature", final unit = "degC");
1052 end NonSIunits;
1053 end Conversions;
1054
1055 type Angle = Real(final quantity = "Angle", final unit = "rad", displayUnit = "deg");
1056 type Time = Real(final quantity = "Time", final unit = "s");
1057 type AngularVelocity = Real(final quantity = "AngularVelocity", final unit = "rad/s");
1058 type AngularAcceleration = Real(final quantity = "AngularAcceleration", final unit = "rad/s2");
1059 type Velocity = Real(final quantity = "Velocity", final unit = "m/s");
1060 type Acceleration = Real(final quantity = "Acceleration", final unit = "m/s2");
1061 type Frequency = Real(final quantity = "Frequency", final unit = "Hz");
1062 type MomentOfInertia = Real(final quantity = "MomentOfInertia", final unit = "kg.m2");
1063 type Inertia = MomentOfInertia;
1064 type Torque = Real(final quantity = "Torque", final unit = "N.m");
1065 type Power = Real(final quantity = "Power", final unit = "W");
1066 type ThermodynamicTemperature = Real(final quantity = "ThermodynamicTemperature", final unit = "K", min = 0.0, start = 288.15, nominal = 300, displayUnit = "degC");
1067 type Temperature = ThermodynamicTemperature;
1068 type LinearTemperatureCoefficient = Real(final quantity = "LinearTemperatureCoefficient", final unit = "1/K");
1069 type HeatFlowRate = Real(final quantity = "Power", final unit = "W");
1070 type ElectricCurrent = Real(final quantity = "ElectricCurrent", final unit = "A");
1071 type Current = ElectricCurrent;
1072 type ElectricPotential = Real(final quantity = "ElectricPotential", final unit = "V");
1073 type Voltage = ElectricPotential;
1074 type MagneticFlux = Real(final quantity = "MagneticFlux", final unit = "Wb");
1075 type Inductance = Real(final quantity = "Inductance", final unit = "H");
1076 type Resistance = Real(final quantity = "Resistance", final unit = "Ohm");
1077 type Conductance = Real(final quantity = "Conductance", final unit = "S");
1078 type FaradayConstant = Real(final quantity = "FaradayConstant", final unit = "C/mol");
1079 end SIunits;
1080end Modelica;