我正在尝试学习 Modelica,并且使用多体库构建了一个非常简单的模型。该模型由一个世界对象和一个连接到梁的主体(质量)组成,然后连接到 2 个扩展的 PartialOneFrame_a 类(见下文),我对其进行了修改以在一个轴上创建一个恒定的力。本质上,这组物体所做的所有事情都是在重力作用下下落并旋转,这是由于两个力作用于与身体中心纵向偏移的位置,从而在 cg 周围产生了一对。
model Constant_Force
extends Modelica.Mechanics.MultiBody.Interfaces.PartialOneFrame_a;
parameter Real force = 1.0;
equation
frame_a.f = {0.0,0.0,force};
frame_a.t = {0.0,0.0,0.0};
end Constant_Force;
接下来我想看看我是否可以创建一个非常简单的空气动力分量,我将其连接到旋转“臂”的末端。我的想法是遵循上面的 Constant_force 模型示例,并在我的第一个简单切割中根据局部框架速度生成力。这就是我的问题出现的地方 - 我尝试使用 der(frame_a.r_0) 计算速度,然后我将使用 resolve2 函数将其转换为本地帧,但添加 der(...) 行导致模型无法正常工作 -它会“成功”模拟(使用 OpenModelica),但 v11b 向量(见下文)将全为零,出现用于绘图的 der(frame_a.r_0) 也是如此 - 不仅如此,所有其他组件行为现在也只是始终为零 - (身体的 frame_a.r_0、w_a 等)。
model Aerosurf
extends Modelica.Mechanics.MultiBody.Interfaces.PartialOneFrame_a;
import Modelica.Mechanics.MultiBody.Frames;
import Modelica.SIunits;
//Real[3] v11b;
SIunits.Velocity v11b[3];
//initial equation
// v11b={0.0,0.0,0.0};
algorithm
//v11b:=der(frame_a.r_0);
equation
v11b=der(frame_a.r_0);
frame_a.f = {0.0,0.0,0.0};
frame_a.t = {0.0,0.0,0.0};
end Aerosurf;
我尝试了多种方法来简单地计算速度(您将从注释行中看到),因此我可以绘制检查正确的行为但无济于事。我使用了算法或方程方法——我确实用不同的方法实现了一些不同的(但也有不正确的行为)。
有小费吗?我必须在这里遗漏一些基本的东西,似乎框架组件本身并不携带速度矢量,所以我必须计算它?