Modelica登月实例
我试图学习modelica,并从编写教程中的一些简单示例开始:“使用 彼得·弗里茨森的《OpenModelica》。我和迪莫拉一起工作。 有一个例子叫登月,我跑不动。 开始模拟后,我无法绘制任何变量。 这是我的密码:Modelica登月实例,modelica,dymola,Modelica,Dymola,我试图学习modelica,并从编写教程中的一些简单示例开始:“使用 彼得·弗里茨森的《OpenModelica》。我和迪莫拉一起工作。 有一个例子叫登月,我跑不动。 开始模拟后,我无法绘制任何变量。 这是我的密码: model Example class Rocket "rocket class" parameter String name; Real mass(start = 1038.3); Real altitude(start = 59404); Real veloc
model Example
class Rocket "rocket class"
parameter String name;
Real mass(start = 1038.3);
Real altitude(start = 59404);
Real velocity(start = -2003);
Real thrust;
Real acceleration;
Real gravity;
parameter Real massLossRate=0.000277;
equation
acceleration = (thrust-mass*gravity)/mass;
der(mass) = -massLossRate * abs(thrust);
der(altitude)=velocity;
der(velocity)=acceleration;
end Rocket;
class CelesticalBody
constant Real g = 6.672e-11;
parameter Real radius;
parameter String name;
parameter Real mass;
end CelesticalBody;
class MoonLanding
parameter Real force1 = 36350;
parameter Real force2 = 1308;
protected
parameter Real thrustEndTime = 210;
parameter Real thrustDecreaseTime = 43.2;
public
Rocket apollo(name="apollo13");
CelesticalBody moon(name="moon",mass = 7.382e22, radius=1.738e6);
equation
apollo.thrust = if (time < thrustDecreaseTime) then force1
else if
(time < thrustEndTime) then force2
else 0;
apollo.gravity = moon.g*moon.mass/(apollo.altitude+moon.radius)^2;
end MoonLanding;
end Example;
模型示例
火箭级“火箭级”
参数字符串名称;
实际质量(起始值=1038.3);
实际高度(起始高度=59404);
实际速度(起点=-2003年);
实际推力;
真实加速度;
真实重力;
参数Real masslosrate=0.000277;
方程式
加速度=(推力质量*重力)/质量;
der(质量)=-质量损失率*abs(推力);
der(高度)=速度;
der(速度)=加速度;
末端火箭;
天青石级
常数实数g=6.672e-11;
参数实半径;
参数字符串名称;
参数真实质量;
末端膨体;
登月舱
参数实力1=36350;
参数实力2=1308;
受保护的
参数Real-struchtendtime=210;
参数实时=43.2;
公开的
火箭阿波罗(name=“阿波罗13”);
天秤座月亮(name=“moon”,质量=7.382e22,半径=1.738e6);
方程式
阿波罗推力=如果(时间<推力减小时间),则力1
否则如果
(时间<推力结束时间)然后强制2
其余0;
阿波罗重力=月球重力*月球质量/(阿波罗高度+月球半径)^2;
结束登月;
结束示例;
有人知道错误可能在哪里吗?正如@Rene Just Nielsen指出的那样,你必须模拟示例。登月,你应该制作一个包(不是模型)和登月(火箭、天体)模型(不是类): (基本上答案不是我的,而是雷内的,我同意。) 将其标记为“包装”和“模型”的其他好处包括:
- 尝试模拟一个包(例如
)将在Dymola中出现错误,因此将检测到此特定错误包示例
- 软件包浏览器旨在显示软件包的内容,而不是模型
- 登月使用
,但只有模型和区块可以使用时间
(这只是一个警告)时间
package Example
model Rocket "rocket class"
...
end Rocket;
model CelestialBody
...
end CelestialBody
model MoonLanding
...
end MoonLanding;
end Example;