This package contains examples for the use of models that can be found in Buildings.Fluid.BaseClasses.FlowModels.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).Name | Description |
---|---|
InverseFlowFunction | Test model for flow function and its inverse |
TestFlowFunctions | Test model for flow functions |
This model tests the inverse formulation of the flow functions.
The pressure difference dp
and dpCalc
need to
be equal up to the solver tolerance, except for a small neighborhood
around the origin. In this neighborhood around the origin, the functions
Buildings.Fluid.BaseClasses.FlowModels.basicFlowFunction_dp
and
Buildings.Fluid.BaseClasses.FlowModels.basicFlowFunction_m_flow
are not invertible.
Type | Name | Default | Description |
---|---|---|---|
Real | k | 0.5 | |
MassFlowRate | m_flow_nominal | 1 | Nominal flow rate [kg/s] |
model InverseFlowFunction "Test model for flow function and its inverse" extends Modelica.Icons.Example; Modelica.SIunits.MassFlowRate m_flow; Modelica.SIunits.Pressure dp(displayUnit="Pa") "Pressure difference"; Modelica.SIunits.Pressure dpCalc(displayUnit="Pa") "Pressure difference computed by the flow functions"; Modelica.SIunits.Pressure deltaDp(displayUnit="Pa") "Pressure difference between input and output to the functions"; Modelica.SIunits.Time dTime= 2; parameter Real k = 0.5; parameter Modelica.SIunits.MassFlowRate m_flow_nominal = 1 "Nominal flow rate"; equation dp = (time-0.5)/dTime * 20; m_flow=FlowModels.basicFlowFunction_dp(dp=dp, k=k, m_flow_turbulent=m_flow_nominal*0.3); dpCalc=FlowModels.basicFlowFunction_m_flow(m_flow=m_flow, k=k, m_flow_turbulent=m_flow_nominal*0.3); deltaDp = dp - dpCalc;end InverseFlowFunction;
Type | Name | Default | Description |
---|---|---|---|
Pressure | p2 | 101325 | Boundary condition [Pa] |
Boolean | from_dp | true | |
Real | k | 0.5 | |
MassFlowRate | m_flow_nominal | 1 | Nominal flow rate [kg/s] |
model TestFlowFunctions "Test model for flow functions" extends Modelica.Icons.Example; Modelica.SIunits.MassFlowRate m1_flow; Modelica.SIunits.MassFlowRate m2_flow; Modelica.SIunits.Pressure dp1; Modelica.SIunits.Pressure dp2; Modelica.SIunits.Pressure p1_nominal=101325; Modelica.SIunits.Time dTime= 1; Modelica.SIunits.Pressure p1 "Boundary condition"; parameter Modelica.SIunits.Pressure p2 = 101325 "Boundary condition"; parameter Boolean from_dp = true; parameter Real k = 0.5; parameter Modelica.SIunits.MassFlowRate m_flow_nominal = 1 "Nominal flow rate"; equation p1 = p1_nominal + (time-0.5)/dTime * 20; m1_flow = m2_flow; p2-p1 = dp1 + dp2; if from_dp then m1_flow=FlowModels.basicFlowFunction_dp(dp=dp1, k=k, m_flow_turbulent=m_flow_nominal*0.3); m2_flow=FlowModels.basicFlowFunction_dp(dp=dp2, k=k, m_flow_turbulent=m_flow_nominal*0.3); else dp1=FlowModels.basicFlowFunction_m_flow(m_flow=m1_flow, k=k, m_flow_turbulent=m_flow_nominal*0.3); dp2=FlowModels.basicFlowFunction_m_flow(m_flow=m2_flow, k=k, m_flow_turbulent=m_flow_nominal*0.3); end if; assert(abs(dp1-dp2) < 1E-5, "Error in implementation.");end TestFlowFunctions;