IEA EBC Annex 60 EBC logo

Annex60.Fluid.Sources

Package with boundary condition models

Information

Package Sources contains generic sources for fluid connectors to define fixed or prescribed ambient conditions.

Extends from Modelica.Icons.SourcesPackage (Icon for packages containing sources).

Package Content

Name Description
Annex60.Fluid.Sources.Boundary_pT Boundary_pT Boundary with prescribed pressure, temperature, composition and trace substances
Annex60.Fluid.Sources.Boundary_ph Boundary_ph Boundary with prescribed pressure, specific enthalpy, composition and trace substances
Annex60.Fluid.Sources.FixedBoundary FixedBoundary Boundary source component
Annex60.Fluid.Sources.MassFlowSource_T MassFlowSource_T Ideal flow source that produces a prescribed mass flow with prescribed temperature, mass fraction and trace substances
Annex60.Fluid.Sources.MassFlowSource_h MassFlowSource_h Ideal flow source that produces a prescribed mass flow with prescribed specific enthalpy, mass fraction and trace substances
Annex60.Fluid.Sources.Outside Outside Boundary that takes weather data, and optionally trace substances, as an input
Annex60.Fluid.Sources.Outside_CpLowRise Outside_CpLowRise Boundary that takes weather data as an input and computes wind pressure for low-rise buildings
Annex60.Fluid.Sources.TraceSubstancesFlowSource TraceSubstancesFlowSource Source with mass flow that does not take part in medium mass balance (such as CO2)
Annex60.Fluid.Sources.Examples Examples Collection of models that illustrate model use and test models
Annex60.Fluid.Sources.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.Sources

Annex60.Fluid.Sources.Boundary_pT Annex60.Fluid.Sources.Boundary_pT

Boundary with prescribed pressure, temperature, composition and trace substances

Annex60.Fluid.Sources.Boundary_pT

Information

Defines prescribed values for boundary conditions:

If use_p_in is false (default option), the p parameter is used as boundary pressure, and the p_in input connector is disabled; if use_p_in is true, then the p parameter is ignored, and the value provided by the input connector is used instead.

The same applies to the temperature, composition and trace substances.

Note, that boundary temperature, mass fractions and trace substances have only an effect if the mass flow is from the boundary into the port. If mass is flowing from the port into the boundary, the boundary definitions, with exception of boundary pressure, do not have an effect.

Extends from Modelica.Fluid.Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Booleanuse_p_infalseGet the pressure from the input connector
Booleanuse_T_infalseGet the temperature from the input connector
Booleanuse_X_infalseGet the composition from the input connector
Booleanuse_C_infalseGet the trace substances from the input connector
AbsolutePressurepMedium.p_defaultFixed value of pressure [Pa]
TemperatureTMedium.T_defaultFixed value of temperature [K]
MassFractionX[Medium.nX]Medium.X_defaultFixed value of composition [kg/kg]
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Fixed values of trace substances

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputp_inPrescribed boundary pressure [Pa]
input RealInputT_inPrescribed boundary temperature [K]
input RealInputX_in[Medium.nX]Prescribed boundary composition [kg/kg]
input RealInputC_in[Medium.nC]Prescribed boundary trace substances

Modelica definition

