Modelica基础1——单摆例子

Modelica单摆例子

软件:MWORKS.Sysplorer 24教育版


目的:使用Modelica语言编写一个单杆带小球的物理模型,小球初始位置需要自己设置,然后考虑空气阻力,小球会逐渐到达最低点。


实验条件:仿真100s,求解器为dassl。


model Pendulum_test "带有空气摩擦的阻尼Pendulum钟摆案例"
  Real m = 1;  //小球质量 kg
  Real L = 5;  //杆长 m
  Real g = Modelica.Constants.g_n;  //重力加速度 m/s2
  Real F;  //杆中力 N
  Real vx(start = 0);  //水平速度 m/s
  Real vy(start = 0);  //垂直速度 m/s
  Real x(start = -5);  //水平位移 m
  Real y(start = 0);  //垂直位移 m
  Real v(start = 0);  //实际速度
  Real fx(start = 0);  //水平阻力
  Real fy(start = 0);  //垂直阻力
  parameter Real k = 0.1;  //阻力系数
  Real phi = Modelica.Constants.pi / 3;
  annotation(Diagram(coordinateSystem(extent = {{-200, -200}, {200, 200}}, 
    grid = {1, 1}), graphics = {Rectangle(origin = {0, 0}, 
      fillColor = {255, 255, 255}, 
      fillPattern = FillPattern.Backward, 
      extent = {{-50, 20}, {50, -20}}), 
    Ellipse(origin = {0, -120}, 
      fillColor = {255, 255, 255}, 
      fillPattern = FillPattern.Sphere, 
      extent = {{-10, -10}, {10, 10}}), 
    Line(origin = {0, 0}, 
      points = {{0, -20}, {0, -120}})}));
equation
  der(x) = vx;
  der(y) = vy;
  v = sqrt(vx ^ 2 + vy ^ 2);
  x ^ 2 + y ^ 2 = L ^ 2;
  fx = k * vx;
  fy = k * vy;
  m * der(vx) = -x * F / L + y * fx / L;
  m * der(vy) = -y * F / L + x * fy / L - m * g;
end Pendulum_test;

仿真结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ardalion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值