我很难找到一个简单的集总体积能量 balancer 的最佳方法,比如管道,流体流动和热流输出 . 我基本上只想在能量 balancer 中添加一个Q_loss术语来降低流过的任何流体的温度,但保持整体模型非常简单(没有摩擦,压力,对流损失等) .
我试着写一个简单的模型但是我遇到了比我需要的更少的等式 . 有没有办法在不修复压力的情况下做到这一点?
我的代码(媒体不是标准的,可能需要重新申报):
model IdealLossPipe
extends SolarTherm.Interfaces.Models.Pipe;
Medium.BaseProperties medium;
replaceable package Medium = SolarTherm.Media.MoltenSalt.MoltenSalt_base
constrainedby Modelica.Media.Interfaces.PartialMedium
Modelica.Fluid.Interfaces.FluidPort_a fluid_a(redeclare package Medium =
Medium);
Modelica.Fluid.Interfaces.FluidPort_b fluid_b(redeclare package Medium =
Medium) annotation (Placement(transformation(extent={{110,-10},{90,10}}, rotation=0),
iconTransformation(extent={{110,-10},{90,10}})));
parameter Real Q_loss_spec(unit="W/m") = 284 "Heat loss per m of piping";
SI.HeatFlowRate Q_loss;
parameter SI.Length length = 13.1 annotation(Dialog(group="Length"));
parameter SI.Length diameter = 0.052;
SI.Energy U;
SI.Mass m;
SI.Volume V;
equation
V = length*(diameter/2)^2*Modelica.Constants.pi;
m=V*medium.d;
U=m*medium.u;
fluid_a.p=medium.p;
fluid_b.p=medium.p;
(instream(fluid_a.h_outflow)+fluid_b.h_outflow)/2=medium.h;
fluid_a.h_outflow=0;
Q_loss=-length*Q_loss_spec;
//Mass Balance
fluid_a.m_flow+fluid_b.m_flow=der(m);
//Energy Balance
der(U)= fluid_a.m_flow*inStream(fluid_a.h_outflow) + fluid_b.m_flow*fluid_b.h_outflow + Q_loss;
end IdealLossPipe;
提前谢谢你帮助我!
编辑:在我的模型中删除了不必要的热量
1 回答
我编辑了你的模型(见下文) . 一些新增内容包括
medium
的初始化,如果对基本属性使用该方法,则需要初始化 . 仔细查看现有的开源流体库(例如,Modelica标准库,TRANSFORM或ThermoPower)以了解它们如何操作或使用它们的组件将会很有帮助 .要记住的一件事是模型的“流量与体积”或“非状态(流量)与状态(非流量/体积)”表示 . 暴露状态的端口设定连接器的状态变量的值(即,流体的压力),而非状态端口设定连接器的流量变量(即,流体的质量流量) . 因此,对于流体,您需要确保不连接每个设置压力的端口(状态变量) . 与质量流量相似,但求解者往往更宽容 .
作为参考,您的模型设置状态变量(
fluid_a.p = medium.p
,fluid_b.p = medium.p
) . 一个简单的模型示例希望将每个端口与设置质量流量的模型连接,例如fluid_a
上的质量流量源和fluid_b
上的压力边界后面的电阻元素 .