【问题标题】:how to show the linearization result in Dymola?如何在 Dymola 中显示线性化结果?
【发布时间】:2021-03-17 17:50:37
【问题描述】:

我尝试使用 Dymola 中的线性化功能,但似乎当结果的维度很大时,Dymola 不会显示结果。
我的问题是: 我如何打印结果或在哪里可以找到它?

【问题讨论】:

    标签: modelica dymola


    【解决方案1】:

    您可以做的是将结果分配给一个变量。这可以使用Outputs 组来完成,如下面的屏幕截图所示。如果你例如在ss的字段中输入“sys”,您将获得一条记录sys,您可以在其中通过键入sys.Asys.B等访问矩阵/向量,我已经针对系统进行了测试尺寸为 200x200。将其键入命令行将显示内容。当然这个记录不仅是为了输出,也是为了后期处理。

    实际上唯一要做的就是将调用从Modelica_LinearSystems2.ModelAnalysis.Linearize("ModelName") 修改为sys=Modelica_LinearSystems2.ModelAnalysis.Linearize("ModelName"),所以它也可以在命令窗口中完成。

    【讨论】:

      【解决方案2】:

      从命令行调用函数并捕获输出。然后,您可以随心所欲地使用它。

      您在线性分析工具栏中找到的所有内容都是库Modelica_LinearSystems2的一部分。此菜单中的 Linearize 项调用函数

      Modelica_LinearSystems2.ModelAnalysis.Linearize("<your-model>")
      

      这也被打印到命令行。该函数返回操作员记录Modelica_LinearSystems2.StateSpace,其中包含您感兴趣的所有信息。Dymola 的默认行为是调用此操作员记录的String 方法并将其打印到命令行。如果您查看Modelica_LinearSystems2.StateSpace.'String' 的源代码,您可以在算法部分的开头看到:

        // If system is too large, do not print the matrices
        if size(ss.A,1) > 50 or size(ss.B, 2) > 50 or size(ss.C, 1) > 50 then
           ...
      

      在命令行中,您可以像这样在变量中捕获操作员记录:

      stateSpace = Modelica_LinearSystems2.ModelAnalysis.Linearize("<your-model>");
      

      然后在命令行中通过

      访问这些值
      stateSpace.A
      stateSpace.B
      stateSpace.C
      stateSpace.D
      

      对于一个漂亮的 html 报告,您还可以将操作员记录传递给分析函数之一:

      Modelica_LinearSystems2.StateSpace.Analysis.analysis2.printSystem(stateSpace)
      

      这会在您的工作目录中创建文件systemAnalysis.html,其中包含您系统的精美视觉呈现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-22
        • 1970-01-01
        • 2021-04-11
        • 2019-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        相关资源
        最近更新 更多