Modelica-在OpenModelica中为滑块元素建模
流变模型通常使用三(或四)个基本元素建立,这些基本元素是:Modelica-在OpenModelica中为滑块元素建模,modelica,openmodelica,Modelica,Openmodelica,流变模型通常使用三(或四)个基本元素建立,这些基本元素是: 弹簧(例如存在于Modelica.Mechanics.Translational.Components中)。其方程为f=c*(s_rel-s_rel0) 减震器(减震器)(也存在于Modelica.mechanical.Translational.Components中)。其方程为f=d*v_rel对于线性阻尼器,可以很容易地修改an以模拟非线性阻尼器:f=d*v_rel^(1/n) 滑块,据我所知,该库中不存在该滑块。。。它的方程是
- 弹簧(例如存在于
中)。其方程为Modelica.Mechanics.Translational.Components
f=c*(s_rel-s_rel0)代码>
- 减震器(减震器)(也存在于
中)。其方程为Modelica.mechanical.Translational.Components
对于线性阻尼器,可以很容易地修改an以模拟非线性阻尼器:f=d*v_rel
f=d*v_rel^(1/n)代码>
- 滑块,据我所知,该库中不存在该滑块。。。它的方程是abs(f)flim然后符号(f)*flim else f给了我一个错误“模型的一个独立子集的方程和变量数量不平衡”,我无法真正解释,即使我理解if
abs(f)有几个注意事项: -力既不是输入,也不是输出,但它只是添加到构件中的关系,以便定义力如何在构件的两个平移凸缘之间传播。在处理acausal连接器时,我认为最好考虑组件的自由度,而不是输入和输出。在这种情况下,您有两个连接件,并且在两个帧中的哪一帧独立地接收有关力的信息,您实现的等式将定义该信息将如何传播到另一帧。 -我测试了这个:
在Dymola上,它起作用了。这是正确的modelica代码,所以它也应该在OpenModelica中工作,我想不出为什么它应该被视为一个不平衡的数学模型 我希望这有帮助model slider extends Modelica.Mechanics.Translational.Interfaces.PartialCompliantWithRelativeStates; parameter Real flim = 1; equation f = if abs(f)>flim then sign(f)*flim else f; end slider;
Marco我不能确定,但我怀疑你真正想在这里建模的是库仑摩擦(即始终与运动方向相反的恒力)。如果是这样的话,Modelica标准库中已经有一个名为的组件,它模拟了(和其他几种类型的摩擦)。问题在于它与惯性捆绑在一起 如果不希望惯性效应,可以将惯性设置为零。我怀疑这可能会导致奇点。避免这种奇异性的一种方法是“求值”参数(至少当您在命令行中将
flat设置为evaluate
时,在Dymola中是这样称呼的)。由于这取决于模型和工具,因此无法保证这种简化是否能够正确处理true
如果库仑摩擦是你想要的,你真的不想要惯性,而上面的方法不起作用,请告诉我,我想我可以创建一个简单的模型来工作(只要你没有惯性)。谢谢Marco,你说得对,有了这段代码,我可以模拟我的模型,这取决于我使用的源代码(目前,我可以用位移输入模型,但不能用力),我认为这就是问题所在。我认为我的模型应该以二极管的方式工作:-如果施加的力小于允许的极限,两个法兰之间没有相对位移-当施加的力大于极限时,传递到另一个法兰的力等于该极限,并且有一个相对位移我想把一种通常被定义为压力的行为转变为强迫行为,但我没有这样想,但是是的,这是“唯一的”库仑摩擦!!关于你的第二点,你也是对的:我不想要惯性,而且我没有设法让某些东西工作,即使使用
和m=0
…我将尝试查看定义注释(Evaluate=true)
的代码,看看我是否能够重写类似但没有惯性的东西,我会让你知道的。大家好!我已经很长时间没有发布上一条消息了,但我在去年年底非常忙……不幸的是,我没有成功地为friction建模thout惯性..如果您有任何想法,我将非常感谢您的帮助。在图a的串联连接中,右侧滑块、弹簧和力源的剪切力相等。如果力源的力值超过值MassWithTopandFriction
,则无法解决此问题。此时,良好的数值计算必须失败有问题的迹象。如果你想让它工作,你需要一些东西来吞食滑块上多余的力。这可能是一个质量,其惯性力连接到滑块(或弹簧)的右端。这就产生了一个力绕过惯性系统的大质量,滑块也是固定的。flim