modelSingleZoneResidentialHydronicHeatPump

Single zone residential hydronic example using a heat pump as heating production system

Extends from Modelica.Icons.Example (Icon for runnable examples).

Information

This is a single zone residential hydronic system model with an air-source heat pump and floor heating for WP 1.2 of IBPSA project 1.

Building Design and Use

Architecture

This model represents a simplified residential dwelling for a family of 5 members. The building envelope model is based on the BESTEST case 900 test case. The envelope model is therefore similar to the one used in IDEAS.Examples.IBPSA.SingleZoneResidentialHydronic but it is scaled to an area that is 4 times larger. Particularly, the model consists of a single zone with a rectangular floor plan of 12 by 16 meters and a height of 2.7 m. The internal wall mass is modelled using a single wall with a a length that equals three times the building width plus two times the building length. This assumes that there are around 12 rooms in the building. The zone further consists of several south-oriented windows, which are modelled using a single window of 24 m2.

Constructions

Exterior walls

The walls are modelled using IDEAS.Buildings.Components.OuterWall and consist of the following layers:

Name

Thickness [m]

Thermal Conductivity [W/m-K]

Specific Heat Capacity [J/kg-K]

Density [kg/m3]

Layer 1 (wood siding)

0.009

0.14

900

530

Layer 2 (insulation)

0.0615

0.04

1400

10

Layer 3 (concrete block)

0.1

0.51

1000

1400

Floor

The floor is modelled using IDEAS.Buildings.Components.SlabOnGround and consists of the following layers:

Name

Thickness [m]

Thermal Conductivity [W/m-K]

Specific Heat Capacity [J/kg-K]

Density [kg/m3]

Layer 1 (concrete)

0.15

1.4

840

2100

Layer 2 (insulation)

0.20

0.02

1470

30

Layer 3 (screed)

0.05

0.6

840

1100

Layer 4 (tile)

0.01

1.4

840

2100

Roof

The roof is modelled using IDEAS.Buildings.Components.OuterWall and consist of the following layers:

Name

Thickness [m]

Thermal Conductivity [W/m-K]

Specific Heat Capacity [J/kg-K]

Density [kg/m3]

Layer 1 (roof deck)

0.019

0.14

900

530

Layer 2 (fiber glass)

0.1118

0.04

840

12

Layer 3 (plaster board)

0.01

0.16

840

950

Occupancy schedules

The zone is occupied by 5 people before 7 am and after 8 pm each weekday and full time during weekends.

Internal loads and schedules

There are no internal loads other than the occupants.

Climate data

The model uses a climate file containing one year of weather data for Brussels, Belgium.

HVAC System Design

Primary and secondary system designs

An air-to-water modulating heat pump of 15 kW nominal heating capacity extracts energy from the ambient air to heat up the floor heating emission system, as shown in Figure 1 below. A fan blows ambient air through the heat pump evaporator when the heat pump is operating. The floor heating system injects heat between Layer 2 (insulation) and Layer 3 (screed), with water as working fluid. The floor heating pump has a nominal mass flow rate of 0.5 kg/s when the heat pump is working.


image

Figure 1: System schematic.


Equipment specifications and performance maps

Heat pump

A water-to-air heat pump with a scroll compressor is used. The heat pump is modelled as described by:

H. Jin. Parameter estimation based models of water source heat pumps. PhD Thesis. Oklahoma State University. Stillwater, Oklahoma, USA. 2012.

with air instead of water blowing through the evaporator. Air condensation is therefore neglected. The model parameters are obtained by calibration of the heat pump model to manufacturer performance data following the procedure explained in this heat pump calibration guide using manufacturer performance data from a Carrier air-to-water heat pump model 30AW015 which data can be found in this manufacturer datasheet.

For more information of the heat pump model we refer to the model documentation.

Fluid movers

