Ticket #3635: test0.mo

File test0.mo, 5.0 KB (added by massimo ceraolo, 9 years ago)
Line 
1within ;
2package Test0
3 model FullRecovery "Minimize mechanical energy in a simple path"
4 parameter Real m=1000 "1000 kg of vehicle mass";
5 parameter Real p=1 "needed for final constraints";
6 parameter Real fGrip=0.02;
7 parameter Real S=2 "superficie frontale in m^2";
8 parameter Real Cx=0.4;
9 constant Real rho=1.226 "densit� aria kg/m^3";
10 constant Real g=9.81;
11 Real a(
12 min=-1,
13 max=1,
14 nominal=0) annotation (isConstraint=true);
15 Real v(start=0);
16 Real pos(start=0);
17 Real pow=f*v "Mechanical power";
18 Real fResis "Motion resistance";
19 Real Energy "Energy to minimize";
20 input Real f(min=-1e9, max=1e9);
21 Real constEn(nominal=1) = Energy "minimize Energy(tf)"
22 annotation (isMayer=true);
23 Real constSpeed(
24 min=0,
25 max=0) = p*v " 0<= p*v(tf) <=0 " annotation (isFinalConstraint=true);
26 Real constSpace(
27 min=1000,
28 max=1000) = p*pos " 0<= p*v(tf) <=0 " annotation (isFinalConstraint=true);
29 equation
30 der(Energy) = pow;
31 der(pos) = v;
32 der(v) = a;
33 fResis = fGrip*m*g + 0.5*Cx*rho*S*v^2;
34 f - fResis = m*a;
35 annotation (Documentation(info="<html>
36<p>train movement optimization.</p>
37</html>"), experiment(
38 StartTime=0,
39 StopTime=100,
40 Tolerance=1e-08,
41 Interval=0.333333));
42 end FullRecovery;
43
44 model DOcoasting1 "Minimize mechanical energy in a simple path"
45 // Prova con selezione automatica del coasting.
46 // Contiene un trucco per evitare variabili booleane o intere per simulare il coasting:
47 // quando la forza motrice scende sotto soglia threas, s'intende che siamo in coasting
48 // e la potenza al pantografo si annulla
49 parameter Real m=1000 "1000 kg of vehicle mass";
50 parameter Real p=1 "needed for final constraints";
51 parameter Real fGrip=0.02;
52 parameter Real S=2 "superficie frontale in m^2";
53 parameter Real Cx=0.4;
54 parameter Real iLoss=200 "iron losses, W, when no coasting";
55 constant Real rho=1.226 "densità aria kg/m^3";
56 constant Real g=9.81;
57 Real a(
58 min=-1,
59 max=1,
60 nominal=0) annotation (isConstraint=true);
61 Real v(start=0);
62 Real pos(start=0);
63 Real elePow, ironLoss;
64 Real fResis "Motion resistance";
65 Real Energy "Energy to minimize";
66 input Real f(min=-1e9, max=1e9);
67 Real constEn(nominal=1e8) = Energy "minimize Energy(tf)"
68 annotation (isMayer=true);
69 Real constSpeed(
70 min=0,
71 max=0) = p*v " 0<= p*v(tf) <=0 " annotation (isFinalConstraint=true);
72 Real constSpace(
73 min=1000,
74 max=1000) = p*pos " 0<= p*v(tf) <=0 " annotation (isFinalConstraint=true);
75 equation
76 ironLoss = iLoss*(1 - exp(-f^2/1e4));
77 //ironLoss=100;
78 elePow = f*v + ironLoss;
79 der(Energy) = elePow;
80 der(pos) = v;
81 der(v) = a;
82 fResis = fGrip*m*g + 0.5*Cx*rho*S*v^2;
83 f - fResis = m*a;
84 annotation (Documentation(info="<html>
85<p>train movement optimization.</p>
86</html>"), experiment(
87 StartTime=0,
88 StopTime=100,
89 Tolerance=1e-08,
90 Interval=1));
91 end DOcoasting1;
92
93 model DOminEnPant "Minimize mechanical Pantograph energy in a simple path"
94 parameter Real m=1000 "1000 kg of vehicle mass";
95 parameter Real p=1 "needed for final constraints";
96 parameter Real fGrip=0.02;
97 parameter Real S=2 "superficie frontale in m^2";
98 parameter Real Cx=0.4;
99 constant Real rho=1.226 "densità aria kg/m^3";
100 constant Real g=9.81;
101 Real a(
102 min=-1,
103 max=1,
104 nominal=0) annotation (isConstraint=true);
105 Real v(start=0);
106 Real pos(start=0);
107 Real mechPow=f*v "Mechanical power";
108 Real fResis "Motion resistance";
109 Real mechEnergy;
110 Real energy "Energy to minimize";
111 input Real f(min=-1e9, max=1e9);
112 Real constEn(nominal=1) = energy "minimize energy(tf)"
113 annotation (isMayer=true);
114 Real constSpeed(
115 min=0,
116 max=0) = p*v " 0<= p*v(tf) <=0 " annotation (isFinalConstraint=true);
117 Real constSpace(
118 min=1000,
119 max=1000) = p*pos " 0<= p*v(tf) <=0 " annotation (isFinalConstraint=true);
120 equation
121 der(mechEnergy) = mechPow;
122 der(pos) = v;
123 der(v) = a;
124 energy = mechEnergy;
125 fResis = fGrip*m*g + 0.5*Cx*rho*S*v^2;
126 f - fResis = m*a;
127 annotation (Documentation(info="<html>
128<p>train movement optimization.</p>
129</html>"), experiment(
130 StartTime=0,
131 StopTime=100,
132 Tolerance=1e-08,
133 Interval=0.333333));
134 end DOminEnPant;
135
136
137 annotation (
138 Icon(graphics, coordinateSystem(
139 extent={{-100,-80},{100,80}},
140 preserveAspectRatio=true,
141 initialScale=0.1,
142 grid={2,2})),
143 Diagram(graphics, coordinateSystem(
144 extent={{-100,-100},{100,100}},
145 preserveAspectRatio=true,
146 initialScale=0.1,
147 grid={2,2})),
148 uses(Modelica(version="3.2.1")),
149 version="1",
150 conversion(from(version="", script="ConvertFromDOtrainPkg_.mos")));
151end Test0;