- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在评估 Dymola 2020 以构建太阳能发电厂模型,但我对使用自定义连接器的模型中的方程数量感到困扰。
代码如下:
connector Port
flow Real Q;
Real P;
Real T;
end Port;
model Inlet
parameter Real Q = 1;
parameter Real P = 2;
parameter Real T = 3;
Port a;
equation
a.Q = Q;
a.P = P;
a.T = T;
end Inlet;
我在模型中设置了 3 个方程,但出现错误,显示有 4 个方程。方程是如何计算的?为什么是4个?
The problem is structurally singular.
It has 3 scalar unknowns and 4 scalar equations. The Real part has 3 unknowns and 4 equations. The Integer part has 0 unknowns and 0 equations. The Boolean part has 0 unknowns and 0 equations. The String part has 0 unknowns and 0 equations.
The number of scalar Real unknown elements are 3. The number of scalar Real equation elements are 4.
Part of the problem for Real elements is overdetermined. There are 1 scalar equations too many in the set: a.T = T; a.P = P; a.Q = Q;
最佳答案
您的示例有两个独立的问题:
连接器通常包含对跨/势和流/通过变量 Modelica Language Specification ,第 9.3.1 节。遵循此约定,使用这些连接器的模型通常定义流和跨变量之间的关系。有关连接器定义的一些通用且非常易读的信息,请参阅 Modelica by Exmple 。我认为遵循这个约定并不是强制性的,但是如果在物理系统建模时这样做的话,事情会变得容易很多。
Inlet
设置所有接口(interface)变量。物理源模型设置横向或流动变量。您有一个压力源或一个流量源,它不能同时设置两者。这归结为管道计算流量的压降或压降的流量。模型通常假设交叉变量或流变量是由外部决定的。由此,模型使用其equation
部分中定义的关系来计算另一个。对于您的示例,所有这一切都归结为:如果您删除任何方程,例如a.Q = Q;
从 Inlet
开始,模型进行检查。对此的解释是如何从连接器和模型生成方程。有关这方面的更多信息,请参阅 Modelica Language Specification ,第 9.2 节,第 110 页底部,说“每个连接集用于生成...”
关于以上两点,我建议您查看一下Modelica标准库的FluidHeatFlow库,尤其是Modelica.Thermal.FluidHeatFlow.Interfaces.FlowPort
中定义的接口(interface)。从您的接口(interface)变量来看,该库服务于类似的物理域。
为了更简单地开始,仔细查看 Modelica.Thermal.HeatTransfer
也很有意义。这个包只有一对跨/流变量,使其更容易理解。
关于modelica - 计算带有连接器的模型中的方程数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58805965/
我想知道是否有其他正则化技术(例如双曲正切)而不是 smoothStep函数存在于 Modelica 中。我处理我使用的复杂代码 smoothStep几次以避免在我的模型中喋喋不休;但是,我已经在我的
尽管 Modelica 是一种非因果建模语言,但我们学到了例如here它可以改变你写方程的方式。MutualInductor的代码模型在 Modelica.Electrical.Polyphase.B
我写了一个函数,返回值为记录类型。 通常我会使用这个函数通过一个初始方程来初始化一个记录类型的实例。 但是因为我想在时钟模型中使用这个函数,所以不可能有初始方程。 对我来说,这似乎是使用属性 star
我有一个本地模型,当我在 Dymola 中检查时,该模型声称有 35 个变量和 34 个未知数,而当我在 OMEdit 中检查完全相同的模型时,它的平衡率为 34/34。在确定什么算作变量时,是否包括
我有一个参数 z,我需要其值始终为 1。 model test Real parameter z = 1; end test; 当我拖放此模型并双击它时,参数选项卡将打开,我可以更改值。我怎样才能防止
我有一组关于不规则网格的数据。我通过插值来找到 f(x,y)。我在维基百科算法的帮助下实现了双线性插值。然而,它并不准确。我想实现双三次插值或双三次样条插值。我已经找到了双三次插值的算法,但我必须找到
我想提出一个我之前问过的关于 Modelica array of partial model 的问题。 。考虑以下两个 Controller 之间的切换模型。 model Switch input
如何使用 Modelica(OpenModelica、jModelica)为工厂和 Controller 的 C/C++ 例程实现控制系统设计的软件在环。您可以建议什么方法?我认为外部 C 函数会有所
我希望使用条件表达式减少具有超过 300000 个方程的大型通用模型,以便仅保留相关部分。为了说明这个问题,我有以下最小模型: model Test parameter Boolean level
我有一组必须进行插值的数据。我的第一个数据集包含每个 x1[:] 和 y1[:] 的 z1[:] 值。我必须将第二个数据集 x2[:], y2[:] w.r.t 插入到我的第一个数据集中以获得 z2[
我有一个参数 z,我需要其值始终为 1。 model test Real parameter z = 1; end test; 当我拖放此模型并双击它时,参数选项卡将打开,我可以更改值。我怎样才能防止
我有一组关于不规则网格的数据。我通过插值来找到 f(x,y)。我在维基百科算法的帮助下实现了双线性插值。然而,它并不准确。我想实现双三次插值或双三次样条插值。我已经找到了双三次插值的算法,但我必须找到
我正在尝试在模型的 equation 部分中实现一个简单的迭代猜测方案,但是,我收到以下错误:No viable alternative near token: while 在 OpenModelic
首先我想说我是 StackOverflow 和 Modelica 的新手。 我的目标是模拟旋转爆震发动机的喷油器系统。从本质上讲,这是一个从油箱到火箭发动机的管道系统。这个系统会根据实验设置而改变,所
我想知道是否有办法“调试”modelica 代码,我的意思是逐行调试代码,您可以看到变量如何变化,诸如此类? 我知道modelica代码被翻译成C,我只是想知道是否有可能以某种方式做到这一点,如果有,
我正在尝试根据电网电压控制并网光伏系统。 这个想法是这样的:当电网电压上升到 VMax 以上时,我想关闭系统 timeOff。当 timeOff 过去后,我想再次打开,但只有当电网电压低于 VMax
我正在尝试在 Modelica.Media 的基础上建立一个新的媒体模型。我的模型从 PartialMixtureMedium 扩展而来。当模拟一个开放的容器(取自 Modelica.Fluid)时,
在 Modelica 中计算连续信号的平均值 (mean) 和标准偏差 (StdDev) 的最佳方法是什么?应计算固定时间段 T 的均值和 StdDev;即,从 t-T 到 t。 最佳答案 下面是该问
在模拟相当复杂的稳态模型以模拟多回路制冷剂系统时,我收到来自 Dymola 的以下警告消息。 The following variables are iteration variables of th
我在 Modelica 上收到一条错误消息: All branches in if equation with non-parameter tests must have the same numbe
我是一名优秀的程序员,十分优秀!