流变模型通常使用三个(或四个)基本元素构建,它们是:
弹簧(例如存在)
Modelica.Mechanics.Translational.Components
。它的方程是f = c * (s_rel - s_rel0);
阻尼器(阻尼器)(也存在于 中
Modelica.Mechanics.Translational.Components
)。它的方程f = d * v_rel;
适用于线性阻尼器,可以很容易地修改以模拟非线性阻尼器:f = d * v_rel^(1/n);
滑块,在这个库中不存在(据我所知)......它的方程是 abs(f)<= flim. 不幸的是,我真的不明白如何编写相应的 Modelica 模型......
我认为这个模型应该扩展Modelica.Mechanics.Translational.Interfaces.PartialCompliant
,但问题是(在和f
之间测量的力)只有在大于...时才应该修改......如果滑块扩展,则意味着它已经遵循方程 并且
添加方程给了我一个错误“模型的一个独立子集的方程和变量数量不平衡”,我无法真正解释,即使我明白如果,方程是无用的......flange_b
flange_a
flim
PartialCompliant
flange_b.f = f;
flange_a.f = -f;
f = if abs(f)>flim then sign(f)*flim else f;
abs(f)<=flim
f = f
实际上,滑块元件不会产生新的力(就像弹簧一样,取决于它的应变,或者就像阻尼器一样,取决于它的应变率)。力是滑块元素的输入,有时会修改(当该力大于元素允许的限制时)。这就是为什么我真的不明白我应该将这种力定义为输入还是输出......
如果您有任何建议,我将不胜感激!谢谢
在前两条评论之后,我决定添加一张图片,希望能帮助您理解我试图建模的行为。 在左侧,您可以看到用于开发流变模型的四个要素:
- 一:春天
- b : 线性阻尼器(阻尼器)
- c : 非线性阻尼器
- d : 滑块
在右侧,您可以看到我试图重现的行为:a 和 b 是与弹簧的两个关联,c 和 d 分别是预期的应力/应变曲线。我正在尝试对相同的行为进行建模,只是我考虑的是力量而不是压力。正如我在对 Marco 回答的评论中所说,曲线 a 让我想起了二极管的行为:
- 如果施加在构件上的力小于滑动极限,则两个法兰之间没有相对位移
- 如果力大于滑动极限,则系统传递的力等于极限,法兰之间存在相对位移