The floor heating system circulation pump has the default total efficiency of the pump model, which is 49 % at the time of writing (motor and hydraulic efficiencies are separately 70 % each). Also the fan that blows ambient air through the heat exchanger uses this default total efficiency of 49 %. The nominal mass flow rate of the floor heating circulation pump is of 0.5 kg/s and the nominal pressure rise of the heat pump evaporator fan is of 0.1 kPa.

Rule-based or local-loop controllers (if included)

A baseline controller is implemented to procure comfort within the building zone. A PI controller is tuned with the zone operative temperature as the controlled variable and the heat pump modulation signal for compressor frequency as the control variable, as depicted as C1 in Figure 1 and shown in Figure 2 below. The control variable is limited between 0 and 1, and it is computed to drive the zone operative temperature towards the zone operative temperature setpoint. For baseline control, this setpoint is computed as the heating comfort setpoint plus an offset which varies depending on the occupancy schedule: during occupied periods the offset is set to only 0.2 degrees Celsius and is meant to avoid discomfort from slight oscilations around the setpoint; during unoccupied periods the offset is set to 5.5 degrees Celsius and is meant to compensate for the large temperature setback used during these periods. The latter offset prevents the need of abrubpt changes in the indoor temperature that may not be achievable because of the large thermal inertia of the floor heating system and which would consequently cause discomfort. All other equipment (fan for the heat pump evaporator circuit and floor heating emission system pump) are switched on when the heat pump is working (modulating signal higher than 0) and switched off otherwise. This is depicted as controller C2 in Figure 1.


image

Figure 2: Controller C1.


Model IO's

Inputs

The model inputs are:

  • oveFan_u [1] [min=0.0, max=1.0]: Integer signal to control the heat pump evaporator fan either on or off
  • oveHeaPumY_u [1] [min=0.0, max=1.0]: Heat pump modulating signal for compressor speed between 0 (not working) and 1 (working at maximum capacity)
  • ovePum_u [1] [min=0.0, max=1.0]: Integer signal to control the emission circuit pump either on or off
  • oveTSet_u [K] [min=278.15, max=308.15]: Zone operative temperature setpoint

Outputs

