- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Modelica 中创建了一个简单的摆模型。之后,我构建了模型,以便生成 .xml 文件和 .exe 文件。
model TestJAVA_v2
inner Modelica.Mechanics.MultiBody.World world annotation(
Placement(visible = true, transformation(origin = {-86, 28}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));
Modelica.Mechanics.MultiBody.Joints.Revolute revolute1(n = {1, 0, 0},
phi(fixed = true, start = 0.785398)) annotation(
Placement(visible = true, transformation(origin = {-46, 28}, extent =
{{-10,
-10}, {10, 10}}, rotation = 0)));
Modelica.Mechanics.MultiBody.Parts.PointMass pointMass1 annotation(
Placement(visible = true, transformation(origin = {16, 28}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));
Modelica.Mechanics.MultiBody.Parts.BodyShape bodyShape1(r = {0, 1, 1}, r_CM
= bodyShape1.r / 2) annotation(
Placement(visible = true, transformation(origin = {-14, 26}, extent =
{{-10,
-10}, {10, 10}}, rotation = 0)));
equation
connect(bodyShape1.frame_b, pointMass1.frame_a) annotation(
Line(points = {{-4, 26}, {16, 26}, {16, 28}, {16, 28}}, color = {95, 95,
95}));
connect(revolute1.frame_b, bodyShape1.frame_a) annotation(
Line(points = {{-36, 28}, {-24, 28}, {-24, 26}, {-24, 26}}, color = {95, 95,
95}));
connect(world.frame_b, revolute1.frame_a) annotation(
Line(points = {{-76, 28}, {-58, 28}, {-58, 28}, {-56, 28}}, color = {95, 95,
95}));
annotation(
uses(Modelica(version = "3.2.2")),
experiment(StartTime = 0, StopTime = 15, Tolerance = 0.001, Interval =
0.0010002),
__OpenModelica_simulationFlags(iim = "none", lv = "LOG_STATS", s =
"dassl"));
end TestJAVA_v2;
使用 xml 解析器,我可以更改 BodyShape 的质量和 vector r(在frame_a 中解析的从frame_a 到frame_b 的 vector )。但经过模拟,我发现只有质量发生了变化,而组件的长度没有变化。是否可以通过xml文件修改这个 vector ?
最佳答案
如果不重新编译模型,某些参数就无法更改。
在 ScalarVariable
中搜索 isValueChangeable
属性。如果 isValueChangeable = "false"
那么您无法通过 xml 文件更改该值。
发生这种情况的原因是:
注释(Evaluate=true)
,这基本上使它成为一个常量经过更多分析后,有关编辑的更多信息:
bodyShape1.r
,因此使其成为无法更改的常量omc -d=newInst
或在 OMEdit 中将 OMcflags设置为 -d=newInst
以使用新的前端实现允许改变 bodyShape1.r
。使用-d=newInst
你会得到:
<ScalarVariable
name = "bodyShape1.r[1]"
valueReference = "1711"
description = "Vector from frame_a to frame_b resolved in frame_a"
variability = "parameter" isDiscrete = "true"
causality = "internal" isValueChangeable = "true"
alias = "noAlias"
classIndex = "86" classType = "rPar"
isProtected = "false" hideResult = "false"
fileName = "c:/home/adrpo33/dev/OpenModelica/build/lib/omlibrary/Modelica 3.2.2/Mechanics/MultiBody/Parts.mo" startLine = "1038" startColumn = "5" endLine = "1039" endColumn = "59" fileWritable = "true">
<Real start="0.0" fixed="true" useNominal="false" unit="m" />
</ScalarVariable>
其中有 isValueChangeable = "true"
。
adrpo33@computer MINGW64 /c/home/adrpo33/dev/OMTesting/mb
$ ./TestJAVA_v2.exe -override=bodyShape1.r[1]=2 -lv=LOG_ALL | grep 'bodyShape1.r\['
LOG_SOLVER | info | read override values: bodyShape1.r[1]=2
LOG_SOLVER | info | override bodyShape1.r[1] = 2
| | | | | Real bodyShape1.r[1](start=2, fixed=true, {nominal=1}, min=-1.79769e+308, max=1.79769e+308)
| | | | | Real bodyShape1.r[2](start=1, fixed=true, {nominal=1}, min=-1.79769e+308, max=1.79769e+308)
| | | | | Real bodyShape1.r[3](start=1, fixed=true, {nominal=1}, min=-1.79769e+308, max=1.79769e+308)
| | | | | | [87] parameter Real bodyShape1.r[1](start=2, fixed=true) = 2
| | | | | | [88] parameter Real bodyShape1.r[2](start=1, fixed=true) = 1
| | | | | | [89] parameter Real bodyShape1.r[3](start=1, fixed=true) = 1
似乎与 omc -d=newInst
和 Model -override
配合良好
关于java - 如何通过处理 XML 文件来更改 Modelica MultiBody 组件参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52706961/
我正在尝试为我的代码导入 SpatialForce,但它一直因错误而失败 ImportError: C++ type is not registered in pybind: N5Eigen14Aut
我在 Modelica 中创建了一个简单的摆模型。之后,我构建了模型,以便生成 .xml 文件和 .exe 文件。 model TestJAVA_v2 inner Modelica.Mechani
我是一名优秀的程序员,十分优秀!