Name | Description |
---|---|
BaseClasses | Package with base classes for example models |
Damper | |
Delay | |
FixedResistance | |
FlowMachine | |
MITScalable | System model for MIT building |
MixingVolume | |
OAMixingBoxMinimumDamper | |
Resistances | Test of multiple resistances |
SplitterFixedResistanceDpM | |
VAVBoxExponential |
model Damper package Medium = Modelica.Media.Air.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component"; Buildings.Fluids.Actuators.DamperExponential res( A=1, redeclare package Medium = Medium); Modelica.Blocks.Sources.Ramp yRam( height=(50 - 20)/90, offset=20/90, duration=0.3); Modelica.Blocks.Sources.Ramp P( duration=0.5, startTime=0.5, height=-10, offset=101330); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou(redeclare package Medium = Medium, T=293.15); Modelica_Fluid.Sources.PrescribedBoundary_pTX sin(redeclare package Medium = Medium, T=293.15); Modelica.Blocks.Sources.Constant PAtm(k=101325); Modelica.Blocks.Sources.RealExpression simTim1(y=time); Utilities.printer pri( samplePeriod=0.05, header=" time y dp m_flow m_small_flow", fileName="outputRes.txt", nin=5); Modelica.Blocks.Sources.RealExpression res_m_flow(y=res.m_flow); Modelica.Blocks.Sources.RealExpression y(y=res.y); Modelica.Blocks.Sources.RealExpression res_dp(y=res.dp); Modelica.Blocks.Sources.RealExpression res_m_small_flow(y=res.m_small_flow); equation connect(yRam.y, res.y); connect(simTim1.y, pri.x[1]); connect(y.y, pri.x[2]); connect(res_dp.y, pri.x[3]); connect(res_m_small_flow.y, pri.x[5]); connect(res_m_flow.y, pri.x[4]); connect(res.port_b, sin.port); connect(res.port_a, sou.port); connect(P.y, sou.p_in); connect(PAtm.y, sin.p_in); end Damper;
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | Modelica.Media.Air.SimpleAir |
Type | Name | Description |
---|---|---|
replaceable package Medium |
model Delay // package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater; package Medium = Modelica.Media.Air.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); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou( T=293.15, redeclare package Medium = Medium); Modelica_Fluid.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 | Modelica.Media.Water.Constan... |
Type | Name | Description |
---|---|---|
replaceable package Medium |
model FixedResistance package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater; Modelica.Blocks.Sources.Constant PAtm(k=101325); Modelica.Blocks.Sources.Ramp P( duration=1, height=20, offset=101315); Buildings.Fluids.FixedResistances.FixedResistanceDpM res( redeclare package Medium = Medium, from_dp=true, m0_flow=5, dp0=10); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou(redeclare package Medium = Medium, T=293.15); Modelica_Fluid.Sources.PrescribedBoundary_pTX sin(redeclare package Medium = Medium, T=283.15); equation connect(P.y, sou.p_in); connect(PAtm.y, sin.p_in); connect(sou.port, res.port_a); connect(sin.port, res.port_b); end FixedResistance;
model FlowMachine package Medium = Modelica.Media.Air.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component"; 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); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou(redeclare package Medium = Medium, T=293.15); Modelica_Fluid.Sources.PrescribedBoundary_pTX sin(redeclare package Medium = Medium, T=293.15); Modelica.Blocks.Sources.Constant PAtm(k=101325); Utilities.printer printer( fileName="outputFan.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.SimpleAirPTD... | ||
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 = Modelica.Media.Air.SimpleAir ( T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component"; */ package Medium = Buildings.Media.SimpleAirPTDecoupled; 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.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"; Modelica_Fluid.Sources.PrescribedBoundary_pTX bouIn(redeclare package Medium = Medium, T=293.15); Modelica_Fluid.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); Modelica_Fluid.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.VAVBoxExponential vav44( dp0=0.999E2, A=0.024, m0_flow=0.132*1.2, redeclare package Medium = Medium); Buildings.Fluids.Components.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.SimpleAirPTD... | Medium in the component |
Type | Name | Description |
---|---|---|
replaceable package Medium | Medium in the component |
model MixingVolume // package Medium = Modelica.Media.Air.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) // "Medium in the component"; package Medium = Buildings.Media.SimpleAirPTDecoupled "Medium in the component"; Modelica.Blocks.Sources.Ramp P( duration=0.5, startTime=0.5, height=-10, offset=101330); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou(redeclare package Medium = Medium, T=293.15); Modelica_Fluid.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); Components.MixingVolume vol( 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); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou1( redeclare package Medium = Medium, T=293.15); Modelica_Fluid.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 vol1( redeclare package Medium = Medium, initType=Modelica_Fluid.Types.Init.SteadyStateHydraulic, V=0.1); 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(res11.port_b, vol1.port_a); connect(vol1.port_b, res12.port_a); connect(res1.port_b, vol.port[1]); connect(res2.port_a, vol.port[2]); end MixingVolume;
model OAMixingBoxMinimumDamper package Medium = Buildings.Media.SimpleAirPTDecoupled "Medium in the component"; Buildings.Fluids.Actuators.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"; Modelica_Fluid.Sources.PrescribedBoundary_pTX bouIn(redeclare package Medium = Medium, T=273.15 + 10); Modelica_Fluid.Sources.PrescribedBoundary_pTX bouSup(redeclare package Medium = Medium, T=273.15 + 26); Modelica_Fluid.Sources.PrescribedBoundary_pTX bouRet(redeclare package Medium = Medium, T=273.15 + 20); Modelica_Fluid.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); Modelica_Fluid.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 |
---|---|---|---|
Pressure | dp0 | 5 | Nominal pressure drop for each resistance [Pa] |
Integer | nRes | 3 | Number of resistances |
model Resistances "Test of multiple resistances" package Medium = Modelica.Media.Air.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component"; 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); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou(redeclare package Medium = Medium, T=273.15 + 20); Modelica_Fluid.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;
model SplitterFixedResistanceDpM package Medium = Modelica.Media.Air.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component"; Buildings.Fluids.FixedResistances.SplitterFixedResistanceDpM spl( m0_flow={1,2,3}, dp0={5,10,15}, dh={1,2,3}, redeclare package Medium = Medium) "Splitter"; Modelica_Fluid.Sources.PrescribedBoundary_pTX bou1(redeclare package Medium = Medium, T=273.15 + 10); Modelica_Fluid.Sources.PrescribedBoundary_pTX bou2(redeclare package Medium = Medium, T=273.15 + 20); Modelica_Fluid.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;
model VAVBoxExponential package Medium = Modelica.Media.Air.SimpleAir(T_min=Modelica.SIunits.Conversions.from_degC(-50)) "Medium in the component"; Buildings.Fluids.Actuators.DamperExponential dam( A=1, redeclare package Medium = Medium); Modelica.Blocks.Sources.Ramp yRam( height=(54 - 16)/90.1, offset=16/90, duration=0.5); Modelica.Blocks.Sources.Ramp P( offset=101320, height=10, duration=0.5, startTime=0.5); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou(redeclare package Medium = Medium, T=273.15 + 20); Modelica_Fluid.Sources.PrescribedBoundary_pTX sin(redeclare package Medium = Medium, T=273.15 + 20); Modelica.Blocks.Sources.Constant PAtm(k=101325); Buildings.Fluids.Actuators.VAVBoxExponential vav(A=1, m0_flow=2, dp0=1, redeclare package Medium = Medium); Modelica_Fluid.Sources.PrescribedBoundary_pTX sou1(redeclare package Medium = Medium, T=273.15 + 10); Modelica_Fluid.Sources.PrescribedBoundary_pTX sin1(redeclare package Medium = Medium, T=273.15 + 10); Buildings.Fluids.FixedResistances.FixedResistanceDpM res( from_dp=true, m0_flow=2, dp0=1, redeclare package Medium = Medium); 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;