LBL logo

Buildings.Fluid.MixingVolumes.Examples

Collection of models that illustrate model use and test models

Information

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).

Package Content

NameDescription
Buildings.Fluid.MixingVolumes.Examples.MixingVolume MixingVolume  
Buildings.Fluid.MixingVolumes.Examples.MixingVolumeDryAir MixingVolumeDryAir  
Buildings.Fluid.MixingVolumes.Examples.MixingVolumeInitialization MixingVolumeInitialization Test model for mixing volume initialization
Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMoistAir MixingVolumeMoistAir  
Buildings.Fluid.MixingVolumes.Examples.MixingVolumeHeatConduction MixingVolumeHeatConduction Test model for heat transfer to volume
Buildings.Fluid.MixingVolumes.Examples.MixingVolumePrescribedHeatFlowRate MixingVolumePrescribedHeatFlowRate Test model for heat transfer to volume
Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMassFlow MixingVolumeMassFlow Test model for mass flow into and out of volume


Buildings.Fluid.MixingVolumes.Examples.MixingVolume Buildings.Fluid.MixingVolumes.Examples.MixingVolume

Buildings.Fluid.MixingVolumes.Examples.MixingVolume

Information

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model MixingVolume
  import Buildings;
  extends Modelica.Icons.Example;

  package Medium = Buildings.Media.PerfectGases.MoistAirUnsaturated;

    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,
    m_flow_nominal=2);
    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,
    m_flow_nominal=2);
    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;
equation 
  connect(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;

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeDryAir Buildings.Fluid.MixingVolumes.Examples.MixingVolumeDryAir

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeDryAir

Information

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

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,
    m_flow_nominal=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,
    m_flow_nominal=2);
equation 
  connect(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;

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeInitialization Buildings.Fluid.MixingVolumes.Examples.MixingVolumeInitialization

Test model for mixing volume initialization

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeInitialization

Information

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

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,
    m_flow_nominal=2);
  inner Modelica.Fluid.System system;
equation 
  connect(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;

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMoistAir Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMoistAir

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMoistAir

Information

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

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,
    m_flow_nominal=0.001,
    energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial) "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;
