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.