Buildings.Fluid.Movers.Validation.BaseClasses

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

Information

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

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

Package Content

Name Description
Buildings.Fluid.Movers.Validation.BaseClasses.ControlledFlowMachine ControlledFlowMachine  
Buildings.Fluid.Movers.Validation.BaseClasses.FlowMachine_ZeroFlow FlowMachine_ZeroFlow Base class to test flow machines with zero flow rate

Buildings.Fluid.Movers.Validation.BaseClasses.ControlledFlowMachine


Buildings.Fluid.Movers.Validation.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 package Medium = Buildings.Media.Air "Medium model"; 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=101325, T=293.15, nPorts=4); Buildings.Fluid.Sensors.MassFlowRate masFloRat1(redeclare package Medium = Medium); Buildings.Fluid.Sensors.RelativePressure relPre(redeclare package Medium = Medium); Buildings.Fluid.Movers.SpeedControlled_y fan1( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Buildings.Fluid.Movers.Data.Pumps.Wilo.Stratos32slash1to12 per); FixedResistances.PressureDrop dp1( redeclare package Medium = Medium, from_dp=true, m_flow_nominal=0.006, dp_nominal=50000) "Pressure drop"; FixedResistances.PressureDrop dp2( redeclare package Medium = Medium, from_dp=true, m_flow_nominal=0.006, dp_nominal=50000) "Pressure drop"; Buildings.Fluid.Sensors.MassFlowRate masFloRat2( redeclare package Medium = Medium); FixedResistances.PressureDrop dp3( redeclare package Medium = Medium, from_dp=true, m_flow_nominal=0.006, dp_nominal=50000) "Pressure drop"; Buildings.Fluid.Sensors.MassFlowRate masFloRat3( redeclare package Medium = Medium); Buildings.Fluid.Movers.FlowControlled_dp fan3( redeclare package Medium = Medium, m_flow_nominal=6000/3600*1.2, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Buildings.Fluid.Movers.Data.Pumps.Wilo.Stratos32slash1to12 per); Buildings.Fluid.Movers.FlowControlled_m_flow fan2( redeclare package Medium = Medium, m_flow_nominal=6000/3600*1.2, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Buildings.Fluid.Movers.Data.Pumps.Wilo.Stratos32slash1to12 per); FixedResistances.PressureDrop dp4( redeclare package Medium = Medium, from_dp=true, m_flow_nominal=0.006, dp_nominal=50000) "Pressure drop"; Buildings.Fluid.Sensors.MassFlowRate masFloRat4( redeclare package Medium = Medium); Buildings.Fluid.Movers.SpeedControlled_Nrpm fan4( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Buildings.Fluid.Movers.Data.Pumps.Wilo.Stratos32slash1to12 per); Modelica.Blocks.Math.Gain gain(k=3580) "Converts y to nominal rpm"; FixedResistances.PressureDrop dp5( m_flow_nominal=6000/3600*1.2, redeclare package Medium = Medium, dp_nominal=300, from_dp=true) "Pressure drop"; FixedResistances.PressureDrop dp6( m_flow_nominal=6000/3600*1.2, redeclare package Medium = Medium, dp_nominal=300, from_dp=true) "Pressure drop"; FixedResistances.PressureDrop dp7( m_flow_nominal=6000/3600*1.2, redeclare package Medium = Medium, dp_nominal=300, from_dp=true) "Pressure drop"; FixedResistances.PressureDrop dp8( m_flow_nominal=6000/3600*1.2, redeclare package Medium = Medium, dp_nominal=300, from_dp=true) "Pressure drop"; Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, use_p_in=false, p=101325, 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;

Buildings.Fluid.Movers.Validation.BaseClasses.FlowMachine_ZeroFlow

Base class to test flow machines with zero flow rate

Buildings.Fluid.Movers.Validation.BaseClasses.FlowMachine_ZeroFlow

Information

This is the base class for examples that demonstrates the use of a flow machine whose flow rate transitions to zero.

Parameters

TypeNameDefaultDescription
replaceable package MediumBuildings.Media.AirMedium model
MassFlowRatem_flow_nominal1Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal500Nominal pressure difference [Pa]
PartialFlowMachinefloMacStaredeclare Buildings.Fluid.Mo...Static model of a flow machine
PartialFlowMachinefloMacDynredeclare Buildings.Fluid.Mo...Dynamic model of a flow machine

Connectors

TypeNameDescription
replaceable package MediumMedium model

Modelica definition

partial model FlowMachine_ZeroFlow "Base class to test flow machines with zero flow rate" replaceable package Medium = Buildings.Media.Air constrainedby Modelica.Media.Interfaces.PartialMedium "Medium model"; parameter Modelica.SIunits.MassFlowRate m_flow_nominal= 1 "Nominal mass flow rate"; parameter Modelica.SIunits.PressureDifference 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=101325, T=293.15, nPorts=4); Buildings.Fluid.FixedResistances.PressureDrop 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 constrainedby Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Static model of a flow machine"; replaceable Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine floMacDyn constrainedby Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Dynamic model of a flow machine"; Buildings.Fluid.FixedResistances.PressureDrop 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.PressureDrop dpSta1( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, dp_nominal=dp_nominal/2) "Pressure drop"; Buildings.Fluid.FixedResistances.PressureDrop 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;