This package contains examples for the use of models that can be found in Buildings.Fluid.MixingVolumes.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Name | Description |
---|---|
MixingVolume | |
MixingVolumeDryAir | |
MixingVolumeInitialization | Test model for mixing volume initialization |
MixingVolumeMoistAir |
model MixingVolume import Buildings; extends Modelica.Icons.Example; package Medium = Buildings.Media.PerfectGases.MoistAir;Modelica.Blocks.Sources.Ramp P( duration=0.5, startTime=0.5, height=-10, offset=101330); Buildings.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, T=293.15, use_p_in=true, nPorts=3); Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, nPorts=3, use_p_in=false, p=101325, T=283.15); Buildings.Fluid.FixedResistances.FixedResistanceDpM res1( redeclare each package Medium = Medium, from_dp=true, m_flow_nominal=2, dp_nominal=2.5); MixingVolumes.MixingVolume vol1( redeclare package Medium = Medium, V=0.1, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Buildings.Fluid.FixedResistances.FixedResistanceDpM res2( redeclare each package Medium = Medium, from_dp=true, m_flow_nominal=2, dp_nominal=2.5); Buildings.Fluid.FixedResistances.FixedResistanceDpM res11( redeclare each package Medium = Medium, from_dp=true, m_flow_nominal=2, dp_nominal=2.5); Buildings.Fluid.FixedResistances.FixedResistanceDpM res12( redeclare each package Medium = Medium, from_dp=true, m_flow_nominal=2, dp_nominal=2.5); Modelica.Fluid.Vessels.ClosedVolume vol( redeclare package Medium = Medium, V=0.1, nPorts=2, use_portsData=false, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Buildings.Utilities.Diagnostics.AssertEquality assertEquality; Buildings.Fluid.Sensors.EnthalpyFlowRate entFloRat(redeclare package Medium = Medium, m_flow_nominal=2) "Enthalpy flow rate"; Buildings.Fluid.Sensors.EnthalpyFlowRate entFloRat1(redeclare package Medium = Medium, m_flow_nominal=2) "Enthalpy flow rate"; Buildings.Fluid.MixingVolumes.MixingVolumeMoistAir vol2( redeclare package Medium = Medium, V=0.1, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Buildings.Fluid.FixedResistances.FixedResistanceDpM res21( redeclare each package Medium = Medium, from_dp=true, m_flow_nominal=2, dp_nominal=2.5); Buildings.Fluid.FixedResistances.FixedResistanceDpM res22( redeclare each package Medium = Medium, from_dp=true, m_flow_nominal=2, dp_nominal=2.5); Buildings.Utilities.Diagnostics.AssertEquality assertEquality1; Buildings.Fluid.Sensors.EnthalpyFlowRate entFloRat2(redeclare package Medium = Medium, m_flow_nominal=2) "Enthalpy flow rate"; Modelica.Blocks.Sources.Constant zero(k=0); Modelica.Blocks.Sources.Constant TLiq(k=283.15); inner Modelica.Fluid.System system; equationconnect(P.y, sou.p_in); connect(res2.port_a, entFloRat.port_b); connect(entFloRat2.H_flow, assertEquality1.u2); connect(zero.y, vol2.mWat_flow); connect(TLiq.y, vol2.TWat); connect(sou.ports[1], res1.port_a); connect(sou.ports[2], res11.port_a); connect(sou.ports[3], res21.port_a); connect(sin.ports[1], res2.port_b); connect(sin.ports[2], res12.port_b); connect(res22.port_b, sin.ports[3]); connect(res1.port_b, vol.ports[1]); connect(vol.ports[2], entFloRat.port_a); connect(res11.port_b, vol1.ports[1]); connect(vol1.ports[2], entFloRat1.port_a); connect(res21.port_b, vol2.ports[1]); connect(vol2.ports[2], entFloRat2.port_a); connect(entFloRat2.port_b, res22.port_a); connect(entFloRat1.port_b, res12.port_a); connect(entFloRat.H_flow, assertEquality.u1); connect(entFloRat.H_flow, assertEquality1.u1); connect(entFloRat1.H_flow, assertEquality.u2); end MixingVolume;
model MixingVolumeDryAir import Buildings; extends Modelica.Icons.Example; package Medium = Buildings.Media.IdealGases.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component";Modelica.Blocks.Sources.Ramp P( height=-10, offset=101330, duration=300, startTime=150); Buildings.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, nPorts=2, use_p_in=true, p=Medium.p_default, T=293.15); Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, use_p_in=false, p=101325, T=283.15, nPorts=2); MixingVolumes.MixingVolume vol1( redeclare package Medium = Medium, V=0.1, nPorts=2); Buildings.Fluid.FixedResistances.FixedResistanceDpM res11( redeclare each package Medium = Medium, dp_nominal=5, from_dp=true, m_flow_nominal=2); Buildings.Fluid.FixedResistances.FixedResistanceDpM res12( redeclare each package Medium = Medium, dp_nominal=5, from_dp=true, m_flow_nominal=2); Buildings.Fluid.Sensors.EnthalpyFlowRate entFloRat1(redeclare package Medium = Medium, m_flow_nominal=2) "Enthalpy flow rate"; Buildings.Fluid.FixedResistances.FixedResistanceDpM res21( redeclare each package Medium = Medium, dp_nominal=5, from_dp=true, m_flow_nominal=2); Buildings.Fluid.FixedResistances.FixedResistanceDpM res22( redeclare each package Medium = Medium, dp_nominal=5, from_dp=true, m_flow_nominal=2); Buildings.Utilities.Diagnostics.AssertEquality assertEquality1(startTime=0); Buildings.Fluid.Sensors.EnthalpyFlowRate entFloRat2(redeclare package Medium = Medium, m_flow_nominal=2) "Enthalpy flow rate"; Modelica.Blocks.Sources.Constant zero(k=0); Modelica.Blocks.Sources.Constant TLiq(k=283.15); inner Modelica.Fluid.System system; Buildings.Fluid.MixingVolumes.MixingVolumeDryAir vol2( redeclare package Medium = Medium, V=0.1, nPorts=2); equationconnect(res12.port_a, entFloRat1.port_b); connect(res22.port_a, entFloRat2.port_b); connect(entFloRat2.H_flow, assertEquality1.u2); connect(res11.port_b, vol1.ports[1]); connect(entFloRat1.port_a, vol1.ports[2]); connect(res21.port_b, vol2.ports[1]); connect(vol2.ports[2], entFloRat2.port_a); connect(zero.y, vol2.mWat_flow); connect(TLiq.y, vol2.TWat); connect(entFloRat1.H_flow, assertEquality1.u1); connect(sou.ports[1], res11.port_a); connect(sou.ports[2], res21.port_a); connect(res12.port_b, sin.ports[1]); connect(res22.port_b, sin.ports[2]); connect(P.y, sou.p_in); end MixingVolumeDryAir;
model MixingVolumeInitialization "Test model for mixing volume initialization" extends Modelica.Icons.Example; package Medium = Buildings.Media.IdealGases.SimpleAir;Buildings.Fluid.Sources.Boundary_pT sou1(redeclare package Medium = Medium, p=101330, nPorts=1, T=293.15); Buildings.Fluid.Sources.Boundary_pT sin1(redeclare package Medium = Medium, p=101320, nPorts=1, T=293.15); Modelica.Fluid.Pipes.StaticPipe pipe1( redeclare package Medium = Medium, length=1, diameter=0.25); Modelica.Fluid.Pipes.StaticPipe pipe2( redeclare package Medium = Medium, length=1, diameter=0.25); MixingVolumes.MixingVolume vol1( redeclare package Medium = Medium, V=0.1, nPorts=2); inner Modelica.Fluid.System system; equationconnect(sou1.ports[1], pipe1.port_a); connect(pipe1.port_b, vol1.ports[1]); connect(vol1.ports[2], pipe2.port_a); connect(pipe2.port_b, sin1.ports[1]); end MixingVolumeInitialization;
model MixingVolumeMoistAir extends Modelica.Icons.Example; import Buildings; // package Medium = Buildings.Media.PerfectGases.MoistAir; package Medium = Buildings.Media.GasesPTDecoupled.MoistAir; // package Medium = Buildings.Media.GasesPTDecoupled.MoistAirUnsaturated;Buildings.Fluid.MixingVolumes.MixingVolumeMoistAir vol1( redeclare package Medium = Medium, V=1, nPorts=2, use_HeatTransfer=true) "Volume"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TSen "Temperature sensor"; Modelica.Blocks.Sources.Constant XSet(k=0.005) "Set point for water mass fraction"; Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo; Modelica.Blocks.Sources.Constant TSet(k=273.15 + 20) "Set point for temperature"; Buildings.Utilities.Psychrometrics.pW_X humRat( use_p_in=false) "Conversion from humidity ratio to partial water vapor pressure"; Buildings.Utilities.Psychrometrics.TDewPoi_pW dewPoi "Dew point temperature"; Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor; Modelica.Blocks.Continuous.Integrator QSen "Sensible heat transfer"; Modelica.Blocks.Continuous.Integrator QWat "Enthalpy of extracted water"; Modelica.Blocks.Sources.RealExpression HWat_flow(y=vol1.HWat_flow) "MoistAir heat flow rate"; Buildings.Fluid.Sources.MassFlowSource_T sou( redeclare package Medium = Medium, nPorts=1, T=293.15); Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, nPorts=1, T=293.15); Buildings.Controls.Continuous.LimPID PI( Ni=0.1, yMax=1000, k=1, Ti=1, Td=1, controllerType=Modelica.Blocks.Types.SimpleController.PI, wd=0); Buildings.Controls.Continuous.LimPID PI1( Ni=0.1, Ti=1, controllerType=Modelica.Blocks.Types.SimpleController.PI, k=10, yMax=1, yMin=-1, Td=1); Buildings.Fluid.Sensors.MassFlowRate mIn_flow(redeclare package Medium = Medium); Buildings.Fluid.Sensors.MassFlowRate mOut_flow(redeclare package Medium = Medium); Modelica.Blocks.Math.Add dM_flow(k2=-1); Modelica.Blocks.Math.Gain gai(k=200); Modelica.Blocks.Math.Gain gai1(k=0.1); inner Modelica.Fluid.System system; equationconnect(preHeaFlo.port, heatFlowSensor.port_a); connect(heatFlowSensor.Q_flow, QSen.u); connect(HWat_flow.y,QWat. u); connect(TSet.y, PI.u_s); connect(TSen.T, PI.u_m); connect(XSet.y, PI1.u_s); connect(mOut_flow.m_flow, dM_flow.u1); connect(mIn_flow.m_flow, dM_flow.u2); connect(gai.y, preHeaFlo.Q_flow); connect(PI1.y, gai1.u); connect(gai1.y, vol1.mWat_flow); connect(dewPoi.T, vol1.TWat); connect(vol1.X_w, PI1.u_m); connect(vol1.X_w, humRat.X_w); connect(sou.ports[1], mIn_flow.port_a); connect(mOut_flow.port_b, sin.ports[1]); connect(heatFlowSensor.port_b, vol1.heatPort); connect(TSen.port, vol1.heatPort); connect(mIn_flow.port_b, vol1.ports[1]); connect(mOut_flow.port_a, vol1.ports[2]); connect(PI.y, gai.u); connect(humRat.p_w, dewPoi.p_w); end MixingVolumeMoistAir;