- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个本地模型,当我在 Dymola 中检查时,该模型声称有 35 个变量和 34 个未知数,而当我在 OMEdit 中检查完全相同的模型时,它的平衡率为 34/34。在确定什么算作变量时,是否包括所有输入和输出?
下面是我的模型:
model HeatStorage
extends PentakomoPlant.Interfaces.StorageFluidHeat;
parameter SI.Diameter D = 18.667 "Diameter";
parameter SI.Height H = 20 "Height";
parameter Boolean enable_losses = false "= true enable thermal losses with environment"
parameter SI.CoefficientOfHeatTransfer alpha = 1 "Constant heat transfer coefficient with the ambient"
parameter Boolean use_L = false "= true to display level as output variable"
parameter Real L_start = 0 "Start value of level in %"
parameter SI.Temperature T_start = from_degC(300) "Start value of temperature"
parameter SI.Temperature T_max = from_degC(550) "Maximum tank temperature"
parameter SI.Temperature T_set = from_degC(300) "Tank Heater Temperature Set-Point"
parameter SI.Power W_max = 30e8 "Hot Tank Heater Capacity"
parameter SI.Efficiency e_ht = 0.99 "Tank Heater Efficiency"
SI.Volume V;
SI.Mass m;
Medium.BaseProperties medium;
SI.Area A;
SI.HeatFlowRate Q_losses;
Medium.ThermodynamicState state_i = Medium.setState_pTX(medium.p, T_start);
SI.Power W_net;
SI.Power W_loss;
Modelica.Blocks.Interfaces.RealOutput L if use_L "Tank level in %"
Modelica.Blocks.Interfaces.RealInput T_amb if enable_losses
Modelica.Blocks.Interfaces.RealInput Q_heater
SI.HeatFlowRate Q_PB "Heat Flow to PowerBlock";
SI.HeatFlowRate Q_desal "Heat Flow to Desalination";
protected
parameter SI.Volume V_t = H * pi * D ^ 2 / 4;
Modelica.Blocks.Interfaces.RealOutput L_internal;
initial equation
medium.h = Medium.specificEnthalpy(state_i);
m = Medium.density(state_i) * V_t;
equation
if use_L then
connect(L_internal, L);
end if;
if enable_losses then
connect(T_amb_internal, T_amb);
Q_losses = -0.939 * exp(to_degC(medium.T) * 0.005111) * 1000;//*5/7;
else
T_amb_internal = Medium.T_default;
Q_losses = 0;
end if;
fluid_a.p = medium.p;
fluid_b.p = medium.p;
fluid_a.h_outflow = medium.h;
fluid_b.h_outflow = medium.h;
der(m) = fluid_a.m_flow + fluid_b.m_flow;
m * der(medium.h) + der(m) * medium.h = Q_losses + Q_PB + Q_desal + W_net + fluid_a.m_flow * inStream(fluid_a.h_outflow) + fluid_b.m_flow * medium.h;
V = m / medium.d;
L_internal = 100 * (max(medium.T, T_set) - T_set) / (T_max - T_set);
A = 2 * pi * (D / 2) * H;
W_net = Q_heater;
W_loss = W_net / e_ht;
//PowerBlock
heat_PB.Q_flow = Q_PB;
heat_DS.Q_flow = Q_desal;
heat_PB.T = medium.T;
heat_DS.T = medium.T;
end HeatStorage;
与:
partial model StorageFluidHeat
extends SolarTherm.Icons.StorageModel;
Modelica.Fluid.Interfaces.FluidPort_a fluid_a(redeclare package Medium = Medium)
Modelica.Fluid.Interfaces.FluidPort_b fluid_b(redeclare package Medium = Medium)
replaceable package Medium = SolarTherm.Media.MoltenSalt.MoltenSalt_base
constrainedby Modelica.Media.Interfaces.PartialMedium
"Medium in the component"
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b heat_PB
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b heat_DS
end StorageFluidHeat;
并且(对于介质的基本属性):
redeclare model extends BaseProperties(final standardOrderComponents=true)
"Base properties of medium"
equation
d = rho_T(T);
h = state.h;
u = h - p/d;
MM = 0.091438;
R = 8.3144/MM;
state.p = p;
T = T_h(h);
end BaseProperties;
我正在努力寻找额外变量可能在哪里,或者为什么在使用 Dymola/OMEdit 时它可能会有所不同。
我尝试遵循 ELmqvist 关于平衡模型的建议,因此在计算变量时我的假设是正确的(对于此模型):
8 x 专用类变量3 个输入2 个输出7 x 中等基础属性变量2 x 5 x 流体端口变量2 x 2 x 热端口变量
= 34 个变量
我错过了什么吗?
最佳答案
该模型并不完整,所有库都可以进行测试(假设其他媒体也存在类似问题),因此这将是一个不完整的答案。
此外,似乎可以删除一些方程和变量以简化模型。
但是该模型存在一些问题:
请注意,本地模型的测试可能很棘手 - 您最好也将其包含在测试电路中。
关于modelica - 平衡本地模型 Modelica,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48441444/
我想知道是否有其他正则化技术(例如双曲正切)而不是 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
我是一名优秀的程序员,十分优秀!