5R1C

Overview

5R1C HVAC model aligned with ISO 13790’s simplified dynamic method.

Purpose and scope Captures key heat transfer paths between indoor air, internal surfaces, thermal mass, and exterior using five resistances and one aggregated capacitance (building mass). Better represents radiant/convective splits and envelope interactions than 1R1C, while remaining efficient for large-scale simulations.

Conceptual structure Capacitance C_m (building thermal mass) exchanges with internal surfaces via H_tr,ms and with indoor air via H_tr,is; windows and opaque elements couple to exterior via H_tr,w and H_tr,em. Optional sky correction via H_tr,op,sky. Internal and solar gains are split into radiant/convective parts and routed to air, surfaces, and mass using σ parameters. Ventilation losses are handled via H_ve (scalar or timeseries).

Notes Implements the ISO 13790 simplified dynamic method assumptions (lumped mass and linear heat transfer). Parameter mapping follows standard notation. For even richer transient behavior and phase shifts, consider a 7R2C model (see VDI 6007).

Reference ISO 13790: Energy performance of buildings — Calculation of energy use for space heating and cooling (simplified dynamic method).

Key facts

  • Method key: 5R1C

  • Supported types:

    • hvac

Requirements

Required keys (specify in objects)

  • H_tr_is[W K-1]

  • H_tr_ms[W K-1]

  • H_tr_w[W K-1]

  • H_tr_em[W K-1]

  • C_m[J K-1]

  • weather

Optional keys (specify in objects)

  • power_heating[W]

  • power_cooling[W]

  • active_heating

  • active_cooling

  • active_gains_internal

  • active_gains_solar

  • active_ventilation

  • init_temperature[C]

  • min_temperature[C]

  • max_temperature[C]

  • deadband[K]

  • target_humidity_rel[1]

  • gains_internal_latent[W]

  • supply_temperature[C]

  • area[m2]

  • height[m]

  • area_m[m2]

  • area_tot[m2]

  • H_ve[W K-1]

  • H_tr_op_sky[W K-1]

  • sigma_surface

  • fraction_conv_internal

  • fraction_rad_surface

  • fraction_rad_mass

  • windows

  • gains_internal[W]

  • gains_solar[W]

  • ventilation[W K-1]

Required data (specify in data)

  • weather

Optional data (specify in data)

  • windows

  • gains_internal[W]

  • gains_solar[W]

  • ventilation[W K-1]

Outputs

Summary metrics

Key

Description

heating:demand[Wh]

total heating demand

heating:load_max[W]

maximum heating load

cooling:demand[Wh]

total cooling demand (sensible + latent)

cooling:load_max[W]

maximum cooling load (sensible + latent)

Timeseries columns

Column

Description

indoor_temperature[C]

indoor air temperature

heating:load[W]

heating load

cooling:load[W]

total cooling load (sensible + latent)

cooling:sensible_load[W]

sensible cooling load

cooling:latent_load[W]

latent cooling load

Public methods

  • generate

      def generate(
        self, obj: dict = None, data: dict = None, results: dict = None, ts_type: str = Types.HVAC, **kwargs
    ) -> dict:
        obj, data = self._process_kwargs(obj, data, **kwargs)
        obj, data = self._get_input_data(obj, data, ts_type)
        data = self._prepare_inputs(obj, data)
    
        temp_in, p_heat, p_cool = calculate_timeseries_5r1c(**data)
        meta = data["meta"]
        p_cool_sensible, p_cool_latent = self._apply_latent_cooling(obj, data, p_cool)
        return self._format_output(
            temp_in.round(3),
            p_heat.round().astype(int),
            p_cool_sensible.round().astype(int),
            p_cool_latent.round().astype(int),
            meta["index"],
            meta["dt_s"],
        )