ruhnau
Overview
Heat pump COP model following Ruhnau et al. (2019).
Purpose and scope:
Computes coefficient of performance (COP) time series for heat pumps by relating COP to the instantaneous temperature lift between the source (ambient/ground/water) and the sink (space heating or DHW). Source/sink types map to typical supply setpoints and optional temperature gradients.
Method outline:
Parameterize COP as a quadratic function of the temperature lift ΔT based on coefficients for air/soil/water systems, and adjust via a correction factor to reflect realistic performance (defrosting, auxiliaries).
Provide parallel COP streams for space heating and DHW if desired.
Typical use:
Combine with HVAC load time series to estimate electrical demand of HP systems, or evaluate seasonal performance under different setpoints.
Reference:
Ruhnau, O., Hirth, L., & Praktiknjo, A. (2019). Time series of heat demand and heat pump efficiency for energy system modeling. Energy Policy, 125, 704–715. doi:10.1016/j.enpol.2019.111179
Key facts
Method key:
ruhnauSupported types:
hp
Requirements
Required keys (specify in objects)
weather
Optional keys (specify in objects)
hp_sourcehp_sinksink_temperature[C]gradient_sinkwater_temperature[C]correction_factorhp_system
Required data (specify in data)
weather
Optional data (specify in data)
hp_system
Outputs
Summary metrics
Key |
Description |
|---|---|
|
average heating COP value |
|
minimum heating COP value |
|
maximum heating COP value |
|
average DHW COP value |
|
minimum DHW COP value |
|
maximum DHW COP value |
Timeseries columns
Column |
Description |
|---|---|
|
heating COP time series |
|
DHW COP time series |
Public methods
generate
def generate( self, obj: dict = None, data: dict = None, results: dict | None = None, ts_type: str = Types.HP, *, weather: pd.DataFrame = None, hp_source: str = None, hp_sink: str = None, temp_sink: float = None, gradient_sink: float = None, temp_water: float = None, correction_factor: float = None, hp_system: dict = None, cop_coefficients: dict = None, ): """Generate heat pump COP time series for both heating and DHW. Args: obj (dict, optional): Dictionary with heat pump parameters data (dict, optional): Dictionary with input data results (dict, optional): Dictionary with results from previously generated time series ts_type (str, optional): Time series type to generate weather (pd.DataFrame, optional): Weather data with temperatures hp_source (str, optional): Heat pump source type ('ASHP', 'GSHP', 'WSHP') hp_sink (str, optional): Heat sink type ('floor', 'radiator') temp_sink (float, optional): Temperature setting for heating gradient_sink (float, optional): Gradient setting for heating temp_water (float, optional): Temperature setting for DHW correction_factor (float, optional): Efficiency correction factor hp_system (dict, optional): System configuration for heat pump cop_coefficients (dict, optional): Custom coefficients for COP calculation (a, b, c) Returns: dict: Dictionary with summary statistics and COP time series for both heating and DHW Raises: ValueError: If required parameters are missing or invalid """ # Process inputs processed_obj, processed_data = self._process_kwargs( obj, data, weather=weather, hp_source=hp_source, hp_sink=hp_sink, hp_temp=temp_sink, gradient_sink=gradient_sink, temp_water=temp_water, correction_factor=correction_factor, cop_coefficients=cop_coefficients, ) # Get input data with validation processed_obj, processed_data = self._get_input_data(processed_obj, processed_data) # Calculate heating COP time series heating_cop_series = _calculate_heating_cop_series(processed_obj, processed_data) # Calculate DHW COP time series dhw_cop_series = _calculate_dhw_cop_series(processed_obj, processed_data) return self._format_output(heating_cop_series, dhw_cop_series, processed_data)