Buildings.Airflow.Multizone.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.Airflow.Multizone.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

NameDescription
Buildings.Airflow.Multizone.Examples.ChimneyShaftNoVolume ChimneyShaftNoVolume Test model that demonstrates the chimney effect with a shaft that does not contain an air volume
Buildings.Airflow.Multizone.Examples.ChimneyShaftWithVolume ChimneyShaftWithVolume Test model that demonstrates the chimney effect with a shaft that contains an air volume
Buildings.Airflow.Multizone.Examples.CO2TransportStep CO2TransportStep Model that transport CO2 through buoyancy driven flow
Buildings.Airflow.Multizone.Examples.OneDoor OneDoor  
Buildings.Airflow.Multizone.Examples.OneOpenDoor OneOpenDoor  
Buildings.Airflow.Multizone.Examples.OpenDoors OpenDoors  
Buildings.Airflow.Multizone.Examples.OneEffectiveAirLeakageArea OneEffectiveAirLeakageArea  
Buildings.Airflow.Multizone.Examples.Orifice Orifice  
Buildings.Airflow.Multizone.Examples.ReverseBuoyancy ReverseBuoyancy  
Buildings.Airflow.Multizone.Examples.ReverseBuoyancy3Zones ReverseBuoyancy3Zones  
Buildings.Airflow.Multizone.Examples.Validation0 Validation0  
Buildings.Airflow.Multizone.Examples.Validation1 Validation1  
Buildings.Airflow.Multizone.Examples.NaturalVentilation NaturalVentilation  
Buildings.Airflow.Multizone.Examples.ZonalFlow ZonalFlow  


Buildings.Airflow.Multizone.Examples.ChimneyShaftNoVolume Buildings.Airflow.Multizone.Examples.ChimneyShaftNoVolume

Test model that demonstrates the chimney effect with a shaft that does not contain an air volume

Buildings.Airflow.Multizone.Examples.ChimneyShaftNoVolume

Information

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

Modelica definition

model ChimneyShaftNoVolume 
  "Test model that demonstrates the chimney effect with a shaft that does not contain an air volume"
  extends Modelica.Icons.Example;
  import Buildings;
  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Fluid.MixingVolumes.MixingVolume roo(
    nPorts=3,
    V=2.5*5*5,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 20,
    redeclare package Medium = Medium,
    m_flow_nominal=0.05,
    p_start=101325) "Air volume of a room";
  Buildings.Airflow.Multizone.Orifice oriChiTop(
    m=0.5,
    redeclare package Medium = Medium,
    A=0.01);
  Buildings.Fluid.Sources.MassFlowSource_T boundary(
    redeclare package Medium = Medium,
    nPorts=1,
    use_m_flow_in=true,
    T=293.15);
  Buildings.Fluid.Sources.Boundary_pT bou0(
    redeclare package Medium = Medium,
    T=273.15,
    nPorts=2);
  Buildings.Airflow.Multizone.Orifice oriBot(
    m=0.5,
    redeclare package Medium = Medium,
    A=0.01);
  Modelica.Blocks.Sources.CombiTimeTable mRoo_flow(tableOnFile=false, table=[0,
        0.05; 600,0.05; 601,0; 1800,0; 1801,-0.05; 2400,-0.05; 2401,0; 3600,0]) 
    "Mass flow into and out of room to fill the medium column with air of different temperature";
  MediumColumn staOut(
    redeclare package Medium = Medium,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop,
    h=1.5) "Model for stack effect";
  Buildings.Airflow.Multizone.Orifice oriChiBot(
    m=0.5,
    redeclare package Medium = Medium,
    A=0.01);
  Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHea 
    "Prescribed heat flow";
  Buildings.Controls.Continuous.LimPID con(
    Td=10,
    yMax=1,
    yMin=-1,
    Ti=60,
    controllerType=Modelica.Blocks.Types.SimpleController.P,
    k=5) "Controller to maintain volume temperature";
  Modelica.Blocks.Sources.Constant TSet(k=293.15) "Temperature set point";
  Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temSen 
    "Temperature sensor";
  Modelica.Blocks.Math.Gain gain(k=3000);
  inner Modelica.Fluid.System system;
  Buildings.Airflow.Multizone.MediumColumn sha(redeclare package Medium =
        Medium, densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.actual) 
    "Shaft of chimney";
  MediumColumn staOut1(
    redeclare package Medium = Medium,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom,
    h=1.5) "Model for stack effect";

equation 
  connect(boundary.ports[1],roo. ports[1]);
  connect(TSet.y, con.u_s);
  connect(temSen.T, con.u_m);
  connect(gain.u, con.y);
  connect(gain.y, preHea.Q_flow);
  connect(sha.port_a, oriChiTop.port_a);
  connect(sha.port_b, oriChiBot.port_b);
  connect(staOut.port_b, oriBot.port_a);
  connect(preHea.port, roo.heatPort);
  connect(roo.heatPort, temSen.port);
  connect(bou0.ports[1], oriChiTop.port_b);
  connect(bou0.ports[2], staOut.port_a);
  connect(roo.ports[2], oriChiBot.port_a);
  connect(oriBot.port_b, staOut1.port_a);
  connect(staOut1.port_b, roo.ports[3]);
  connect(mRoo_flow.y[1], boundary.m_flow_in);
