Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples

Example models integrating multiple components

Information

This package contains whole-district system models (from the plant to the load) illustrating the use of the classes in Buildings.Experimental.DHC.Examples.Combined.Generation5.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.ParallelConstantFlow ParallelConstantFlow Example of parallel connection with constant district water mass flow rate
Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesConstantFlow SeriesConstantFlow Example of series connection with constant district water mass flow rate
Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesVariableFlow SeriesVariableFlow Example of series connection with variable district water mass flow rate
Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.BaseClasses BaseClasses Package with base classes that are used by multiple models

Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.ParallelConstantFlow Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.ParallelConstantFlow

Example of parallel connection with constant district water mass flow rate

Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.ParallelConstantFlow

Information

This model is identical to Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesConstantFlow except for the energy transfer stations that are connected in parallel and for the pipe sizing parameters that are adjusted consequently.

Extends from BaseClasses.PartialParallel (Partial model for parallel network).

Parameters

TypeNameDefaultDescription
IntegernBuidatDes.nBuiNumber of buildings connected to DHC system
StringfilNam[nBui]{"modelica://Buildings/Resou...Library paths of the files with thermal loads as time series
Assumptions
BooleanallowFlowReversalSertrueSet to true to allow flow reversal in the service lines
BooleanallowFlowReversalBuifalseSet to true to allow flow reversal for in-building systems

Modelica definition

model ParallelConstantFlow "Example of parallel connection with constant district water mass flow rate" extends BaseClasses.PartialParallel( redeclare Buildings.Experimental.DHC.Examples.Combined.Generation5.Loads.BuildingTimeSeriesWithETS bui[nBui](final filNam=filNam), datDes( mPumDis_flow_nominal=150, mPipDis_flow_nominal=150, dp_length_nominal=250, epsPla=0.91), dis(show_entFlo=true)); parameter String filNam[nBui]={ "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissResidential_20190916.mos", "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissHospital_20190916.mos"} "Library paths of the files with thermal loads as time series"; Modelica.Blocks.Sources.Constant masFloMaiPum( k=datDes.mPumDis_flow_nominal) "Distribution pump mass flow rate"; Modelica.Blocks.Sources.Constant masFloDisPla(k=datDes.mPla_flow_nominal) "District water mass flow rate to plant"; Controls.OBC.CDL.Continuous.Sources.Constant THotWatSupSet[nBui]( k=fill(63 + 273.15, nBui)) "Service hot water supply temperature set point"; Controls.OBC.CDL.Continuous.Sources.Constant TColWat[nBui]( k=fill(15 + 273.15, nBui)) "Cold water temperature"; equation connect(masFloMaiPum.y, pumDis.m_flow_in); connect(pumSto.m_flow_in, masFloMaiPum.y); connect(masFloDisPla.y, pla.mPum_flow); connect(THotWatSupSet.y, bui.THotWatSupSet); connect(TColWat.y, bui.TColWat); connect(dis.port_bDisSup, dis.port_aDisRet); end ParallelConstantFlow;

Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesConstantFlow Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesConstantFlow

Example of series connection with constant district water mass flow rate

Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesConstantFlow

Information

This is a model of a so-called "reservoir network" (Sommer 2020), i.e., a fifth generation district system with unidirectional mass flow rate in the district loop, and energy transfer stations connected in series. In this model, the temperature of the district loop is stabilized through the operation of the plant and the borefield. The main circulation pump has a constant mass flow rate. Each substation takes water from the main district loop and feeds its return water back into the main district loop downstream from the intake. The pipes of the main loop are designed for a pressure drop of dpDis_length_nominal=250 Pa/m at the design flow rate.

References

Sommer T., Sulzer M., Wetter M., Sotnikov A., Mennel S., Stettler C. The reservoir network: A new network topology for district heating and cooling. Energy, Volume 199, 15 May 2020, 117418.

Extends from BaseClasses.PartialSeries (Partial model for series network).

Parameters

TypeNameDefaultDescription
RealdpDis_length_nominal250Pressure drop per pipe length at nominal flow rate - Distribution line [Pa/m]
RealdpCon_length_nominal250Pressure drop per pipe length at nominal flow rate - Connection line [Pa/m]
IntegernBuidatDes.nBuiNumber of buildings connected to DHC system
StringfilNam[nBui]{"modelica://Buildings/Resou...Library paths of the files with thermal loads as time series
Assumptions
BooleanallowFlowReversalSertrueSet to true to allow flow reversal in the service lines
BooleanallowFlowReversalBuifalseSet to true to allow flow reversal for in-building systems

Modelica definition

model SeriesConstantFlow "Example of series connection with constant district water mass flow rate" extends BaseClasses.PartialSeries(redeclare Buildings.Experimental.DHC.Examples.Combined.Generation5.Loads.BuildingTimeSeriesWithETS bui[nBui](final filNam=filNam), datDes( mPumDis_flow_nominal=95, mPipDis_flow_nominal=95, dp_length_nominal=250, epsPla=0.935)); parameter String filNam[nBui]={ "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissResidential_20190916.mos", "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissHospital_20190916.mos"} "Library paths of the files with thermal loads as time series"; Modelica.Blocks.Sources.Constant masFloMaiPum( k=datDes.mPumDis_flow_nominal) "Distribution pump mass flow rate"; Modelica.Blocks.Sources.Constant masFloDisPla( k=datDes.mPla_flow_nominal) "District water flow rate to plant"; Controls.OBC.CDL.Continuous.Sources.Constant THotWatSupSet[nBui]( k=fill(63 + 273.15, nBui)) "Hot water supply temperature set point"; Controls.OBC.CDL.Continuous.Sources.Constant TColWat[nBui]( k=fill(15 + 273.15, nBui)) "Cold water temperature"; equation connect(masFloMaiPum.y, pumDis.m_flow_in); connect(pumSto.m_flow_in, masFloMaiPum.y); connect(masFloDisPla.y, pla.mPum_flow); connect(THotWatSupSet.y, bui.THotWatSupSet); connect(TColWat.y, bui.TColWat); end SeriesConstantFlow;

Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesVariableFlow Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesVariableFlow

Example of series connection with variable district water mass flow rate

Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesVariableFlow

Information

This model is identical to Buildings.Experimental.DHC.Examples.Combined.Generation5.Examples.SeriesConstantFlow except for the pipe diameter and the control of the main circulation pump. Rather than having a constant mass flow rate, the mass flow rate is varied based on the mixing temperatures after each agent. If these mixing temperatures are sufficiently far away from the minimum or maximum allowed loop temperature, then the mass flow rate is reduced to save pump energy.

Extends from BaseClasses.PartialSeries (Partial model for series network).

Parameters

TypeNameDefaultDescription
RealdpDis_length_nominal250Pressure drop per pipe length at nominal flow rate - Distribution line [Pa/m]
RealdpCon_length_nominal250Pressure drop per pipe length at nominal flow rate - Connection line [Pa/m]
IntegernBuidatDes.nBuiNumber of buildings connected to DHC system
StringfilNam[nBui]{"modelica://Buildings/Resou...Library paths of the files with thermal loads as time series
Assumptions
BooleanallowFlowReversalSertrueSet to true to allow flow reversal in the service lines
BooleanallowFlowReversalBuifalseSet to true to allow flow reversal for in-building systems

Modelica definition

model SeriesVariableFlow "Example of series connection with variable district water mass flow rate" extends BaseClasses.PartialSeries(redeclare Buildings.Experimental.DHC.Examples.Combined.Generation5.Loads.BuildingTimeSeriesWithETS bui[nBui](final filNam=filNam), datDes( mPumDis_flow_nominal=97.3, mPipDis_flow_nominal=69.5, dp_length_nominal=250, epsPla=0.91)); parameter String filNam[nBui]={ "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissResidential_20190916.mos", "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissHospital_20190916.mos"} "Library paths of the files with thermal loads as time series"; Modelica.Blocks.Sources.Constant masFloDisPla( k=datDes.mPla_flow_nominal) "District water flow rate to plant"; Controls.OBC.CDL.Continuous.Sources.Constant THotWatSupSet[nBui]( k=fill(63 + 273.15, nBui)) "Hot water supply temperature set point"; Controls.OBC.CDL.Continuous.Sources.Constant TColWat[nBui]( k=fill(15 + 273.15, nBui)) "Cold water temperature"; Buildings.Experimental.DHC.Networks.Controls.MainPump conPum( nMix=nBui, nSou=2, TMin=279.15, TMax=290.15, use_temperatureShift=false) "Main pump controller"; Controls.OBC.CDL.Continuous.Gain gai( k=datDes.mPumDis_flow_nominal) "Scale with nominal mass flow rate"; equation connect(masFloDisPla.y, pla.mPum_flow); connect(THotWatSupSet.y, bui.THotWatSupSet); connect(TColWat.y, bui.TColWat); connect(pumDis.m_flow_in, gai.y); connect(conPum.y, gai.u); connect(dis.TOut, conPum.TMix); connect(TDisWatRet.T, conPum.TSouIn[1]); connect(TDisWatBorLvg.T, conPum.TSouIn[2]); connect(TDisWatBorLvg.T, conPum.TSouOut[1]); connect(TDisWatSup.T, conPum.TSouOut[2]); connect(gai.y, pumSto.m_flow_in); end SeriesVariableFlow;