model Boundary_pT "Boundary with prescribed pressure, temperature, composition and trace substances" extends Modelica.Fluid.Sources.BaseClasses.PartialSource; parameter Boolean use_p_in = false "Get the pressure from the input connector"; parameter Boolean use_T_in= false "Get the temperature from the input connector"; parameter Boolean use_X_in = false "Get the composition from the input connector"; parameter Boolean use_C_in = false "Get the trace substances from the input connector"; parameter Medium.AbsolutePressure p = Medium.p_default "Fixed value of pressure"; parameter Medium.Temperature T = Medium.T_default "Fixed value of temperature"; parameter Medium.MassFraction X[Medium.nX]( final quantity=Medium.substanceNames) = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( final quantity=Medium.extraPropertiesNames) = fill(0, Medium.nC) "Fixed values of trace substances"; Modelica.Blocks.Interfaces.RealInput p_in(final unit="Pa") if use_p_in "Prescribed boundary pressure"; Modelica.Blocks.Interfaces.RealInput T_in(final unit="K", displayUnit="degC") if use_T_in "Prescribed boundary temperature"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) if use_X_in "Prescribed boundary composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC]( final quantity=Medium.extraPropertiesNames) if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput p_in_internal(final unit="Pa") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput T_in_internal(final unit="K", displayUnit="degC") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC]( final quantity=Medium.extraPropertiesNames) "Needed to connect to conditional connector"; equation Modelica.Fluid.Utilities.checkBoundary(Medium.mediumName, Medium.substanceNames, Medium.singleState, true, X_in_internal, "Boundary_pT"); connect(p_in, p_in_internal); connect(T_in, T_in_internal); connect(X_in, X_in_internal); connect(C_in, C_in_internal); if not use_p_in then p_in_internal = p; end if; if not use_T_in then T_in_internal = T; end if; if not use_X_in then X_in_internal = X; end if; if not use_C_in then C_in_internal = C; end if; medium.p = p_in_internal; medium.T = T_in_internal; medium.Xi = X_in_internal[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts); end Boundary_pT;

Annex60.Fluid.Sources.Boundary_ph Annex60.Fluid.Sources.Boundary_ph

Boundary with prescribed pressure, specific enthalpy, composition and trace substances

Annex60.Fluid.Sources.Boundary_ph

Information

Defines prescribed values for boundary conditions:

If use_p_in is false (default option), the p parameter is used as boundary pressure, and the p_in input connector is disabled; if use_p_in is true, then the p parameter is ignored, and the value provided by the input connector is used instead.

The same applies to the temperature, composition and trace substances.

Note, that boundary temperature, mass fractions and trace substances have only an effect if the mass flow is from the boundary into the port. If mass is flowing from the port into the boundary, the boundary definitions, with exception of boundary pressure, do not have an effect.

Extends from Modelica.Fluid.Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Booleanuse_p_infalseGet the pressure from the input connector
Booleanuse_h_infalseGet the specific enthalpy from the input connector
Booleanuse_X_infalseGet the composition from the input connector
Booleanuse_C_infalseGet the trace substances from the input connector
AbsolutePressurepMedium.p_defaultFixed value of pressure [Pa]
SpecificEnthalpyhMedium.h_defaultFixed value of specific enthalpy [J/kg]
MassFractionX[Medium.nX]Medium.X_defaultFixed value of composition [kg/kg]
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Fixed values of trace substances

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputp_inPrescribed boundary pressure [Pa]
input RealInputh_inPrescribed boundary specific enthalpy [J/kg]
input RealInputX_in[Medium.nX]Prescribed boundary composition [kg/kg]
input RealInputC_in[Medium.nC]Prescribed boundary trace substances

Modelica definition

model Boundary_ph "Boundary with prescribed pressure, specific enthalpy, composition and trace substances" extends Modelica.Fluid.Sources.BaseClasses.PartialSource; parameter Boolean use_p_in = false "Get the pressure from the input connector"; parameter Boolean use_h_in= false "Get the specific enthalpy from the input connector"; parameter Boolean use_X_in = false "Get the composition from the input connector"; parameter Boolean use_C_in = false "Get the trace substances from the input connector"; parameter Medium.AbsolutePressure p = Medium.p_default "Fixed value of pressure"; parameter Medium.SpecificEnthalpy h = Medium.h_default "Fixed value of specific enthalpy"; parameter Medium.MassFraction X[Medium.nX]( final quantity=Medium.substanceNames) = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( final quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances"; Modelica.Blocks.Interfaces.RealInput p_in(final unit="Pa") if use_p_in "Prescribed boundary pressure"; Modelica.Blocks.Interfaces.RealInput h_in(final unit="J/kg") if use_h_in "Prescribed boundary specific enthalpy"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) if use_X_in "Prescribed boundary composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC]( final quantity=Medium.extraPropertiesNames) if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput p_in_internal(final unit="Pa") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput h_in_internal(final unit="J/kg") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC]( final quantity=Medium.extraPropertiesNames) "Needed to connect to conditional connector"; equation Modelica.Fluid.Utilities.checkBoundary(Medium.mediumName, Medium.substanceNames, Medium.singleState, true, X_in_internal, "Boundary_ph"); connect(p_in, p_in_internal); connect(h_in, h_in_internal); connect(X_in, X_in_internal); connect(C_in, C_in_internal); if not use_p_in then p_in_internal = p; end if; if not use_h_in then h_in_internal = h; end if; if not use_X_in then X_in_internal = X; end if; if not use_C_in then C_in_internal = C; end if; medium.p = p_in_internal; medium.h = h_in_internal; medium.Xi = X_in_internal[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts); end Boundary_ph;