end ChimneyShaftNoVolume;

Buildings.Airflow.Multizone.Examples.ChimneyShaftWithVolume Buildings.Airflow.Multizone.Examples.ChimneyShaftWithVolume

Test model that demonstrates the chimney effect with a shaft that contains an air volume

Buildings.Airflow.Multizone.Examples.ChimneyShaftWithVolume

Information

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

Modelica definition

model ChimneyShaftWithVolume 
  "Test model that demonstrates the chimney effect with a shaft that contains an air volume"
  extends Modelica.Icons.Example;
  import Buildings;
  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Fluid.MixingVolumes.MixingVolume roo(
    nPorts=3,
    V=2.5*5*5,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 20,
    redeclare package Medium = Medium,
    m_flow_nominal=0.05,
    p_start=101325) "Air volume of a room";
  Buildings.Airflow.Multizone.Orifice oriChiTop(
    m=0.5,
    redeclare package Medium = Medium,
    A=0.01);
  Buildings.Fluid.Sources.MassFlowSource_T boundary(
    redeclare package Medium = Medium,
    nPorts=1,
    use_m_flow_in=true,
    T=293.15);
  Buildings.Fluid.Sources.Boundary_pT bou0(
    redeclare package Medium = Medium,
    T=273.15,
    nPorts=2);
  Buildings.Airflow.Multizone.Orifice oriBot(
    m=0.5,
    redeclare package Medium = Medium,
    A=0.01);
  MediumColumn staOut(
    redeclare package Medium = Medium,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop,
    h=3/2) "Model for stack effect";
  Buildings.Airflow.Multizone.Orifice oriChiBot(
    m=0.5,
    redeclare package Medium = Medium,
    A=0.01);
  Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHea 
    "Prescribed heat flow";
  Buildings.Controls.Continuous.LimPID con(
    Td=10,
    yMax=1,
    yMin=-1,
    Ti=60,
    controllerType=Modelica.Blocks.Types.SimpleController.P,
    k=5) "Controller to maintain volume temperature";
  Modelica.Blocks.Sources.Constant TSet(k=293.15) "Temperature set point";
  Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temSen 
    "Temperature sensor";
  Modelica.Blocks.Math.Gain gain(k=3000);
  inner Modelica.Fluid.System system;
  Buildings.Airflow.Multizone.MediumColumnDynamic sha(
                                              redeclare package Medium = Medium,
      V=3,
    m_flow_nominal=0.05) "Shaft of chimney";
  MediumColumn staOut1(
    redeclare package Medium = Medium,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom,
    h=3/2) "Model for stack effect";

  Modelica.Blocks.Sources.CombiTimeTable mRoo_flow(tableOnFile=false, table=[0,0.05;
        600,0.05; 601,0; 1800,0; 1801,-0.05; 2400,-0.05; 2401,0; 3600,0]) 
    "Mass flow into and out of room to fill the medium column with air of different temperature";
    
equation 
  connect(boundary.ports[1],roo. ports[1]);
  connect(TSet.y, con.u_s);
  connect(temSen.T, con.u_m);
  connect(gain.u, con.y);
  connect(gain.y, preHea.Q_flow);
  connect(sha.port_a, oriChiTop.port_a);
  connect(sha.port_b, oriChiBot.port_b);
  connect(staOut.port_b, oriBot.port_a);
  connect(preHea.port, roo.heatPort);
  connect(roo.heatPort, temSen.port);
  connect(bou0.ports[1], oriChiTop.port_b);
  connect(bou0.ports[2], staOut.port_a);
  connect(roo.ports[2], oriChiBot.port_a);
  connect(oriBot.port_b, staOut1.port_a);
  connect(staOut1.port_b, roo.ports[3]);
  connect(mRoo_flow.y[1], boundary.m_flow_in);
end ChimneyShaftWithVolume;

Buildings.Airflow.Multizone.Examples.CO2TransportStep Buildings.Airflow.Multizone.Examples.CO2TransportStep

Model that transport CO2 through buoyancy driven flow

Buildings.Airflow.Multizone.Examples.CO2TransportStep

Information

In this model, all volumes have zero CO2 concentration at initial time. At t=3600, CO2 is added to volWes. As time progresses, the CO2 is transported to the other rooms, and eventually its concentration decays.

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

Modelica definition

