LBL logo

Buildings.Fluid.Movers.Examples.BaseClasses

Package with base classes for Buildings.Fluid.Movers.Examples

Information

This package contains base classes that are used to construct the models in Buildings.Fluid.Movers.Examples.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

NameDescription
FlowMachine_ZeroFlow Base class to test flow machines with zero flow rate
ControlledFlowMachine  


Buildings.Fluid.Movers.Examples.BaseClasses.FlowMachine_ZeroFlow

Base class to test flow machines with zero flow rate

Buildings.Fluid.Movers.Examples.BaseClasses.FlowMachine_ZeroFlow

Information

This example demonstrates the use of a flow machine whose flow rate transitions to zero.

Parameters

TypeNameDefaultDescription
MassFlowRatem_flow_nominal1Nominal mass flow rate [kg/s]
Pressuredp_nominal500Nominal pressure difference [Pa]
PartialFlowMachinefloMacStaredeclare Buildings.Fluid.Mo...Static model of a flow machine
PartialFlowMachinefloMacDynredeclare Buildings.Fluid.Mo...Dynamic model of a flow machine

Modelica definition

partial model FlowMachine_ZeroFlow 
  "Base class to test flow machines with zero flow rate"
  import Buildings;

  package Medium = Buildings.Media.GasesPTDecoupled.MoistAirUnsaturated;

  inner Modelica.Fluid.System system;

  parameter Modelica.SIunits.MassFlowRate m_flow_nominal= 1 
    "Nominal mass flow rate";
  parameter Modelica.SIunits.Pressure dp_nominal = 500 
    "Nominal pressure difference";

  Modelica.Blocks.Sources.Ramp y(
    offset=1,
    duration=0.5,
    startTime=0.25,
    height=-1) "Input signal";
  Buildings.Fluid.Sources.Boundary_pT sou(
    redeclare package Medium = Medium,
    use_p_in=false,
    p=system.p_ambient,
    T=293.15,
    nPorts=4);
  Buildings.Fluid.FixedResistances.FixedResistanceDpM dpSta(
    redeclare package Medium = Medium,
    m_flow_nominal=m_flow_nominal,
    dp_nominal=dp_nominal/2) "Pressure drop";
  replaceable Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine floMacSta(
    redeclare package Medium = Medium,
    m_flow_nominal=1,
    energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
    dynamicBalance=false)
                      constrainedby 
    Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine 
    "Static model of a flow machine";
  replaceable Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine floMacDyn(
    redeclare package Medium = Medium,
    m_flow_nominal=1,
    energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial)
                      constrainedby 
    Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine 
    "Dynamic model of a flow machine";
  Buildings.Fluid.FixedResistances.FixedResistanceDpM dpDyn(
    redeclare package Medium = Medium,
    m_flow_nominal=m_flow_nominal,
    dp_nominal=dp_nominal/2) "Pressure drop";
  Modelica.Blocks.Math.Gain gain "Gain for input signal";
  Buildings.Fluid.FixedResistances.FixedResistanceDpM dpSta1(
    redeclare package Medium = Medium,
    m_flow_nominal=m_flow_nominal,
    dp_nominal=dp_nominal/2) "Pressure drop";
  Buildings.Fluid.FixedResistances.FixedResistanceDpM dpDyn1(
    redeclare package Medium = Medium,
    m_flow_nominal=m_flow_nominal,
    dp_nominal=dp_nominal/2) "Pressure drop";
equation 
  connect(floMacSta.port_b, dpSta.port_a);
  connect(y.y, gain.u);
  connect(floMacDyn.port_b, dpDyn.port_a);
  connect(dpSta1.port_b, floMacSta.port_a);
  connect(dpDyn1.port_b, floMacDyn.port_a);
  connect(dpSta1.port_a, sou.ports[1]);
  connect(dpDyn1.port_a, sou.ports[2]);
  connect(dpDyn.port_b, sou.ports[3]);
  connect(dpSta.port_b, sou.ports[4]);
end FlowMachine_ZeroFlow;

Buildings.Fluid.Movers.Examples.BaseClasses.ControlledFlowMachine

Buildings.Fluid.Movers.Examples.BaseClasses.ControlledFlowMachine

Information

This example demonstrates the use of the flow model with four different configuration. At steady-state, all flow models have the same mass flow rate and pressure difference.

Modelica definition