Annex60.Fluid.Sources.FixedBoundary Annex60.Fluid.Sources.FixedBoundary

Boundary source component

Annex60.Fluid.Sources.FixedBoundary

Information

This model defines constant values for boundary conditions:

Note, that boundary temperature, density, specific enthalpy, mass fractions and trace substances have only an effect if the mass flow is from the Boundary into the port. If mass is flowing from the port into the boundary, the boundary definitions, with exception of boundary pressure, do not have an effect.

Extends from Modelica.Fluid.Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Boundary pressure or Boundary density
Booleanuse_ptrueselect p or d
AbsolutePressurepMedium.p_defaultBoundary pressure [Pa]
DensitydMedium.density_pTX(p=Medium....Boundary density [kg/m3]
Boundary temperature or Boundary specific enthalpy
Booleanuse_Ttrueselect T or h
TemperatureTMedium.T_defaultBoundary temperature [K]
SpecificEnthalpyhMedium.h_defaultBoundary specific enthalpy [J/kg]
Only for multi-substance flow
MassFractionX[Medium.nX]Medium.X_defaultBoundary mass fractions m_i/m [kg/kg]
Only for trace-substance flow
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Boundary trace substances

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 

Modelica definition

model FixedBoundary "Boundary source component" extends Modelica.Fluid.Sources.BaseClasses.PartialSource; parameter Boolean use_p=true "select p or d"; parameter Medium.AbsolutePressure p=Medium.p_default "Boundary pressure"; parameter Medium.Density d=Medium.density_pTX( p = Medium.p_default, T = Medium.T_default, X = Medium.X_default) "Boundary density"; parameter Boolean use_T=true "select T or h"; parameter Medium.Temperature T=Medium.T_default "Boundary temperature"; parameter Medium.SpecificEnthalpy h=Medium.h_default "Boundary specific enthalpy"; parameter Medium.MassFraction X[Medium.nX]( final quantity=Medium.substanceNames) = Medium.X_default "Boundary mass fractions m_i/m"; parameter Medium.ExtraProperty C[Medium.nC]( final quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Boundary trace substances"; equation Modelica.Fluid.Utilities.checkBoundary(Medium.mediumName, Medium.substanceNames, Medium.singleState, use_p, X, "FixedBoundary"); if use_p or Medium.singleState then medium.p = p; else medium.d = d; end if; if use_T then medium.T = T; else medium.h = h; end if; medium.Xi = X[1:Medium.nXi]; ports.C_outflow = fill(C, nPorts); end FixedBoundary;

Annex60.Fluid.Sources.MassFlowSource_T Annex60.Fluid.Sources.MassFlowSource_T

Ideal flow source that produces a prescribed mass flow with prescribed temperature, mass fraction and trace substances

Annex60.Fluid.Sources.MassFlowSource_T

Information

Models an ideal flow source, with prescribed values of flow rate, temperature, composition and trace substances:

If use_m_flow_in is false (default option), the m_flow parameter is used as boundary pressure, and the m_flow_in input connector is disabled; if use_m_flow_in is true, then the m_flow parameter is ignored, and the value provided by the input connector is used instead.

The same applies to the temperature, composition and trace substances.

Note, that boundary temperature, mass fractions and trace substances have only an effect if the mass flow is from the boundary into the port. If mass is flowing from the port into the boundary, the boundary definitions, with exception of boundary flow rate, do not have an effect.

Extends from Modelica.Fluid.Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Booleanuse_m_flow_infalseGet the mass flow rate from the input connector
Booleanuse_T_infalseGet the temperature from the input connector
Booleanuse_X_infalseGet the composition from the input connector
Booleanuse_C_infalseGet the trace substances from the input connector
MassFlowRatem_flow0Fixed mass flow rate going out of the fluid port [kg/s]
TemperatureTMedium.T_defaultFixed value of temperature [K]
MassFractionX[Medium.nX]Medium.X_defaultFixed value of composition [kg/kg]
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Fixed values of trace substances

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputm_flow_inPrescribed mass flow rate [kg/s]
input RealInputT_inPrescribed fluid temperature [K]
input RealInputX_in[Medium.nX]Prescribed fluid composition [kg/kg]
input RealInputC_in[Medium.nC]Prescribed boundary trace substances

Modelica definition

model MassFlowSource_T "Ideal flow source that produces a prescribed mass flow with prescribed temperature, mass fraction and trace substances" extends Modelica.Fluid.Sources.BaseClasses.PartialSource; parameter Boolean use_m_flow_in = false "Get the mass flow rate from the input connector"; parameter Boolean use_T_in= false "Get the temperature from the input connector"; parameter Boolean use_X_in = false "Get the composition from the input connector"; parameter Boolean use_C_in = false "Get the trace substances from the input connector"; parameter Modelica.SIunits.MassFlowRate m_flow = 0 "Fixed mass flow rate going out of the fluid port"; parameter Medium.Temperature T = Medium.T_default "Fixed value of temperature"; parameter Medium.MassFraction X[Medium.nX]( final quantity=Medium.substanceNames) = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( final quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances"; Modelica.Blocks.Interfaces.RealInput m_flow_in(final unit="kg/s") if use_m_flow_in "Prescribed mass flow rate"; Modelica.Blocks.Interfaces.RealInput T_in(final unit="K", displayUnit="degC") if use_T_in "Prescribed fluid temperature"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) if use_X_in "Prescribed fluid composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC]( final quantity=Medium.extraPropertiesNames) if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput m_flow_in_internal(final unit="kg/s") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput T_in_internal(final unit="K", displayUnit="degC") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC]( final quantity=Medium.extraPropertiesNames) "Needed to connect to conditional connector"; equation Modelica.Fluid.Utilities.checkBoundary( Medium.mediumName, Medium.substanceNames, Medium.singleState, true, X_in_internal, "MassFlowSource_T"); connect(m_flow_in, m_flow_in_internal); connect(T_in, T_in_internal); connect(X_in, X_in_internal); connect(C_in, C_in_internal); if not use_m_flow_in then m_flow_in_internal = m_flow; end if; if not use_T_in then T_in_internal = T; end if; if not use_X_in then X_in_internal = X; end if; if not use_C_in then C_in_internal = C; end if; sum(ports.m_flow) = -m_flow_in_internal; medium.T = T_in_internal; medium.Xi = X_in_internal[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts); end MassFlowSource_T;

Annex60.Fluid.Sources.MassFlowSource_h Annex60.Fluid.Sources.MassFlowSource_h

Ideal flow source that produces a prescribed mass flow with prescribed specific enthalpy, mass fraction and trace substances

Annex60.Fluid.Sources.MassFlowSource_h

Information

Models an ideal flow source, with prescribed values of flow rate, temperature and composition:

If use_m_flow_in is false (default option), the m_flow parameter is used as boundary pressure, and the m_flow_in input connector is disabled; if use_m_flow_in is true, then the m_flow parameter is ignored, and the value provided by the input connector is used instead.

The same applies to the temperature, composition and trace substances.

Note, that boundary temperature, mass fractions and trace substances have only an effect if the mass flow is from the boundary into the port. If mass is flowing from the port into the boundary, the boundary definitions, with exception of boundary flow rate, do not have an effect.

Extends from Modelica.Fluid.Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Booleanuse_m_flow_infalseGet the mass flow rate from the input connector
Booleanuse_h_infalseGet the specific enthalpy from the input connector
Booleanuse_X_infalseGet the composition from the input connector
Booleanuse_C_infalseGet the trace substances from the input connector
MassFlowRatem_flow0Fixed mass flow rate going out of the fluid port [kg/s]
SpecificEnthalpyhMedium.h_defaultFixed value of specific enthalpy [J/kg]
MassFractionX[Medium.nX]Medium.X_defaultFixed value of composition [kg/kg]
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Fixed values of trace substances

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputm_flow_inPrescribed mass flow rate [kg/s]
input RealInputh_inPrescribed fluid specific enthalpy [J/kg]
input RealInputX_in[Medium.nX]Prescribed fluid composition [kg/kg]
input RealInputC_in[Medium.nC]Prescribed boundary trace substances

Modelica definition

model MassFlowSource_h "Ideal flow source that produces a prescribed mass flow with prescribed specific enthalpy, mass fraction and trace substances" extends Modelica.Fluid.Sources.BaseClasses.PartialSource; parameter Boolean use_m_flow_in = false "Get the mass flow rate from the input connector"; parameter Boolean use_h_in= false "Get the specific enthalpy from the input connector"; parameter Boolean use_X_in = false "Get the composition from the input connector"; parameter Boolean use_C_in = false "Get the trace substances from the input connector"; parameter Modelica.SIunits.MassFlowRate m_flow = 0 "Fixed mass flow rate going out of the fluid port"; parameter Medium.SpecificEnthalpy h = Medium.h_default "Fixed value of specific enthalpy"; parameter Medium.MassFraction X[Medium.nX]( final quantity=Medium.substanceNames) = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( final quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances"; Modelica.Blocks.Interfaces.RealInput m_flow_in(final unit="kg/s") if use_m_flow_in "Prescribed mass flow rate"; Modelica.Blocks.Interfaces.RealInput h_in(final unit="J/kg") if use_h_in "Prescribed fluid specific enthalpy"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) if use_X_in "Prescribed fluid composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC]( final quantity=Medium.extraPropertiesNames) if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput m_flow_in_internal(final unit="kg/s") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput h_in_internal(final unit="J/kg") "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX]( each final unit = "kg/kg", final quantity=Medium.substanceNames) "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC]( final quantity=Medium.extraPropertiesNames) "Needed to connect to conditional connector"; equation Modelica.Fluid.Utilities.checkBoundary( Medium.mediumName, Medium.substanceNames, Medium.singleState, true, X_in_internal, "MassFlowSource_h"); connect(m_flow_in, m_flow_in_internal); connect(h_in, h_in_internal); connect(X_in, X_in_internal); connect(C_in, C_in_internal); if not use_m_flow_in then m_flow_in_internal = m_flow; end if; if not use_h_in then h_in_internal = h; end if; if not use_X_in then X_in_internal = X; end if; if not use_C_in then C_in_internal = C; end if; sum(ports.m_flow) = -m_flow_in_internal; medium.h = h_in_internal; medium.Xi = X_in_internal[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts); end MassFlowSource_h;

