| Name | Description |
|---|---|
| Package with base classes for example models | |
| Damper | |
| Delay | |
| FixedResistance | |
| FixedResistancesParallel | |
| FlowMachine | |
| MITScalable | System model for MIT building |
| MixingVolume | |
| MixingVolumeDryAir | |
| MixingVolumeInitialization | |
| MixingVolumeMoistAir | |
| OAMixingBoxMinimumDamper | |
| Resistances | Test of multiple resistances |
| SplitterFixedResistanceDpM | |
| ThreeWayValves | |
| TwoWayValves | |
| TwoWayValvesMotor | |
| VAVBoxExponential |
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.IdealGases.S... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model Damper
package Medium = Buildings.Media.IdealGases.SimpleAir;
Buildings.Fluids.Actuators.Dampers.Exponential res(
A=1,
redeclare package Medium = Medium);
Modelica.Blocks.Sources.Ramp yRam(
duration=0.3,
height=1,
offset=0,
startTime=0.2);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=293.15);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Buildings.Fluids.Actuators.Dampers.Exponential res1(
A=1,
redeclare package Medium = Medium);
Modelica.Blocks.Sources.Ramp yRam1(
duration=0.3,
height=1,
offset=0);
Modelica.Blocks.Sources.Ramp P1(
duration=0.5,
startTime=0.5,
height=-10,
offset=101330);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(
redeclare package Medium =
Medium, T=293.15);
Modelica.Blocks.Sources.Constant PAtm1(
k=101325);
Modelica.Blocks.Sources.Constant PAtm0(k=101335);
equation
connect(yRam.y, res.y);
connect(res.port_b, sin.port);
connect(res.port_a, sou.port);
connect(PAtm.y, sin.p_in);
connect(yRam1.y, res1.y);
connect(res1.port_b, sin1.port);
connect(res1.port_a, sou1.port);
connect(P1.y, sou1.p_in);
connect(PAtm1.y, sin1.p_in);
connect(PAtm0.y, sou.p_in);
end Damper;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.ConstantProp... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model Delay
package Medium = Buildings.Media.ConstantPropertyLiquidWater;
// package Medium = Buildings.Media.IdealGases.SimpleAir;
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Modelica.Blocks.Sources.Ramp P(
duration=1,
height=20,
offset=101315);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
from_dp=true,
m0_flow=5,
dp0=5,
redeclare package Medium = Medium);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(
T=293.15, redeclare package Medium = Medium);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(
T=283.15, redeclare package Medium = Medium);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res2(
from_dp=true,
m0_flow=5,
dp0=5,
redeclare package Medium = Medium);
Buildings.Fluids.Delays.DelayFirstOrder del( m0_flow=5, redeclare
package Medium = Medium,
T_start=283.15,
initType=Modelica_Fluid.Types.Init.InitialValues);
equation
connect(P.y, sou.p_in);
connect(PAtm.y, sin.p_in);
connect(sou.port, res1.port_a);
connect(res2.port_b, sin.port);
connect(del.port_b, res2.port_a);
connect(del.port_a, res1.port_b);
end Delay;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.ConstantProp... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model FixedResistance
import Buildings;
package Medium =
Buildings.Media.ConstantPropertyLiquidWater;
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Modelica.Blocks.Sources.Ramp P(
duration=1,
height=20,
offset=101315);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
redeclare package Medium = Medium,
from_dp=true,
m0_flow=5,
dp0=10);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res2(
redeclare package Medium = Medium,
from_dp=true,
m0_flow=5,
dp0=10,
use_dh=true);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou2(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin2(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res3(
redeclare package Medium = Medium,
from_dp=true,
m0_flow=5,
dp0=10,
use_dh=true);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou3(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin3(
redeclare package Medium =
Medium, T=283.15);
FixedResistances.LosslessPipe pipCon(redeclare package Medium = Medium)
"Lossless pipe connection";
Modelica_Fluid.Sensors.MassFlowRate masFlo2(redeclare package Medium = Medium)
"Mass flow rate sensor";
Modelica_Fluid.Sensors.MassFlowRate masFlo3(redeclare package Medium = Medium)
"Mass flow rate sensor";
Buildings.Utilities.Controls.AssertEquality assEqu(threShold=1E-4, message=
"Inputs differ, check that lossless pipe is correctly implemented.")
"Assert equality of the two mass flow rates";
equation
connect(PAtm.y, sin1.p_in);
connect(sou1.port, res1.port_a);
connect(sin1.port, res1.port_b);
connect(PAtm.y, sin2.p_in);
connect(sou2.port, res2.port_a);
connect(PAtm.y,sin3. p_in);
connect(sou3.port,res3. port_a);
connect(pipCon.port_b, sin3.port);
connect(P.y, sou1.p_in);
connect(P.y, sou2.p_in);
connect(P.y, sou3.p_in);
connect(res2.port_b, masFlo2.port_a);
connect(masFlo2.port_b, sin2.port);
connect(res3.port_b, masFlo3.port_a);
connect(masFlo3.port_b, pipCon.port_a);
connect(masFlo2.m_flow, assEqu.u1);
connect(masFlo3.m_flow, assEqu.u2);
end FixedResistance;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.ConstantProp... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model FixedResistancesParallel
import Buildings;
package Medium =
Buildings.Media.ConstantPropertyLiquidWater;
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Modelica.Blocks.Sources.Ramp P(
duration=1,
height=20,
offset=101315);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
redeclare package Medium = Medium,
m0_flow=5,
dp0=10,
deltaM=0.3,
linearized=false,
from_dp=false);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res2(
redeclare package Medium = Medium,
m0_flow=5,
dp0=10,
deltaM=0.3,
linearized=false,
from_dp=false);
Modelica_Fluid.Sensors.MassFlowRate masFlo2(redeclare package Medium = Medium)
"Mass flow rate sensor";
Buildings.Utilities.Controls.AssertEquality assEqu(threShold=1E-4, message=
"Inputs differ, check that lossless pipe is correctly implemented.")
"Assert equality of the two mass flow rates";
Modelica_Fluid.Sensors.MassFlowRate masFlo1(redeclare package Medium = Medium)
"Mass flow rate sensor";
equation
connect(PAtm.y, sin1.p_in);
connect(sou1.port, res1.port_a);
connect(P.y, sou1.p_in);
connect(res2.port_b, masFlo2.port_a);
connect(res1.port_b, masFlo1.port_a);
connect(masFlo1.port_b, sin1.port);
connect(masFlo2.port_b, sin1.port);
connect(sou1.port, res2.port_a);
connect(masFlo1.m_flow, assEqu.u1);
connect(masFlo2.m_flow, assEqu.u2);
end FixedResistancesParallel;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.PerfectGases... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model FlowMachine
//package Medium = Buildings.Media.IdealGases.SimpleAir;
package Medium = Buildings.Media.PerfectGases.MoistAir;
Modelica.Blocks.Sources.Ramp P(
height=-1500,
offset=101325,
duration=1.5);
Buildings.Fluids.Movers.FlowMachinePolynomial fan(
D=0.6858,
a={4.2904,-1.387,4.2293,-3.92920,0.8534},
b={0.1162,1.5404,-1.4825,0.7664,-0.1971},
mNorMin_flow=1,
mNorMax_flow=2,
redeclare package Medium = Medium);
Modelica.Blocks.Sources.Constant N(k=22.3333);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=293.15);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Buildings.Utilities.Reports.Printer printer(
fileName="testFan.txt",
nin=6,
header="time dp dpNorm mNorm m_flow power");
Modelica.Blocks.Sources.RealExpression fan_mFlow(y=fan.m_flow);
Modelica.Blocks.Sources.RealExpression simTim2(y=time);
Modelica.Blocks.Sources.RealExpression fan_dp(y=fan.dp);
Modelica.Blocks.Sources.RealExpression fan_dpNor(y=fan.pNor);
Modelica.Blocks.Sources.RealExpression fan_mNor(y=fan.mNor_flow);
Modelica.Blocks.Sources.RealExpression fan_PSha(y=fan.PSha);
equation
connect(simTim2.y, printer.x[1]);
connect(fan_dp.y, printer.x[2]);
connect(fan_dpNor.y, printer.x[3]);
connect(fan_mNor.y, printer.x[4]);
connect(fan_PSha.y, printer.x[6]);
connect(fan_mFlow.y, printer.x[5]);
connect(sin.port, fan.port_b);
connect(sou.port, fan.port_a);
connect(N.y, fan.N_in);
connect(P.y, sou.p_in);
connect(PAtm.y, sin.p_in);
end FlowMachine;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.GasesPTDecou... | ||
| Integer | NSui | 1 | Number of suites |
| MassFlowRate | mOneSuite_flow | sui[1].m0Tot_flow | Nominal mass flow rate of one suite [kg/s] |
| MassFlowRate | mMIT_flow | mOneSuite_flow + vav44.m0_flow | Nominal mass flow rate of MIT system model as in ASHRAE 825-RP [kg/s] |
| Pressure | dp0SuiSup | 95 | Pressure drop supply air leg with splitters of one suite (obtained from simulation) [Pa] |
| Pressure | dp0SuiRet | 233 | Pressure drop return air leg with splitters of one suite (obtained from simulation) [Pa] |
| Pressure | dp0FanSupMIT | 1050 | Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation) [Pa] |
| Pressure | dp0FanRetMIT | 347 | Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation) [Pa] |
| Real | scaM_flow | (mMIT_flow + (NSui - 1)*mOne... | Scaling factor for mass flow rate with NSui number of suites |
| Real | scaDp0FanSup | (dp0FanSupMIT + (NSui - 1)*d... | Scaling factor for supply fan pressure lift with NSui number of suites |
| Real | scaDp0FanRet | (dp0FanRetMIT + (NSui - 1)*d... | Scaling factor for supply fan pressure lift with NSui number of suites |
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model MITScalable "System model for MIT building"
// package Medium = Buildings.Media.IdealGases.SimpleAir;
// package Medium = Modelica.Media.Air.SimpleAir;
// package Medium = Modelica.Media.Air.MoistAir;
// package Medium = Buildings.Media.GasesPTDecoupled.SimpleAir;
// package Medium = Buildings.Media.PerfectGases.MoistAir;
// this currently does not converge package Medium = Buildings.Media.PerfectGases.MoistAirNonsaturated;
package Medium = Buildings.Media.GasesPTDecoupled.MoistAir;
parameter Integer NSui = 1 "Number of suites";
parameter Modelica.SIunits.MassFlowRate mOneSuite_flow = sui[1].m0Tot_flow
"Nominal mass flow rate of one suite";
parameter Modelica.SIunits.MassFlowRate mMIT_flow = mOneSuite_flow + vav44.m0_flow
"Nominal mass flow rate of MIT system model as in ASHRAE 825-RP";
parameter Modelica.SIunits.Pressure dp0SuiSup = 95
"Pressure drop supply air leg with splitters of one suite (obtained from simulation)";
parameter Modelica.SIunits.Pressure dp0SuiRet = 233
"Pressure drop return air leg with splitters of one suite (obtained from simulation)";
parameter Modelica.SIunits.Pressure dp0FanSupMIT = 1050
"Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation)";
parameter Modelica.SIunits.Pressure dp0FanRetMIT = 347
"Pressure increase over supply fan in MIT system model as in ASHRAE 825-RP (obtained from simulation)";
parameter Real scaM_flow = ( mMIT_flow + (NSui-1) * mOneSuite_flow) / mMIT_flow
"Scaling factor for mass flow rate with NSui number of suites";
parameter Real scaDp0FanSup = ( dp0FanSupMIT + (NSui-1) * dp0SuiSup) / dp0FanSupMIT
"Scaling factor for supply fan pressure lift with NSui number of suites";
parameter Real scaDp0FanRet = ( dp0FanRetMIT + (NSui-1) * dp0SuiRet) / dp0FanRetMIT
"Scaling factor for supply fan pressure lift with NSui number of suites";
Buildings.Fluids.Actuators.Dampers.OAMixingBoxMinimumDamper mixBox(
dp0Out=0.467,
dp0Rec=0.665,
dp0Exh=0.164,
dp0OutMin=0.467,
AOutMin=scaM_flow*0.38,
AOut=scaM_flow*1.32,
AExh=scaM_flow*1.05,
ARec=scaM_flow*1.05,
m0OutMin_flow=scaM_flow*0.1*1,
m0Out_flow=scaM_flow*1,
m0Rec_flow=scaM_flow*1,
m0Exh_flow=scaM_flow*1,
redeclare package Medium = Medium) "mixing box";
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouIn(redeclare package
Medium = Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouExh(redeclare package
Medium = Medium, T=293.15);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Modelica.Blocks.Sources.Constant yMinOA(k=0.5);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouIn2(redeclare package
Medium = Medium, T=293.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res31(
dp0=0.546,
m0_flow=scaM_flow*1,
dh=sqrt(scaM_flow)*1,
redeclare package Medium = Medium);
Buildings.Fluids.Movers.FlowMachinePolynomial fan32(
D=0.6858,
a={4.2904,-1.387,4.2293,-3.92920,0.8534},
b={0.1162,1.5404,-1.4825,0.7664,-0.1971},
mNorMin_flow=1,
mNorMax_flow=2,
scaM_flow=scaM_flow,
scaDp=scaDp0FanSup,
redeclare package Medium = Medium);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res33(
dp0=0.164,
dh=sqrt(scaM_flow)*1,
m0_flow=scaM_flow*1,
redeclare package Medium = Medium);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res57(
dp0=0.118000,
m0_flow=scaM_flow*1,
dh=sqrt(scaM_flow)*1,
redeclare package Medium = Medium);
Buildings.Fluids.Movers.FlowMachinePolynomial fan56(
D=1.13,
a={4.19370,-1.63370,12.2110,-23.9619,9.81620},
b={0.619000E-01,3.14170,-5.75510,6.16760,-3.37480},
mNorMin_flow=0.7,
mNorMax_flow=1.0,
scaM_flow=scaM_flow,
scaDp=scaDp0FanRet,
redeclare package Medium = Medium);
Buildings.Fluids.Actuators.Dampers.VAVBoxExponential vav44(
dp0=0.999E2,
A=0.024,
m0_flow=0.132*1.2,
redeclare package Medium = Medium);
Buildings.Fluids.MixingVolumes.MixingVolume roo50(redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
V=10*5*2.5,
nP=5);
Buildings.Fluids.Examples.BaseClasses.RoomLeakage lea50(redeclare package
Medium =
Medium) "Room leakage model";
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
m0_flow=1, dp0=0.1E3,
redeclare package Medium = Medium);
Buildings.Fluids.Examples.BaseClasses.Suite[NSui] sui(redeclare each package
Medium = Medium);
Buildings.Fluids.Examples.BaseClasses.ControlSignals y;
equation
connect(yMinOA.y, mixBox.yOutMin);
connect(mixBox.port_Sup, res31.port_a);
connect(res31.port_b,fan32.port_a);
connect(fan32.port_b, res33.port_a);
connect(fan56.port_b, res57.port_b);
connect(res57.port_a, mixBox.port_Ret);
connect(bouExh.port, mixBox.port_Exh);
connect(PAtm.y, bouExh.p_in);
connect(PAtm.y, bouIn2.p_in);
connect(PAtm.y, bouIn.p_in);
connect(bouIn.port, mixBox.port_OutMin);
connect(bouIn2.port, mixBox.port_Out);
connect(vav44.port_b,roo50.port[1]);
connect(PAtm.y, lea50.p);
connect(lea50.port_b,roo50.port[2]);
connect(res1.port_a, roo50.port[3]);
connect(sui[1].port_aRoo, res1.port_b);
connect(roo50.port[4], sui[NSui].port_aExh);
connect(vav44.port_a, sui[NSui].port_bSup);
connect(sui[NSui].port_bRoo, roo50.port[5]);
connect(res33.port_b, sui[1].port_aSup);
connect(fan56.port_a, sui[1].port_bExh);
for i in 1:NSui loop
connect(PAtm.y, sui[i].p);
connect(y.yVAV, sui[i].yDam);
end for;
for i in 1:NSui-1 loop
connect(sui[i+1].port_aSup, sui[i].port_bSup);
connect(sui[i+1].port_bExh, sui[i].port_aExh);
connect(sui[i+1].port_aRoo, sui[i].port_bRoo);
end for;
connect(y.ySupFan, fan32.N_in);
connect(y.yRetFan, fan56.N_in);
connect(y.yOSA, mixBox.y);
connect(y.yVAV, vav44.y);
end MITScalable;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.PerfectGases... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model MixingVolume
import Buildings;
// package Medium = Buildings.Media.IdealGases.SimpleAir;
package Medium = Buildings.Media.PerfectGases.MoistAir;
Modelica.Blocks.Sources.Ramp P(
duration=0.5,
startTime=0.5,
height=-10,
offset=101330);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=283.15);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
MixingVolumes.MixingVolume vol1(
redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
nP=2,
V=0.1);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res2(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res11(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res12(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Modelica_Fluid.Volumes.MixingVolume vol(
redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
V=0.1);
Buildings.Utilities.Controls.AssertEquality assertEquality;
Buildings.Fluids.Sensors.EnthalpyFlowRate entFloRat(redeclare package Medium
= Medium) "Enthalpy flow rate";
Buildings.Fluids.Sensors.EnthalpyFlowRate entFloRat1(redeclare package Medium
= Medium) "Enthalpy flow rate";
Buildings.Fluids.MixingVolumes.MixingVolumeMoistAir vol2(
redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
nP=2,
V=0.1);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou2(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin2(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res21(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res22(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Utilities.Controls.AssertEquality assertEquality1;
Buildings.Fluids.Sensors.EnthalpyFlowRate entFloRat2(redeclare package Medium
= Medium) "Enthalpy flow rate";
Modelica.Blocks.Sources.Constant zero(k=0);
Modelica.Blocks.Sources.Constant TLiq(k=283.15);
equation
connect(P.y, sou.p_in);
connect(PAtm.y, sin.p_in);
connect(sou.port, res1.port_a);
connect(sin.port, res2.port_b);
connect(sou1.port, res11.port_a);
connect(sin1.port, res12.port_b);
connect(P.y, sou1.p_in);
connect(PAtm.y, sin1.p_in);
connect(res2.port_a, entFloRat.port_b);
connect(res12.port_a, entFloRat1.port_b);
connect(entFloRat.H_flow, assertEquality.u1);
connect(entFloRat1.H_flow, assertEquality.u2);
connect(res1.port_b, vol.port_a);
connect(vol.port_b, entFloRat.port_a);
connect(res11.port_b, vol1.port[2]);
connect(entFloRat1.port_a, vol1.port[1]);
connect(sou2.port, res21.port_a);
connect(sin2.port, res22.port_b);
connect(P.y,sou2. p_in);
connect(PAtm.y,sin2. p_in);
connect(res22.port_a, entFloRat2.port_b);
connect(entFloRat.H_flow, assertEquality1.u1);
connect(entFloRat2.H_flow, assertEquality1.u2);
connect(res21.port_b, vol2.port[2]);
connect(entFloRat2.port_a, vol2.port[1]);
connect(zero.y, vol2.mWat_flow);
connect(TLiq.y, vol2.TWat);
end MixingVolume;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.IdealGases.S... | Medium in the component | |
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | Medium in the component | |
model MixingVolumeDryAir
import Buildings;
package Medium = Buildings.Media.IdealGases.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50))
"Medium in the component";
Modelica.Blocks.Sources.Ramp P(
duration=0.5,
startTime=0.5,
height=-10,
offset=101330);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=283.15);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res1(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
MixingVolumes.MixingVolume vol1(
redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
nP=2,
V=0.1);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res2(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res11(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res12(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Modelica_Fluid.Volumes.MixingVolume vol(
redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
V=0.1);
Buildings.Utilities.Controls.AssertEquality assertEquality;
Buildings.Fluids.Sensors.EnthalpyFlowRate entFloRat(redeclare package Medium
= Medium) "Enthalpy flow rate";
Buildings.Fluids.Sensors.EnthalpyFlowRate entFloRat1(redeclare package Medium
= Medium) "Enthalpy flow rate";
Buildings.Fluids.MixingVolumes.MixingVolumeDryAir vol2(
redeclare package Medium = Medium,
initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic,
nP=2,
V=0.1);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou2(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin2(
redeclare package Medium =
Medium, T=283.15);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res21(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res22(
redeclare each package Medium = Medium,
dp0=5,
from_dp=true,
m0_flow=2);
Buildings.Utilities.Controls.AssertEquality assertEquality1;
Buildings.Fluids.Sensors.EnthalpyFlowRate entFloRat2(redeclare package Medium
= Medium) "Enthalpy flow rate";
Modelica.Blocks.Sources.Constant zero(k=0);
Modelica.Blocks.Sources.Constant TLiq(k=283.15);
equation
connect(P.y, sou.p_in);
connect(PAtm.y, sin.p_in);
connect(sou.port, res1.port_a);
connect(sin.port, res2.port_b);
connect(sou1.port, res11.port_a);
connect(sin1.port, res12.port_b);
connect(P.y, sou1.p_in);
connect(PAtm.y, sin1.p_in);
connect(res2.port_a, entFloRat.port_b);
connect(res12.port_a, entFloRat1.port_b);
connect(entFloRat.H_flow, assertEquality.u1);
connect(entFloRat1.H_flow, assertEquality.u2);
connect(res1.port_b, vol.port_a);
connect(vol.port_b, entFloRat.port_a);
connect(res11.port_b, vol1.port[2]);
connect(entFloRat1.port_a, vol1.port[1]);
connect(sou2.port, res21.port_a);
connect(sin2.port, res22.port_b);
connect(P.y,sou2. p_in);
connect(PAtm.y,sin2. p_in);
connect(res22.port_a, entFloRat2.port_b);
connect(entFloRat.H_flow, assertEquality1.u1);
connect(entFloRat2.H_flow, assertEquality1.u2);
connect(res21.port_b, vol2.port[2]);
connect(entFloRat2.port_a, vol2.port[1]);
connect(zero.y, vol2.mWat_flow);
connect(TLiq.y, vol2.TWat);
end MixingVolumeDryAir;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.GasesPTDecou... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model MixingVolumeInitialization
// package Medium = Buildings.Media.IdealGases.SimpleAir;
//package Medium = Buildings.Media.PerfectGases.MoistAir;
package Medium = Buildings.Media.GasesPTDecoupled.SimpleAir;
Modelica.Blocks.Sources.Constant PAtm(k=101320);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(
redeclare package Medium =
Medium, T=293.15);
Modelica_Fluid.PressureLosses.WallFrictionAndGravity pipe1(
redeclare package Medium = Medium,
p_start=101325,
flowDirection=Modelica_Fluid.Types.FlowDirection.Bidirectional,
length=1,
diameter=0.25);
Modelica_Fluid.PressureLosses.WallFrictionAndGravity pipe2(
redeclare package Medium = Medium,
p_start=101325,
flowDirection=Modelica_Fluid.Types.FlowDirection.Bidirectional,
length=1,
diameter=0.25);
inner Modelica_Fluid.Ambient ambient;
Modelica.Blocks.Sources.Constant PAtm1(k=101330);
MixingVolumes.MixingVolume vol1(
redeclare package Medium = Medium,
V=0.1,
initType=Modelica_Fluid.Types.Init.NoInit);
equation
connect(PAtm.y, sin1.p_in);
connect(sou1.port, pipe1.port_a);
connect(pipe2.port_b, sin1.port);
connect(PAtm1.y, sou1.p_in);
connect(pipe1.port_b, vol1.port[1]);
connect(pipe2.port_a, vol1.port[2]);
end MixingVolumeInitialization;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.GasesPTDecou... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model MixingVolumeMoistAir
import Buildings;
// package Medium = Buildings.Media.PerfectGases.MoistAir;
package Medium = Buildings.Media.GasesPTDecoupled.MoistAir;
// package Medium = Buildings.Media.GasesPTDecoupled.MoistAirNoLiquid;
Buildings.Fluids.MixingVolumes.MixingVolumeMoistAir vol1(
redeclare package Medium = Medium,
V=1,
nP=2) "Volume";
Modelica.Thermal.HeatTransfer.TemperatureSensor TSen "Temperature sensor";
Modelica.Blocks.Sources.Constant XSet(k=0.005)
"Set point for water mass fraction";
Modelica.Thermal.HeatTransfer.PrescribedHeatFlow preHeaFlo;
Modelica.Blocks.Sources.Constant TSet(k=273.15 + 20)
"Set point for temperature";
Buildings.Utilities.Psychrometrics.HumidityRatioPressure humRat
"Conversion from humidity ratio to partial water vapor pressure";
Buildings.Utilities.Psychrometrics.DewPointTemperature dewPoi
"Dew point temperature";
Modelica.Thermal.HeatTransfer.HeatFlowSensor heatFlowSensor;
Modelica.Blocks.Continuous.Integrator QSen "Sensible heat transfer";
Modelica.Blocks.Continuous.Integrator QWat "Enthalpy of extracted water";
Modelica.Blocks.Sources.RealExpression HWat_flow(y=vol1.HWat_flow)
"MoistAir heat flow rate";
Buildings.Fluids.Sources.PrescribedMassFlowRate_TX sou(
redeclare package Medium = Medium,
T=293.15,
m_flow=0.01);
Buildings.Fluids.Sources.FixedBoundary_pTX sin(redeclare package Medium =
Medium, T=293.15);
Modelica.Blocks.Continuous.LimPID PI(
Ni=0.1,
controllerType=Modelica.Blocks.Types.SimpleController.PI,
yMax=1000,
k=1,
Ti=1);
Modelica.Blocks.Continuous.LimPID PI1(
Ni=0.1,
Ti=1,
controllerType=Modelica.Blocks.Types.SimpleController.PI,
k=10,
yMax=1,
yMin=-1);
Modelica_Fluid.Sensors.MassFlowRate mIn_flow(redeclare package Medium =
Medium);
Modelica_Fluid.Sensors.MassFlowRate mOut_flow(redeclare package Medium =
Medium);
Modelica.Blocks.Math.Add dM_flow(k2=-1);
Modelica.Blocks.Math.Gain gai(k=200);
Modelica.Blocks.Math.Gain gai1(k=0.1);
equation
connect(vol1.thermalPort, TSen.port);
connect(dewPoi.p_w, humRat.p_w);
connect(preHeaFlo.port, heatFlowSensor.port_a);
connect(heatFlowSensor.port_b, vol1.thermalPort);
connect(heatFlowSensor.Q_flow, QSen.u);
connect(HWat_flow.y,QWat. u);
connect(TSet.y, PI.u_s);
connect(TSen.T, PI.u_m);
connect(XSet.y, PI1.u_s);
connect(sou.port, mIn_flow.port_a);
connect(mIn_flow.port_b, vol1.port[1]);
connect(mOut_flow.port_b, sin.port);
connect(mOut_flow.port_a, vol1.port[2]);
connect(mOut_flow.m_flow, dM_flow.u1);
connect(mIn_flow.m_flow, dM_flow.u2);
connect(PI.y, gai.u);
connect(gai.y, preHeaFlo.Q_flow);
connect(PI1.y, gai1.u);
connect(gai1.y, vol1.mWat_flow);
connect(dewPoi.T, vol1.TWat);
connect(vol1.XWat, PI1.u_m);
connect(vol1.XWat, humRat.XWat);
end MixingVolumeMoistAir;
model OAMixingBoxMinimumDamper
package Medium = Buildings.Media.GasesPTDecoupled.SimpleAir
"Medium in the component";
Buildings.Fluids.Actuators.Dampers.OAMixingBoxMinimumDamper mixBox(
AOutMin=0.3,
AOut=0.7,
AExh=1,
ARec=1,
m0OutMin_flow=0.3,
dp0OutMin=20,
m0Out_flow=1,
dp0Out=20,
m0Rec_flow=1,
dp0Rec=20,
m0Exh_flow=1,
dp0Exh=20,
redeclare package Medium = Medium) "mixing box";
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouIn(redeclare package
Medium = Medium, T=273.15 + 10);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouSup(redeclare package
Medium = Medium, T=273.15 + 26);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouRet(redeclare package
Medium = Medium, T=273.15 + 20);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouExh(redeclare package
Medium = Medium, T=273.15 + 10);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Modelica.Blocks.Sources.Constant yDamMin(k=0.5);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bouIn2(redeclare package
Medium = Medium, T=273.15 + 10);
Modelica.Blocks.Sources.Ramp PSup(
offset=101320,
height=-10,
startTime=0,
duration=20);
Modelica.Blocks.Sources.Ramp PRet(
height=10,
offset=101330,
duration=20,
startTime=20);
Modelica.Blocks.Sources.Ramp yDam(
duration=20,
startTime=40,
height=0.1,
offset=0.45);
equation
connect(yDamMin.y, mixBox.yOutMin);
connect(yDam.y, mixBox.y);
connect(bouIn.p_in, PAtm.y);
connect(bouIn2.p_in, PAtm.y);
connect(bouExh.p_in, PAtm.y);
connect(PRet.y, bouRet.p_in);
connect(bouSup.p_in, PSup.y);
connect(mixBox.port_Sup, bouSup.port);
connect(mixBox.port_Ret, bouRet.port);
connect(bouIn.port, mixBox.port_OutMin);
connect(bouIn2.port, mixBox.port_Out);
connect(bouExh.port, mixBox.port_Exh);
end OAMixingBoxMinimumDamper;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.IdealGases.S... | ||
| Pressure | dp0 | 5 | Nominal pressure drop for each resistance [Pa] |
| Integer | nRes | 3 | Number of resistances |
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model Resistances "Test of multiple resistances"
package Medium = Buildings.Media.IdealGases.SimpleAir;
Modelica.Blocks.Sources.Constant PAtm(k=101325);
parameter Modelica.SIunits.Pressure dp0 = 5
"Nominal pressure drop for each resistance";
Modelica.Blocks.Sources.Ramp P(
duration=1,
height=2*dp0*nRes,
offset=101325 - dp0*nRes);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=273.15 + 20);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=273.15 + 10);
parameter Integer nRes( min=2) = 3 "Number of resistances";
Buildings.Fluids.FixedResistances.FixedResistanceDpM[
nRes] res(
redeclare each package Medium = Medium,
each dp0=dp0,
each from_dp = false,
each m0_flow=2);
equation
connect(sou.port, res[1].port_a);
connect(res[nRes].port_b, sin.port);
for i in 1:nRes-1 loop
connect(res[i].port_b, res[i+1].port_a);
end for;
connect(PAtm.y, sin.p_in);
connect(P.y, sou.p_in);
end Resistances;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.IdealGases.S... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model SplitterFixedResistanceDpM
package Medium = Buildings.Media.IdealGases.SimpleAir;
Buildings.Fluids.FixedResistances.SplitterFixedResistanceDpM spl(
m0_flow={1,2,3},
dp0={5,10,15},
dh={1,2,3},
redeclare package Medium = Medium) "Splitter";
Buildings.Fluids.Sources.PrescribedBoundary_pTX bou1(redeclare package Medium
= Medium, T=273.15 + 10);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bou2(redeclare package Medium
= Medium, T=273.15 + 20);
Buildings.Fluids.Sources.PrescribedBoundary_pTX bou3(redeclare package Medium
= Medium, T=273.15 + 30);
Modelica.Blocks.Sources.Constant P2(k=101325);
Modelica.Blocks.Sources.Ramp P1(
offset=101320,
height=10,
duration=0.5);
Modelica.Blocks.Sources.Ramp P3(
offset=101320,
height=10,
duration=0.5,
startTime=0.5);
equation
connect(P1.y, bou1.p_in);
connect(bou1.port, spl.port_1);
connect(spl.port_2, bou2.port);
connect(P2.y, bou2.p_in);
connect(bou3.port, spl.port_3);
connect(bou3.p_in, P3.y);
end SplitterFixedResistanceDpM;
Test model for three way valves. Note that the leakage flow rate has been set to a large value and the rangeability to a small value for better visualization of the valve characteristics. To use common values, use the default values.
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.ConstantProp... | Medium in the component | |
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | Medium in the component | |
model ThreeWayValves
package Medium = Buildings.Media.ConstantPropertyLiquidWater
"Medium in the component";
Buildings.Fluids.Actuators.Valves.ThreeWayLinear valLin(
redeclare package Medium = Medium,
k_SI=2/sqrt(6000),
l={0.05,0.05}) "Valve model, linear opening characteristics";
Modelica.Blocks.Sources.Ramp y(
height=1,
duration=1,
offset=0) "Control signal";
Modelica.Blocks.Sources.Ramp P(
duration=0.5,
startTime=0.5,
height=6E3,
offset=3E5);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=293.15);
Modelica.Blocks.Sources.Constant PSin(k=3E5);
Modelica.Blocks.Sources.Constant PSou(k=306000);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(
redeclare package Medium =
Medium, T=293.15);
Actuators.Valves.ThreeWayEqualPercentageLinear valEquPerLin(
k_SI=2/sqrt(6000),
l={0.05,0.05},
redeclare package Medium = Medium,
R=10);
equation
connect(y.y, valLin.y);
connect(PSin.y, sin.p_in);
connect(PSou.y, sou.p_in);
connect(PSou.y, sou1.p_in);
connect(sou1.port, valLin.port_3);
connect(sou.port, valLin.port_1);
connect(sin.port, valLin.port_2);
connect(sou.port, valEquPerLin.port_1);
connect(sou1.port, valEquPerLin.port_3);
connect(valEquPerLin.port_2, sin.port);
connect(y.y, valEquPerLin.y);
end ThreeWayValves;
Test model for two way valves. Note that the leakage flow rate has been set to a large value and the rangeability to a small value for better visualization of the valve characteristics. To use common values, use the default values.
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.ConstantProp... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model TwoWayValves
package Medium = Buildings.Media.ConstantPropertyLiquidWater;
Buildings.Fluids.Actuators.Valves.TwoWayLinear valLin(
redeclare package Medium = Medium,
l=0.05,
k_SI=2/sqrt(6000)) "Valve model, linear opening characteristics";
Modelica.Blocks.Sources.Ramp y(
height=1,
duration=1,
offset=0) "Control signal";
Modelica.Blocks.Sources.Ramp P(
duration=0.5,
startTime=0.5,
height=6E3,
offset=3E5);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=293.15);
Modelica.Blocks.Sources.Constant PSin(k=3E5);
Modelica.Blocks.Sources.Constant PSou(k=306000);
Buildings.Fluids.Actuators.Valves.TwoWayQuickOpening valQui(
redeclare package Medium = Medium,
l=0.05,
k_SI=2/sqrt(6000)) "Valve model, quick opening characteristics";
Buildings.Fluids.Actuators.Valves.TwoWayEqualPercentage valEqu(
redeclare package Medium = Medium,
l=0.05,
k_SI=2/sqrt(6000),
R=10,
delta0=0.1) "Valve model, equal percentage opening characteristics";
equation
connect(y.y, valLin.y);
connect(valLin.port_b, sin.port);
connect(valLin.port_a, sou.port);
connect(PSin.y, sin.p_in);
connect(PSou.y, sou.p_in);
connect(y.y, valQui.y);
connect(valQui.port_b, sin.port);
connect(valQui.port_a, sou.port);
connect(y.y, valEqu.y);
connect(valEqu.port_b, sin.port);
connect(valEqu.port_a, sou.port);
end TwoWayValves;
Test model for two way valves. Note that the leakage flow rate has been set to a large value and the rangeability to a small value for better visualization of the valve characteristics. To use common values, use the default values.
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.ConstantProp... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model TwoWayValvesMotor
package Medium = Buildings.Media.ConstantPropertyLiquidWater;
Buildings.Fluids.Actuators.Valves.TwoWayLinear valLin(
redeclare package Medium = Medium,
l=0.05,
k_SI=2/sqrt(6000)) "Valve model, linear opening characteristics";
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=293.15);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=293.15);
Modelica.Blocks.Sources.Constant PSin(k=3E5);
Modelica.Blocks.Sources.Constant PSou(k=306000);
Buildings.Fluids.Actuators.Valves.TwoWayQuickOpening valQui(
redeclare package Medium = Medium,
l=0.05,
k_SI=2/sqrt(6000)) "Valve model, quick opening characteristics";
Buildings.Fluids.Actuators.Valves.TwoWayEqualPercentage valEqu(
redeclare package Medium = Medium,
l=0.05,
k_SI=2/sqrt(6000),
R=10,
delta0=0.1) "Valve model, equal percentage opening characteristics";
Modelica.Blocks.Sources.TimeTable ySet(table=[0,0; 60,0; 60,1; 120,1; 180,0.5;
240,0.5; 300,0; 360,0; 360,0.25; 420,0.25; 480,1; 540,1.5; 600,-0.25])
"Set point for actuator";
Actuators.Motors.IdealMotor mot( tOpe=60) "Motor model";
equation
connect(valLin.port_b, sin.port);
connect(valLin.port_a, sou.port);
connect(PSin.y, sin.p_in);
connect(PSou.y, sou.p_in);
connect(valQui.port_b, sin.port);
connect(valQui.port_a, sou.port);
connect(valEqu.port_b, sin.port);
connect(valEqu.port_a, sou.port);
connect(ySet.y, mot.u);
connect(mot.y, valEqu.y);
connect(mot.y, valQui.y);
connect(mot.y, valLin.y);
end TwoWayValvesMotor;
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Buildings.Media.IdealGases.S... | ||
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | ||
model VAVBoxExponential
package Medium = Buildings.Media.IdealGases.SimpleAir;
Buildings.Fluids.Actuators.Dampers.Exponential dam(
redeclare package Medium = Medium, A=1.8);
Modelica.Blocks.Sources.Ramp yRam(
duration=0.4,
height=-1,
offset=1,
startTime=0.6);
Modelica.Blocks.Sources.Ramp P(
duration=0.4,
height=-10,
offset=101330,
startTime=0);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou(redeclare package Medium
= Medium, T=273.15 + 20);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin(redeclare package Medium
= Medium, T=273.15 + 20);
Modelica.Blocks.Sources.Constant PAtm(k=101325);
Buildings.Fluids.Actuators.Dampers.VAVBoxExponential vav(
m0_flow=2,
redeclare package Medium = Medium,
dp0=5,
A=1.8);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sou1(redeclare package Medium=Medium,
T=273.15 + 10);
Buildings.Fluids.Sources.PrescribedBoundary_pTX sin1(redeclare package Medium=Medium,
T=273.15 + 10);
Buildings.Fluids.FixedResistances.FixedResistanceDpM res(
from_dp=true,
m0_flow=2,
redeclare package Medium = Medium,
dp0=5 - 0.45*2^2/1.2/1.8^2/2);
equation
connect(yRam.y,dam. y);
connect(P.y, sou.p_in);
connect(PAtm.y, sin.p_in);
connect(yRam.y, vav.y);
connect(sou1.port, vav.port_a);
connect(vav.port_b, sin1.port);
connect(PAtm.y, sin1.p_in);
connect(sou.port, res.port_a);
connect(res.port_b, dam.port_a);
connect(P.y, sou1.p_in);
connect(dam.port_b, sin.port);
end VAVBoxExponential;