diff --git a/docs/source/db_model_comparison.rst b/docs/source/db_model_comparison.rst index 1b6d06f4..a3534a01 100644 --- a/docs/source/db_model_comparison.rst +++ b/docs/source/db_model_comparison.rst @@ -1,83 +1,89 @@ -Database Tables vs Model Sets/Parameters Comparison -====================================================== +Our discussion of sets is broken down into several logical categories to make it +easier to parse. The first group of sets pertains to Temoa's treatment of time, +as shown below. **Note:** Some entries in the "Database Table" column are +comma-separated. In those cases, the first element refers to the name of the database +table, and the second refers to specific column within the database column used to +identify a specific subset. For example, in the first table below, :code:`time_period` +is the master set and :code:`time_exist` is a subset that defines the user-defined +model time periods to define historical technology vintages that exist prior to +the model's time horizon for optimization. -Direct Mappings: Sets ---------------------- - -Time-Related Sets -^^^^^^^^^^^^^^^^^ .. csv-table:: :header: "Set", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 - ":math:`\text{P}^e`", "time_period", "time_exist", "model periods before optimization begins; partitioned by period type flag" - ":math:`\text{P}^f`", "time_period", "time_future", "model time scale of interest; the last year is not optimized; partitioned by period type flag" - ":math:`{}^*\text{P}^o`", "time_period", "time_optimize", "model time periods to optimize; (:math:`\text{P}^f - \text{max}(\text{P}^f)`); partitioned by period type flag" - ":math:`{}^*\text{V}`", "time_period", "vintage_exist, vintage_optimize, vintage_all", "possible tech vintages; (:math:`\text{P}^e \cup \text{P}^o`); same data, used for vintage tracking" - ":math:`\text{D}`", "time_of_day", "time_of_day", "time-of-day divisions (e.g. morning); direct mapping" - ":math:`\text{S}`", "season_label", "time_season_all, time_season", "seasonal divisions (e.g. winter, summer); direct mapping" - "", "time_season", "time_season", "seasons by period" - "", "time_season_sequential", "time_season_to_sequential, ordered_season_sequential", "sequential season ordering" + ":math:`\text{P}^e`", ":code:`time_period, flag = e`", ":code:`time_exist`", "model periods prior to the beginning of the optimization time horizon" + ":math:`\text{P}^f`", ":code:`time_period, flag = f`", ":code:`time_future`", "model periods within the optimization time horizon" + ":math:`{}^*\text{P}^o`", ":code:`time_period`", ":code:`time_optimize`", "model time periods to optimize, (:math:`\text{P}^f - \text{max}(\text{P}^f)`); the last time period is removed as it represents the end of the final period" + ":math:`{}^*\text{V}`", ":code:`time_period`", ":code:`vintage_exist`, :code:`vintage_optimize`, :code:`vintage_all`", "tech vintages, (:math:`\text{P}^e \cup \text{P}^o`), derived from time period set" + ":math:`\text{D}`", ":code:`time_of_day`", ":code:`time_of_day`", "intraday time divisions" + ":math:`\text{S}`", ":code:`season_label`", ":code:`time_season`", "intra-annual divisions, e.g., different seasons or different representative days" + "", ":code:`time_season`", ":code:`time_season`", "ordered tuple of seasons by time period" + "", ":code:`time_season_sequential`", ":code:`time_season_to_sequential, ordered_season_sequential`", "superimposed sequential seasons used for seasonal storage and inter-season ramping" -Geography Sets -^^^^^^^^^^^^^^ +The sets in the table below define Temoa's representation of regions. .. csv-table:: :header: "Set", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 - ":math:`\text{R}`", "region", "regions", "distinct geographical regions; direct mapping" - "", "region", "regional_indices", "derived with exchange logic" - "", "region", "regional_global_indices", "regional groups" + ":math:`\text{R}`", ":code:`region`", ":code:`regions`", "distinct geographical regions; direct mapping" + "", ":code:`region`", ":code:`regional_indices`", "set of all the possible combinations of interregional exchanges plus original region indices" + "", ":code:`region_group_check`", ":code:`regional_global_indices`", "set used to validate regional group constraints; includes individual regions, exchange pairs, and groups" -Technology Sets -^^^^^^^^^^^^^^^ +The sets below define how technologies are represented within Temoa. Because technologies +can serve many different functions across an energy system, we need to define a large +number of technology subsets. .. csv-table:: :header: "Set", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 - ":math:`{}^*\text{T}`", "technology", "tech_all", "all technologies to be modeled; (:math:`{T}^r \cup {T}^p`); all technologies" - ":math:`\text{T}^p`", "technology", "tech_production", "techs producing intermediate commodities" - ":math:`\text{T}^b`", "technology (flag='pb')", "tech_baseload", "baseload electric generators; (:math:`{T}^b \subset T`); filtered by flag" - ":math:`\text{T}^s`", "technology (flag='ps')", "tech_storage", "all storage technologies; (:math:`{T}^s \subset T`); filtered by flag" - ":math:`\text{T}^a`", "technology (annual=1)", "tech_annual", "technologies that produce constant annual output; (:math:`{T}^a \subset T`); filtered by annual flag" - ":math:`\text{T}^{res}`", "technology (reserve=1)", "tech_reserve", "electric generators contributing to the reserve margin requirement; (:math:`{T}^{res} \subset T`); filtered by reserve flag" - ":math:`\text{T}^c`", "technology (curtail=1)", "tech_curtailment", "technologies with curtailable output and no upstream cost; (:math:`{T}^c \subset (T - T^{res})`); filtered by curtail flag" - ":math:`\text{T}^f`", "technology (flex=1)", "tech_flex", "technologies producing excess commodity flows; (:math:`{T}^f \subset T`); filtered by flex flag" - ":math:`\text{T}^x`", "technology (exchange=1)", "tech_exchange", "technologies used for interregional commodity flow; (:math:`{T}^x \subset T`); filtered by exchange flag" - ":math:`\text{T}^{ret}`", "technology (retire=1)", "tech_retirement", "technologies allowed to retire before end of life; (:math:`{T}^{ret} \subset (T - T^{u})`); filtered by retire flag" - ":math:`\text{T}^u`", "technology (unlim_cap=1)", "tech_uncap", "technologies that have no bound on capacity; (:math:`{T}^u \subset (T - T^{res})`); filtered by unlim_cap flag" - ":math:`\text{T}^{ss}`", "technology (seas_stor=1)", "tech_seasonal_storage", "seasonal storage technologies; (:math:`{T}^{ss} \subset T^s`); filtered by seas_stor flag" - "", "tech_group", "tech_group_names", "named groups for use in group constraints; group names" - "", "tech_group_member", "tech_group_members", "each technology belonging to each group; group membership" - ":math:`\text{T}^e`", "existing_capacity", "tech_exist", "technologies constructed in an existing (past) vintage; (:math:`{T}^e \subset T`); derived from existing_capacity table" - -Commodity Sets -^^^^^^^^^^^^^^ + ":math:`{}^*\text{T}`", ":code:`technology`", ":code:`tech_all`", "all technologies to be modeled; (:math:`{T}^r \cup {T}^p`)" + ":math:`\text{T}^p`", ":code:`technology, flag = p`", ":code:`tech_production`", "techs producing intermediate commodities, like electricity" + ":math:`\text{T}^b`", ":code:`technology, flag = pb`", ":code:`tech_baseload`", "baseload electric generators, (:math:`{T}^b \subset T`)" + ":math:`\text{T}^s`", ":code:`technology, flag = ps`", ":code:`tech_storage`", "all storage technologies, (:math:`{T}^s \subset T`)" + ":math:`\text{T}^a`", ":code:`technology, annual = 1`", ":code:`tech_annual`", "technologies that produce constant annual output, (:math:`{T}^a \subset T`)" + ":math:`\text{T}^{res}`", ":code:`technology, reserve = 1`", ":code:`tech_reserve`", "electric generators contributing to the reserve margin requirement, (:math:`{T}^{res} \subset T`)" + ":math:`\text{T}^c`", ":code:`technology, curtail = 1`", ":code:`tech_curtailment`", "technologies with curtailable output and no upstream cost; (:math:`{T}^c \subset (T - T^{res})`)" + ":math:`\text{T}^f`", ":code:`technology, flex = 1`", ":code:`tech_flex`", "technologies producing excess commodity flows, (:math:`{T}^f \subset T`)" + ":math:`\text{T}^x`", ":code:`technology, exchange = 1`", ":code:`tech_exchange`", "technologies used for interregional commodity flows, (:math:`{T}^x \subset T`)" + ":math:`\text{T}^{ur}`", ":code:`technology, ramp_up = 1`", ":code:`tech_upramping`", "electric generators with a ramp up hourly rate limit; (:math:`{T}^{ur} \subset T`)" + ":math:`\text{T}^{dr}`", ":code:`technology, ramp_down = 1`", ":code:`tech_downramping`", "electric generators with a ramp down hourly rate limit; (:math:`{T}^{dr} \subset T`)" + ":math:`\text{T}^{ret}`", ":code:`technology, retire = 1`", ":code:`tech_retirement`", "technologies allowed to retire before end of life, (:math:`{T}^{ret} \subset (T - T^{u})`)" + ":math:`\text{T}^u`", ":code:`technology, unlim_cap = 1`", ":code:`tech_uncap`", "technologies that have no bound on capacity, (:math:`{T}^u \subset (T - T^{res})`)" + ":math:`\text{T}^{ss}`", ":code:`technology, seas_stor = 1`", ":code:`tech_seasonal_storage`", "seasonal storage technologies, (:math:`{T}^{ss} \subset T^s`)" + "", ":code:`tech_group`", ":code:`tech_group_names`", "named groups for use in group constraints" + "", ":code:`tech_group_member`", ":code:`tech_group_members`", "each technology belonging to each group" + ":math:`\text{T}^e`", ":code:`existing_capacity`", ":code:`tech_exist`", "technologies constructed in an existing (past) vintage; (:math:`{T}^e \subset T`)" + +The sets below define commodities that are consumed and produced by different energy +technologies. .. csv-table:: :header: "Set", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 - ":math:`\text{C}^d`", "commodity (flag='d')", "commodity_demand", "end-use demand commodities; filtered by flag" - ":math:`\text{C}^e`", "commodity (flag='e')", "commodity_emissions", "emission commodities (e.g. :math:`\text{CO}_\text{2}` :math:`\text{NO}_\text{x}`); filtered by flag" - ":math:`\text{C}^p`", "commodity (flag='p')", "commodity_physical", "general energy forms (e.g. electricity, coal, uranium, oil); filtered by flag" - ":math:`\text{C}^w`", "commodity (flag='w','wa','wp')", "commodity_waste", "production can be greater than consumption; can be physical, annual, or neither (not balanced); filtered by waste flags" - ":math:`\text{C}^a`", "commodity (flag='a')", "commodity_annual", "same as commodity physical but flows are only balanced over each period (:math:`\text{C}^a \subset \text{C}^p`); filtered by flag" - ":math:`\text{C}^s`", "commodity (flag='s')", "commodity_source", "input sources (not balanced by CommodityBalance_constraint); filtered by flag" - ":math:`{}^*\text{C}^c`", "", "commodity_carrier", "physical energy carriers and end-use demands (:math:`\text{C}_p \cup \text{C}_d`); union of physical, demand, and waste commodities" - ":math:`{}^*\text{C}`", "", "commodity_all", "union of all commodity sets; union of carrier and emissions commodities" + ":math:`\text{C}^d`", ":code:`commodity, flag = d`", ":code:`commodity_demand`", "end-use demand commodities, representing the final consumer demands" + ":math:`\text{C}^e`", ":code:`commodity, flag = e`", ":code:`commodity_emissions`", "emission commodities (e.g. :math:`\text{CO}_\text{2}` :math:`\text{NO}_\text{x}`); filtered by flag" + ":math:`\text{C}^p`", ":code:`commodity, flag = p`", ":code:`commodity_physical`", "physical energy commodities (e.g. electricity, coal, uranium, oil) produced and consumed across the energy system" + ":math:`\text{C}^w`", ":code:`commodity, flag = w, wa , wp`", ":code:`commodity_waste`", "production can be greater than consumption; can be physical, annual, or neither (not balanced, all wasted)" + ":math:`\text{C}^a`", ":code:`commodity, flag = a`", ":code:`commodity_annual`", "same as commodity physical but flows are only balanced over each period (:math:`\text{C}^a \subset \text{C}^p`)" + ":math:`\text{C}^l`", ":code:`commodity, flag = l`", ":code:`commodity_flex`", "(disposable) commodities produced by a flex technology (:math:`\text{C}^l \subset \text{C}^p`)" + ":math:`\text{C}^s`", ":code:`commodity, flag = s`", ":code:`commodity_source`", "primary source commodities, not balanced by :code:`CommodityBalance_constraint`" + ":math:`{}^*\text{C}^c`", "", ":code:`commodity_carrier`", "physical energy carriers and end-use demands (:math:`\text{C}_p \cup \text{C}_d`); union of physical, demand, and waste commodities" + ":math:`{}^*\text{C}`", "", ":code:`commodity_all`", "union of all commodity sets; union of carrier and emissions commodities" -Other Sets -^^^^^^^^^^ +There is one additional set that defines operators (=, <, >). While not strictly +necessary, defining these operators as a set allows modelers to express constraints +more efficiently. .. csv-table:: :header: "Set", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 - "", "operator", "operator", "constraint operators" + "", ":code:`operator`", ":code:`operator`", "constraint operators" Direct Mappings: Parameters @@ -159,35 +165,60 @@ Emission Parameters ":math:`\text{EE}_{r,t,v,e}`", "emission_embodied", "emission_embodied", "emissions associated with the creation of capacity; embodied emissions" ":math:`\text{EEOL}_{r,t,v,e}`", "emission_end_of_life", "emission_end_of_life", "emissions associated with the retirement/end of life of capacity; end-of-life emissions" -Limit & Constraint Parameters -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Absolute Limits (Capacity, Activity, Emission) +""""""""""""""""""""""""""""""""""""""""""""""" .. csv-table:: :header: "Parameter", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 ":math:`\text{LC}_{r,p,t}`", "limit_capacity", "limit_capacity", "limit tech-specific capacity by period; capacity limits" - "", "limit_new_capacity", "limit_new_capacity", "new capacity limits" + ":math:`\text{LNC}_{r,p,t}`", "limit_new_capacity", "limit_new_capacity", "Limit new capacity deployment by period" ":math:`\text{LA}_{r,p,t}`", "limit_activity", "limit_activity", "limit tech-specific activity by region and period; activity limits" ":math:`\text{LE}_{r,p,e}`", "limit_emission", "limit_emission", "limit emissions by region and period; emission limits" - ":math:`\text{LR}_{r,t}`", "limit_resource", "limit_resource", "limit resource production by tech across time periods; resource extraction limits" - "", "limit_growth_capacity", "limit_growth_capacity", "capacity growth rate" - "", "limit_degrowth_capacity", "limit_degrowth_capacity", "capacity degrowth rate" - "", "limit_growth_new_capacity", "limit_growth_new_capacity", "new capacity growth rate" - "", "limit_degrowth_new_capacity", "limit_degrowth_new_capacity", "new capacity degrowth rate" - "", "limit_growth_new_capacity_delta", "limit_growth_new_capacity_delta", "new capacity growth delta" - "", "limit_degrowth_new_capacity_delta", "limit_degrowth_new_capacity_delta", "new capacity degrowth delta" - "", "limit_annual_capacity_factor", "limit_annual_capacity_factor", "annual capacity factor limits" - "", "limit_seasonal_capacity_factor", "limit_seasonal_capacity_factor", "seasonal capacity factor limits" - "", "limit_capacity_share", "limit_capacity_share", "capacity share limits" - "", "limit_activity_share", "limit_activity_share", "activity share limits" - "", "limit_new_capacity_share", "limit_new_capacity_share", "new capacity share limits" + ":math:`\text{LR}_{r,t}`", "limit_resource", "limit_resource", "Cumulative activity limit across time periods (not supported in myopic)" + +Growth & Degrowth Limits +"""""""""""""""""""""""" + +.. csv-table:: + :header: "Parameter", "Database Table", "Model Element", "Notes" + :widths: 15, 20, 25, 40 + + ":math:`\text{LGC}_{r,t}`", "limit_growth_capacity", "limit_growth_capacity", "capacity growth rate limits" + ":math:`\text{LDGC}_{r,t}`", "limit_degrowth_capacity", "limit_degrowth_capacity", "capacity degrowth rate limits" + ":math:`\text{LGNC}_{r,t}`", "limit_growth_new_capacity", "limit_growth_new_capacity", "new capacity growth rate limits" + ":math:`\text{LDGNC}_{r,t}`", "limit_degrowth_new_capacity", "limit_degrowth_new_capacity", "new capacity degrowth rate limits" + ":math:`\mathrm{LGNC}_{\Delta,r,t}`", "limit_growth_new_capacity_delta", "limit_growth_new_capacity_delta", "new capacity growth acceleration limits" + ":math:`\mathrm{LDGNC}_{\Delta,r,t}`", "limit_degrowth_new_capacity_delta", "limit_degrowth_new_capacity_delta", "new capacity degrowth deceleration limits" + +Operational & Split Limits +"""""""""""""""""""""""""" + +.. csv-table:: + :header: "Parameter", "Database Table", "Model Element", "Notes" + :widths: 15, 20, 25, 40 + + ":math:`\text{LACF}_{r,p,t,o}`", "limit_annual_capacity_factor", "limit_annual_capacity_factor", "annual capacity factor limits" + ":math:`\text{LSCF}_{r,p,s,t}`", "limit_seasonal_capacity_factor", "limit_seasonal_capacity_factor", "seasonal capacity factor limits" ":math:`\text{TIS}_{r,i,t}`", "limit_tech_input_split", "limit_tech_input_split", "technology input fuel ratio at time slice level; tech input split constraints" ":math:`\text{TISA}_{r,i,t}`", "limit_tech_input_split_annual", "limit_tech_input_split_annual", "average annual technology input fuel ratio; annual tech input splits" ":math:`\text{TOS}_{r,t,o}`", "limit_tech_output_split", "limit_tech_output_split", "technology output fuel ratio at time slice level; tech output split constraints" - ":math:`\text{TISA}_{r,i,t}`", "limit_tech_output_split_annual", "limit_tech_output_split_annual", "average annual technology output fuel ratio; annual tech output splits" + ":math:`\text{TOSA}_{r,t,o}`", "limit_tech_output_split_annual", "limit_tech_output_split_annual", "average annual technology output fuel ratio; annual tech output splits" ":math:`\text{LSF}_{r,p,s,d,t,v}`", "limit_storage_level_fraction", "limit_storage_fraction", "limit storage level in any time slice; storage level fraction limits" +Share Limits +"""""""""""" + +.. csv-table:: + :header: "Parameter", "Database Table", "Model Element", "Notes" + :widths: 15, 20, 25, 40 + + ":math:`\text{LCS}_{r,p,g_1,g_2}`", "limit_capacity_share", "limit_capacity_share", "capacity share limits between technology groups" + ":math:`\text{LAS}_{r,p,g_1,g_2}`", "limit_activity_share", "limit_activity_share", "activity share limits between technology groups" + ":math:`\text{LNCS}_{r,p,g_1,g_2}`", "limit_new_capacity_share", "limit_new_capacity_share", "new capacity share limits" + Storage Parameters ^^^^^^^^^^^^^^^^^^ @@ -224,7 +255,7 @@ Policy Parameters :header: "Parameter", "Database Table", "Model Element", "Notes" :widths: 15, 20, 25, 40 - "", "rps_requirement", "renewable_portfolio_standard", "RPS requirements" + "", "rps_requirement", "renewable_portfolio_standard", "**[Deprecated]** RPS requirements; use limit_activity_share instead" ":math:`\text{LIT}_{r,t,e,t}`", "linked_tech", "linked_techs", "dummy techs used to convert CO2 emissions to physical commodity; linked technology specs" Construction & End-of-Life Parameters diff --git a/docs/source/mathematical_formulation.rst b/docs/source/mathematical_formulation.rst index 76c8bce9..e4e7b9c7 100644 --- a/docs/source/mathematical_formulation.rst +++ b/docs/source/mathematical_formulation.rst @@ -122,24 +122,13 @@ Conventions (:math:`\{t,v\}`). For example, solar PV (technology) installed in 2030 (vintage). - - * Mathematical notation: - - * We use the symbol :math:`\mathbb{I}` to represent the unit interval ([0, - 1]). - - * We use the symbol :math:`\mathbb{Z}` to represent "the set of all - integers." - - * We use the symbol :math:`\mathbb{N}` to represent natural numbers (i.e., - integers greater than zero: 1, 2, 3, :math:`\ldots`). - - * We use the symbol :math:`\mathbb{R}` to denote the set of real numbers, and - :math:`\mathbb{R}^+_0` to denote non-negative real numbers. - - Sets ---- +In a mathematical model like Temoa, sets are used to index parameters and +variables. Below we define the sets used in Temoa, which are grouped into logical +components. In each case, we provide the mathematical notation used in the +mathematical formulation of the model, as well as the associated names in the +Python code and database schema. .. include:: db_model_comparison.rst @@ -377,6 +366,7 @@ Parameters ":math:`\text{CV}_{r,p,t,v}`","cost_variable",":math:`\mathbb{R}`","Variable operations \& maintenance cost" ":math:`\text{CON}_{r,i,t,v}`","construction_input",":math:`\mathbb{R}`","Commodities consumed by creation of process capacity" ":math:`\text{DEM}_{r,p,c}`","demand",":math:`\mathbb{R}^+_0`","End-use demands, by period" + ":math:`\text{DPP}`","days_per_period",":math:`\mathbb{R}^+_0`","Days per period" ":math:`\text{DDD}_{p,s,d}`","demand_default_distribution",":math:`\mathbb{I}`","Default demand distribution (currently not supported)" ":math:`\text{DSD}_{r,p,s,d,c}`","demand_specific_distribution",":math:`\mathbb{I}`","Demand-specific distribution" ":math:`\text{EFF}_{r,i,t,v,o}`","efficiency",":math:`\mathbb{R}^+_0`","Tech- and commodity-specific efficiency" @@ -395,7 +385,19 @@ Parameters ":math:`\text{LE}_{r,p,e}`","limit_emission",":math:`\mathbb{R}^+_0`","Limit emissions by region and period" ":math:`\text{LA}_{r,p,t}`","limit_activity",":math:`\mathbb{R}^+_0`","Limit tech-specific activity by region and period" ":math:`\text{LC}_{r,p,t}`","limit_capacity",":math:`\mathbb{R}^+_0`","Limit tech-specific capacity by period" - ":math:`\text{LR}_{r,t}`","limit_resource",":math:`\mathbb{R}^+_0`","Limit resource production by tech across time periods" + ":math:`\text{LNC}_{r,p,t}`","limit_new_capacity",":math:`\mathbb{R}^+_0`","Limit new capacity deployment by period" + ":math:`\text{LR}_{r,t}`","limit_resource",":math:`\mathbb{R}^+_0`","Cumulative activity limit across time periods (not supported in myopic)" + ":math:`\text{LGC}_{r,t}`","limit_growth_capacity",":math:`\mathbb{I}`","Capacity growth rate limits" + ":math:`\text{LDGC}_{r,t}`","limit_degrowth_capacity",":math:`\mathbb{I}`","Capacity degrowth rate limits" + ":math:`\text{LGNC}_{r,t}`","limit_growth_new_capacity",":math:`\mathbb{I}`","New capacity growth rate limits" + ":math:`\text{LDGNC}_{r,t}`","limit_degrowth_new_capacity",":math:`\mathbb{I}`","New capacity degrowth rate limits" + ":math:`\text{LGNC}_{\Delta,r,t}`","limit_growth_new_capacity_delta",":math:`\mathbb{I}`","New capacity growth acceleration limits" + ":math:`\text{LDGNC}_{\Delta,r,t}`","limit_degrowth_new_capacity_delta",":math:`\mathbb{I}`","New capacity degrowth deceleration limits" + ":math:`\text{LACF}_{r,p,t,o}`","limit_annual_capacity_factor",":math:`\mathbb{I}`","Annual capacity factor limits" + ":math:`\text{LSCF}_{r,p,s,t}`","limit_seasonal_capacity_factor",":math:`\mathbb{I}`","Seasonal capacity factor limits" + ":math:`\text{LCS}_{r,p,g_1,g_2}`","limit_capacity_share",":math:`\mathbb{I}`","Capacity share limits between technology groups" + ":math:`\text{LAS}_{r,p,g_1,g_2}`","limit_activity_share",":math:`\mathbb{I}`","Activity share limits between technology groups" + ":math:`\text{LNCS}_{r,p,g_1,g_2}`","limit_new_capacity_share",":math:`\mathbb{I}`","New capacity share limits" ":math:`\text{LSF}_{r,p,s,d,t,v}`","limit_storage_level_fraction",":math:`\mathbb{R}^+_0`","Limit storage level in any time slice" ":math:`\text{MDY}`","myopic_discounting_year",":math:`\mathbb{N}`","Objective function NPV year when running myopically" ":math:`\text{PRM}_{r}`","planning_reserve_margin",":math:`\mathbb{I}`","Margin used to ensure sufficient generating capacity" @@ -403,12 +405,13 @@ Parameters ":math:`\text{RUH}_{r,t}`","ramp_up_hourly",":math:`\mathbb{R}`","Hourly rate at which generation techs can ramp output up" ":math:`\text{SD}_{r,t}`","storage_duration",":math:`\mathbb{N}`","Storage duration per technology, specified in hours" ":math:`\text{SEG}_{s,d}`","segment_fraction",":math:`\mathbb{I}`","Fraction of year represented by each (s, d) tuple" + ":math:`\text{SFPS}_{p,s}`","segment_fraction_per_season",":math:`\mathbb{I}`","computed from segment fractions" ":math:`\text{TIS}_{r,i,t}`","tech_input_split",":math:`\mathbb{I}`","Technology input fuel ratio at time slice level" ":math:`\text{TISA}_{r,i,t}`","tech_input_split_annual",":math:`\mathbb{I}`","Average annual technology input fuel ratio" ":math:`\text{TOS}_{r,t,o}`","tech_output_split",":math:`\mathbb{I}`","Technology output fuel ratio at time slice level" - ":math:`\text{TISA}_{r,i,t}`","tech_output_split_annual",":math:`\mathbb{I}`","Average annual technology output fuel ratio" + ":math:`\text{TOSA}_{r,t,o}`","tech_output_split_annual",":math:`\mathbb{I}`","Average annual technology output fuel ratio" ":math:`{}^*\text{LA}_{t,v}`","loan_annualize",":math:`\mathbb{R}^+_0`","Loan amortization by tech and vintage; based on :math:`DR_t`" - ":math:`{}^*\text{MPL}_{p,t,v}`","model_process_life",":math:`\mathbb{N}`","Smaller of remaining model horizon or process tech life" + ":math:`{}^*\text{MPL}_{p,t,v}`","model_process_life",":math:`\mathbb{N}`","**[Deprecated]** Smaller of remaining model horizon or process tech life" ":math:`{}^*\text{PLF}_{r,p,t,v}`","process_life_frac",":math:`\mathbb{I}`","Fraction of available process capacity by region and period " ":math:`{}^*\text{LEN}_p`","period_length",":math:`\mathbb{N}`","Number of years in period :math:`p`"