IEA EBC Annex 60 EBC logo

Annex60.Fluid.Movers.Validation.BaseClasses

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

Information

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

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

Package Content

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

Annex60.Fluid.Movers.Validation.BaseClasses.ControlledFlowMachine


Annex60.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 = Annex60.Media.Air "Medium model"; Modelica.Blocks.Sources.Pulse y( startTime=0, offset=0, amplitude=1, period=120, width=50); Annex60.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, use_p_in=false, p=101325, T=293.15, nPorts=4); Annex60.Fluid.Sensors.MassFlowRate masFloRat1(redeclare package Medium = Medium); Annex60.Fluid.Sensors.RelativePressure relPre(redeclare package Medium = Medium); Annex60.Fluid.Movers.SpeedControlled_y fan1( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Annex60.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"; Annex60.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"; Annex60.Fluid.Sensors.MassFlowRate masFloRat3( redeclare package Medium = Medium); Annex60.Fluid.Movers.FlowControlled_dp fan3( redeclare package Medium = Medium, m_flow_nominal=6000/3600*1.2, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Annex60.Fluid.Movers.Data.Pumps.Wilo.Stratos32slash1to12 per); Annex60.Fluid.Movers.FlowControlled_m_flow fan2( redeclare package Medium = Medium, m_flow_nominal=6000/3600*1.2, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Annex60.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"; Annex60.Fluid.Sensors.MassFlowRate masFloRat4( redeclare package Medium = Medium); Annex60.Fluid.Movers.SpeedControlled_Nrpm fan4( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare Annex60.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"; Annex60.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;

Annex60.Fluid.Movers.Validation.BaseClasses.FlowMachine_ZeroFlow

Base class to test flow machines with zero flow rate

Annex60.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 MediumAnnex60.Media.AirMedium model
MassFlowRatem_flow_nominal1Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal500Nominal pressure difference [Pa]
PartialFlowMachinefloMacStaredeclare Annex60.Fluid.Move...Static model of a flow machine
PartialFlowMachinefloMacDynredeclare Annex60.Fluid.Move...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 = Annex60.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"; Annex60.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, use_p_in=false, p=101325, T=293.15, nPorts=4); Annex60.Fluid.FixedResistances.PressureDrop dpSta( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, dp_nominal=dp_nominal/2) "Pressure drop"; replaceable Annex60.Fluid.Movers.BaseClasses.PartialFlowMachine floMacSta constrainedby Annex60.Fluid.Movers.BaseClasses.PartialFlowMachine( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Static model of a flow machine"; replaceable Annex60.Fluid.Movers.BaseClasses.PartialFlowMachine floMacDyn constrainedby Annex60.Fluid.Movers.BaseClasses.PartialFlowMachine( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Dynamic model of a flow machine"; Annex60.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"; Annex60.Fluid.FixedResistances.PressureDrop dpSta1( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, dp_nominal=dp_nominal/2) "Pressure drop"; Annex60.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;

http://iea-annex60.org