Thermal

Thermal building calculations: energy performance, heat loss, and EPC classification.

When to use this module

Use project.thermal for:

  • conventional and actual energy-use calculations

  • EPC/certificate assignment helpers

  • heating-intensity and thermal-physics utility functions

project.thermal.certificate_buildings(u_wall, u_floor, u_roof, u_windows, hdd, efficiency, energy, ratio_surface)[source]

Returns energy performance certificate.

Parameters:
  • u_wall

  • u_floor

  • u_roof

  • u_windows

  • hdd

  • efficiency

  • energy

  • ratio_surface

Returns:

  • pd.Series – Primary heating consump_tion for all buildings in the stock.

  • pd.Series – Certificates for all buildings in the stock.

project.thermal.conventional_dhw_final(index)[source]

Calculate dhw final energy consumption.

Parameters:

index (pd.MultiIndex) –

project.thermal.conventional_energy_3uses(u_wall, u_floor, u_roof, u_windows, ratio_surface, efficiency, index, th_bridging='Medium', vent_types='Ventilation naturelle', infiltration='Medium', air_rate=None, unobserved=None, method='3uses')[source]

Space heating conventional, and energy performance certificate.

Method before july 2021.

Parameters:
  • u_wall (pd.Series) –

  • u_floor (pd.Series) –

  • u_roof (pd.Series) –

  • u_windows (pd.Series) –

  • ratio_surface (pd.Series) –

  • efficiency (pd.Series) –

  • index (pd.MultiIndex or pd.Index) – Should include Housing type and Heating system.

  • th_bridging ({'Minimal', 'Low', 'Medium', 'High'}) –

  • vent_types ({'Ventilation naturelle', 'VMC SF auto et VMC double flux', 'VMC SF hydrogérable'}) –

  • infiltration ({'Minimal', 'Low', 'Medium', 'High'}) –

  • air_rate (default None) –

  • unobserved ({'Minimal', 'High'}, default None) –

project.thermal.conventional_heating_final(u_wall, u_floor, u_roof, u_windows, ratio_surface, efficiency, th_bridging='Medium', vent_types='Ventilation naturelle', infiltration='Medium', air_rate=None, unobserved=None, climate=None, freq='year', smooth=False, temp_indoor=None, gain_utilization_factor=False, efficiency_hour=False, hourly_profile=None, temp_sink=None)[source]

Monthly stead-state space heating final energy delivered.

Heat-pump formula come from Stafell et al., 2012.

Parameters:
  • u_wall (pd.Series) –

  • u_floor (pd.Series) –

  • u_roof (pd.Series) –

  • u_windows (pd.Series) –

  • ratio_surface (pd.Series) –

  • efficiency (pd.Series) –

  • th_bridging ({'Minimal', 'Low', 'Medium', 'High'}) –

  • vent_types ({'Ventilation naturelle', 'VMC SF auto et VMC double flux', 'VMC SF hydrogérable'}) –

  • infiltration ({'Minimal', 'Low', 'Medium', 'High'}) –

  • air_rate (default None) –

  • unobserved ({'Minimal', 'High'}, default None) –

  • climate (int, default None) – Climatic year to use to calculate heating need.

  • freq

  • smooth (bool, default False) – Use smooth daily data to calculate heating need.

  • temp_indoor

  • gain_utilization_factor (bool, default False) – If False, for simplification we use gain_utilization_factor = 1.

  • efficiency_hour

project.thermal.conventional_heating_need(u_wall, u_floor, u_roof, u_windows, ratio_surface, th_bridging='Medium', vent_types='Ventilation naturelle', infiltration='Medium', air_rate=None, unobserved=None, climate=None, smooth=False, freq='year', hourly_profile=None, temp_indoor=None, gain_utilization_factor=False)[source]

Seasonal method for space heating need.

We apply a seasonal method according to EN ISO 13790 to estimate annual space heating demand by building type. The detailed calculation can be found in the TABULA project documentation (Loga, 2013). In a nutshell, the energy need for heating is the difference between the heat losses and the heat gain. The total heat losses result from heat transfer by transmission and ventilation during the heating season respectively proportional to the heat transfer coefficient $H_tr$ and $H_ve$.

To not consider gain_utilization_factor create a difference of 5%. For consistency between results and

