Buildings.Experimental.DHC.Examples.Combined.BaseClasses
Package with base classes that are used by multiple models
Information
This package contains base classes that are used to construct the classes in Buildings.Experimental.DHC.Examples.Combined.
Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).
Package Content
Name | Description |
---|---|
PartialSeries | Partial model for series network |
DesignDataSeries | Record with design data for series network |
Buildings.Experimental.DHC.Examples.Combined.BaseClasses.PartialSeries
Partial model for series network
Information
Partial model that is used by the reservoir network models. The reservoir network models extend this model, add controls, and configure some component sizes.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
---|---|---|---|
Real | dpDis_length_nominal | 250 | Pressure drop per pipe length at nominal flow rate - Distribution line [Pa/m] |
Real | dpCon_length_nominal | 250 | Pressure drop per pipe length at nominal flow rate - Connection line [Pa/m] |
Integer | nBui | datDes.nBui | Number of buildings connected to DHC system |
DesignDataSeries | datDes | datDes(final mCon_flow_nomin... | Design data |
PartialBuildingWithETS | bui[nBui] | redeclare Buildings.Experime... | Building and ETS |
Assumptions | |||
Boolean | allowFlowReversalSer | true | Set to true to allow flow reversal in the service lines |
Boolean | allowFlowReversalBui | false | Set to true to allow flow reversal for in-building systems |
Modelica definition
partial model PartialSeries "Partial model for series network"
extends Modelica.Icons.Example;
package Medium = Buildings.Media.Water "Medium model";
constant Real facMul = 10
"Building loads multiplier factor";
parameter Real dpDis_length_nominal(final unit="Pa/m") = 250
"Pressure drop per pipe length at nominal flow rate - Distribution line";
parameter Real dpCon_length_nominal(final unit="Pa/m") = 250
"Pressure drop per pipe length at nominal flow rate - Connection line";
parameter Boolean allowFlowReversalSer = true
"Set to true to allow flow reversal in the service lines";
parameter Boolean allowFlowReversalBui = false
"Set to true to allow flow reversal for in-building systems";
parameter Integer nBui = datDes.nBui
"Number of buildings connected to DHC system";
inner parameter Buildings.Experimental.DHC.Examples.Combined.BaseClasses.DesignDataSeries
datDes(final mCon_flow_nominal=bui.ets.mSerWat_flow_nominal) "Design data";
// COMPONENTS
Buildings.Experimental.DHC.Plants.Reservoir.BoreField
borFie(redeclare final package Medium = Medium) "Bore field";
Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumDis(
redeclare final package Medium = Medium,
final m_flow_nominal=datDes.mPumDis_flow_nominal,
final allowFlowReversal=allowFlowReversalSer,
dp_nominal=150E3)
"Distribution pump";
Buildings.Fluid.Sources.Boundary_pT bou(
redeclare final package Medium=Medium,
final nPorts=1)
"Boundary pressure condition representing the expansion vessel";
Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumSto(
redeclare final package Medium = Medium,
m_flow_nominal=datDes.mSto_flow_nominal)
"Bore field pump";
Buildings.Experimental.DHC.Networks.Combined.BaseClasses.ConnectionSeriesStandard
conPla(
redeclare final package Medium = Medium,
final mDis_flow_nominal=datDes.mPipDis_flow_nominal,
final mCon_flow_nominal=datDes.mPla_flow_nominal,
lDis=0,
lCon=0,
final dhDis=0.2,
final dhCon=0.2,
final allowFlowReversal=allowFlowReversalSer)
"Connection to the plant (pressure drop lumped in plant and network model)";
Buildings.Experimental.DHC.Networks.Combined.BaseClasses.ConnectionSeriesStandard
conSto(
redeclare final package Medium = Medium,
final mDis_flow_nominal=datDes.mPipDis_flow_nominal,
final mCon_flow_nominal=datDes.mSto_flow_nominal,
lDis=0,
lCon=0,
final dhDis=0.2,
final dhCon=0.2,
final allowFlowReversal=allowFlowReversalSer)
"Connection to the bore field (pressure drop lumped in plant and network model)";
Buildings.Experimental.DHC.Plants.Heating.SewageHeatRecovery
pla(
redeclare final package Medium = Medium,
final mSew_flow_nominal=datDes.mPla_flow_nominal,
final mDis_flow_nominal=datDes.mPla_flow_nominal,
final dpSew_nominal=datDes.dpPla_nominal,
final dpDis_nominal=datDes.dpPla_nominal,
final epsHex=datDes.epsPla) "Sewage heat recovery plant";
Buildings.Experimental.DHC.Networks.Combined.UnidirectionalSeries
dis(
redeclare final package Medium = Medium,
final nCon=nBui,
show_TOut=true,
final mDis_flow_nominal=datDes.mPipDis_flow_nominal,
final mCon_flow_nominal=datDes.mCon_flow_nominal,
final dp_length_nominal=datDes.dp_length_nominal,
final lDis=datDes.lDis,
final lCon=datDes.lCon,
final lEnd=datDes.lEnd,
final allowFlowReversal=allowFlowReversalSer) "Distribution network";
Fluid.Sensors.TemperatureTwoPort TDisWatSup(
redeclare final package Medium = Medium,
final m_flow_nominal=datDes.mPumDis_flow_nominal)
"District water supply temperature";
Fluid.Sensors.TemperatureTwoPort TDisWatRet(
redeclare final package Medium = Medium,
final m_flow_nominal=datDes.mPumDis_flow_nominal)
"District water return temperature";
Fluid.Sensors.TemperatureTwoPort TDisWatBorLvg(
redeclare final package Medium = Medium,
final m_flow_nominal=datDes.mPumDis_flow_nominal)
"District water borefield leaving temperature";
replaceable Buildings.Experimental.DHC.Loads.Combined.BaseClasses.PartialBuildingWithETS
bui[nBui] constrainedby Buildings.Experimental.DHC.Loads.Combined.BaseClasses.PartialBuildingWithETS
(
bui(each final facMul=facMul),
redeclare each final package MediumBui = Medium,
redeclare each final package MediumSer = Medium,
each final allowFlowReversalBui=allowFlowReversalBui,
each final allowFlowReversalSer=allowFlowReversalSer,
each final TDisWatMin=datDes.TLooMin,
each final TDisWatMax=datDes.TLooMax) "Building and ETS";
Modelica.Blocks.Sources.Constant TSewWat(k=273.15 + 17)
"Sewage water temperature";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMaxSet[nBui](
k=bui.THeaWatSup_nominal)
"Heating water supply temperature set point - Maximum value";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TChiWatSupSet[nBui](
k=bui.TChiWatSup_nominal)
"Chilled water supply temperature set point";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet[nBui](
each k=28 + 273.15)
"Heating water supply temperature set point - Minimum value";
Buildings.Controls.OBC.CDL.Reals.MultiSum PPumETS(
final nin=nBui)
"ETS pump power";
Modelica.Blocks.Continuous.Integrator EPumETS(
initType=Modelica.Blocks.Types.Init.InitialState)
"ETS pump electric energy";
Modelica.Blocks.Continuous.Integrator EPumDis(
initType=Modelica.Blocks.Types.Init.InitialState)
"Distribution pump electric energy";
Modelica.Blocks.Continuous.Integrator EPumSto(
initType=Modelica.Blocks.Types.Init.InitialState)
"Storage pump electric energy";
Modelica.Blocks.Continuous.Integrator EPumPla(initType=Modelica.Blocks.Types.Init.InitialState)
"Plant pump electric energy";
Buildings.Controls.OBC.CDL.Reals.MultiSum EPum(nin=4)
"Total pump electric energy";
Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaPump(
final nin=nBui)
"Heat pump power";
Modelica.Blocks.Continuous.Integrator EHeaPum(
initType=Modelica.Blocks.Types.Init.InitialState)
"Heat pump electric energy";
Buildings.Controls.OBC.CDL.Reals.MultiSum ETot(nin=2) "Total electric energy";
Buildings.Experimental.DHC.Loads.BaseClasses.ConstraintViolation conVio(
final uMin(final unit="K", displayUnit="degC")=datDes.TLooMin,
final uMax(final unit="K", displayUnit="degC")=datDes.TLooMax,
final nu=3+nBui,
u(each final unit="K", each displayUnit="degC"))
"Check if loop temperatures are within given range";
equation
connect(dis.TOut, conVio.u[4:4+nBui-1]);
connect(bou.ports[1], pumDis.port_a);
connect(borFie.port_b, conSto.port_aCon);
connect(pumDis.port_b, conSto.port_aDis);
connect(borFie.port_a, pumSto.port_b);
connect(conSto.port_bCon, pumSto.port_a);
connect(conPla.port_bDis, TDisWatSup.port_a);
connect(TDisWatSup.port_b, dis.port_aDisSup);
connect(dis.port_bDisSup, TDisWatRet.port_a);
connect(TDisWatRet.port_b, pumDis.port_a);
connect(conSto.port_bDis, TDisWatBorLvg.port_a);
connect(TDisWatBorLvg.port_b, conPla.port_aDis);
connect(bui.port_bSerAmb, dis.ports_aCon);
connect(dis.ports_bCon, bui.port_aSerAmb);
connect(TSewWat.y, pla.TSewWat);
connect(THeaWatSupMaxSet.y, bui.THeaWatSupMaxSet);
connect(TChiWatSupSet.y, bui.TChiWatSupSet);
connect(pla.port_bSerAmb, conPla.port_aCon);
connect(conPla.port_bCon, pla.port_aSerAmb);
connect(THeaWatSupMinSet.y, bui.THeaWatSupMinSet);
connect(bui.PPumETS, PPumETS.u);
connect(PPumETS.y, EPumETS.u);
connect(pumDis.P, EPumDis.u);
connect(pumSto.P, EPumSto.u);
connect(pla.PPum, EPumPla.u);
connect(EPumETS.y, EPum.u[1]);
connect(EPumPla.y, EPum.u[2]);
connect(EPumDis.y, EPum.u[3]);
connect(EPumSto.y, EPum.u[4]);
connect(bui.PHea, PHeaPump.u);
connect(PHeaPump.y, EHeaPum.u);
connect(EHeaPum.y, ETot.u[1]);
connect(EPum.y, ETot.u[2]);
connect(TDisWatSup.T, conVio.u[1]);
connect(TDisWatBorLvg.T, conVio.u[2]);
connect(TDisWatRet.T, conVio.u[3]);
end PartialSeries;
Buildings.Experimental.DHC.Examples.Combined.BaseClasses.DesignDataSeries
Record with design data for series network
Information
This record contains parameter declarations used in example models of DHC systems.
Extends from Modelica.Icons.Record (Icon for records).
Parameters
Type | Name | Default | Description |
---|---|---|---|
Integer | nBui | 3 | Number of served buildings |
MassFlowRate | mPumDis_flow_nominal | 95 | Nominal mass flow rate of main distribution pump [kg/s] |
MassFlowRate | mPipDis_flow_nominal | mPumDis_flow_nominal | Nominal mass flow rate for main pipe sizing [kg/s] |
MassFlowRate | mCon_flow_nominal[nBui] | Nominal mass flow rate in each connection line [kg/s] | |
MassFlowRate | mPla_flow_nominal | 11.45 | Plant HX nominal mass flow rate (primary = secondary) [kg/s] |
MassFlowRate | mSto_flow_nominal | 105 | Storage nominal mass flow rate [kg/s] |
PressureDifference | dpPla_nominal | 50000 | Plant HX pressure drop at nomninal flow rate (primary = secondary) [Pa] |
Real | epsPla | 0.935 | Plant HX effectiveness (constant) |
Temperature | TLooMin | 273.15 + 6 | Minimum loop temperature [K] |
Temperature | TLooMax | 273.15 + 17 | Maximum loop temperature [K] |
Real | dp_length_nominal | 250 | Pressure drop per pipe length at nominal flow rate [Pa/m] |
Length | lDis[nBui] | fill(100, nBui) | Length of the distribution pipe before each connection [m] |
Length | lCon[nBui] | fill(10, nBui) | Length of each connection pipe (supply only, not counting return line) [m] |
Length | lEnd | sum(lDis) | Length of the end of the distribution line (after last connection) [m] |
Modelica definition
record DesignDataSeries "Record with design data for series network"
extends Modelica.Icons.Record;
parameter Integer nBui = 3
"Number of served buildings";
parameter Modelica.Units.SI.MassFlowRate mPumDis_flow_nominal=95
"Nominal mass flow rate of main distribution pump";
parameter Modelica.Units.SI.MassFlowRate mPipDis_flow_nominal=
mPumDis_flow_nominal "Nominal mass flow rate for main pipe sizing";
parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal[nBui]
"Nominal mass flow rate in each connection line";
parameter Modelica.Units.SI.MassFlowRate mPla_flow_nominal=11.45
"Plant HX nominal mass flow rate (primary = secondary)";
parameter Modelica.Units.SI.MassFlowRate mSto_flow_nominal=105
"Storage nominal mass flow rate";
parameter Modelica.Units.SI.PressureDifference dpPla_nominal=50000
"Plant HX pressure drop at nomninal flow rate (primary = secondary)";
parameter Real epsPla = 0.935
"Plant HX effectiveness (constant)";
parameter Modelica.Units.SI.Temperature TLooMin=273.15 + 6
"Minimum loop temperature";
parameter Modelica.Units.SI.Temperature TLooMax=273.15 + 17
"Maximum loop temperature";
parameter Real dp_length_nominal(final unit="Pa/m") = 250
"Pressure drop per pipe length at nominal flow rate";
parameter Modelica.Units.SI.Length lDis[nBui]=fill(100, nBui)
"Length of the distribution pipe before each connection";
parameter Modelica.Units.SI.Length lCon[nBui]=fill(10, nBui)
"Length of each connection pipe (supply only, not counting return line)";
parameter Modelica.Units.SI.Length lEnd=sum(lDis)
"Length of the end of the distribution line (after last connection)";
end DesignDataSeries;