Annex60.Fluid.Sources.Outside Annex60.Fluid.Sources.Outside

Boundary that takes weather data, and optionally trace substances, as an input

Annex60.Fluid.Sources.Outside

Information

This model describes boundary conditions for pressure, enthalpy, and species concentration that can be obtained from weather data.

To use this model, connect weather data from Annex60.BoundaryConditions.WeatherData.ReaderTMY3 to the port weaBus of this model. This will cause the medium of this model to be at the pressure that is obtained from the weather file, and any flow that leaves this model to be at the temperature and humidity that are obtained from the weather data.

If the parameter use_C_in is false (default option), the C parameter is used as the trace substance for flow that leaves the component, and the C_in input connector is disabled; if use_C_in is true, then the C parameter is ignored, and the value provided by the input connector is used instead.

Note that boundary temperature, mass fractions and trace substances have only an effect if the mass flow is from the boundary into the port. If mass is flowing from the port into the boundary, the boundary definitions, with exception of boundary pressure, do not have an effect.

Extends from Annex60.Fluid.Sources.BaseClasses.Outside (Boundary that takes weather data, and optionally trace substances, as an input).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Booleanuse_C_infalseGet the trace substances from the input connector
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Fixed values of trace substances

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputC_in[Medium.nC]Prescribed boundary trace substances
BusweaBusBus with weather data

