微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Modelica 在密闭容器压力锅内将水蒸发到空气中

如何解决Modelica 在密闭容器压力锅内将水蒸发到空气中

目标

压力锅的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;

问题

我尝试了很多不同的方法。这似乎是在模拟,但是一旦水开始蒸发,就会出现颤抖

enter image description here

问题

应该如何在 Modelica 中为压力锅建模?
您将如何模拟蒸发率?
哪种解决方案是最好的,以避免在跨越饱和线时出现问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。