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).
Name | Description |
---|---|
FixedBoundary | Boundary source component |
Boundary_pT | Boundary with prescribed pressure, temperature, composition and trace substances |
Boundary_ph | Boundary with prescribed pressure, specific enthalpy, composition and trace substances |
MassFlowSource_T | Ideal flow source that produces a prescribed mass flow with prescribed temperature, mass fraction and trace substances |
MassFlowSource_h | Ideal flow source that produces a prescribed mass flow with prescribed specific enthalpy, mass fraction and trace substances |
BaseClasses | Base classes used in the Sources package (only of interest to build new component models) |
Model FixedBoundary 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 Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium model within the source | |
Boundary pressure or Boundary density | |||
Boolean | use_p | true | select p or d |
AbsolutePressure | p | Medium.p_default | Boundary pressure [Pa] |
Density | d | Medium.density_pTX(Medium.p_... | Boundary density [kg/m3] |
Boundary temperature or Boundary specific enthalpy | |||
Boolean | use_T | true | select T or h |
Temperature | T | Medium.T_default | Boundary temperature [K] |
SpecificEnthalpy | h | Medium.h_default | Boundary specific enthalpy [J/kg] |
Only for multi-substance flow | |||
MassFraction | X[Medium.nX] | Medium.X_default | Boundary mass fractions m_i/m [kg/kg] |
Only for trace-substance flow | |||
ExtraProperty | C[Medium.nC] | fill(0, Medium.nC) | Boundary trace substances |
Type | Name | Description |
---|---|---|
FluidPorts_b | ports[nPorts] |
model FixedBoundary "Boundary source component" import Modelica.Media.Interfaces.PartialMedium.Choices.IndependentVariables; extends 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(Medium.p_default, Medium.T_default, 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]( quantity=Medium.substanceNames)=Medium.X_default "Boundary mass fractions m_i/m"; parameter Medium.ExtraProperty C[Medium.nC]( quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Boundary trace substances"; protected Medium.ThermodynamicState state; equation Modelica.Fluid.Utilities.checkBoundary(Medium.mediumName, Medium.substanceNames, Medium.singleState, use_p, X, "FixedBoundary"); if use_p or Medium.singleState then // p given if use_T then // p,T,X given state = Medium.setState_pTX(p, T, X); else // p,h,X given state = Medium.setState_phX(p, h, X); end if; if Medium.ThermoStates == IndependentVariables.dTX then medium.d = Medium.density(state); else medium.p = Medium.pressure(state); end if; if Medium.ThermoStates == IndependentVariables.ph or Medium.ThermoStates == IndependentVariables.phX then medium.h = Medium.specificEnthalpy(state); else medium.T = Medium.temperature(state); end if; else // d given if use_T then // d,T,X given state = Medium.setState_dTX(d, T, X); if Medium.ThermoStates == IndependentVariables.dTX then medium.d = Medium.density(state); else medium.p = Medium.pressure(state); end if; if Medium.ThermoStates == IndependentVariables.ph or Medium.ThermoStates == IndependentVariables.phX then medium.h = Medium.specificEnthalpy(state); else medium.T = Medium.temperature(state); end if; else // d,h,X given medium.d = d; medium.h = h; state = Medium.setState_dTX(d,T,X); end if; end if; medium.Xi = X[1:Medium.nXi]; ports.C_outflow = fill(C, nPorts);end FixedBoundary;
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 thing goes for 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 Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium model within the source | |
Boolean | use_p_in | false | Get the pressure from the input connector |
Boolean | use_T_in | false | Get the temperature from the input connector |
Boolean | use_X_in | false | Get the composition from the input connector |
Boolean | use_C_in | false | Get the trace substances from the input connector |
AbsolutePressure | p | Medium.p_default | Fixed value of pressure [Pa] |
Temperature | T | Medium.T_default | Fixed value of temperature [K] |
MassFraction | X[Medium.nX] | Medium.X_default | Fixed value of composition [kg/kg] |
ExtraProperty | C[Medium.nC] | fill(0, Medium.nC) | Fixed values of trace substances |
Type | Name | Description |
---|---|---|
FluidPorts_b | ports[nPorts] | |
input RealInput | p_in | Prescribed boundary pressure |
input RealInput | T_in | Prescribed boundary temperature |
input RealInput | X_in[Medium.nX] | Prescribed boundary composition |
input RealInput | C_in[Medium.nC] | Prescribed boundary trace substances |
model Boundary_pT "Boundary with prescribed pressure, temperature, composition and trace substances" import Modelica.Media.Interfaces.PartialMedium.Choices.IndependentVariables; extends 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] = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances";Modelica.Blocks.Interfaces.RealInput p_in if use_p_in "Prescribed boundary pressure"; Modelica.Blocks.Interfaces.RealInput T_in if use_T_in "Prescribed boundary temperature"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX] if use_X_in "Prescribed boundary composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC] if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput p_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput T_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX] "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC] "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; if Medium.ThermoStates == IndependentVariables.ph or Medium.ThermoStates == IndependentVariables.phX then medium.h = Medium.specificEnthalpy(Medium.setState_pTX(p_in_internal, T_in_internal, X_in_internal)); else medium.T = T_in_internal; end if; medium.Xi = X_in_internal[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts);end Boundary_pT;
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 thing goes for the specific enthalpy and composition
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 Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium model within the source | |
Boolean | use_p_in | false | Get the pressure from the input connector |
Boolean | use_h_in | false | Get the specific enthalpy from the input connector |
Boolean | use_X_in | false | Get the composition from the input connector |
Boolean | use_C_in | false | Get the trace substances from the input connector |
AbsolutePressure | p | Medium.p_default | Fixed value of pressure [Pa] |
SpecificEnthalpy | h | Medium.h_default | Fixed value of specific enthalpy [J/kg] |
MassFraction | X[Medium.nX] | Medium.X_default | Fixed value of composition [kg/kg] |
ExtraProperty | C[Medium.nC] | fill(0, Medium.nC) | Fixed values of trace substances |
Type | Name | Description |
---|---|---|
FluidPorts_b | ports[nPorts] | |
input RealInput | p_in | Prescribed boundary pressure |
input RealInput | h_in | Prescribed boundary specific enthalpy |
input RealInput | X_in[Medium.nX] | Prescribed boundary composition |
input RealInput | C_in[Medium.nC] | Prescribed boundary trace substances |
model Boundary_ph "Boundary with prescribed pressure, specific enthalpy, composition and trace substances" import Modelica.Media.Interfaces.PartialMedium.Choices.IndependentVariables; extends 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] = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances";Modelica.Blocks.Interfaces.RealInput p_in if use_p_in "Prescribed boundary pressure"; Modelica.Blocks.Interfaces.RealInput h_in if use_h_in "Prescribed boundary specific enthalpy"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX] if use_X_in "Prescribed boundary composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC] if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput p_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput h_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX] "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC] "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; if Medium.ThermoStates == IndependentVariables.ph or Medium.ThermoStates == IndependentVariables.phX then medium.h = h_in_internal; else medium.T = Medium.temperature(Medium.setState_phX(p_in_internal, h_in_internal, X_in_internal)); end if; medium.Xi = X_in_internal[1:Medium.nXi]; ports.C_outflow = fill(C_in_internal, nPorts);end Boundary_ph;
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 thing goes for the temperature and composition
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 Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium model within the source | |
Boolean | use_m_flow_in | false | Get the mass flow rate from the input connector |
Boolean | use_T_in | false | Get the temperature from the input connector |
Boolean | use_X_in | false | Get the composition from the input connector |
Boolean | use_C_in | false | Get the trace substances from the input connector |
MassFlowRate | m_flow | 0 | Fixed mass flow rate going out of the fluid port [kg/s] |
Temperature | T | Medium.T_default | Fixed value of temperature [K] |
MassFraction | X[Medium.nX] | Medium.X_default | Fixed value of composition [kg/kg] |
ExtraProperty | C[Medium.nC] | fill(0, Medium.nC) | Fixed values of trace substances |
Type | Name | Description |
---|---|---|
FluidPorts_b | ports[nPorts] | |
input RealInput | m_flow_in | Prescribed mass flow rate |
input RealInput | T_in | Prescribed fluid temperature |
input RealInput | X_in[Medium.nX] | Prescribed fluid composition |
input RealInput | C_in[Medium.nC] | Prescribed boundary trace substances |
model MassFlowSource_T "Ideal flow source that produces a prescribed mass flow with prescribed temperature, mass fraction and trace substances" extends 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 Medium.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] = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances";Modelica.Blocks.Interfaces.RealInput m_flow_in if use_m_flow_in "Prescribed mass flow rate"; Modelica.Blocks.Interfaces.RealInput T_in if use_T_in "Prescribed fluid temperature"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX] if use_X_in "Prescribed fluid composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC] if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput m_flow_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput T_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX] "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC] "Needed to connect to conditional connector"; equation 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;
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 thing goes for the temperature and composition
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 Sources.BaseClasses.PartialSource (Partial component source with one fluid connector).
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium model within the source | |
Boolean | use_m_flow_in | false | Get the mass flow rate from the input connector |
Boolean | use_h_in | false | Get the specific enthalpy from the input connector |
Boolean | use_X_in | false | Get the composition from the input connector |
Boolean | use_C_in | false | Get the trace substances from the input connector |
MassFlowRate | m_flow | 0 | Fixed mass flow rate going out of the fluid port [kg/s] |
SpecificEnthalpy | h | Medium.h_default | Fixed value of specific enthalpy [J/kg] |
MassFraction | X[Medium.nX] | Medium.X_default | Fixed value of composition [kg/kg] |
ExtraProperty | C[Medium.nC] | fill(0, Medium.nC) | Fixed values of trace substances |
Type | Name | Description |
---|---|---|
FluidPorts_b | ports[nPorts] | |
input RealInput | m_flow_in | Prescribed mass flow rate |
input RealInput | h_in | Prescribed fluid specific enthalpy |
input RealInput | X_in[Medium.nX] | Prescribed fluid composition |
input RealInput | C_in[Medium.nC] | Prescribed boundary trace substances |
model MassFlowSource_h "Ideal flow source that produces a prescribed mass flow with prescribed specific enthalpy, mass fraction and trace substances" extends 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 Medium.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] = Medium.X_default "Fixed value of composition"; parameter Medium.ExtraProperty C[Medium.nC]( quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) "Fixed values of trace substances";Modelica.Blocks.Interfaces.RealInput m_flow_in if use_m_flow_in "Prescribed mass flow rate"; Modelica.Blocks.Interfaces.RealInput h_in if use_h_in "Prescribed fluid specific enthalpy"; Modelica.Blocks.Interfaces.RealInput X_in[Medium.nX] if use_X_in "Prescribed fluid composition"; Modelica.Blocks.Interfaces.RealInput C_in[Medium.nC] if use_C_in "Prescribed boundary trace substances"; protected Modelica.Blocks.Interfaces.RealInput m_flow_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput h_in_internal "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput X_in_internal[Medium.nX] "Needed to connect to conditional connector"; Modelica.Blocks.Interfaces.RealInput C_in_internal[Medium.nC] "Needed to connect to conditional connector"; equation 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;