Modelica definition

model Outside "Boundary that takes weather data, and optionally trace substances, as an input" extends Annex60.Fluid.Sources.BaseClasses.Outside; equation connect(weaBus.pAtm, p_in_internal); connect(weaBus.TDryBul, T_in_internal); end Outside;

Annex60.Fluid.Sources.Outside_CpLowRise Annex60.Fluid.Sources.Outside_CpLowRise

Boundary that takes weather data as an input and computes wind pressure for low-rise buildings

Annex60.Fluid.Sources.Outside_CpLowRise

Information

This model describes boundary conditions for pressure, enthalpy, and species concentration that can be obtained from weather data. The model is identical to Buildings.Fluid.Sources.Outside, except that it adds the wind pressure to the pressure at the fluid port ports. The correlation that is used to compute the wind pressure is based on Swami and Chandra (1987) and valid for low-rise buildings with rectangular shape. The same correlation is also implemented in CONTAM (Persily and Ivy, 2001). For other buildings, the model Buildings.Fluid.Sources.Outside_Cp should be used that takes the wind pressure coefficient as an input or parameter.

The wind pressure coefficient is computed based on the side ratio of the walls, which is defined as

s = x ⁄ y

where x is the length of the wall that will be connected to this model, and y is the length of the adjacent wall. The wind direction is computed relative to the azimuth of this surface, which is equal to the parameter azi. The surface azimuth is defined in Annex60.Types.Azimuth. For example, if an exterior wall is South oriented, i.e., its outside-facing surface is towards South, use Annex60.Types.Azimuth.S.

