【问题标题】:Non-liner solver couldn't converge during the initialization in Dymola在 Dymola 的初始化过程中,非线性求解器无法收敛
【发布时间】:2019-11-22 08:35:39
【问题描述】:

我在使用 ThermoSysPro 库时在初始化期间遇到错误。

Turbine5.Pe 似乎比 Turbine2.Pe 大,所以结果是否定的。但是我检查了我的参数,应该没有这样的问题。

这是因为非线性求解器无法求解下图中的方程吗?

【问题讨论】:

    标签: modelica dymola


    【解决方案1】:

    没有足够的信息,我建议在模拟设置>调试>非线性求解器诊断中设置详细信息和/或非线性迭代以获取更多信息。

    导致问题的完整表达式是sqrt((Turbine2.Pe^2-Turbine5.Pe^2)/(Turbine2.Cst*Turbine2.proe.T))

    由于这两个 Pe 值有 fixed=true,它们似乎不太可能是错误的,但如果没有完整的模型是不可能看到的。

    但是,Cstproe.T 也有可能是负数,或者根据其他值计算为负值。

    没有完整的模型,无法分辨。

    【讨论】:

    • 我只是想出如何处理这个问题。这是因为初始化过程中迭代变量的起始值与正确解的距离太远。通过将 Advanced.DebugHomotopy 标志设置为 true,Dymola 将创建一个名为 continuation.csv 的文件,其中包含导致问题的迭代变量。
    【解决方案2】:

    根据ThermoSysPro(来自EDF的开源库https://github.com/alex19941215/ThermoSysPro)和ThermalPower(来自Modelon的商业库https://www.modelon.com/library/thermal-power-library)之间的比较,应该对面临相同情况的人有所启发。

    这是 ThermoSysPro 库的代码:

    Connectors.FluidInlet Ce
    Connectors.FluidOutlet Cs
    

    这是来自热力库的类型代码:

    Interfaces.FlowPort feed(
    h_outflow(start=hstartin))
    Interfaces.FlowPort drain(
    p(start=pstart),
    h_outflow(start=hstartout))
    

    从代码中我们可以看到,在Thermal Power库中,每个连接器的属性都是根据参数赋值的,但是在ThermoSysPro库中,连接器使用的是默认值,可能为零。所以这就是为什么 Thermal Power 库在初始化收敛方面具有更好的性能

    【讨论】:

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