Buildings.Experimental.DHC.Plants.Combined.Examples
This package holds example models using plants providing district heating and cooling
Information
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name | Description |
---|---|
AllElectricCWStorage | Validation of all-electric plant model with buildings loads |
Buildings.Experimental.DHC.Plants.Combined.Examples.AllElectricCWStorage
Validation of all-electric plant model with buildings loads
Information
This model uses Buildings.Experimental.DHC.Plants.Combined.AllElectricCWStorage to provide heating and cooling to two identical buildings with heating and cooling loads provided as time series.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | Buildings.Media.Water | Main medium (common to CHW, HW and CW) | |
replaceable package MediumConWatCoo | Buildings.Media.Water | Medium in cooler circuit | |
String | filNam[2] | {"modelica://Buildings/Resou... | Path to file with timeseries loads |
Temperature | TSetDisSupHea | 273.15 + 60 | District heating supply temperature set point [K] |
Temperature | TSetDisSupCoo | 273.15 + 6 | District cooling supply temperature set point [K] |
Generic | datHeaPum | datHeaPum(dpHeaLoa_nominal=5... | Heat pump parameters (each unit) |
CHW loop and cooling-only chillers | |||
ReformEIRChiller_Carrier_19XR_1403kW_7_09COP_VSD | datChi | datChi(EIRFunT={0.0101739374... | Chiller parameters (each unit) |
HW loop and heat recovery chillers | |||
Generic | datChiHea | datChi | Chiller parameters (each unit) |
Dynamics | |||
Conservation equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Connectors
Type | Name | Description |
---|---|---|
replaceable package Medium | Main medium (common to CHW, HW and CW) | |
replaceable package MediumConWatCoo | Medium in cooler circuit |
Modelica definition
model AllElectricCWStorage
"Validation of all-electric plant model with buildings loads"
extends Modelica.Icons.Example;
replaceable package Medium=Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
"Main medium (common to CHW, HW and CW)";
replaceable package MediumConWatCoo=Buildings.Media.Water
constrainedby Modelica.Media.Interfaces.PartialMedium
"Medium in cooler circuit";
parameter String filNam[2]={"modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/MediumOffice-90.1-2010-5A.mos",
"modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/MediumOffice-90.1-2010-5A.mos"}
"Path to file with timeseries loads";
parameter Modelica.Units.SI.Temperature TSetDisSupHea = 273.15+60 "District heating supply temperature set point";
parameter Modelica.Units.SI.Temperature TSetDisSupCoo = 273.15+6 "District cooling supply temperature set point";
replaceable parameter Fluid.Chillers.Data.ElectricReformulatedEIR.ReformEIRChiller_Carrier_19XR_1403kW_7_09COP_VSD
datChi(
EIRFunT={0.0101739374, 0.0607200115, 0.0003348647, 0.003162578, 0.0002388594, -0.0014121289},
capFunT={0.0387084662, 0.2305017927, 0.0004779504, 0.0178244359, -8.48808e-05, -0.0032406711},
EIRFunPLR={0.4304252832, -0.0144718912, 5.12039e-05, -0.7562386674, 0.5661683373,
0.0406987748, 3.0278e-06, -0.3413411197, -0.000469572, 0.0055009208},
QEva_flow_nominal=sum(loaCoo.QCoo_flow_nominal)/pla.nChi,
COP_nominal=2.5,
mEva_flow_nominal=-datChi.QEva_flow_nominal/5/4186,
mCon_flow_nominal=-datChi.QEva_flow_nominal * (1 + 1/datChi.COP_nominal) / 10 / 4186,
TEvaLvg_nominal=TSetDisSupCoo,
TEvaLvgMin=277.15,
TEvaLvgMax=308.15,
TConLvg_nominal=TSetDisSupHea,
TConLvgMin=296.15,
TConLvgMax=336.15)
constrainedby Buildings.Fluid.Chillers.Data.BaseClasses.Chiller
"Chiller parameters (each unit)";
replaceable parameter Fluid.Chillers.Data.ElectricReformulatedEIR.Generic datChiHea=
datChi
constrainedby Buildings.Fluid.Chillers.Data.BaseClasses.Chiller
"Chiller parameters (each unit)";
replaceable parameter Fluid.HeatPumps.Data.EquationFitReversible.Generic datHeaPum(
dpHeaLoa_nominal=50000,
dpHeaSou_nominal=100,
hea(
mLoa_flow=datHeaPum.hea.Q_flow/10/4186,
mSou_flow=1E-4*datHeaPum.hea.Q_flow,
Q_flow=sum(loaHea.QHea_flow_nominal)/pla.nHeaPum,
P=datHeaPum.hea.Q_flow/2.2,
coeQ={-5.64420084,1.95212447,9.96663913,0.23316322,-5.64420084},
coeP={-3.96682255,6.8419453,1.99606939,0.01393387,-3.96682255},
TRefLoa=298.15,
TRefSou=253.15),
coo(
mLoa_flow=0,
mSou_flow=0,
Q_flow=-1,
P=0,
coeQ=fill(0, 5),
coeP=fill(0, 5),
TRefLoa=273.15,
TRefSou=273.15))
"Heat pump parameters (each unit)";
// Assumptions
parameter Modelica.Fluid.Types.Dynamics energyDynamics=
Modelica.Fluid.Types.Dynamics.FixedInitial
"Type of energy balance: dynamic (3 initialization options) or steady state";
Buildings.Experimental.DHC.Plants.Combined.AllElectricCWStorage pla(
redeclare final package Medium = Medium,
redeclare package MediumHea_b = Medium,
redeclare final package MediumConWatCoo = MediumConWatCoo,
allowFlowReversal=true,
dpConWatCooFri_nominal=1E4,
mAirCooUni_flow_nominal=pla.mConWatCoo_flow_nominal/pla.nCoo/1.45,
TWetBulCooEnt_nominal=297.05,
PFanCoo_nominal=340*pla.mConWatCoo_flow_nominal/pla.nCoo,
chi(show_T=true),
chiHea(show_T=true),
heaPum(show_T=true),
final datChi=datChi,
final datChiHea=datChiHea,
final datHeaPum=datHeaPum,
nChi=2,
dpChiWatSet_max=sum(disCoo.dpDis_nominal),
nChiHea=2,
dpHeaWatSet_max=sum(disCoo.dpDis_nominal),
nHeaPum=2,
dInsTan=0.05,
nCoo=3,
final energyDynamics=energyDynamics)
"CHW and HW plant";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TChiWatSupSet(final k=pla.TChiWatSup_nominal,
y(final unit="K", displayUnit="degC"))
"Source signal for setpoint";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupSet(final k=pla.THeaWatSup_nominal,
y(final unit="K", displayUnit="degC"))
"Source signal for setpoint";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant dpHeaWatSet_max(
k=pla.dpHeaWatSet_max,
y(final unit="Pa")) "Source signal for setpoint";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant dpChiWatSet_max(
k=pla.dpChiWatSet_max,
y(final unit="Pa")) "Source signal for setpoint";
BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam=
Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos"))
"Outdoor conditions";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TChiWatRet[2](each k=pla.TChiWatRet_nominal)
"Source signal for CHW return temperature";
Loads.Heating.BuildingTimeSeriesWithETS loaHea[2](
each THeaWatSup_nominal=pla.THeaWatSup_nominal,
filNam=filNam) "Building heating load";
// dpCheVal_nominal to avoid too hot water in building waterr supply due to problem of temperature drop in Dymola
Loads.Cooling.BuildingTimeSeriesWithETS loaCoo[2](
each TChiWatSup_nominal=pla.TChiWatSup_nominal,
filNam=filNam,
each bui(w_aLoaCoo_nominal=0.015)) "Building cooling load";
// dpCheVal_nominal to avoid freezing in building waterr supply due to problem of temperature drop in Dymola
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatRet[2](each k=pla.THeaWatRet_nominal)
"Source signal for HW return temperature";
Buildings.Controls.OBC.CDL.Logical.Not
onPla "On signal for the plant";
Buildings.Controls.OBC.CDL.Logical.Timer
tim(t=3600);
Buildings.Controls.OBC.CDL.Reals.LessThreshold offHea(t=1e-4)
"Threshold comparison to disable the plant";
Modelica.Blocks.Math.Gain norQFloHea(k=1/sum(loaHea.QHea_flow_nominal))
"Normalized Q_flow";
Buildings.Controls.OBC.CDL.Logical.Not
onPla1
"On signal for the plant";
Buildings.Controls.OBC.CDL.Logical.Timer
tim1(t=3600);
Buildings.Controls.OBC.CDL.Reals.LessThreshold offCoo1(t=1e-4)
"Threshold comparison to disable the plant";
Modelica.Blocks.Math.Gain norQFloCoo(k=1/sum(loaCoo.QCoo_flow_nominal))
"Normalized Q_flow";
Networks.Distribution2Pipe disHea(
redeclare final package Medium = Medium,
nCon=2,
allowFlowReversal=false,
mDis_flow_nominal=sum(loaHea.mBui_flow_nominal),
mCon_flow_nominal={loaHea[1].mBui_flow_nominal,loaHea[2].mBui_flow_nominal},
dpDis_nominal(each displayUnit="Pa") = {200000,100000})
"Distribution network for district heating system";
Networks.Distribution2Pipe disCoo(
redeclare final package Medium = Medium,
nCon=2,
allowFlowReversal=false,
mDis_flow_nominal=sum(loaCoo.mBui_flow_nominal),
mCon_flow_nominal={loaCoo[1].mBui_flow_nominal,loaCoo[2].mBui_flow_nominal},
dpDis_nominal(each displayUnit="Pa") = {20e4,10e4})
"Distribution network for district cooling system";
Modelica.Blocks.Math.Sum QTotHea_flow(nin=2)
"Total heating flow rate for all buildings ";
Modelica.Blocks.Math.Sum QTotCoo_flow(nin=2)
"Total cooling flow rate for all buildings ";
equation
connect(TChiWatSupSet.y, pla.TChiWatSupSet);
connect(THeaWatSupSet.y, pla.THeaWatSupSet);
connect(dpChiWatSet_max.y, pla.dpChiWatSet);
connect(dpHeaWatSet_max.y, pla.dpHeaWatSet);
connect(weaDat.weaBus, pla.weaBus);
connect(norQFloHea.y,offHea. u);
connect(offHea.y, tim.u);
connect(tim.passed, onPla.u);
connect(onPla.y, pla.u1Hea);
connect(tim1.passed, onPla1.u);
connect(offCoo1.y, tim1.u);
connect(norQFloCoo.y, offCoo1.u);
connect(onPla1.y, pla.u1Coo);
connect(pla.port_bSerHea, disHea.port_aDisSup);
connect(disHea.port_bDisRet, pla.port_aSerHea);
connect(disCoo.port_aDisSup, pla.port_bSerCoo);
connect(disCoo.port_bDisRet, pla.port_aSerCoo);
connect(disCoo.ports_aCon, loaCoo.port_bSerCoo);
connect(disCoo.ports_bCon, loaCoo.port_aSerCoo);
connect(disHea.ports_bCon, loaHea.port_aSerHea);
connect(loaHea.port_bSerHea, disHea.ports_aCon);
connect(QTotHea_flow.y, norQFloHea.u);
connect(loaCoo.QCoo_flow, QTotCoo_flow.u);
connect(QTotCoo_flow.y, norQFloCoo.u);
connect(loaHea.QHea_flow, QTotHea_flow.u);
connect(TChiWatRet.y, loaCoo.TSetDisRet);
connect(THeaWatRet.y, loaHea.TSetDisRet);
end AllElectricCWStorage;