Heat Demand

Note

A heat demand consists of an element and a controller. The element defines it’s physical parameters, while the controller governs the operational logic.

The create_controlled function creates both and connects them.

Create Controlled Function

pandaprosumer.create_controlled_heat_demand(prosumer, scaling=1.0, name=None, index=None, in_service=True, period=0, level=0, order=0, **kwargs)[source]

Creates a heat demand element and a controller in prosumer[“heat_demand”] and an heat demand controller

INPUT:

prosumer - The prosumer within this heat demand should be created

OPTIONAL:

scaling (float, default 1) - A scaling factor applied to the heat demand. Multiply the demanded power by this factor

t_in_set_c (float, default nan) - The default required input temperature level [C]

t_out_set_c (float, default nan) - The default required output temperature level [C]

name (string, default None) - A custom name for this heat demand

index (int, default None) - Force a specified ID if it is available. If None, the index one higher than the highest already existing index is selected.

in_service (boolean, default True) - True for in_service or False for out of service

level (int, default 0) - The level of the controller

order (int, default 0) - The order of the controller

period (int, default 0) - Index of the period, default is 0

OUTPUT:

index (int) - The unique ID of the created heat demand controller

EXAMPLE:

create_controlled_heat_demand(prosumer, “heat_demand1”)

Controller

Heat Demand Controller logic

Input Static Data

Input Static Data: Heat Demand Element

Parameter

Description

Unit

name

Unique name or identifier for the gas boiler element.

N/A

q_demand_kw

Demand heat power

kW

mdot_demand_kg_per_s

Demand required mass flow

kg/s

t_feed_demand_c

Demand required feed temperature level

Degree Celsius

t_return_demand_c

Demand required return temperature level

Degree Celsius

Input Time Series

Parameter

Description

Unit

q_demand_kw

Demand heat power

kW

mdot_demand_kg_per_s

Demand required mass flow

kg/s

t_feed_demand_c

Demand required feed temperature level

Degree Celsius

t_return_demand_c

Demand required return temperature level

Degree Celsius

Output Time Series

Parameter

Description

Unit

q_uncovered_kw

Uncovered heat power. Can be negative if the power provided is greater than the required power

kW

Mapping

The Heat Demand Controller can be mapped using FluidMixMapping.

  • The heat demand can be used as responder for a FluidMix mapping, taking the output from another controller as its input

  • The heat demand can also be used as responder for a Generic mapping, in this case the results from another controller are mapped to the following inputs of the heat demand:

    • q_received_kw

  • No output are mapped, as the heat demand does not act as an initiator.

Model

pandaprosumer.controller.models.HeatDemandController(prosumer, heat_demand_object, order=-1, level=-1, in_service=True, index=None, name=None, **kwargs)[source]

Controller for Heat Demand.

Parameters:
  • prosumer – The prosumer object

  • heat_demand_object – The heat demand object

  • order – The order of the controller

  • level – The level of the controller

  • scale_factor – The scale factor for the controller

  • in_service – The in-service status of the controller

  • index – The index of the controller

  • name – The name of the controller

  • kwargs – Additional keyword arguments

The heat demand model take four inputs \(Q\), \(\dot{m}\), \(T_\text{feed}\) and \(T_\text{return}\)

Only three of these inputs should be provided, typically from timeseries data through a ConstProfile controller. The fourth one will be inferred from the relation

\begin{align*} Q = \dot{m} * Cp * (T_\text{feed} - T_\text{return}) \end{align*}