equation 
  connect(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;

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeHeatConduction Buildings.Fluid.MixingVolumes.Examples.MixingVolumeHeatConduction

Test model for heat transfer to volume

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeHeatConduction

Information

This model demonstrates the use of the mixing volume with heat conduction to the ambient. The mixing volume is configured as a steady-state model.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model MixingVolumeHeatConduction 
  "Test model for heat transfer to volume"
  extends Modelica.Icons.Example;
    package Medium = Modelica.Media.Air.SimpleAir;
  Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(G=10) 
    "Thermal conductor";
  Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heaFlo 
    "Heat flow sensor";
  Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TAmb(T=293.15) 
    "Ambient temperature";
  Modelica.Fluid.Sources.MassFlowSource_T sou(
    redeclare package Medium = Medium,
    use_m_flow_in=true,
    T=313.15,
    nPorts=1) "Flow source and sink";
  Modelica.Fluid.Sources.FixedBoundary bou(
    redeclare package Medium = Medium,
    T=303.15,
    nPorts=1) "Boundary condition";
  Buildings.Fluid.MixingVolumes.MixingVolume vol(
    V=1,
    redeclare package Medium = Medium,
    m_flow_nominal=0.01,
    energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
    massDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
    allowFlowReversal=true,
    prescribedHeatFlowRate=false,
    nPorts=2);
  Modelica.Blocks.Sources.Ramp ramp(
    duration=1,
    offset=1,
    height=-2);
  inner Modelica.Fluid.System system;
  Modelica.Blocks.Math.Gain gain(k=0.01);
equation 
  connect(TAmb.port, theCon.port_a);
  connect(heaFlo.port_b, vol.heatPort);
  connect(ramp.y, gain.u);
  connect(gain.y, sou.m_flow_in);
  connect(theCon.port_b, heaFlo.port_a);
  connect(sou.ports[1], vol.ports[1]);
  connect(vol.ports[2], bou.ports[1]);
end MixingVolumeHeatConduction;

Buildings.Fluid.MixingVolumes.Examples.MixingVolumePrescribedHeatFlowRate Buildings.Fluid.MixingVolumes.Examples.MixingVolumePrescribedHeatFlowRate

Test model for heat transfer to volume

Buildings.Fluid.MixingVolumes.Examples.MixingVolumePrescribedHeatFlowRate

Information

This model demonstrates the use of the mixing volume with a prescribed heat flow rate. The mixing volume is configured as a steady-state model. The heat flow rate is set to a very small value. This model is used to test convergence for the case the the prescribed heat flow rate should be zero, but due to numerical solutions, it may have a small error that causes the signal to be non-zero.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model MixingVolumePrescribedHeatFlowRate 
  "Test model for heat transfer to volume"
  extends Modelica.Icons.Example;
    package Medium = Modelica.Media.Air.SimpleAir;
  Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heaFlo 
    "Heat flow sensor";
  Modelica.Fluid.Sources.MassFlowSource_T sou(
    nPorts=1,
    redeclare package Medium = Medium,
    use_m_flow_in=true,
    T=313.15) "Flow source and sink";
  Modelica.Fluid.Sources.FixedBoundary bou(
    redeclare package Medium = Medium,
    nPorts=1,
    T=303.15) "Boundary condition";
  Buildings.Fluid.MixingVolumes.MixingVolume vol(
    V=1,
    nPorts=2,
    redeclare package Medium = Medium,
    m_flow_nominal=0.01,
    energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
    massDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
    allowFlowReversal=true,
    prescribedHeatFlowRate=true);
  Modelica.Blocks.Sources.Ramp ramp(
    duration=1,
    offset=1,
    height=-2);
  inner Modelica.Fluid.System system;
  Modelica.Blocks.Math.Gain gain(k=0.01);
  Modelica.Blocks.Sources.Constant const(k=0);
  Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo 
    "Prescribed heat flow rate";
equation 
  connect(sou.ports[1], vol.ports[1]);
  connect(ramp.y, gain.u);
  connect(gain.y, sou.m_flow_in);
  connect(vol.ports[2], bou.ports[1]);
  connect(preHeaFlo.port, heaFlo.port_a);
  connect(preHeaFlo.Q_flow, const.y);
  connect(heaFlo.port_b, vol.heatPort);
end MixingVolumePrescribedHeatFlowRate;

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMassFlow Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMassFlow

Test model for mass flow into and out of volume

Buildings.Fluid.MixingVolumes.Examples.MixingVolumeMassFlow

Information

This model demonstrates the use of the mixing volume with air flowing into and out of the volume.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model MixingVolumeMassFlow 
  "Test model for mass flow into and out of volume"
  extends Modelica.Icons.Example;
 //   package Medium = Modelica.Media.Air.SimpleAir;
 package Medium = Buildings.Media.GasesConstantDensity.SimpleAir;
  Modelica.Fluid.Sources.MassFlowSource_T sou(
    redeclare package Medium = Medium,
    nPorts=1,
    use_m_flow_in=false,
    m_flow=1,
    T=313.15) "Flow source and sink";
  Modelica.Fluid.Sources.FixedBoundary bou(
    redeclare package Medium = Medium,
    T=303.15,
    nPorts=1) "Boundary condition";
  Buildings.Fluid.MixingVolumes.MixingVolume vol(
    V=1,
    redeclare package Medium = Medium,
    m_flow_nominal=0.01,
    nPorts=2,
    allowFlowReversal=false);
  inner Modelica.Fluid.System system;
equation 
  connect(sou.ports[1], vol.ports[1]);
  connect(vol.ports[2], bou.ports[1]);
end MixingVolumeMassFlow;

Automatically generated Wed Feb 22 15:22:36 2012.