ftt_core.ftt_emissions_regulation module

ftt_core.ftt_emissions_regulation module#

Centralized emissions regulation functions for FTT sectors.

Single entry point: implement_emissions_regulation. Mirrors the flow of ftt_mandate.py, sectors call it each sub-timestep of the annual loop with their current sales/capacity arrays plus a per-region info array, and this module handles segment/class grouping, eligibility, per-region timelines, and baseline caching. The target depends only on the integer year and the cached baseline, so repeated within-year calls share the

same target and are deterministic.

Regulation info (per region):

[start_year, end_year, max_reduction] - max_reduction = 1.0 → target reaches 0 at end_year - max_reduction = 0.5 → target reaches 50% of baseline at end_year - max_reduction <= 0 → regulation off for that region

Behaviour:
  • Baseline is the fleet-average CO2 at the region’s start_year, computed live and cached across years in this module.

  • Target declines linearly from baseline to baseline * (1 - max_reduction) over [start_year, end_year]. After end_year the target stays at that floor (regulation persists, does not expire).

  • Sales shift from high-emitting techs to eligible low-emitting techs proportionally to their existing share of the eligible pool.

Functions:

get_fleet_emissions: Weighted average fleet CO2 implement_emissions_regulation: Main entry point reset_baseline_cache: Clear cached baselines (for tests / fresh runs)

@author: Amir Akther

ftt_core.ftt_emissions_regulation.get_fleet_emissions(sales, emissions_intensity)#

Weighted average fleet emissions. Returns 0 when total sales are 0.

ftt_core.ftt_emissions_regulation.implement_emissions_regulation(cap, cum_sales_in, sales_in, year, emissions_intensity, regulation_info, sector)#

Apply declining fleet-average CO2 regulation to a sector.

Parameters:
  • cap (ndarray) – Full capacity array (regions x techs x 1).

  • cum_sales_in (ndarray) – Full cumulative / current-period sales (regions x techs x 1).

  • sales_in (ndarray) – Full cumulative / current-period sales (regions x techs x 1).

  • year (int) – Simulation year.

  • emissions_intensity (ndarray) – CO2 per tech (regions x techs) in gCO2/km.

  • regulation_info (ndarray) – Per-region policy info, shape (regions, 3, 1) or (regions, 3): columns [start_year, end_year, max_reduction]. max_reduction <= 0 disables regulation for that region.

  • sector (str) – ‘transport’ or ‘freight’. Selects the internal grouping and eligibility configuration.

Return type:

(cum_sales_after, sales_after, cap_after)

ftt_core.ftt_emissions_regulation.reset_baseline_cache()#

Clear cached baselines. Call between independent simulation runs.