Parameters:
  • u_wall (pd.Series) – Index should include Housing type {‘Single-family’, ‘Multi-family’}.

  • u_floor (pd.Series) –

  • u_roof (pd.Series) –

  • u_windows (pd.Series) –

  • ratio_surface (pd.Series) –

  • th_bridging ({'Minimal', 'Low', 'Medium', 'High'}, default None) –

  • vent_types ({'Ventilation naturelle', 'VMC SF auto et VMC double flux', 'VMC SF hydrogérable'}, default None) –

  • infiltration ({'Minimal', 'Low', 'Medium', 'High'}, default None) –

  • air_rate (pd.Series, default None) –

  • unobserved ({'Minimal', 'High'}, default None) –

  • climate (int, default None) – Climatic year to use to calculate heating need.

  • smooth (bool, default False) – Use smooth daily data to calculate heating need.

  • freq

  • hourly_profile (optional, pd.Series) –

  • temp_indoor (optional, default temp_indoor) –

  • gain_utilization_factor (bool, default False) – If False, for simplification we use gain_utilization_factor = 1.

Return type:

Conventional heating need (kWh/m2.a)

project.thermal.final2primary(heat_consumption, energy, conversion=2.3)[source]
project.thermal.find_certificate(primary_consumption, other_consumptions=None, method='3uses')[source]

Returns energy performance certificate from A to G.

Parameters:

primary_consumption (float or pd.Series or pd.DataFrame) – Space heating energy consumption (kWh PE / m2.year)

Returns:

Energy performance certificate.

Return type:

float or pd.Series or pd.DataFrame

project.thermal.heat_intensity(budget, method='v4')[source]
project.thermal.primary_heating_consumption(u_wall, u_floor, u_roof, u_windows, efficiency, energy, ratio_surface, hdd, conversion=2.3)[source]

Convert final to primary heating consumption.

Parameters:
  • u_wall

  • u_floor

  • u_roof

  • u_windows

  • hdd

  • efficiency

  • energy

  • ratio_surface

  • conversion

project.thermal.size_heating_system(u_wall, u_floor, u_roof, u_windows, ratio_surface, th_bridging='Medium', vent_types='Ventilation naturelle', infiltration='Medium', air_rate=None, unobserved=None, temp_indoor=None)[source]

Seasonal method for space heating need.

We apply a seasonal method according to EN ISO 13790 to estimate annual space heating demand by building type. The detailed calculation can be found in the TABULA project documentation (Loga, 2013). In a nutshell, the energy need for heating is the difference between the heat losses and the heat gain. The total heat losses result from heat transfer by transmission and ventilation during the heating season respectively proportional to the heat transfer coefficient $H_tr$ and $H_ve$.

To not consider gain_utilization_factor create a difference of 5%. For consistency between results and

Parameters:
  • u_wall (pd.Series) – Index should include Housing type {‘Single-family’, ‘Multi-family’}.

  • u_floor (pd.Series) –

  • u_roof (pd.Series) –

  • u_windows (pd.Series) –

  • ratio_surface (pd.Series) –

  • th_bridging ({'Minimal', 'Low', 'Medium', 'High'}, default None) –

  • vent_types ({'Ventilation naturelle', 'VMC SF auto et VMC double flux', 'VMC SF hydrogérable'}, default None) –

  • infiltration ({'Minimal', 'Low', 'Medium', 'High'}, default None) –

  • air_rate (pd.Series, default None) –

  • unobserved ({'Minimal', 'High'}, default None) –

  • temp_indoor (optional, default temp_indoor) –

Return type:

Conventional heating need (kWh/m2.a)

project.thermal.stat_certificate(df)[source]

Returns energy performance certificate based on space heating energy consumption.

Parameters:

df (float or pd.Series or pd.DataFrame) – Space heating energy consumption (kWh PE / m2.year)

Returns:

Energy performance certificate.

Return type:

float or pd.Series or pd.DataFrame

project.thermal.stat_heating_consumption(u_wall, u_floor, u_roof, u_windows, efficiency, ratio_surface, hdd)[source]

Calculate space heating consumption in kWh/m2.year based on insulation performance and heating system efficiency.

Function simulates the 3CL-method, and use parameters to estimate unobserved variables.

Parameters:
  • u_wall (float or pd.Series) –

  • u_floor (float or pd.Series) –

  • u_roof (float or pd.Series) –

  • u_windows (float or pd.Series) –

  • hdd (float or pd.Series) –

  • efficiency (float or pd.Series) –

  • ratio_surface (pd.DataFrame) –

Returns:

Standard space heating consumption.

Return type:

float or pd.Series or pd.DataFrame

project.thermal.stat_model_3uses_consumption(df, a=0.846102, b=1.02988)[source]

Statistical model based on ADEME DPE data.

X = Primary space hating energy consumption (kWh EP / m2) Conso = X ** 0.846102 * exp(1.029880)

project.thermal.stat_model_heating_consumption(df, a=0.921323, b=0.634717)[source]

Statistical model based on ADEME DPE data.

X = (Deper_mur + Deper_baie + Deper_plancher + Deper_plafond) / Efficiency * DDH Conso = X ** 1.746973 * exp(1.536192)