ftt_core.ftt_mandate module#

Centralized mandate functions for all FTT sectors.

This module provides core mandate functionality used by Transport, Heat, and Freight. Sectors call these functions with their specific green technology indices.

Functions:

get_mandate_share: Calculate year-based mandate share (linear progression) get_new_sales_under_mandate: Apply mandate to sales distribution implement_seeding: Small boost for low-adoption regions (first 5 years simulation) implement_mandate: Full mandate with flexible end year

@author: Amir Akther and Femke Nijsse

ftt_core.ftt_mandate.get_mandate_share(year, mandate_start_year, mandate_end_year, max_mandate)#

Calculate the mandate share based on the year.

Linear increase from 0 to 1 between start and end years. Returns array of 0s before start year and after end year.

Parameters:
  • year (int) – Current simulation year

  • mandate_start_year (int) – Year when mandate begins (e.g., 2025)

  • mandate_end_year (int) – Year when mandate reaches 100% (e.g., 2036)

  • max_mandate – The mandate at the last year (usually 1, but lower for kick-start)

Returns:

Mandate share between 0.0 and 1.0

Return type:

float

ftt_core.ftt_mandate.get_new_sales_under_mandate(sales_in, mandate_shares, green_indices)#

Apply mandate to sales distribution.

Adjusts sales so that green technologies reach the target mandate share. Non-green sales are reduced proportionally to maintain total sales.

Parameters:
  • sales_in (ndarray) – Sales array (regions x techs x 1)

  • mandate_shares (float) – Target share for green technologies (0.0 to 1.0)

  • green_indices (list) – Indices of green technologies

  • regions (list, optional) – Regions to apply mandate to. If None, applies to all.

Returns:

Adjusted sales array

Return type:

ndarray

ftt_core.ftt_mandate.implement_mandate(cap, cum_sales_in, sales_in, year, green_indices, mandate_info)#

Implement full green technology mandate.

Linearly increases required green share from 0% to 100% over the mandate period.

Parameters:
  • cap (ndarray) – Capacity by region and technology

  • cum_sales_in (ndarray) – Cumulative sales

  • sales_in (ndarray) – Current period sales

  • year (int) – Current simulation year

  • green_indices (list) – Indices of green technologies for this sector

  • mandate_info – Contains start year, end year and share at end year per region

Returns:

(cum_sales_after, sales_after, cap_after)

Return type:

tuple

ftt_core.ftt_mandate.implement_seeding(cap, cum_sales_in, sales_in, year, green_indices, histend, seeding_years=5, seed_fraction=0.15)#

Seed green technologies in low-adoption regions.

Applies a small mandate (fraction of global green share) to bootstrap green technology adoption in regions with little or no adoption. Runs from start_year to end_year.

Parameters:
  • cap (ndarray) – Capacity by region and technology

  • cum_sales_in (ndarray) – Cumulative sales

  • sales_in (ndarray) – Current period sales

  • year (int) – Current simulation year

  • histend (int) – Last historical year

  • seeding_years (int, optional) – Number of years seeding applies

  • green_indices (list) – Indices of green technologies for this sector

  • seed_fraction (float, optional) – Fraction of global green share to use as target (default 0.15) #todo, make sense

Returns:

(cum_sales_after, sales_after, cap_after)

Return type:

tuple