The model outputs are:

  • reaCO2RooAir_y [ppm] [min=None, max=None]: CO2 concentration in the zone
  • reaCOP_y [1] [min=None, max=None]: Heat pump COP
  • reaPFan_y [W] [min=None, max=None]: Electrical power of the heat pump evaporator fan
  • reaPHeaPum_y [W] [min=None, max=None]: Heat pump electrical power
  • reaPPumEmi_y [W] [min=None, max=None]: Emission circuit pump electrical power
  • reaQFloHea_y [W] [min=None, max=None]: Floor heating thermal power released to the zone
  • reaQHeaPumCon_y [W] [min=None, max=None]: Heat pump thermal power exchanged in the condenser
  • reaQHeaPumEva_y [W] [min=None, max=None]: Heat pump thermal power exchanged in the evaporator
  • reaTRet_y [K] [min=None, max=None]: Return water temperature from radiant floor
  • reaTSetCoo_y [K] [min=None, max=None]: Zone operative temperature setpoint for cooling
  • reaTSetHea_y [K] [min=None, max=None]: Zone operative temperature setpoint for heating
  • reaTSup_y [K] [min=None, max=None]: Supply water temperature to radiant floor
  • reaTZon_y [K] [min=None, max=None]: Zone operative temperature
  • weaSta_reaWeaCeiHei_y [m] [min=None, max=None]: Cloud cover ceiling height measurement
  • weaSta_reaWeaCloTim_y [s] [min=None, max=None]: Day number with units of seconds
  • weaSta_reaWeaHDifHor_y [W/m2] [min=None, max=None]: Horizontal diffuse solar radiation measurement
  • weaSta_reaWeaHDirNor_y [W/m2] [min=None, max=None]: Direct normal radiation measurement
  • weaSta_reaWeaHGloHor_y [W/m2] [min=None, max=None]: Global horizontal solar irradiation measurement
  • weaSta_reaWeaHHorIR_y [W/m2] [min=None, max=None]: Horizontal infrared irradiation measurement
  • weaSta_reaWeaLat_y [rad] [min=None, max=None]: Latitude of the location
  • weaSta_reaWeaLon_y [rad] [min=None, max=None]: Longitude of the location
  • weaSta_reaWeaNOpa_y [1] [min=None, max=None]: Opaque sky cover measurement
  • weaSta_reaWeaNTot_y [1] [min=None, max=None]: Sky cover measurement
  • weaSta_reaWeaPAtm_y [Pa] [min=None, max=None]: Atmospheric pressure measurement
  • weaSta_reaWeaRelHum_y [1] [min=None, max=None]: Outside relative humidity measurement
  • weaSta_reaWeaSolAlt_y [rad] [min=None, max=None]: Solar altitude angle measurement
  • weaSta_reaWeaSolDec_y [rad] [min=None, max=None]: Solar declination angle measurement
  • weaSta_reaWeaSolHouAng_y [rad] [min=None, max=None]: Solar hour angle measurement
  • weaSta_reaWeaSolTim_y [s] [min=None, max=None]: Solar time
  • weaSta_reaWeaSolZen_y [rad] [min=None, max=None]: Solar zenith angle measurement
  • weaSta_reaWeaTBlaSky_y [K] [min=None, max=None]: Black-body sky temperature measurement
  • weaSta_reaWeaTDewPoi_y [K] [min=None, max=None]: Dew point temperature measurement
  • weaSta_reaWeaTDryBul_y [K] [min=None, max=None]: Outside drybulb temperature measurement
  • weaSta_reaWeaTWetBul_y [K] [min=None, max=None]: Wet bulb temperature measurement
  • weaSta_reaWeaWinDir_y [rad] [min=None, max=None]: Wind direction measurement
  • weaSta_reaWeaWinSpe_y [m/s] [min=None, max=None]: Wind speed measurement

Additional System Design

Lighting

No lighting model is included.

Shading

No shading model is included.

Model Implementation Details

Moist vs. dry air

The model uses moist air despite that no condensation is modelled in any of the used components.

Pressure-flow models

A simple, single circulation loop is used to model the floor heating system as well as the air circulation through the heat pump evaporator.

Infiltration models

Fixed air infiltration corresponding to an n50 value of 10 is modelled.

Scenario Information

Time Periods

The Peak Heat Day (specifier for /scenario API is 'peak_heat_day') period is:

    This testing time period is a two-week test with one-week warmup period utilizing baseline control. The two-week period is centered on the day with the maximum 15-minute system heating load in the year.
    Start Time: Day 16.
    End Time: Day 30.

The Typical Heat Day (specifier for /scenario API is 'typical_heat_day') period is:

    This testing time period is a two-week test with one-week warmup period utilizing baseline control. The two-week period is centered on the day with the maximum 15-minute system heating load that is closest from below to the median of all 15-minute maximum heating loads of all days in the year.
    Start Time: Day 108.
    End Time: Day 122.

Energy Pricing

All pricing scenarios include the same constant value for transmission fees and taxes of each commodity. The used value is the typical price that household users pay for the network, taxes and levies, as calculateed by Eurostat and obtained from: "The energy prices and costs in Europe report". For the assumed location of the test case, this value is of 0.20 EUR/kWh for electricity.

The Constant Electricity Price (specifier for /scenario API is 'constant') profile is:

    The constant electricity price scenario uses a constant price of 0.0535 EUR/kWh, as obtained from the "Easy Indexed" deal for electricity (normal rate) in https://www.energyprice.be/products-list/Engie (accessed on June 2020). Adding up the transmission fees and taxes, the final constant electricity price is of 0.2535 EUR/kWh.

