Description: "Package with base classes for Buildings.Fluid.Movers.Validation"

- Home > Modelica

## 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
--- | ---
ControlledFlowMachine |
FlowMachine_ZeroFlow | Base class to test flow machines with zero flow rate

## 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; 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, per(pressure(final 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.FlowControlled_dp fan3( redeclare package Medium = Medium, m_flow_nominal=6000/3600*1.2, dynamicBalance=false); Buildings.Fluid.Movers.FlowControlled_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.SpeedControlled_Nrpm fan4( redeclare package Medium = Medium, per(pressure(final 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=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

### Information

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

### Parameters

Type | Name | Default | Description
--- | --- | --- | ---
replaceable package Medium | Buildings.Media.Air | Medium model
MassFlowRate | m_flow_nominal | 1 | Nominal mass flow rate [kg/s]
Pressure | dp_nominal | 500 | Nominal pressure difference [Pa]
PartialFlowMachine | floMacSta | redeclare Buildings.Fluid.Mo... | Static model of a flow machine
PartialFlowMachine | floMacDyn | redeclare Buildings.Fluid.Mo... | Dynamic model of a flow machine

### Connectors

Type | Name | Description
--- | --- | ---
replaceable package Medium | Medium 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.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=101325, 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 constrainedby Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dynamicBalance=false) "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.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;