model CO2TransportStep 
  "Model that transport CO2 through buoyancy driven flow"
  extends Modelica.Icons.Example;

  package Medium = Buildings.Media.IdealGases.SimpleAir(extraPropertiesNames={"CO2"});

  Buildings.Fluid.MixingVolumes.MixingVolume volEas(
    redeclare package Medium = Medium,
    T_start=273.15 + 20,
    V=2.5*5*5*1,
    nPorts=6,
    energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
    traceDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    C_nominal={1E-6},
    m_flow_nominal=0.001);

  Buildings.Airflow.Multizone.Orifice oriOutBot(
    redeclare package Medium = Medium,
    A=0.01,
    m=0.5);
  Buildings.Airflow.Multizone.MediumColumn colOutTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriOutTop(
    redeclare package Medium = Medium,
    A=0.01,
    m=0.5);
  Buildings.Airflow.Multizone.MediumColumn colEasInTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Fluid.Sources.FixedBoundary volOut(
    redeclare package Medium = Medium,
    nPorts=2,
    p(displayUnit="Pa") = 101325,
    T=283.15);

  Buildings.Airflow.Multizone.MediumColumn colEasInBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colOutBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colWesBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriWesTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01);

  Buildings.Airflow.Multizone.MediumColumn colWesTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    wOpe=1,
    hOpe=2.2,
    CDOpe=0.78,
    CDClo=0.78,
    nCom=10,
    hA=3/2,
    hB=3/2,
    dp_turbulent(displayUnit="Pa") = 0.01) "Discretized door";
  Fluid.MixingVolumes.MixingVolume volWes(
    redeclare package Medium = Medium,
    T_start=273.15 + 25,
    nPorts=5,
    V=2.5*5*5,
    energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
    traceDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    p_start=101325,
    C_nominal={1E-6},
    m_flow_nominal=0.001);
  Modelica.Blocks.Sources.Constant open(k=1);
  Buildings.Airflow.Multizone.MediumColumn col1EasBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriEasTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01);
  Buildings.Airflow.Multizone.MediumColumn colEasTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Fluid.MixingVolumes.MixingVolume volTop(
    redeclare package Medium = Medium,
    T_start=273.15 + 20,
    V=2.5*5*10*1,
    nPorts=3,
    energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
    traceDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    C_nominal={1E-6},
    m_flow_nominal=0.001);

  inner Modelica.Fluid.System system;
  Buildings.HeatTransfer.Sources.FixedTemperature TTop(T=293.15) 
    "Fixed temperature";
  Buildings.HeatTransfer.Sources.FixedTemperature TWes(T=298.15) 
    "Fixed temperature";
  Buildings.HeatTransfer.Sources.FixedTemperature TEas(T=293.15) 
    "Fixed temperature";
  Fluid.Sensors.TraceSubstances CO2SenTop(redeclare package Medium = Medium) 
    "CO2 sensor";
  Fluid.Sensors.TraceSubstances CO2SenWes(redeclare package Medium = Medium) 
    "CO2 sensor";
  Fluid.Sensors.TraceSubstances CO2SenEas(redeclare package Medium = Medium) 
    "CO2 sensor";
  Modelica.Blocks.Sources.Pulse pulse(
    amplitude=8.18E-6,
    width=1/24/10,
    period=86400,
    startTime=3600);
  Fluid.Sources.PrescribedExtraPropertyFlowRate prescribedExtraPropertyFlowRate(
    redeclare package Medium = Medium,
    use_m_flow_in=true,
    nPorts=1);
equation 
  connect(open.y, dooOpeClo.y);
  connect(volWes.ports[1], dooOpeClo.port_b2);
  connect(volWes.ports[2], dooOpeClo.port_a1);
  connect(volWes.ports[3], colWesBot.port_b);
  connect(colWesBot.port_a, oriWesTop.port_b);
  connect(oriWesTop.port_a, colWesTop.port_b);
  connect(colWesTop.port_a, volTop.ports[1]);
  connect(volTop.ports[2], colEasTop.port_a);
  connect(colEasTop.port_b, oriEasTop.port_b);
  connect(oriEasTop.port_a, col1EasBot.port_a);
  connect(dooOpeClo.port_b1, volEas.ports[1]);
  connect(volEas.ports[2], dooOpeClo.port_a2);
  connect(colEasInBot.port_a, volEas.ports[3]);
  connect(volEas.ports[4], colEasInTop.port_b);
  connect(volEas.ports[5], col1EasBot.port_b);
  connect(colEasInTop.port_a, oriOutTop.port_a);
  connect(oriOutTop.port_b, colOutTop.port_a);
  connect(colOutTop.port_b, volOut.ports[1]);
  connect(colOutBot.port_a, volOut.ports[2]);
  connect(colOutBot.port_b, oriOutBot.port_b);
  connect(oriOutBot.port_a, colEasInBot.port_b);

  connect(TTop.port, volTop.heatPort);
  connect(TEas.port, volEas.heatPort);
  connect(TWes.port, volWes.heatPort);
  connect(CO2SenTop.port, volTop.ports[3]);
  connect(CO2SenWes.port, volWes.ports[4]);
  connect(CO2SenEas.port, volEas.ports[6]);
  connect(prescribedExtraPropertyFlowRate.m_flow_in, pulse.y);
  connect(prescribedExtraPropertyFlowRate.ports[1], volWes.ports[5]);
end CO2TransportStep;

Buildings.Airflow.Multizone.Examples.OneDoor Buildings.Airflow.Multizone.Examples.OneDoor

Buildings.Airflow.Multizone.Examples.OneDoor

Information

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

Modelica definition