The Dynamic Electricity Price (specifier for /scenario API is 'dynamic') profile is:

    The dynamic electricity price scenario uses a dual rate of 0.0666 EUR/kWh during day time and 0.0383 EUR/kWh during night time, as obtained from the "Easy Indexed" deal for electricity (dual rate) in https://www.energyprice.be/products-list/Engie (accessed on June 2020). The on-peak daily period takes place between 7:00 a.m. and 10:00 p.m. The off-peak daily period takes place between 10:00 p.m. and 7:00 a.m. Adding up the transmission fees and taxes, the final dynamic electricity prices are of 0.2666 EUR/kWh during on-peak periods and of 0.2383 during off-peak periods.

The Highly Dynamic Electricity Price (specifier for /scenario API is 'highly_dynamic') profile is:

    The highly dynamic electricity price scenario is based on the the Belgian day-ahead energy prices as determined by the BELPEX wholescale electricity market in the year 2019. Obtained from: https://my.elexys.be/MarketInformation/SpotBelpex.aspx. Notice that the same constant transmission fees and taxes of 0.20 EUR/kWh are added up on top of these prices.

Emission Factors

The Electricity Emissions Factor profile is:

Parameters

TypeNameDefaultDescription
RealscalingFactor4Factor to scale up the model area
RealnOccupants5Number of occupants
Setpoints
Modelica.Units.SI.TemperatureTSetCooUno273.15 + 30Unoccupied cooling setpoint
Modelica.Units.SI.TemperatureTSetCooOcc273.15 + 24Occupied cooling setpoint
Modelica.Units.SI.TemperatureTSetHeaUno273.15 + 15Unoccupied heating setpoint
Modelica.Units.SI.TemperatureTSetHeaOcc273.15 + 21Occupied heating setpoint

Components

TypeNameDefaultDescription
IDEAS.BoundaryConditions.SimInfoManagersimSimulation information manager for climate data
IDEAS.Buildings.Validation.Cases.Case900Templatecase900TemplateCase 900 BESTEST model
Utilities.Time.CalendarTimecalTim
Modelica.Blocks.Sources.RealExpressionyOccFixed schedule of 1 occupant between 7 am and 8 pm
IDEAS.Utilities.IO.SignalExchange.OverwriteoveHeaPumYBlock for overwriting heat pump modulating signal
Modelica.Blocks.Sources.ConstantoffSetOccOffset above heating temperature setpoint during occupied hours to ensure comfort
Utilities.IO.SignalExchange.ReadreaPPumEmiBlock for reading the electrical power of the pump of the emission system
Modelica.Blocks.Math.RealToIntegerrealToInteger
Utilities.IO.SignalExchange.OverwriteovePumBlock for overwriting emission circuit pump control signal
Utilities.IO.SignalExchange.ReadreaCO2RooAirBlock for reading CO2 concentration in the zone
Utilities.IO.SignalExchange.ReadreaTSetCooRead zone cooling setpoint
Utilities.IO.SignalExchange.ReadreaTSetHeaRead zone cooling heating
Modelica.Blocks.Sources.RealExpressionTSetCooCooling temperature setpoint with setback with threshold strictly larger than 0 for detecting occupancy
Modelica.Blocks.Sources.RealExpressionTSetHeaHeating temperature setpoint with setback with threshold strictly larger than 0 for detecting occupancy
Modelica.Blocks.Continuous.LimPIDconPIPI controller for the boiler supply water temperature
Modelica.Blocks.Math.AddaddOcc
Fluid.Movers.FlowControlled_dppumCirculation pump for emission system
Fluid.Sensors.TemperatureTwoPortsenTemSupSupply water temperature sensor
Fluid.HeatExchangers.RadiantSlab.EmbeddedPipefloHeaFloor heating of the zone
Fluid.Sensors.TemperatureTwoPortsenTemRetReturn water temperature sensor
Fluid.HeatPumps.ScrollWaterToWaterheaPumAir to water heat pump model with calibrated parameters from manufacturer data
Fluid.Sources.Boundary_pTbouWatExpansion vessel
Modelica.Blocks.Sources.RealExpressionyPumControl input signal to emission circuit pump
Utilities.IO.SignalExchange.ReadreaPHeaPumBlock for reading the electrical power of the heat pump
Utilities.IO.SignalExchange.ReadreaTZonBlock for reading the operative zone temperature
Utilities.IO.SignalExchange.ReadreaQFloHeaBlock for reading the floor heating thermal power released to the zone
Utilities.IO.SignalExchange.ReadreaQHeaPumEvaBlock for reading the heat pump thermal power exchanged in the evaporator
Utilities.IO.SignalExchange.ReadreaQHeaPumConBlock for reading the heat pump thermal power exchanged in the condenser
Utilities.IO.SignalExchange.ReadreaTSupRead supply water temperature to radiant floor
Utilities.IO.SignalExchange.ReadreaTRetRead return water temperature from radiant floor
Utilities.IO.SignalExchange.ReadreaCOPRead heat pump COP
Modelica.Blocks.Sources.RealExpressionheaPumCOPSubstracts heat pump COP
Fluid.Sources.OutsideAiroutAirOutside air
Modelica.Blocks.Math.RealToIntegerrealToInteger2
Utilities.IO.SignalExchange.OverwriteoveFanBlock for overwriting fan control signal
Modelica.Blocks.Sources.RealExpressionyFanControl input signal to fan
Fluid.Movers.FlowControlled_dpfanFan to pump air through heat exchanger
Utilities.IO.SignalExchange.ReadreaPFanElectrical power of the heat pump evaporator fan
Modelica.Blocks.Math.AddaddUno
Modelica.Blocks.Sources.ConstantoffSetUnoOffset above heating temperature setpoint during unoccupied hours to ensure comfort
Modelica.Blocks.Logical.Greatergreater
Modelica.Blocks.Logical.Switchswitch1
Modelica.Blocks.Sources.ConstantconstThreshold strictly larger than 0 for detecting occupancy
Utilities.IO.SignalExchange.WeatherStationweaStaBOPTEST weather station
Utilities.IO.SignalExchange.OverwriteoveTSetOverwrite for zone temperature setpoint

