gpt4 book ai didi

modelica - 在 OpenModelica 中保存开始/初始猜测值并从文件中实现初始值

转载 作者:行者123 更新时间:2023-12-02 19:04:51 25 4
gpt4 key购买 nike

Dymola 中有一个选项“保存模型中的起始值”,它允许重复使用这些参数以调整模拟。

我在 OpenModelica 中寻找类似的可能性,但到目前为止我无法弄清楚。特别是,我正在用 ThermoSysPro 构建一个模型,它对初始值的变化相当敏感。我的模型有几个垂直管道(上游、下游),所以很容易失败。

1. 是否可以在 OpenModelica 中保存初始/开始/猜测值?

2. 在模型中实现/采用这些值的方法是什么? (假设我有密度 - ρ、焓 - h、温度 - T 等等。只是为了 Modelica 新手的简化目的)

------更新------

就我而言,我有两种方法来启动/初始值:
(ThermoSysPro - TSP)

方法一 - 通过引入所需的边界条件或接近能够成功运行的边界条件,在不更改 TSP 中给出的默认起始值​​的情况下运行仿真 1 秒。

收集生成的初始值并将它们添加为起始值(当有很多组件时会很耗时)。

对于诸如“体积”之类的组件或任何其他未离散化的组件,在组件的“初始化”部分或“ TextView ”窗口中提供这些值就足够了,例如Q(start = 0.3); P(start = xxx) .

但是对于离散组件,例如“管道”,必须使用运算符 each 通过“ TextView ”来完成。例如Q(each start = 0.3) .但是,当通过“图表 View ”更改组件的任何参数时,运算符“each”消失,因此必须如下给出:

•   Q(start = {0.3 for i in 1:componentName.Ns+1}) 
• Q(start = fill(0.3, componentName.Ns+1))
• Q(start = {x1, x2, x3, x4, … xi})

Ns + 1 - 用于液压节点/Ns - 用于热节点

问题

P.1.1 - 通常,应该写:
Q(start = fill(0.3, Ns+1), fixed = fill(true/false, Ns+1)) 

但这与操作符 each 的情况相同。 ,通过“图表 View ”更改组件的任何参数后,属性 fixed自动更改为 fixed=false ,虽然需要一个数组。我尝试创建一个 bool 参数并使用数组理解,但我总是得到相同的结果。 任何建议或解决方法?

P.1.2 – 在调整生成的起始值而不是使用默认值之后,我看不到模拟的任何改进(加速/更好的结果/或其他)。此外,在适应了太多之后,我开始遇到初始化问题——这对我的理解应该是相反的。所以,我不确定我应该如何正确使用/声明起始值?也许问题是我没有明确添加 fixed = true/false ?

方法二 – 使用 Modelica 函数根据边界条件计算起始值。所以首先,我计算多个参数的起始值(通常我计算压力和焓)。例如
parameter Modelica.SIunits.Enthalpy init_enthalpy[Ns+1] = {Modelica.Media.Water.WaterIF97_base.specificEnthalpy_pT(P[i], T) for i in 1:Ns+1}

然后将其添加为特定组件:
h(start = init_enthalpy)

问题:

P2.1 使用 ThermoPower 库,这种方法可以完美运行,但是使用 ThermoSysPro,我遇到了困难,因为可以为初始化提供太多参数。一般应该给出多少个参数,或者如何找到最重要的肯定应该给出的参数?

P2.2 initial equation 中声明开始/初始值是否有区别?部分并将其计算为 parameter (如上)?

P2.3 通过指示起始值是 fixed=true / false不会意味着你在使用所谓的“逆问题”吗?

最佳答案

我不知道是否可以使用 jet 自动保存初始值的选项,但通常您可以使用初始方程设置变量的初始值,也可以更改变量的起始属性。如果它是一种状态,则必须将 fixed 属性设置为 true,以便将其考虑进行初始化。

model test
Real a(start=10, fixed=true);
Real b;
initial equation
b = 20;
equation
der(a) = cos(time);
der(b) = sin(time);
end test;

非线性系统的非线性迭代变量和离散变量也需要有起始值。

关于modelica - 在 OpenModelica 中保存开始/初始猜测值并从文件中实现初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com