model OneDoor
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.PerfectGases.MoistAirUnsaturated;

  Buildings.Fluid.MixingVolumes.MixingVolume volH(
    redeclare package Medium = Medium,
    T_start=273.15 + 50,
    V=2.5*10*10,
    nPorts=4,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo(redeclare 
      package Medium = Medium, LClo=20*1E-4) "Discretized door";
  Modelica.Blocks.Sources.Constant open(k=1);
  Buildings.Fluid.MixingVolumes.MixingVolume volC(
    redeclare package Medium = Medium,
    T_start=273.15 + 0,
    V=2.5*10*10,
    nPorts=4,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo1(redeclare 
      package Medium = Medium, LClo=20*1E-4) "Discretized door";
  Modelica.Blocks.Sources.Constant open1(k=1);
  inner Modelica.Fluid.System system;
equation 
  connect(open.y, dooOpeClo.y);
  connect(open1.y, dooOpeClo1.y);
  connect(volC.ports[1], dooOpeClo.port_a1);
  connect(volC.ports[2], dooOpeClo.port_b2);
  connect(dooOpeClo.port_b1, volH.ports[1]);
  connect(dooOpeClo.port_a2, volH.ports[2]);
  connect(volC.ports[3], dooOpeClo1.port_a1);
  connect(volC.ports[4], dooOpeClo1.port_b2);
  connect(dooOpeClo1.port_b1, volH.ports[3]);
  connect(dooOpeClo1.port_a2, volH.ports[4]);
end OneDoor;

Buildings.Airflow.Multizone.Examples.OneOpenDoor Buildings.Airflow.Multizone.Examples.OneOpenDoor

Buildings.Airflow.Multizone.Examples.OneOpenDoor

Information

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

Modelica definition

model OneOpenDoor
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Buildings.Airflow.Multizone.DoorDiscretizedOpen dooOpe(redeclare package
      Medium = Medium) "Discretized door";

  Buildings.Fluid.MixingVolumes.MixingVolume volA(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    nPorts=4,
    m_flow_nominal=0.01);
  Buildings.Fluid.MixingVolumes.MixingVolume volB(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    nPorts=4,
    m_flow_nominal=0.01);
  Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo;
  Modelica.Blocks.Sources.Sine heaSou(freqHz=1/3600);
  Modelica.Blocks.Math.Gain Gain1(k=100);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo(redeclare 
      package Medium = Medium, LClo=20*1E-4) "Discretized door";
  Modelica.Blocks.Sources.Ramp ramp(
    duration=120,
    height=1,
    offset=0,
    startTime=1000);
  inner Modelica.Fluid.System system;
equation 
  connect(Gain1.y, preHeaFlo.Q_flow);
  connect(heaSou.y, Gain1.u);
  connect(ramp.y, dooOpeClo.y);
  connect(preHeaFlo.port, volB.heatPort);
  connect(volA.ports[1], dooOpeClo.port_b2);
  connect(volA.ports[2], dooOpeClo.port_a1);
  connect(volA.ports[3], dooOpe.port_b2);
  connect(volA.ports[4], dooOpe.port_a1);
  connect(volB.ports[1], dooOpe.port_b1);
  connect(volB.ports[2], dooOpe.port_a2);
  connect(volB.ports[3], dooOpeClo.port_b1);
  connect(volB.ports[4], dooOpeClo.port_a2);
end OneOpenDoor;

Buildings.Airflow.Multizone.Examples.OpenDoors Buildings.Airflow.Multizone.Examples.OpenDoors

Buildings.Airflow.Multizone.Examples.OpenDoors

Information

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

Modelica definition

model OpenDoors
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooAB(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    forceErrorControlOnFlow=true) "Discretized door";

  Buildings.Fluid.MixingVolumes.MixingVolume volA(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    nPorts=4,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.Fluid.MixingVolumes.MixingVolume volB(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    nPorts=4,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.HeatTransfer.Sources.PrescribedHeatFlow PrescribedHeatFlow1;
  Modelica.Blocks.Sources.Sine Sine1(freqHz=1/3600);
  Modelica.Blocks.Math.Gain Gain1(k=100);
  Buildings.Fluid.MixingVolumes.MixingVolume volC(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    nPorts=4,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooAC(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    forceErrorControlOnFlow=true) "Discretized door";
  Modelica.Blocks.Sources.Constant open(k=0);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooBC(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    forceErrorControlOnFlow=true) "Discretized door";
equation 
  connect(Gain1.y, PrescribedHeatFlow1.Q_flow);
  connect(Sine1.y, Gain1.u);
  connect(open.y, dooAB.y);
  connect(open.y, dooAC.y);
  connect(open.y, dooBC.y);
  connect(PrescribedHeatFlow1.port, volB.heatPort);
  connect(volC.ports[1], dooAC.port_b1);
  connect(volC.ports[2], dooAC.port_a2);
  connect(volC.ports[3], dooBC.port_b1);
  connect(volC.ports[4], dooBC.port_a2);
  connect(volB.ports[1], dooAB.port_b1);
  connect(volB.ports[2], dooAB.port_a2);
  connect(volB.ports[3], dooBC.port_a1);
  connect(volB.ports[4], dooBC.port_b2);
  connect(volA.ports[1], dooAC.port_b2);
  connect(volA.ports[2], dooAC.port_a1);
  connect(volA.ports[3], dooAB.port_b2);
  connect(volA.ports[4], dooAB.port_a1);
end OpenDoors;

Buildings.Airflow.Multizone.Examples.OneEffectiveAirLeakageArea Buildings.Airflow.Multizone.Examples.OneEffectiveAirLeakageArea

Buildings.Airflow.Multizone.Examples.OneEffectiveAirLeakageArea

Information

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

Modelica definition

model OneEffectiveAirLeakageArea
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Buildings.Fluid.MixingVolumes.MixingVolume volA(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    nPorts=2,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.Fluid.MixingVolumes.MixingVolume volB(
    redeclare package Medium = Medium,
    V=2.5*5*5,
    nPorts=1,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    m_flow_nominal=0.01);
  Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo;
  Modelica.Blocks.Sources.Sine Sine1(freqHz=1/3600);
  Modelica.Blocks.Math.Gain Gain1(k=100);
  Buildings.Airflow.Multizone.EffectiveAirLeakageArea cra(redeclare package
      Medium = Medium, L=20E-4);
  Buildings.Fluid.Sources.MassFlowSource_T sou(
    redeclare package Medium = Medium,
    nPorts=1,
    use_m_flow_in=true);
  Modelica.Blocks.Sources.Ramp ramSou(
    duration=3600,
    height=0.01,
    offset=0,
    startTime=1800);
  inner Modelica.Fluid.System system;
equation 
  connect(sou.ports[1], volA.ports[1]);
  connect(ramSou.y, sou.m_flow_in);
  connect(volB.ports[1], cra.port_b);
  connect(volA.ports[2], cra.port_a);
  connect(preHeaFlo.port, volB.heatPort);
  connect(Gain1.y, preHeaFlo.Q_flow);
  connect(Gain1.u, Sine1.y);
end OneEffectiveAirLeakageArea;

Buildings.Airflow.Multizone.Examples.Orifice Buildings.Airflow.Multizone.Examples.Orifice

Buildings.Airflow.Multizone.Examples.Orifice

Information

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

Modelica definition

model Orifice
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.PerfectGases.MoistAirUnsaturated;
  Buildings.Airflow.Multizone.Orifice ori(redeclare package Medium = Medium, A=
        0.2);
  Buildings.Fluid.Sources.Boundary_pT roo1(
    redeclare package Medium = Medium,
    use_p_in=true,
    use_T_in=true,
    nPorts=1);
  Buildings.Fluid.Sources.Boundary_pT roo2(
    redeclare package Medium = Medium,
    use_p_in=true,
    use_T_in=true,
    nPorts=1);
  Modelica.Blocks.Sources.Ramp Ramp1(
    duration=0.5,
    height=2,
    offset=-1,
    startTime=0.25);
  Modelica.Blocks.Sources.Constant Pre(k=100000);
  Modelica.Blocks.Math.Add Add1;
  Modelica.Blocks.Sources.Constant Tem1(k=273.15 + 5);
  Modelica.Blocks.Sources.Constant Tem2(k=273.15 + 20);
  Fluid.Sensors.DensityTwoPort    den1(redeclare package Medium = Medium,
      m_flow_nominal=0.1) "Density sensor";
  Fluid.Sensors.DensityTwoPort    den2(redeclare package Medium = Medium,
      m_flow_nominal=0.1) "Density sensor";
  inner Modelica.Fluid.System system;
equation 
  connect(Pre.y, Add1.u1);
  connect(Ramp1.y, Add1.u2);
  connect(Tem1.y, roo1.T_in);
  connect(Pre.y, roo1.p_in);
  connect(Add1.y, roo2.p_in);
  connect(Tem2.y, roo2.T_in);
  connect(roo1.ports[1], den1.port_a);
  connect(den1.port_b, ori.port_a);
  connect(ori.port_b, den2.port_a);
  connect(den2.port_b, roo2.ports[1]);
end Orifice;

Buildings.Airflow.Multizone.Examples.ReverseBuoyancy Buildings.Airflow.Multizone.Examples.ReverseBuoyancy

Buildings.Airflow.Multizone.Examples.ReverseBuoyancy

Information

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

Modelica definition

model ReverseBuoyancy
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.IdealGases.SimpleAir;
  Buildings.Fluid.MixingVolumes.MixingVolume volEas(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=2.5*5*5,
    T_start=273.15 + 25,
    nPorts=5,
    m_flow_nominal=0.001);
  Buildings.Airflow.Multizone.Orifice oriOutBot(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colOutTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriOutTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colEasInTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Fluid.MixingVolumes.MixingVolume volOut(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=1E12,
    T_start=273.15 + 15,
    nPorts=3,
    m_flow_nominal=0.001);
  Buildings.Airflow.Multizone.Orifice dummy(
    redeclare package Medium = Medium,
    m=1,
    A=100,
    dp_turbulent=0.1) "to fix absolute pressure";
  Buildings.Airflow.Multizone.MediumColumn colEasInBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colOutBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  MediumColumn colWesBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriWesTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colWesTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    wOpe=1,
    hOpe=2.2,
    hA=3/2,
    hB=3/2,
    CDOpe=0.78,
    CDClo=0.78,
    nCom=10,
    vZer=0.01,
    dp_turbulent=0.1) "Discretized door";
  Buildings.Fluid.Delays.DelayFirstOrder volWes(
    redeclare package Medium = Medium,
    m_flow_nominal=1.2,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    tau=2.5*5*5,
    p_start=101325,
    T_start=273.15 + 22,
    nPorts=3);
  Modelica.Blocks.Sources.Constant ope(k=1);
  Buildings.Airflow.Multizone.MediumColumn col1EasBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriEasTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colEasTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Fluid.MixingVolumes.MixingVolume volTopEas(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=2.5*5*10,
    T_start=273.15 + 21,
    nPorts=3,
    m_flow_nominal=0.001);
  Buildings.Fluid.MixingVolumes.MixingVolume volTopWes(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 20,
    V=2.5*5*10,
    nPorts=3,
    m_flow_nominal=0.001);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeCloTop(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    wOpe=1,
    hOpe=2.2,
    hA=3/2,
    hB=3/2,
    CDOpe=0.78,
    CDClo=0.78,
    nCom=10,
    vZer=0.01,
    dp_turbulent=0.1) "Discretized door";
  Fluid.Sources.FixedBoundary amb(
    redeclare package Medium = Medium,
    p=100000,
    T=283.15,
    nPorts=1) "Ambient conditions";
  inner Modelica.Fluid.System system;
equation 
  connect(ope.y, dooOpeClo.y);
  connect(ope.y, dooOpeCloTop.y);
  connect(oriEasTop.port_b, colEasTop.port_b);
  connect(oriWesTop.port_b, colWesBot.port_a);
  connect(oriWesTop.port_a, colWesTop.port_b);
  connect(oriOutBot.port_b, colOutBot.port_b);
  connect(colEasInBot.port_b, oriOutBot.port_a);
  connect(colEasInTop.port_a, oriOutTop.port_a);
  connect(oriOutTop.port_b, colOutTop.port_a);
  connect(volWes.ports[1], dooOpeClo.port_b2);
  connect(volWes.ports[2], dooOpeClo.port_a1);
  connect(colWesBot.port_b, volWes.ports[3]);
  connect(volTopWes.ports[1], colWesTop.port_a);
  connect(volTopWes.ports[2], dooOpeCloTop.port_b2);
  connect(volTopWes.ports[3], dooOpeCloTop.port_a1);
  connect(volTopEas.ports[1], dooOpeCloTop.port_b1);
  connect(dooOpeCloTop.port_a2, volTopEas.ports[2]);
  connect(colEasTop.port_a, volTopEas.ports[3]);
  connect(oriEasTop.port_a, col1EasBot.port_a);
  connect(dooOpeClo.port_b1, volEas.ports[1]);
  connect(dooOpeClo.port_a2, volEas.ports[2]);
  connect(colEasInBot.port_a, volEas.ports[3]);
  connect(colEasInTop.port_b, volEas.ports[4]);
  connect(col1EasBot.port_b, volEas.ports[5]);
  connect(colOutTop.port_b, volOut.ports[1]);
  connect(colOutBot.port_a, volOut.ports[2]);
  connect(dummy.port_a, volOut.ports[3]);
  connect(amb.ports[1], dummy.port_b);
end ReverseBuoyancy;

Buildings.Airflow.Multizone.Examples.ReverseBuoyancy3Zones Buildings.Airflow.Multizone.Examples.ReverseBuoyancy3Zones

Buildings.Airflow.Multizone.Examples.ReverseBuoyancy3Zones

Information

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

Modelica definition

model ReverseBuoyancy3Zones
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.IdealGases.SimpleAir;
  Buildings.Fluid.MixingVolumes.MixingVolume volEas(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=2.5*5*5,
    T_start=273.15 + 25,
    nPorts=5,
    m_flow_nominal=0.001);
  Buildings.Airflow.Multizone.Orifice oriOutBot(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colOutTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriOutTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colEasInTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Fluid.MixingVolumes.MixingVolume volOut(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=1E12,
    T_start=273.15 + 15,
    nPorts=2,
    m_flow_nominal=0.001);
  Buildings.Airflow.Multizone.MediumColumn colEasInBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colOutBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colWesBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriWesTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colWesTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    wOpe=1,
    hOpe=2.2,
    hA=3/2,
    hB=3/2,
    CDOpe=0.78,
    CDClo=0.78,
    nCom=10,
    vZer=0.01,
    dp_turbulent=0.1) "Discretized door";
  Modelica.Blocks.Sources.Constant ope(k=1);
  Buildings.Airflow.Multizone.MediumColumn col1EasBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriEasTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colEasTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Fluid.MixingVolumes.MixingVolume volTop(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 20,
    m_flow_nominal=0.001,
    V=2.5*10*10,
    nPorts=2);
  Buildings.Fluid.MixingVolumes.MixingVolume volWes(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=2.5*5*5,
    T_start=273.15 + 22,
    nPorts=3,
    m_flow_nominal=0.001);
  inner Modelica.Fluid.System system;
equation 
  connect(dooOpeClo.port_b2, volWes.ports[1]);
  connect(dooOpeClo.port_a1, volWes.ports[2]);
  connect(dooOpeClo.port_b1, volEas.ports[1]);
  connect(dooOpeClo.port_a2, volEas.ports[2]);
  connect(colWesTop.port_b, oriWesTop.port_a);
  connect(oriWesTop.port_b, colWesBot.port_a);
  connect(colWesBot.port_b, volWes.ports[3]);
  connect(colEasTop.port_b, oriEasTop.port_b);
  connect(oriEasTop.port_a, col1EasBot.port_a);
  connect(colEasInBot.port_a, volEas.ports[3]);
  connect(colEasInTop.port_b, volEas.ports[4]);
  connect(col1EasBot.port_b, volEas.ports[5]);
  connect(colOutTop.port_b, volOut.ports[1]);
  connect(volOut.ports[2], colOutBot.port_a);
  connect(colOutBot.port_b, oriOutBot.port_b);
  connect(oriOutBot.port_a, colEasInBot.port_b);
  connect(colEasInTop.port_a, oriOutTop.port_a);
  connect(oriOutTop.port_b, colOutTop.port_a);
  connect(ope.y, dooOpeClo.y);
  connect(colWesTop.port_a, volTop.ports[1]);
  connect(colEasTop.port_a, volTop.ports[2]);
end ReverseBuoyancy3Zones;

Buildings.Airflow.Multizone.Examples.Validation0 Buildings.Airflow.Multizone.Examples.Validation0

Buildings.Airflow.Multizone.Examples.Validation0

Information

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

Modelica definition

model Validation0
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Buildings.Fluid.MixingVolumes.MixingVolume volEas(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 20,
    V=2.5*5*5,
    nPorts=2,
    m_flow_nominal=0.001);

  Buildings.Airflow.Multizone.Orifice oriOutBot(
    redeclare package Medium = Medium,
    A=0.01,
    m=0.5);
  Buildings.Airflow.Multizone.MediumColumn colOutTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriOutTop(
    redeclare package Medium = Medium,
    A=0.01,
    m=0.5);
  Buildings.Airflow.Multizone.MediumColumn colEasInTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Fluid.MixingVolumes.MixingVolume volOut(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 10,
    V=1E12,
    p_start=Medium.p_default,
    nPorts=2,
    m_flow_nominal=0.001);

  Buildings.Airflow.Multizone.MediumColumn colEasInBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colOutBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  inner Modelica.Fluid.System system;
equation 
  connect(colEasInTop.port_a, oriOutTop.port_a);
  connect(colEasInTop.port_b, volEas.ports[1]);
  connect(colEasInBot.port_a, volEas.ports[2]);
  connect(colEasInBot.port_b, oriOutBot.port_a);
  connect(oriOutBot.port_b, colOutBot.port_b);
  connect(colOutBot.port_a, volOut.ports[1]);
  connect(colOutTop.port_b, volOut.ports[2]);
  connect(colOutTop.port_a, oriOutTop.port_b);
end Validation0;

Buildings.Airflow.Multizone.Examples.Validation1 Buildings.Airflow.Multizone.Examples.Validation1

Buildings.Airflow.Multizone.Examples.Validation1

Information

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

Modelica definition

model Validation1
  extends Modelica.Icons.Example;

  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Buildings.Fluid.MixingVolumes.MixingVolume volEas(
    redeclare package Medium = Medium,
    T_start=273.15 + 20,
    V=2.5*5*5*1,
    nPorts=5,
    m_flow_nominal=0.001);

  Buildings.Airflow.Multizone.Orifice oriOutBot(
    redeclare package Medium = Medium,
    A=0.01,
    m=0.5);
  Buildings.Airflow.Multizone.MediumColumn colOutTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriOutTop(
    redeclare package Medium = Medium,
    A=0.01,
    m=0.5);
  Buildings.Airflow.Multizone.MediumColumn colEasInTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Fluid.Sources.FixedBoundary volOut(
    redeclare package Medium = Medium,
    nPorts=2,
    p(displayUnit="Pa") = 101325,
    T=283.15);

  Buildings.Airflow.Multizone.MediumColumn colEasInBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colOutBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.MediumColumn colWesBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriWesTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01);

  Buildings.Airflow.Multizone.MediumColumn colWesTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo(
    redeclare package Medium = Medium,
    LClo=20*1E-4,
    wOpe=1,
    hOpe=2.2,
    CDOpe=0.78,
    CDClo=0.78,
    nCom=10,
    hA=3/2,
    hB=3/2,
    dp_turbulent(displayUnit="Pa") = 0.01) "Discretized door";
  Fluid.MixingVolumes.MixingVolume volWes(
    redeclare package Medium = Medium,
    T_start=273.15 + 25,
    nPorts=3,
    p_start=101325,
    V=2.5*5*5,
    m_flow_nominal=0.001);
  Modelica.Blocks.Sources.Constant open(k=1);
  Buildings.Airflow.Multizone.MediumColumn col1EasBot(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriEasTop(
    redeclare package Medium = Medium,
    m=0.5,
    A=0.01);
  Buildings.Airflow.Multizone.MediumColumn colEasTop(
    redeclare package Medium = Medium,
    h=1.5,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromTop);
  Buildings.Fluid.MixingVolumes.MixingVolume volTop(
    redeclare package Medium = Medium,
    T_start=273.15 + 20,
    V=2.5*5*10*1,
    nPorts=2,
    m_flow_nominal=0.001);

  inner Modelica.Fluid.System system;
  Buildings.HeatTransfer.Sources.FixedTemperature TTop(T=293.15) 
    "Fixed temperature";
  Buildings.HeatTransfer.Sources.FixedTemperature TWes(T=298.15) 
    "Fixed temperature";
  Buildings.HeatTransfer.Sources.FixedTemperature TEas(T=293.15) 
    "Fixed temperature";
equation 
  connect(open.y, dooOpeClo.y);
  connect(volWes.ports[1], dooOpeClo.port_b2);
  connect(volWes.ports[2], dooOpeClo.port_a1);
  connect(volWes.ports[3], colWesBot.port_b);
  connect(colWesBot.port_a, oriWesTop.port_b);
  connect(oriWesTop.port_a, colWesTop.port_b);
  connect(colWesTop.port_a, volTop.ports[1]);
  connect(volTop.ports[2], colEasTop.port_a);
  connect(colEasTop.port_b, oriEasTop.port_b);
  connect(oriEasTop.port_a, col1EasBot.port_a);
  connect(dooOpeClo.port_b1, volEas.ports[1]);
  connect(volEas.ports[2], dooOpeClo.port_a2);
  connect(colEasInBot.port_a, volEas.ports[3]);
  connect(volEas.ports[4], colEasInTop.port_b);
  connect(volEas.ports[5], col1EasBot.port_b);
  connect(colEasInTop.port_a, oriOutTop.port_a);
  connect(oriOutTop.port_b, colOutTop.port_a);
  connect(colOutTop.port_b, volOut.ports[1]);
  connect(colOutBot.port_a, volOut.ports[2]);
  connect(colOutBot.port_b, oriOutBot.port_b);
  connect(oriOutBot.port_a, colEasInBot.port_b);

  connect(TTop.port, volTop.heatPort);
  connect(TEas.port, volEas.heatPort);
  connect(TWes.port, volWes.heatPort);
end Validation1;

Buildings.Airflow.Multizone.Examples.NaturalVentilation Buildings.Airflow.Multizone.Examples.NaturalVentilation

Buildings.Airflow.Multizone.Examples.NaturalVentilation

Information

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

Modelica definition

model NaturalVentilation
  extends Modelica.Icons.Example;

  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Buildings.Fluid.MixingVolumes.MixingVolume volA(
    redeclare package Medium = Medium,
    V=2.5*10*5,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=273.15 + 18,
    nPorts=2,
    m_flow_nominal=0.001);

  Buildings.Airflow.Multizone.Orifice oriOutBot(
    redeclare package Medium = Medium,
    A=0.1,
    m=0.5,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colOut(
    redeclare package Medium = Medium,
    h=3,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Airflow.Multizone.Orifice oriOutTop(
    redeclare package Medium = Medium,
    A=0.1,
    m=0.5,
    dp_turbulent=0.1);
  Buildings.Airflow.Multizone.MediumColumn colRooTop(
    redeclare package Medium = Medium,
    h=3,
    densitySelection=Buildings.Airflow.Multizone.Types.densitySelection.fromBottom);
  Buildings.Fluid.MixingVolumes.MixingVolume volOut(
    redeclare package Medium = Medium,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    massDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    V=1E10,
    T_start=273.15 + 20,
    nPorts=2,
    m_flow_nominal=0.001);

  Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo;
  Modelica.Blocks.Sources.Step q_flow(
    height=-100,
    offset=100,
    startTime=3600);
  inner Modelica.Fluid.System system;
equation 
  connect(q_flow.y, preHeaFlo.Q_flow);
  connect(oriOutBot.port_b, volOut.ports[1]);
  connect(preHeaFlo.port, volA.heatPort);
  connect(volA.ports[1], oriOutBot.port_a);
  connect(volA.ports[2], colRooTop.port_b);
  connect(colRooTop.port_a, oriOutTop.port_a);
  connect(volOut.ports[2], colOut.port_b);
  connect(colOut.port_a, oriOutTop.port_b);
end NaturalVentilation;

Buildings.Airflow.Multizone.Examples.ZonalFlow Buildings.Airflow.Multizone.Examples.ZonalFlow

Buildings.Airflow.Multizone.Examples.ZonalFlow

Information

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

Parameters

TypeNameDefaultDescription
VolumevolA100Volume of room A [m3]
VolumevolB1Volume of room B [m3]

Modelica definition

model ZonalFlow
  extends Modelica.Icons.Example;
  package Medium = Buildings.Media.PerfectGases.MoistAirUnsaturated;
  parameter Modelica.SIunits.Volume volA=100 "Volume of room A";
  parameter Modelica.SIunits.Volume volB=1 "Volume of room B";
  Buildings.Fluid.MixingVolumes.MixingVolume rooA(
    V=volA,
    redeclare package Medium = Medium,
    X_start={0.015,0.985},
    T_start=303.15,
    nPorts=2,
    m_flow_nominal=0.001) "Room A";
  Buildings.Fluid.MixingVolumes.MixingVolume rooB(
    V=volB,
    redeclare package Medium = Medium,
    X_start={0.01,0.99},
    T_start=293.15,
    nPorts=2,
    m_flow_nominal=0.001) "Room B";
  Modelica.Blocks.Sources.Constant ACS_con(k=5/3600);
  ZonalFlow_ACS zonFlo(redeclare package Medium = Medium, V=min(volA, volB));
  inner Modelica.Fluid.System system;
equation 
  connect(rooA.ports[1], zonFlo.port_a1);
  connect(zonFlo.port_b1, rooB.ports[1]);
  connect(zonFlo.port_b2, rooA.ports[2]);
  connect(zonFlo.port_a2, rooB.ports[2]);
  connect(zonFlo.ACS, ACS_con.y);
end ZonalFlow;

Automatically generated Fri Nov 4 08:26:42 2011.