问题描述
目标
压力锅的Modelica模型:
我想模拟液态水如何首先加热到饱和点。然后水蒸发并与空气混合。开始时,液态水的体积为 1 升,空气的体积为 100 升。
方法
- 引入的热量只传给液态水
- 液态水和潮湿空气之间的热交换仅是由于蒸发质量流量
- 总体积是固定的(容器体积)
- 墙体的热容量被忽略,没有热量通过墙体损失
- Modelica.Media.Water.StandardWater 用于液态水
- Modelica.Media.Air.MoistAir 用于气相(空气和蒸汽)
- 目前只有基于文本的模型(没有端口,没有组件......)
代码
model PressureCooker_Stackoverflow "Vater/Vapor/Air,Constant mass (no ports),constant total volume"
extends Modelica.Icons.Example;
import Modelica.Units.SI;
parameter SI.HeatFlowRate Qflow = 1000;
parameter SI.Volume Vtot = 0.100;
parameter SI.Volume Vw_start = 0.001;
parameter SI.AbsolutePressure p_start = 101325;
parameter SI.Temperature T_start = 293.15;
parameter SI.MassFraction Xw_start = 0.001;
package Water = Modelica.Media.Water.StandardWater;
Water.BaseProperties water(preferredMediumStates = true);
SI.Mass Mw = Vw * water.d;
SI.Energy Uw = Mw * water.u;
Water.SpecificEnthalpy hb = Water.bubbleEnthalpy(water.sat);
Water.SpecificEnthalpy hd = Water.dewEnthalpy(water.sat);
Water.SpecificEnthalpy dhEvap = hd - hb;
SI.Volume Vw;
SI.Power WflowW = -p * der(Vw);
package Air = Modelica.Media.Air.MoistAir;
Air.BaseProperties air(preferredMediumStates = true);
SI.Mass Ma = Va * air.d;
SI.Mass MXv = Ma * air.Xi[1];
SI.Energy Ua = Ma * air.u;
SI.Volume Va;
SI.Power WflowA = -p * der(Va);
SI.MassFlowRate MflowEvap;
Water.EnthalpyFlowRate HflowEvap;
Water.AbsolutePressure p;
// Variables for plotting,not needed for modeling
SI.Mass Mtot = Mw + Ma;
Real x = max(0,min(1,(water.h - hb) / (hd - hb)));
Real dxdt = if (x>0 and x<1) then der(x) else 0;
equation
Vtot = Va + Vw;
water.p = p;
air.p = p;
if noEvent(water.h<=hb) then
MflowEvap = 0;
HflowEvap = 0;
else
MflowEvap = (Qflow + WflowW)/dhEvap;
HflowEvap = MflowEvap * hd;
end if;
der(Mw) = -MflowEvap;
der(Uw) = Qflow + WflowW - HflowEvap;
der(Ma) = MflowEvap;
der(MXv) = MflowEvap;
der(Ua) = WflowA + HflowEvap; //- QflowLoad;
initial equation
p = p_start;
water.T = T_start;
air.T = T_start;
air.Xi[1] = Xw_start;
Vw = Vw_start;
annotation (Icon(coordinateSystem(preserveAspectRatio=false)),Diagram(coordinateSystem(preserveAspectRatio=false)),experiment(
StopTime=3000,__Dymola_NumberOfIntervals=10000,__Dymola_Algorithm="Dassl"));
end PressureCooker_Stackoverflow;
问题
我尝试了很多不同的方法。这似乎是在模拟,但是一旦水开始蒸发,就会出现颤抖:
问题
应该如何在 Modelica 中为压力锅建模?
您将如何模拟蒸发率?
哪种解决方案是最好的,以避免在跨越饱和线时出现问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)