关于Modelica初始化的一般问题
A general question about Modelica initialization
如何给所有可能用作迭代变量的变量赋值,例如,有一个热交换器,它包含几个连接器,每个连接器包含几个变量,我不知道是哪个variables可以作为迭代变量,在处理初始化的时候,是否需要给每个变量都赋值,这样无论选择哪个变量作为迭代变量,都有一个合理的值?
惊叹,
我认为您在寻找解决方案方面有点走错了路:为所有可能成为迭代变量的变量设置值通常太多,并且会导致错误和问题。但我想无论如何我都能给你一些有用的建议。
- 别名变量:sin Modelica模型有很多别名变量。您应该始终只尝试 select 其中之一来设置起始值。
- 起始值和迭代变量之间的反馈:大多数 Modelica 工具更喜欢 select 设置了起始值的迭代变量。因此,选择更少可以引导算法朝着 select 好的方向发展。因此:不要过度。
- select迭代变量的一般建议。对于纯 ODE,状态将始终是一组完整的起始变量,即使有时不是最好的。对于 DAE,您可以从以下练习开始:将由完整物理的奇异摄动产生的所有方程视为具有状态的微分方程。例如,在热交换器中,您需要考虑动态动量平衡,而不是仅考虑最常用的静态减少到代数压力损失,即添加质量流量作为状态。类似于化学反应:将其视为动力学,而不是平衡反应。这为您提供了一个很好的起点,尽管通常不是最好的起点。
如果您的问题还没有完全解决,我建议您通过 www.modelon.com 联系我们:我们的模型工具中有处理硬初始化和稳态问题的高级方法。 :-)
还有一种最简单的方法可以回答您的问题,它适用于流体模型。
考虑到您使用的是动态模型,您需要初始化的是系统的状态变量。要了解状态变量,要么您知道您正在使用的模型类型,要么您可以使用 Dymola 中的 'List continuous time states selected' 等选项(我不知道其他工具)来深入了解它们,为您提供状态变量翻译日志。
在流体模型的情况下,大多数时候是压力和能量(焓或温度)。所有其他变量将基于它们计算。
对于复杂(或不复杂)的模型,此方法显示出局限性,有时可以通过 changing/correcting 模型结构来解决。
静态模型是另外一回事...
希望这对您有所帮助:)
如何给所有可能用作迭代变量的变量赋值,例如,有一个热交换器,它包含几个连接器,每个连接器包含几个变量,我不知道是哪个variables可以作为迭代变量,在处理初始化的时候,是否需要给每个变量都赋值,这样无论选择哪个变量作为迭代变量,都有一个合理的值?
惊叹,
我认为您在寻找解决方案方面有点走错了路:为所有可能成为迭代变量的变量设置值通常太多,并且会导致错误和问题。但我想无论如何我都能给你一些有用的建议。
- 别名变量:sin Modelica模型有很多别名变量。您应该始终只尝试 select 其中之一来设置起始值。
- 起始值和迭代变量之间的反馈:大多数 Modelica 工具更喜欢 select 设置了起始值的迭代变量。因此,选择更少可以引导算法朝着 select 好的方向发展。因此:不要过度。
- select迭代变量的一般建议。对于纯 ODE,状态将始终是一组完整的起始变量,即使有时不是最好的。对于 DAE,您可以从以下练习开始:将由完整物理的奇异摄动产生的所有方程视为具有状态的微分方程。例如,在热交换器中,您需要考虑动态动量平衡,而不是仅考虑最常用的静态减少到代数压力损失,即添加质量流量作为状态。类似于化学反应:将其视为动力学,而不是平衡反应。这为您提供了一个很好的起点,尽管通常不是最好的起点。
如果您的问题还没有完全解决,我建议您通过 www.modelon.com 联系我们:我们的模型工具中有处理硬初始化和稳态问题的高级方法。 :-)
还有一种最简单的方法可以回答您的问题,它适用于流体模型。 考虑到您使用的是动态模型,您需要初始化的是系统的状态变量。要了解状态变量,要么您知道您正在使用的模型类型,要么您可以使用 Dymola 中的 'List continuous time states selected' 等选项(我不知道其他工具)来深入了解它们,为您提供状态变量翻译日志。 在流体模型的情况下,大多数时候是压力和能量(焓或温度)。所有其他变量将基于它们计算。
对于复杂(或不复杂)的模型,此方法显示出局限性,有时可以通过 changing/correcting 模型结构来解决。
静态模型是另外一回事...
希望这对您有所帮助:)