Heat Demand
See also
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, t_feed_demand_c=nan, t_return_demand_c=nan, 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:
- t_feed_demand_c (float, default nan) - Default feed temperature [C]. Used as a
fallback when no t_feed_demand_c time-series input is mapped to the controller.
- t_return_demand_c (float, default nan) - Default return temperature [C]. Used as a
fallback when no t_return_demand_c time-series input is mapped to the controller.
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
Input Static Data
Parameter |
Description |
Unit |
|---|---|---|
name |
Unique name or identifier for the heat demand element. |
N/A |
t_feed_demand_c |
Default feed temperature level used if no time-series value is provided. |
Degree Celsius |
t_return_demand_c |
Default return temperature level used if no time-series value is provided. |
Degree Celsius |
in_service |
True for in_service or False for out of service |
boolean |
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 |
q_received_kw |
Heat power already received from upstream elements (optional, for chained mappings) |
kW |
Output Time Series
Parameter |
Description |
Unit |
|---|---|---|
q_received_kw |
Heat power effectively received at the demand |
kW |
q_uncovered_kw |
Uncovered heat power. Can be negative if the power provided is greater than the required power |
kW |
mdot_kg_per_s |
Mass flow rate actually received by the demand |
kg/s |
t_in_c |
Actual inlet temperature of the demand |
Degree Celsius |
t_out_c |
Actual outlet temperature of the demand |
Degree Celsius |
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
- class pandaprosumer.controller.models.heat_demand.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
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