Based on the surface azimuth, the wind direction and the side ratio of the walls, the model computes how much the wind pressure is attenuated compared to the reference wind pressure Cp0. The reference wind pressure Cp0 is a user-defined parameter, and must be equal to the wind pressure at zero wind incidence angle. Swami and Chandra (1987) recommend Cp0 = 0.6 for all low-rise buildings as this represents the average of various values reported in the literature. The computation of the actual wind pressure coefficient Cp is explained in the function Buildings.Airflow.Multizone.BaseClasses.windPressureLowRise that is called by this model.

The pressure p at the port ports is computed as

p = pw + Cp 1 ⁄ 2 v2 ρ,

where pw is the atmospheric pressure from the weather bus, v is the wind speed from the weather bus, and ρ is the fluid density.

References

Extends from Annex60.Fluid.Sources.BaseClasses.Outside (Boundary that takes weather data, and optionally trace substances, as an input).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
Booleanuse_C_infalseGet the trace substances from the input connector
ExtraPropertyC[Medium.nC]fill(0, Medium.nC)Fixed values of trace substances
RealCp00.6Wind pressure coefficient for wind normal to wall [1]
Reals Side ratio, s=length of this wall/length of adjacent wall [1]
Angleazi Surface azimuth (South:0, West:pi/2) [rad]

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputC_in[Medium.nC]Prescribed boundary trace substances
BusweaBusBus with weather data

Modelica definition