model ControlledFlowMachine
  import Buildings;

  package Medium = Buildings.Media.IdealGases.SimpleAir;

  Modelica.Blocks.Sources.Pulse     y(
    startTime=0,
    offset=0,
    amplitude=1,
    period=120,
    width=50);
  Buildings.Fluid.Sources.Boundary_pT sou(
    redeclare package Medium = Medium,
    use_p_in=false,
    p=system.p_ambient,
    T=293.15,
    nPorts=4);
  inner Modelica.Fluid.System system;
  Buildings.Fluid.Sensors.MassFlowRate masFloRat1(redeclare package Medium =
        Medium);
  Buildings.Fluid.Sensors.RelativePressure relPre(redeclare package Medium =
        Medium);
  Buildings.Fluid.Movers.FlowMachine_y fan1(
    redeclare package Medium = Medium,
    pressure(V_flow={0,1.8,3}, dp={1000,600,0}),
    dynamicBalance=false);
  FixedResistances.FixedResistanceDpM dp1(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  FixedResistances.FixedResistanceDpM dp2(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  Buildings.Fluid.Sensors.MassFlowRate masFloRat2(redeclare package Medium =
        Medium);
  FixedResistances.FixedResistanceDpM dp3(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  Buildings.Fluid.Sensors.MassFlowRate masFloRat3(redeclare package Medium =
        Medium);
  Buildings.Fluid.Movers.FlowMachine_dp fan3(
    redeclare package Medium = Medium,
    m_flow_nominal=6000/3600*1.2,
    dynamicBalance=false);
  Buildings.Fluid.Movers.FlowMachine_m_flow fan2(
    redeclare package Medium = Medium,
    m_flow_nominal=6000/3600*1.2,
    dynamicBalance=false);
  FixedResistances.FixedResistanceDpM dp4(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  Buildings.Fluid.Sensors.MassFlowRate masFloRat4(redeclare package Medium =
        Medium);
  Buildings.Fluid.Movers.FlowMachine_Nrpm fan4(
    redeclare package Medium = Medium,
    pressure(V_flow={0,1.8,3}, dp={1000,600,0}),
    dynamicBalance=false);
  Modelica.Blocks.Math.Gain gain(k=1500) "Converts y to nominal rpm";
  FixedResistances.FixedResistanceDpM dp5(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  FixedResistances.FixedResistanceDpM dp6(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  FixedResistances.FixedResistanceDpM dp7(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  FixedResistances.FixedResistanceDpM dp8(
    m_flow_nominal=6000/3600*1.2,
    redeclare package Medium = Medium,
    dp_nominal=300) "Pressure drop";
  Buildings.Fluid.Sources.Boundary_pT sin(
    redeclare package Medium = Medium,
    use_p_in=false,
    p=system.p_ambient,
    T=293.15,
    nPorts=4);
equation 

  connect(fan1.port_a, relPre.port_b);
  connect(fan1.port_b, relPre.port_a);
  connect(fan1.port_b, dp1.port_a);
  connect(fan2.port_b, dp2.port_a);
  connect(fan3.port_b, dp3.port_a);
  connect(fan4.port_b, dp4.port_a);
  connect(gain.y, fan4.Nrpm);
  connect(masFloRat1.m_flow, fan2.m_flow_in);
  connect(relPre.p_rel, fan3.dp_in);
  connect(dp8.port_b, fan4.port_a);
  connect(dp5.port_b, fan1.port_a);
  connect(dp6.port_b, fan2.port_a);
  connect(dp7.port_b, fan3.port_a);
  connect(y.y, fan1.y);
  connect(y.y, gain.u);
  connect(dp8.port_a, sou.ports[1]);
  connect(dp5.port_a, sou.ports[2]);
  connect(dp6.port_a, sou.ports[3]);
  connect(dp7.port_a, sou.ports[4]);
  connect(dp4.port_b, masFloRat4.port_a);
  connect(dp1.port_b, masFloRat1.port_a);
  connect(dp2.port_b, masFloRat2.port_a);
  connect(dp3.port_b, masFloRat3.port_a);
  connect(masFloRat4.port_b, sin.ports[1]);
  connect(masFloRat1.port_b, sin.ports[2]);
  connect(masFloRat2.port_b, sin.ports[3]);
  connect(masFloRat3.port_b, sin.ports[4]);
end ControlledFlowMachine;

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