supy.util.attribute_t2

Contents

Tip

  1. Need help? Please let us know in the SUEWS Community.

  2. Please report issues with the manual on GitHub Issues (or use Report Issue for This Page for page-specific feedback).

  3. Please cite SUEWS with proper information from our Zenodo page.

6.3.7.3. supy.util.attribute_t2#

supy.util.attribute_t2(df_output_A: DataFrame, df_output_B: DataFrame, df_forcing_A: DataFrame, df_forcing_B: DataFrame, hierarchical: bool = True, min_flux: float = 0.1) AttributionResult[source]#

Decompose T2 differences between two SUEWS scenarios.

The difference in 2m air temperature is attributed to: - Flux changes (Q_H, with optional breakdown into Q*, Q_E, dQ_S, Q_F) - Resistance changes (turbulent exchange efficiency) - Air property changes (rho * c_p)

Parameters:
  • df_output_A (pd.DataFrame) – SUEWS output DataFrame for scenario A (reference/baseline)

  • df_output_B (pd.DataFrame) – SUEWS output DataFrame for scenario B (modified/test)

  • df_forcing_A (pd.DataFrame) – Forcing DataFrame for scenario A. Must contain ‘Tair’, ‘RH’, ‘pres’ columns.

  • df_forcing_B (pd.DataFrame) – Forcing DataFrame for scenario B. Must contain ‘Tair’, ‘RH’, ‘pres’ columns.

  • hierarchical (bool, optional) – If True, decompose flux contribution into budget components (Q*, Q_E, dQ_S, Q_F). Default True.

  • min_flux (float, optional) – Minimum flux threshold (W/m2) for resistance calculation. Timesteps with abs(Q_H) < min_flux are flagged. Default 0.1.

Returns:

Container with contributions timeseries, summary statistics, and metadata.

Return type:

AttributionResult

Examples

Compare baseline vs. green infrastructure scenario:

>>> result = attribute_t2(df_output_baseline, df_output_green,
...                       df_forcing_A=df_forcing, df_forcing_B=df_forcing)
>>> print(result)
T2 Attribution Results
========================================
Mean delta_T2: -1.47 degC

6.3.7.3. Component Breakdown:#

flux_total : -0.89 degC (60.5%) resistance : -0.42 degC (28.6%) air_props : -0.16 degC (10.9%)

>>> result.plot(kind="bar")  # Visualise contributions