model Outside_CpLowRise "Boundary that takes weather data as an input and computes wind pressure for low-rise buildings" extends Annex60.Fluid.Sources.BaseClasses.Outside; parameter Real Cp0(min=0, max=1, final unit="1") = 0.6 "Wind pressure coefficient for wind normal to wall"; parameter Real s(final min=0, final unit="1") "Side ratio, s=length of this wall/length of adjacent wall"; parameter Modelica.SIunits.Angle azi "Surface azimuth (South:0, West:pi/2)"; Modelica.SIunits.Angle alpha "Wind incidence angle (0: normal to wall)"; Real CpAct(min=0, final unit="1") "Actual wind pressure coefficient"; Modelica.SIunits.Pressure pWin(displayUnit="Pa") "Change in pressure due to wind force"; protected Modelica.Blocks.Interfaces.RealInput pWea(min=0, nominal=1E5, final unit="Pa") "Pressure from weather bus"; Modelica.Blocks.Interfaces.RealInput vWin(final unit="m/s") "Wind speed from weather bus"; Modelica.Blocks.Interfaces.RealOutput pTot(min=0, nominal=1E5, final unit="Pa") "Sum of atmospheric pressure and wind pressure"; final parameter Real G = Modelica.Math.log(s) "Natural logarithm of side ratio"; Modelica.Blocks.Interfaces.RealInput winDir(final unit="rad", displayUnit="deg") "Wind direction from weather bus"; Modelica.SIunits.Angle surOut = azi-Modelica.Constants.pi "Angle of surface that is used to compute angle of attack of wind"; equation alpha = winDir-surOut; CpAct = Annex60.Airflow.Multizone.BaseClasses.windPressureLowRise( Cp0=Cp0, incAng=alpha, G=G); pWin = 0.5*CpAct*medium.d*vWin*vWin; pTot = pWea + pWin; connect(weaBus.winDir, winDir); connect(weaBus.winSpe, vWin); connect(weaBus.pAtm, pWea); connect(p_in_internal, pTot); connect(weaBus.TDryBul, T_in_internal); end Outside_CpLowRise;

Annex60.Fluid.Sources.TraceSubstancesFlowSource Annex60.Fluid.Sources.TraceSubstancesFlowSource

Source with mass flow that does not take part in medium mass balance (such as CO2)

Annex60.Fluid.Sources.TraceSubstancesFlowSource

Information

This model can be used to inject trace substances into a system. The model adds a mass flow rate to its port with a trace substance concentration of 1.

Typical use and important parameters

A typical use of this model is to add carbon dioxide to room air, since the carbon dioxide concentration is typically so small that it need not be added to the room mass balance, and since the mass flow rate can be made small compared to the room volume if the medium that leaves this component has a carbon dioxide concentration of 1. The parameter substanceName must be set to the name of the substance that is injected into the fluid.

Note however that mixing volumes from the package Annex60.Fluid.MixingVolumes allow to directly add a trace substance mass flow rate, which is more efficient than using this model.

Extends from Modelica.Fluid.Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model within the source
StringsubstanceName"CO2"Name of trace substance
Booleanuse_m_flow_infalseGet the trace substance mass flow rate from the input connector
MassFlowRatem_flow0Fixed mass flow rate going out of the fluid port [kg/s]

Connectors

TypeNameDescription
FluidPorts_bports[nPorts] 
input RealInputm_flow_inPrescribed mass flow rate for extra property [kg/s]

Modelica definition

model TraceSubstancesFlowSource "Source with mass flow that does not take part in medium mass balance (such as CO2)" extends Modelica.Fluid.Sources.BaseClasses.PartialSource; parameter String substanceName = "CO2" "Name of trace substance"; parameter Boolean use_m_flow_in = false "Get the trace substance mass flow rate from the input connector"; parameter Modelica.SIunits.MassFlowRate m_flow = 0 "Fixed mass flow rate going out of the fluid port"; Modelica.Blocks.Interfaces.RealInput m_flow_in(final unit="kg/s") if use_m_flow_in "Prescribed mass flow rate for extra property"; protected Modelica.Blocks.Interfaces.RealInput m_flow_in_internal(final unit="kg/s") "Needed to connect to conditional connector"; parameter Medium.ExtraProperty C_in_internal[Medium.nC]( each fixed=false, final quantity=Medium.extraPropertiesNames) "Boundary trace substances"; initial algorithm for i in 1:Medium.nC loop if ( Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], string2=substanceName, caseSensitive=false)) then C_in_internal[i] := 1; else C_in_internal[i] := 0; end if; end for; assert(sum(C_in_internal) > 1E-4, "Trace substance '" + substanceName + "' is not present in medium '" + Medium.mediumName + "'.\n" + "Check source parameter and medium model."); equation connect(m_flow_in, m_flow_in_internal); if not use_m_flow_in then m_flow_in_internal = m_flow; end if; assert(m_flow_in_internal >= 0, "Reverse flow for species source is not yet implemented."); sum(ports.m_flow) = -m_flow_in_internal; medium.T = Medium.T_default; medium.Xi = Medium.X_default[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts); end TraceSubstancesFlowSource;

http://iea-annex60.org