This package contains examples for the use of models that can be found in Buildings.Fluid.HeatExchangers.BaseClasses.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).Name | Description |
---|---|
EpsilonNTUZ | Test model for the functions epsilon_ntuZ and ntu_epsilonZ |
HACoilInside | Test model for HACoilInside |
HANaturalCylinder | Test model for natural convection outside of a coil |
HexElementLatent | Model that tests the basic element that is used to built heat exchanger models |
HexElementSensible | Model that tests the basic element that is used to built heat exchanger models |
Manifold | Test model for coil manifold |
MassExchange | Test model for latent heat exchange |
RayleighNumber | Test model for RayleighNumber |
model EpsilonNTUZ "Test model for the functions epsilon_ntuZ and ntu_epsilonZ" extends Modelica.Icons.Example; import f = Buildings.Fluid.Types.HeatExchangerFlowRegime; Real epsilon[5] "Heat exchanger effectiveness"; Real eps[5] "Heat exchanger effectiveness"; Real Z[5] "Ratio of capacity flow rates"; Real ntu[5] "Number of transfer units"; Real diff[5] "Difference in results"; equation for conf in {f.ParallelFlow, f.CounterFlow, f.CrossFlowUnmixed, f.CrossFlowCMinMixedCMaxUnmixed, f.CrossFlowCMinUnmixedCMaxMixed} loop Z[conf] = abs(cos(time)); epsilon[conf] = 0.01 + 0.98*abs(sin(time)) * 1/(1+Z[conf]); ntu[conf] = ntu_epsilonZ(epsilon[conf], Z[conf], conf); eps[conf] = epsilon_ntuZ(ntu[conf], Z[conf], conf); diff[conf] = epsilon[conf] - eps[conf]; assert(abs(diff[conf]) < 1E-10, "Check model implementation for bugs."); end for;end EpsilonNTUZ;
Test model for Buildings.Fluid.HeatExchanger.BaseClassess.HACoilInside.
Extends from Modelica.Icons.Example (Icon for runnable examples).model HACoilInside "Test model for HACoilInside" extends Modelica.Icons.Example;Modelica.Blocks.Sources.Sine sine( freqHz=0.1, amplitude=0.063, offset=0.063) "Mass flow rate"; Modelica.Blocks.Sources.Sine sine1( amplitude=10, freqHz=0.1, offset=273.15 + 50) "Temperature"; Buildings.Fluid.HeatExchangers.BaseClasses.HACoilInside hASin( hA_nominal=13*(0.5+1)/0.5, m_flow_nominal=0.063) "Model for convection coefficient"; equationconnect(sine1.y, hASin.T); connect(sine.y, hASin.m_flow); end HACoilInside;
Test model for Buildings.Fluid.HeatExchangers.BaseClasses.HANaturalCylinder.
Extends from Modelica.Icons.Example (Icon for runnable examples).model HANaturalCylinder "Test model for natural convection outside of a coil" extends Modelica.Icons.Example;Buildings.Fluid.HeatExchangers.BaseClasses.HANaturalCylinder hANatCyl(redeclare package Medium = Buildings.Media.ConstantPropertyLiquidWater, ChaLen=0.1, hA_nominal=10, TFlu_nominal=293.15, TSur_nominal=313.15) "Calculates an hA value for natural convection around a cylinder"; Modelica.Blocks.Sources.Ramp TSur( duration=100, height=50, offset=293.15) "Temperature of the pipe surface"; Modelica.Blocks.Sources.Ramp TFlu( duration=100, startTime=150, height=50, offset=293.15) "Temperature of the surrounding fluid"; equationconnect(TSur.y, hANatCyl.TSur); connect(TFlu.y, hANatCyl.TFlu); end HANaturalCylinder;
model HexElementLatent "Model that tests the basic element that is used to built heat exchanger models" extends Modelica.Icons.Example; package Medium_W = Buildings.Media.ConstantPropertyLiquidWater; package Medium_A = Buildings.Media.PerfectGases.MoistAirUnsaturated;Buildings.Fluid.Sources.Boundary_pT sin_2( redeclare package Medium = Medium_A, use_p_in=true, use_T_in=true, T=288.15, nPorts=1); Modelica.Blocks.Sources.Ramp PIn( height=20, duration=300, startTime=300, offset=101325); Buildings.Fluid.Sources.Boundary_pT sou_2( redeclare package Medium = Medium_A, use_p_in=true, use_T_in=true, T=283.15, nPorts=1); Modelica.Blocks.Sources.Ramp TWat( startTime=1, height=4, duration=300, offset=303.15) "Water temperature"; Modelica.Blocks.Sources.Constant TDb(k=278.15) "Drybulb temperature"; Modelica.Blocks.Sources.Constant POut(k=101325); Buildings.Fluid.Sources.Boundary_pT sin_1( redeclare package Medium = Medium_W, use_p_in=true, T=288.15, nPorts=1); Buildings.Fluid.Sources.Boundary_pT sou_1( redeclare package Medium = Medium_W, use_T_in=true, nPorts=1, p=101340, T=293.15); Fluid.FixedResistances.FixedResistanceDpM res_22( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_A); Fluid.FixedResistances.FixedResistanceDpM res_12( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_W); Buildings.Fluid.HeatExchangers.BaseClasses.HexElementLatent hex( m1_flow_nominal=5, m2_flow_nominal=5, UA_nominal=9999, redeclare package Medium1 = Medium_W, redeclare package Medium2 = Medium_A, dp1_nominal=5, dp2_nominal=5, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial, energyDynamics1=Modelica.Fluid.Types.Dynamics.FixedInitial, energyDynamics2=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Blocks.Sources.Constant TDb1(k=303.15) "Drybulb temperature"; Fluid.FixedResistances.FixedResistanceDpM res_11( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_W); Fluid.FixedResistances.FixedResistanceDpM res_21( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_A); Modelica.Blocks.Sources.Constant hACon(k=10000) "Convective heat transfer"; inner Modelica.Fluid.System system; equationconnect(TDb.y, sou_1.T_in); connect(POut.y, sin_1.p_in); connect(PIn.y, sou_2.p_in); connect(TWat.y, sou_2.T_in); connect(POut.y, sin_2.p_in); connect(hex.port_b1, res_12.port_a); connect(res_22.port_a, hex.port_b2); connect(TDb1.y, sin_2.T_in); connect(res_11.port_b, hex.port_a1); connect(hex.port_a2, res_21.port_b); connect(hACon.y, hex.Gc_1); connect(hACon.y, hex.Gc_2); connect(sou_2.ports[1], res_21.port_a); connect(sin_1.ports[1], res_12.port_b); connect(sou_1.ports[1], res_11.port_a); connect(sin_2.ports[1], res_22.port_b); end HexElementLatent;
model HexElementSensible "Model that tests the basic element that is used to built heat exchanger models" extends Modelica.Icons.Example; package Medium_W = Buildings.Media.ConstantPropertyLiquidWater; package Medium_A = Buildings.Media.PerfectGases.MoistAirUnsaturated;Buildings.Fluid.Sources.Boundary_pT sin_2( redeclare package Medium = Medium_A, use_p_in=true, use_T_in=true, T=288.15, nPorts=1); Modelica.Blocks.Sources.Ramp PIn( height=20, duration=300, startTime=300, offset=101325); Buildings.Fluid.Sources.Boundary_pT sou_2( redeclare package Medium = Medium_A, use_p_in=true, use_T_in=true, T=283.15, nPorts=1); Modelica.Blocks.Sources.Ramp TWat( startTime=1, height=4, duration=300, offset=303.15) "Water temperature"; Modelica.Blocks.Sources.Constant TDb(k=278.15) "Drybulb temperature"; Modelica.Blocks.Sources.Constant POut(k=101325); Buildings.Fluid.Sources.Boundary_pT sin_1( redeclare package Medium = Medium_W, use_p_in=true, T=288.15, nPorts=1); Buildings.Fluid.Sources.Boundary_pT sou_1( redeclare package Medium = Medium_W, use_T_in=true, nPorts=1, p=101340, T=293.15); Fluid.FixedResistances.FixedResistanceDpM res_22( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_A); Fluid.FixedResistances.FixedResistanceDpM res_12( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_W); Buildings.Fluid.HeatExchangers.BaseClasses.HexElementSensible hex( m1_flow_nominal=5, m2_flow_nominal=5, UA_nominal=9999, redeclare package Medium1 = Medium_W, redeclare package Medium2 = Medium_A, dp1_nominal=5, dp2_nominal=5, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, energyDynamics1=Modelica.Fluid.Types.Dynamics.FixedInitial, energyDynamics2=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Blocks.Sources.Constant TDb1(k=303.15) "Drybulb temperature"; Fluid.FixedResistances.FixedResistanceDpM res_11( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_W); Fluid.FixedResistances.FixedResistanceDpM res_21( m_flow_nominal=5, dp_nominal=5, redeclare package Medium = Medium_A); Modelica.Blocks.Sources.Constant hACon(k=10000) "Convective heat transfer"; inner Modelica.Fluid.System system; equationconnect(TDb.y, sou_1.T_in); connect(POut.y, sin_1.p_in); connect(PIn.y, sou_2.p_in); connect(TWat.y, sou_2.T_in); connect(POut.y, sin_2.p_in); connect(hex.port_b1, res_12.port_a); connect(res_22.port_a, hex.port_b2); connect(TDb1.y, sin_2.T_in); connect(res_11.port_b, hex.port_a1); connect(hex.port_a2, res_21.port_b); connect(hACon.y, hex.Gc_1); connect(hACon.y, hex.Gc_2); connect(sou_2.ports[1], res_21.port_a); connect(sin_1.ports[1], res_12.port_b); connect(sou_1.ports[1], res_11.port_a); connect(sin_2.ports[1], res_22.port_b); end HexElementSensible;
Type | Name | Default | Description |
---|---|---|---|
Integer | nPipPar | 3 | Number of parallel pipes |
Integer | nPipSeg | 4 | Number of pipe segments |
model Manifold "Test model for coil manifold" package Medium = Buildings.Media.ConstantPropertyLiquidWater; extends Modelica.Icons.Example; parameter Integer nPipPar = 3 "Number of parallel pipes"; parameter Integer nPipSeg = 4 "Number of pipe segments";Modelica.Blocks.Sources.Constant POut(k=101325); Buildings.Fluid.Sources.Boundary_pT sin_1( redeclare package Medium = Medium, use_p_in=true, T=283.15, nPorts=2); Buildings.Fluid.Sources.Boundary_pT sou_1( redeclare package Medium = Medium, use_p_in=true, use_T_in=true, p=101335, T=293.15, nPorts=2); Fluid.FixedResistances.FixedResistanceDpM res_1( m_flow_nominal=5, redeclare package Medium = Medium, dp_nominal=10, use_dh=true, from_dp=false); Buildings.Fluid.Sensors.MassFlowRate[nPipPar] mfr_1(redeclare each package Medium = Medium); Modelica.Blocks.Sources.Ramp TDb( height=1, duration=1, offset=293.15); Modelica.Blocks.Sources.Ramp P( duration=1, height=40, offset=101305); Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldFixedResistance pipFixRes_1( redeclare package Medium = Medium, nPipPar=nPipPar, m_flow_nominal=5, dp_nominal=10, linearized=false, mStart_flow_a=5); Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldNoResistance pipNoRes_1( redeclare package Medium = Medium, nPipPar=nPipPar, mStart_flow_a=5); Fluid.FixedResistances.FixedResistanceDpM res_2( m_flow_nominal=5, redeclare package Medium = Medium, dp_nominal=10, use_dh=true, from_dp=false); Buildings.Fluid.Sensors.MassFlowRate[nPipPar, nPipSeg] mfr_2(redeclare each package Medium = Medium); Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldFixedResistance ducFixRes_2( redeclare package Medium = Medium, nPipPar=nPipPar, nPipSeg=nPipSeg, m_flow_nominal=5, dp_nominal=10, linearized=false, mStart_flow_a=5); Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldNoResistance ducNoRes_2( redeclare package Medium = Medium, nPipPar=nPipPar, nPipSeg=nPipSeg, mStart_flow_a=5); Buildings.Fluid.HeatExchangers.BaseClasses.CoilHeader hea1( redeclare package Medium = Medium, nPipPar=nPipPar, mStart_flow_a=5) "Header for water-side heat exchanger register"; Buildings.Fluid.HeatExchangers.BaseClasses.CoilHeader hea2( redeclare package Medium = Medium, nPipPar=nPipPar, mStart_flow_a=5) "Header for water-side heat exchanger register"; inner Modelica.Fluid.System system; equationconnect(POut.y, sin_1.p_in); connect(TDb.y, sou_1.T_in); connect(P.y, sou_1.p_in); connect(res_1.port_a, pipNoRes_1.port_a); connect(res_2.port_a,ducNoRes_2. port_a); connect(pipFixRes_1.port_b, hea1.port_a); connect(hea1.port_b, mfr_1.port_a); connect(mfr_1.port_b, hea2.port_a); connect(hea2.port_b, pipNoRes_1.port_b); connect(ducFixRes_2.port_b, mfr_2.port_a); connect(mfr_2.port_b, ducNoRes_2.port_b); connect(sou_1.ports[1], pipFixRes_1.port_a); connect(sou_1.ports[2], ducFixRes_2.port_a); connect(sin_1.ports[1], res_1.port_b); connect(sin_1.ports[2], res_2.port_b); end Manifold;
model MassExchange "Test model for latent heat exchange" extends Modelica.Icons.Example; package Medium = Buildings.Media.PerfectGases.MoistAir;Buildings.Fluid.HeatExchangers.BaseClasses.MassExchange masExc(redeclare package Medium = Medium) "Model for mass exchange"; Modelica.Blocks.Sources.Ramp TSur( duration=1, height=20, offset=273.15 + 5) "Surface temperature"; Modelica.Blocks.Sources.Constant X_w(k=0.01) "Humidity mass fraction in medium"; Modelica.Blocks.Sources.Constant Gc(k=1) "Sensible convective thermal conductance"; equationconnect(TSur.y, masExc.TSur); connect(Gc.y, masExc.Gc); connect(X_w.y, masExc.XInf); end MassExchange;
Test model for Buildings.Fluid.HeatExchangers.BaseClasses.RayleighNumber.
Extends from Modelica.Icons.Example (Icon for runnable examples).model RayleighNumber "Test model for RayleighNumber" extends Modelica.Icons.Example;Buildings.Fluid.HeatExchangers.BaseClasses.RayleighNumber rayleighNumber(ChaLen= 0.1, redeclare package Medium = Buildings.Media.ConstantPropertyLiquidWater); Modelica.Blocks.Sources.Sine TSur( amplitude=50, freqHz=1/50, offset=273.15 + 50) "Temperature of the hot surface"; Modelica.Blocks.Sources.Sine TFlu( amplitude=50, freqHz=1/25, offset=273.15 + 50) "Temperature of the surrounding fluid"; equationconnect(TSur.y, rayleighNumber.TSur); connect(TFlu.y, rayleighNumber.TFlu); end RayleighNumber;