Contents

NameDescription
MediumWaterWater medium
MediumAirAir medium
MediumGlycolGlycol medium

Revisions

  • June 19, 2025, by Jelger Jansen:
    Redeclare locGain parameter of floor construction type. See #1442.
  • June 4, 2025, by Jelger Jansen:
    Revise initial equation formulation of heaPum.eva.port_a.C_outflow to avoid translation warning in OpenModelica. See #1437.
  • October 30, 2024, by Lucas Verleyen:
    Updates according to IBPSA.
    See #1383 (and IBPSA, #1926).
  • May 3, 2022, by David Blum and Filip Jorissen:
    Detect occupancy for set points with threshold strictly larger than 0. This is for issue #1260.
  • December 2, 2021, by David Blum:
    Remove read blocks for control signals. This is for BOPTEST issue #364.
  • June 23, 2021, by David Blum:
    Add schematics to documentation. This is for #1220.
  • April 22, 2021, by Javier Arroyo:
    Add time period documentation.
  • April 2, 2021 by Javier Arroyo
    Add CO2 to air medium.
  • March 3, 2021 by Javier Arroyo :
    Overwrite zone operative temperature setpoint.
  • February 22, 2021 by Javier Arroyo :
    Add transmission fees and taxes to pricing scenarios.
  • February 18, 2021 by Javier Arroyo :
    Decrease size and add internal walls.
  • December 1, 2020 by David Blum:
    Added weather station.
  • August 27, 2020 by Javier Arroyo:
    Changes for Review 1 of BOPTEST peer review checklist.
  • July 15, 2020 by Filip Jorissen:
    Review and documentation revisions.
  • July 14, 2020 by Javier Arroyo:
    Use calibrated air-to-water heat pump model.
  • June 16, 2020 by Javier Arroyo:
    First implementation.