2  Model

Pdf version of the model mathematical framework can be found here.

2.1 Sets

The model sets
Name Alias Description
comm \(c,cp,ce,cn\) commodity
region \(r,rp,re,rn\) region
year \(y,yp,ye,yn\) year
slice \(s,sp,se,sn\) time slices
sup \(s1,s1p,s1e,s1n\) supply
dem \(d,dp,de,dn\) demand
tech \(t,tp,te,tn\) technology
stg \(st1,st1p,st1e,st1n\) storage
trade \(t1,t1p,t1e,t1n\) trade between regions
expp \(e,ep,ee,en\) export to the rest of the world (ROW)
imp \(i,ip,ie,in\) import from the ROW
group \(g,gp,ge,gn\) group of input or output commodities in technology
weather \(wth1,wth1p,wth1e,wth1n\) weather

2.2 Parameters

The model parameters
Name Alias Description
pYearFraction(year) \(pYearFraction_{y}\) fraction of sum of sampled slices in year – experimental
pTechOlife(tech, region) \(pTechOlife_{t,r}\) Operational life of technologies
pTechCinp2ginp(tech, comm, region, year, slice) \(pTechCinp2ginp_{t,c,r,y,s}\) Commodity input to group input
pTechGinp2use(tech, group, region, year, slice) \(pTechGinp2use_{t,g,r,y,s}\) Group input into use
pTechCinp2use(tech, comm, region, year, slice) \(pTechCinp2use_{t,c,r,y,s}\) Commodity input to use
pTechUse2cact(tech, comm, region, year, slice) \(pTechUse2cact_{t,c,r,y,s}\) Use to commodity activity
pTechCact2cout(tech, comm, region, year, slice) \(pTechCact2cout_{t,c,r,y,s}\) Commodity activity to commodity output
pTechEmisComm(tech, comm) \(pTechEmisComm_{t,c}\) Combustion factor for input commodity (from 0 to 1)
pTechAct2AInp(tech, comm, region, year, slice) \(pTechAct2AInp_{t,c,r,y,s}\) Activity to aux-commodity input
pTechCap2AInp(tech, comm, region, year, slice) \(pTechCap2AInp_{t,c,r,y,s}\) Capacity to aux-commodity input
pTechNCap2AInp(tech, comm, region, year, slice) \(pTechNCap2AInp_{t,c,r,y,s}\) New capacity to aux-commodity input
pTechCinp2AInp(tech, comm, comm, region, year, slice) \(pTechCinp2AInp_{t,c,c,r,y,s}\) Commodity input to aux-commodity input
pTechCout2AInp(tech, comm, comm, region, year, slice) \(pTechCout2AInp_{t,c,c,r,y,s}\) Commodity output to aux-commodity input
pTechAct2AOut(tech, comm, region, year, slice) \(pTechAct2AOut_{t,c,r,y,s}\) Activity to aux-commodity output
pTechCap2AOut(tech, comm, region, year, slice) \(pTechCap2AOut_{t,c,r,y,s}\) Capacity to aux-commodity output
pTechNCap2AOut(tech, comm, region, year, slice) \(pTechNCap2AOut_{t,c,r,y,s}\) New capacity to aux-commodity output
pTechCinp2AOut(tech, comm, comm, region, year, slice) \(pTechCinp2AOut_{t,c,c,r,y,s}\) Commodity to aux-commodity output
pTechCout2AOut(tech, comm, comm, region, year, slice) \(pTechCout2AOut_{t,c,c,r,y,s}\) Commodity-output to aux-commodity input
pTechFixom(tech, region, year) \(pTechFixom_{t,r,y}\) Fixed Operating and maintenance (O\
pTechVarom(tech, region, year, slice) \(pTechVarom_{t,r,y,s}\) Variable O\
pTechInvcost(tech, region, year) \(pTechInvcost_{t,r,y}\) Investment costs (per unit of capacity)
pTechEac(tech, region, year) \(pTechEac_{t,r,y}\) Equivalent annual (investment) cost
pTechRetCost(tech, region, year) \(pTechRetCost_{t,r,y}\) Early retirement costs
pTechShareLo(tech, comm, region, year, slice) \(pTechShareLo_{t,c,r,y,s}\) Lower bound of the share of the commodity in total group input or output
pTechShareUp(tech, comm, region, year, slice) \(pTechShareUp_{t,c,r,y,s}\) Upper bound of the share of the commodity in total group input or output
pTechAfLo(tech, region, year, slice) \(pTechAfLo_{t,r,y,s}\) Lower bound on availability factor by slices
pTechAfUp(tech, region, year, slice) \(pTechAfUp_{t,r,y,s}\) Upper bound on availability factor by slices
pTechRampUp(tech, region, year, slice) \(pTechRampUp_{t,r,y,s}\) Ramp Up on availability factor
pTechRampDown(tech, region, year, slice) \(pTechRampDown_{t,r,y,s}\) Ramp Down on availability
pTechAfsLo(tech, region, year, slice) \(pTechAfsLo_{t,r,y,s}\) Lower bound on availability factor by groups of slices
pTechAfsUp(tech, region, year, slice) \(pTechAfsUp_{t,r,y,s}\) Upper bound on availability factor by groups of slices
pTechAfcLo(tech, comm, region, year, slice) \(pTechAfcLo_{t,c,r,y,s}\) Lower bound for commodity output
pTechAfcUp(tech, comm, region, year, slice) \(pTechAfcUp_{t,c,r,y,s}\) Upper bound for commodity output
pTechStock(tech, region, year) \(pTechStock_{t,r,y}\) Technology capacity stock
pTechCapUp(tech, region, year) \(pTechCapUp_{t,r,y}\) Upper bound on technology capacity
pTechCapLo(tech, region, year) \(pTechCapLo_{t,r,y}\) Lower bound on technology capacity
pTechNewCapUp(tech, region, year) \(pTechNewCapUp_{t,r,y}\) Upper bound on new technology capacity
pTechNewCapLo(tech, region, year) \(pTechNewCapLo_{t,r,y}\) Lower bound on new technology capacity
pTechRetUp(tech, region, year) \(pTechRetUp_{t,r,y}\) Upper bound on early retirement
pTechRetLo(tech, region, year) \(pTechRetLo_{t,r,y}\) Lower bound on early retirement
pTechCap2act(tech) \(pTechCap2act_{t}\) Technology capacity units to activity units conversion factor
pTechCvarom(tech, comm, region, year, slice) \(pTechCvarom_{t,c,r,y,s}\) Commodity-specific variable costs (per unit of commodity input or output)
pTechAvarom(tech, comm, region, year, slice) \(pTechAvarom_{t,c,r,y,s}\) Auxilary Commodity-specific variable costs (per unit of commodity input or output)
pDiscount(region, year) \(pDiscount_{r,y}\) Discount rate (can be region and year specific)
pDiscountFactor(region, year) \(pDiscountFactor_{r,y}\) Discount factor (cumulative)
pDiscountFactorMileStone(region, year) \(pDiscountFactorMileStone_{r,y}\) Discount factor (cumulative) sum for MileStone
pSupCost(sup, comm, region, year, slice) \(pSupCost_{s1,c,r,y,s}\) Costs of supply (price per unit)
pSupAvaUp(sup, comm, region, year, slice) \(pSupAvaUp_{s1,c,r,y,s}\) Upper bound for supply
pSupAvaLo(sup, comm, region, year, slice) \(pSupAvaLo_{s1,c,r,y,s}\) Lower bound for supply
pSupReserveUp(sup, comm, region) \(pSupReserveUp_{s1,c,r}\) Upper constraint on cumulative supply
pSupReserveLo(sup, comm, region) \(pSupReserveLo_{s1,c,r}\) Lower constraint on cumulative supply
pDemand(dem, comm, region, year, slice) \(pDemand_{d,c,r,y,s}\) Exogenous demand
pEmissionFactor(comm, comm) \(pEmissionFactor_{c,c}\) Emission factor
pDummyImportCost(comm, region, year, slice) \(pDummyImportCost_{c,r,y,s}\) Dummy costs parameters (for debugging)
pDummyExportCost(comm, region, year, slice) \(pDummyExportCost_{c,r,y,s}\) Dummy costs parameters (for debuging)
pTaxCostInp(comm, region, year, slice) \(pTaxCostInp_{c,r,y,s}\) Commodity taxes for input
pTaxCostOut(comm, region, year, slice) \(pTaxCostOut_{c,r,y,s}\) Commodity taxes for output
pTaxCostBal(comm, region, year, slice) \(pTaxCostBal_{c,r,y,s}\) Commodity taxes for balance
pSubCostInp(comm, region, year, slice) \(pSubCostInp_{c,r,y,s}\) Commodity subsidies for input
pSubCostOut(comm, region, year, slice) \(pSubCostOut_{c,r,y,s}\) Commodity subsidies for output
pSubCostBal(comm, region, year, slice) \(pSubCostBal_{c,r,y,s}\) Commodity subsidies for balance
pAggregateFactor(comm, comm) \(pAggregateFactor_{c,c}\) Aggregation factor of commodities
pPeriodLen(year) \(pPeriodLen_{y}\) Length of milestone-year-period
pSliceShare(slice) \(pSliceShare_{s}\) Slice share in year
pSliceWeight(slice) \(pSliceWeight_{s}\) Slice weight
ordYear(year) \(ordYear_{y}\) ord year (used in GLPK-MathProg)
cardYear(year) \(cardYear_{y}\) card year (used in GLPK-MathProg)
pStorageInpEff(stg, comm, region, year, slice) \(pStorageInpEff_{st1,c,r,y,s}\) Storage input efficiency
pStorageOutEff(stg, comm, region, year, slice) \(pStorageOutEff_{st1,c,r,y,s}\) Storage output efficiency
pStorageStgEff(stg, comm, region, year, slice) \(pStorageStgEff_{st1,c,r,y,s}\) Storage time-efficiency (annual)
pStorageStock(stg, region, year) \(pStorageStock_{st1,r,y}\) Storage capacity stock
pStorageCapUp(stg, region, year) \(pStorageCapUp_{st1,r,y}\) Upper bound on storage capacity
pStorageCapLo(stg, region, year) \(pStorageCapLo_{st1,r,y}\) Lower bound on storage capacity
pStorageNewCapUp(stg, region, year) \(pStorageNewCapUp_{st1,r,y}\) Upper bound on new storage capacity
pStorageNewCapLo(stg, region, year) \(pStorageNewCapLo_{st1,r,y}\) Lower bound on new storage capacity
pStorageRetUp(stg, region, year) \(pStorageRetUp_{st1,r,y}\) Upper bound on early retirement
pStorageRetLo(stg, region, year) \(pStorageRetLo_{st1,r,y}\) Lower bound on early retirement
pStorageOlife(stg, region) \(pStorageOlife_{st1,r}\) Storage operational life
pStorageCostStore(stg, region, year, slice) \(pStorageCostStore_{st1,r,y,s}\) Storing costs per stored amount (annual)
pStorageCostInp(stg, region, year, slice) \(pStorageCostInp_{st1,r,y,s}\) Storage input costs
pStorageCostOut(stg, region, year, slice) \(pStorageCostOut_{st1,r,y,s}\) Storage output costs
pStorageFixom(stg, region, year) \(pStorageFixom_{st1,r,y}\) Storage fixed O\
pStorageInvcost(stg, region, year) \(pStorageInvcost_{st1,r,y}\) Storage investment costs
pStorageEac(stg, region, year) \(pStorageEac_{st1,r,y}\) Storage equivalent annual costs
pStorageRetCost(stg, region, year) \(pStorageRetCost_{st1,r,y}\) Storage early retirement costs
pStorageCap2stg(stg) \(pStorageCap2stg_{st1}\) Storage (dis)charging capacity to accumulating capacity (to be renamed to duration)
pStorageAfLo(stg, region, year, slice) \(pStorageAfLo_{st1,r,y,s}\) Storage availability factor lower bound (minimum charging level)
pStorageAfUp(stg, region, year, slice) \(pStorageAfUp_{st1,r,y,s}\) Storage availability factor upper bound (maximum charging level)
pStorageCinpUp(stg, comm, region, year, slice) \(pStorageCinpUp_{st1,c,r,y,s}\) Storage input upper bound
pStorageCinpLo(stg, comm, region, year, slice) \(pStorageCinpLo_{st1,c,r,y,s}\) Storage input lower bound
pStorageCoutUp(stg, comm, region, year, slice) \(pStorageCoutUp_{st1,c,r,y,s}\) Storage output upper bound
pStorageCoutLo(stg, comm, region, year, slice) \(pStorageCoutLo_{st1,c,r,y,s}\) Storage output lower bound
pStorageNCap2Stg(stg, comm, region, year, slice) \(pStorageNCap2Stg_{st1,c,r,y,s}\) Initial storage charge level for new investment
pStorageCharge(stg, comm, region, year, slice) \(pStorageCharge_{st1,c,r,y,s}\) Initial storage charge level for stock
pStorageStg2AInp(stg, comm, region, year, slice) \(pStorageStg2AInp_{st1,c,r,y,s}\) Storage level to auxilary input
pStorageStg2AOut(stg, comm, region, year, slice) \(pStorageStg2AOut_{st1,c,r,y,s}\) Storage level output
pStorageCinp2AInp(stg, comm, region, year, slice) \(pStorageCinp2AInp_{st1,c,r,y,s}\) Storage input to auxilary input
pStorageCinp2AOut(stg, comm, region, year, slice) \(pStorageCinp2AOut_{st1,c,r,y,s}\) Storage input to auxilary output
pStorageCout2AInp(stg, comm, region, year, slice) \(pStorageCout2AInp_{st1,c,r,y,s}\) Storage output to auxilary input
pStorageCout2AOut(stg, comm, region, year, slice) \(pStorageCout2AOut_{st1,c,r,y,s}\) Storage output to auxilary output
pStorageCap2AInp(stg, comm, region, year, slice) \(pStorageCap2AInp_{st1,c,r,y,s}\) Storage capacity to auxilary input
pStorageCap2AOut(stg, comm, region, year, slice) \(pStorageCap2AOut_{st1,c,r,y,s}\) Storage capacity to auxilary output
pStorageNCap2AInp(stg, comm, region, year, slice) \(pStorageNCap2AInp_{st1,c,r,y,s}\) Storage new capacity to auxilary input
pStorageNCap2AOut(stg, comm, region, year, slice) \(pStorageNCap2AOut_{st1,c,r,y,s}\) Storage new capacity to auxilary output
pTradeIrEff(trade, region, region, year, slice) \(pTradeIrEff_{t1,r,r,y,s}\) Inter-regional trade efficiency
pTradeIrUp(trade, region, region, year, slice) \(pTradeIrUp_{t1,r,r,y,s}\) Upper bound on trade flow
pTradeIrLo(trade, region, region, year, slice) \(pTradeIrLo_{t1,r,r,y,s}\) Lower bound on trade flow
pTradeIrCost(trade, region, region, year, slice) \(pTradeIrCost_{t1,r,r,y,s}\) Costs of trade flow
pTradeIrMarkup(trade, region, region, year, slice) \(pTradeIrMarkup_{t1,r,r,y,s}\) Markup of trade flow
pTradeIrCsrc2Ainp(trade, comm, region, region, year, slice) \(pTradeIrCsrc2Ainp_{t1,c,r,r,y,s}\) Auxiliary input commodity in source region
pTradeIrCsrc2Aout(trade, comm, region, region, year, slice) \(pTradeIrCsrc2Aout_{t1,c,r,r,y,s}\) Auxiliary output commodity in source region
pTradeIrCdst2Ainp(trade, comm, region, region, year, slice) \(pTradeIrCdst2Ainp_{t1,c,r,r,y,s}\) Auxiliary input commodity in destination region
pTradeIrCdst2Aout(trade, comm, region, region, year, slice) \(pTradeIrCdst2Aout_{t1,c,r,r,y,s}\) Auxiliary output commodity in destination region
pExportRowRes(expp) \(pExportRowRes_{e}\) Upper bound on cumulative export to ROW
pExportRowUp(expp, region, year, slice) \(pExportRowUp_{e,r,y,s}\) Upper bound on export to ROW
pExportRowLo(expp, region, year, slice) \(pExportRowLo_{e,r,y,s}\) Lower bound on export to ROW
pExportRowPrice(expp, region, year, slice) \(pExportRowPrice_{e,r,y,s}\) Export prices to ROW
pImportRowRes(imp) \(pImportRowRes_{i}\) Upper bound on cumulative import to ROW
pImportRowUp(imp, region, year, slice) \(pImportRowUp_{i,r,y,s}\) Upper bount on import from ROW
pImportRowLo(imp, region, year, slice) \(pImportRowLo_{i,r,y,s}\) Lower bound on import from ROW
pImportRowPrice(imp, region, year, slice) \(pImportRowPrice_{i,r,y,s}\) Import prices from ROW
pTradeStock(trade, year) \(pTradeStock_{t1,y}\) Existing capacity
pTradeCapUp(trade, year) \(pTradeCapUp_{t1,y}\) Upper bound on trade capacity
pTradeCapLo(trade, year) \(pTradeCapLo_{t1,y}\) Lower bound on trade capacity
pTradeNewCapUp(trade, year) \(pTradeNewCapUp_{t1,y}\) Upper bound on new trade capacity
pTradeNewCapLo(trade, year) \(pTradeNewCapLo_{t1,y}\) Lower bound on new trade capacity
pTradeRetUp(trade, year) \(pTradeRetUp_{t1,y}\) Upper bound on early retirement
pTradeRetLo(trade, year) \(pTradeRetLo_{t1,y}\) Lower bound on early retirement
pTradeOlife(trade) \(pTradeOlife_{t1}\) Operational life
pTradeInvcost(trade, region, year) \(pTradeInvcost_{t1,r,y}\) Overnight investment costs
pTradeEac(trade, region, year) \(pTradeEac_{t1,r,y}\) Equivalent annual costs
pTradeRetCost(trade, region, year) \(pTradeRetCost_{t1,r,y}\) Early retirement costs
pTradeFixom(trade, year) \(pTradeFixom_{t1,y}\) Fixed O\
pTradeVarom(trade, region, region, year, slice) \(pTradeVarom_{t1,r,r,y,s}\) Variable O\
pTradeCap2Act(trade) \(pTradeCap2Act_{t1}\) Capacity to activity factor
pWeather(weather, region, year, slice) \(pWeather_{wth1,r,y,s}\) weather factors
pSupWeatherUp(weather, sup) \(pSupWeatherUp_{wth1,s1}\) weather factor for supply upper value (ava.up)
pSupWeatherLo(weather, sup) \(pSupWeatherLo_{wth1,s1}\) weather factor for supply lower value (ava.lo)
pTechWeatherAfLo(weather, tech) \(pTechWeatherAfLo_{wth1,t}\) weather factor for technology availability lower value (af.lo)
pTechWeatherAfUp(weather, tech) \(pTechWeatherAfUp_{wth1,t}\) weather factor for technology availability upper value (af.up)
pTechWeatherAfsLo(weather, tech) \(pTechWeatherAfsLo_{wth1,t}\) weather factor for technology availability lower value (af.lo)
pTechWeatherAfsUp(weather, tech) \(pTechWeatherAfsUp_{wth1,t}\) weather factor for technology availability upper value (afs.lo)
pTechWeatherAfcLo(weather, tech, comm) \(pTechWeatherAfcLo_{wth1,t,c}\) weather factor for technology availability lower value (afs.lo)
pTechWeatherAfcUp(weather, tech, comm) \(pTechWeatherAfcUp_{wth1,t,c}\) weather factor for commodity availability upper value (afc.lo)
pStorageWeatherAfLo(weather, stg) \(pStorageWeatherAfLo_{wth1,st1}\) weather factor for storage availability lower value (af.lo)
pStorageWeatherAfUp(weather, stg) \(pStorageWeatherAfUp_{wth1,st1}\) weather factor for storage availability upper value (af.up)
pStorageWeatherCinpUp(weather, stg) \(pStorageWeatherCinpUp_{wth1,st1}\) weather factor for storage commodity input upper value (cinp.up)
pStorageWeatherCinpLo(weather, stg) \(pStorageWeatherCinpLo_{wth1,st1}\) weather factor for storage commodity input lower value (cinp.lo)
pStorageWeatherCoutUp(weather, stg) \(pStorageWeatherCoutUp_{wth1,st1}\) weather factor for storage commodity output upper value (cout.up)
pStorageWeatherCoutLo(weather, stg) \(pStorageWeatherCoutLo_{wth1,st1}\) weather factor for storage commodity output lower value (cout.lo)
pLECLoACT(region) \(pLECLoACT_{r}\) levelized costs interim parameter

2.3 Variables

The model variables \([-Inf, +Inf]\)
Name Alias Description
vTechInv(tech, region, year) \({\bf vTechInv}_{t,r,y}\) Overnight investment costs
vTechEac(tech, region, year) \({\bf vTechEac}_{t,r,y}\) Annualized investment costs
vTechOMCost(tech, region, year) \({\bf vTechOMCost}_{t,r,y}\) Sum of all operational costs is equal vTechFixom + vTechVarom (AVarom + CVarom + ActVarom)
vSupCost(sup, region, year) \({\bf vSupCost}_{s1,r,y}\) Supply costs (weighted)
vEmsFuelTot(comm, region, year, slice) \({\bf vEmsFuelTot}_{c,r,y,s}\) Total emissions from fuels combustion (technologies) (weighted)
vBalance(comm, region, year, slice) \({\bf vBalance}_{c,r,y,s}\) Net commodity balance (all sources) (weighted)
vTotalCost(region, year) \({\bf vTotalCost}_{r,y}\) Regional annual total costs (weighted)
vObjective \({\bf vObjective}\) Objective costs
vTaxCost(comm, region, year) \({\bf vTaxCost}_{c,r,y}\) Total tax levies (tax costs)
vSubsCost(comm, region, year) \({\bf vSubsCost}_{c,r,y}\) Total subsidies (substracted from costs)
vAggOutTot(comm, region, year, slice) \({\bf vAggOutTot}_{c,r,y,s}\) Aggregated commodity output (weighted)
vStorageOMCost(stg, region, year) \({\bf vStorageOMCost}_{st1,r,y}\) Storage O\
vTradeCost(region, year) \({\bf vTradeCost}_{r,y}\) Total trade costs (weighted)
vTradeRowCost(region, year) \({\bf vTradeRowCost}_{r,y}\) Trade with ROW costs (weighted)
vTradeIrCost(region, year) \({\bf vTradeIrCost}_{r,y}\) Interregional trade costs (weighted)
The model positive variables \([0, +Inf]\)
Name Alias Description
vTechNewCap(tech, region, year) \({\bf vTechNewCap}_{t,r,y}\) New capacity
vTechRetiredStockCum(tech, region, year) \({\bf vTechRetiredStockCum}_{t,r,y}\) Early retired stock
vTechRetiredStock(tech, region, year) \({\bf vTechRetiredStock}_{t,r,y}\) Early retired stock
vTechRetiredNewCap(tech, region, year, year) \({\bf vTechRetiredNewCap}_{t,r,y,y}\) Early retired new capacity
vTechCap(tech, region, year) \({\bf vTechCap}_{t,r,y}\) Total capacity of the technology
vTechAct(tech, region, year, slice) \({\bf vTechAct}_{t,r,y,s}\) Activity level of technology
vTechInp(tech, comm, region, year, slice) \({\bf vTechInp}_{t,c,r,y,s}\) Input level
vTechOut(tech, comm, region, year, slice) \({\bf vTechOut}_{t,c,r,y,s}\) Commodity output from technology - tech timeframe
vTechAInp(tech, comm, region, year, slice) \({\bf vTechAInp}_{t,c,r,y,s}\) Auxiliary commodity input
vTechAOut(tech, comm, region, year, slice) \({\bf vTechAOut}_{t,c,r,y,s}\) Auxiliary commodity output
vSupOut(sup, comm, region, year, slice) \({\bf vSupOut}_{s1,c,r,y,s}\) Output of supply
vSupReserve(sup, comm, region) \({\bf vSupReserve}_{s1,c,r}\) Cumulative supply (weighted)
vDemInp(comm, region, year, slice) \({\bf vDemInp}_{c,r,y,s}\) Input to demand
vOutTot(comm, region, year, slice) \({\bf vOutTot}_{c,r,y,s}\) Total commodity output (all processes) (weighted)
vInpTot(comm, region, year, slice) \({\bf vInpTot}_{c,r,y,s}\) Total commodity input (all processes) (weighted)
vInp2Lo(comm, region, year, slice, slice) \({\bf vInp2Lo}_{c,r,y,s,s}\) Desagregation of slices for input parent to (grand)child
vOut2Lo(comm, region, year, slice, slice) \({\bf vOut2Lo}_{c,r,y,s,s}\) Desagregation of slices for output parent to (grand)child
vSupOutTot(comm, region, year, slice) \({\bf vSupOutTot}_{c,r,y,s}\) Total commodity supply (weighted)
vTechInpTot(comm, region, year, slice) \({\bf vTechInpTot}_{c,r,y,s}\) Total commodity (main \
vTechOutTot(comm, region, year, slice) \({\bf vTechOutTot}_{c,r,y,s}\) Total commodity (main \
vStorageInpTot(comm, region, year, slice) \({\bf vStorageInpTot}_{c,r,y,s}\) Total commodity (main \
vStorageOutTot(comm, region, year, slice) \({\bf vStorageOutTot}_{c,r,y,s}\) Total commodity (main \
vStorageAInp(stg, comm, region, year, slice) \({\bf vStorageAInp}_{st1,c,r,y,s}\) Aux-commodity input to storage
vStorageAOut(stg, comm, region, year, slice) \({\bf vStorageAOut}_{st1,c,r,y,s}\) Aux-commodity input from storage
vDummyImport(comm, region, year, slice) \({\bf vDummyImport}_{c,r,y,s}\) Dummy import (for debugging)
vDummyExport(comm, region, year, slice) \({\bf vDummyExport}_{c,r,y,s}\) Dummy export (for debugging)
vStorageInp(stg, comm, region, year, slice) \({\bf vStorageInp}_{st1,c,r,y,s}\) Storage input
vStorageOut(stg, comm, region, year, slice) \({\bf vStorageOut}_{st1,c,r,y,s}\) Storage output
vStorageStore(stg, comm, region, year, slice) \({\bf vStorageStore}_{st1,c,r,y,s}\) Storage level
vStorageInv(stg, region, year) \({\bf vStorageInv}_{st1,r,y}\) Storage investments
vStorageEac(stg, region, year) \({\bf vStorageEac}_{st1,r,y}\) Storage EAC investments
vStorageCap(stg, region, year) \({\bf vStorageCap}_{st1,r,y}\) Storage capacity
vStorageNewCap(stg, region, year) \({\bf vStorageNewCap}_{st1,r,y}\) Storage new capacity
vImportTot(comm, region, year, slice) \({\bf vImportTot}_{c,r,y,s}\) Total regional import (Ir + ROW) (weighted)
vExportTot(comm, region, year, slice) \({\bf vExportTot}_{c,r,y,s}\) Total regional export (Ir + ROW) (weighted)
vTradeIr(trade, comm, region, region, year, slice) \({\bf vTradeIr}_{t1,c,r,r,y,s}\) Total physical trade flows between regions
vTradeIrAInp(trade, comm, region, year, slice) \({\bf vTradeIrAInp}_{t1,c,r,y,s}\) Trade auxilari input
vTradeIrAInpTot(comm, region, year, slice) \({\bf vTradeIrAInpTot}_{c,r,y,s}\) Trade total auxilari input (weighted)
vTradeIrAOut(trade, comm, region, year, slice) \({\bf vTradeIrAOut}_{t1,c,r,y,s}\) Trade auxilari output
vTradeIrAOutTot(comm, region, year, slice) \({\bf vTradeIrAOutTot}_{c,r,y,s}\) Trade auxilari output total (weighted)
vExportRowCum(expp, comm) \({\bf vExportRowCum}_{e,c}\) Cumulative export to ROW
vExportRow(expp, comm, region, year, slice) \({\bf vExportRow}_{e,c,r,y,s}\) Export to ROW
vImportRowCum(imp, comm) \({\bf vImportRowCum}_{i,c}\) Cumulative import from ROW
vImportRow(imp, comm, region, year, slice) \({\bf vImportRow}_{i,c,r,y,s}\) Import from ROW
vTradeCap(trade, year) \({\bf vTradeCap}_{t1,y}\) Trade capacity
vTradeInv(trade, region, year) \({\bf vTradeInv}_{t1,r,y}\) Investment in trade capacity (overnight)
vTradeEac(trade, region, year) \({\bf vTradeEac}_{t1,r,y}\) Investment in trade capacity (EAC)
vTradeNewCap(trade, year) \({\bf vTradeNewCap}_{t1,y}\) New trade capacity
vTotalUserCosts(region, year) \({\bf vTotalUserCosts}_{r,y}\) Total additional costs (set by user)

2.4 Equations

2.4.0.1 eqTechSng2Sng: Technology input to output

\[ {\bf vTechInp}_{t,c,r,y,s}*pTechCinp2use_{t,c,r,y,s} = \frac{{\bf vTechOut}_{t,cp,r,y,s}}{pTechUse2cact_{t,cp,r,y,s}*pTechCact2cout_{t,cp,r,y,s}}\]

2.4.0.2 eqTechGrp2Sng: Technology group input to output

\[ pTechGinp2use_{t,g,r,y,s}*\sum_{c}{\left({\bf vTechInp}_{t,c,r,y,s}*pTechCinp2ginp_{t,c,r,y,s}\right)} = \frac{{\bf vTechOut}_{t,cp,r,y,s}}{pTechUse2cact_{t,cp,r,y,s}*pTechCact2cout_{t,cp,r,y,s}}\]

2.4.0.3 eqTechSng2Grp: Technology input to group output

\[ {\bf vTechInp}_{t,c,r,y,s}*pTechCinp2use_{t,c,r,y,s} = \sum_{cp}{\left(\frac{{\bf vTechOut}_{t,cp,r,y,s}}{pTechUse2cact_{t,cp,r,y,s}*pTechCact2cout_{t,cp,r,y,s}}\right)}\]

2.4.0.4 eqTechGrp2Grp: Technology group input to group output

\[ pTechGinp2use_{t,g,r,y,s}*\sum_{c}{\left({\bf vTechInp}_{t,c,r,y,s}*pTechCinp2ginp_{t,c,r,y,s}\right)} = \sum_{cp}{\left(\frac{{\bf vTechOut}_{t,cp,r,y,s}}{pTechUse2cact_{t,cp,r,y,s}*pTechCact2cout_{t,cp,r,y,s}}\right)}\]

2.4.0.5 eqTechShareInpLo: Technology lower bound on input share

\[ {\bf vTechInp}_{t,c,r,y,s} \ge pTechShareLo_{t,c,r,y,s}*\sum_{cp}{\left({\bf vTechInp}_{t,cp,r,y,s}\right)}\]

2.4.0.6 eqTechShareInpUp: Technology upper bound on input share

\[ {\bf vTechInp}_{t,c,r,y,s} \le pTechShareUp_{t,c,r,y,s}*\sum_{cp}{\left({\bf vTechInp}_{t,cp,r,y,s}\right)}\]

2.4.0.7 eqTechShareOutLo: Technology lower bound on output share

\[ {\bf vTechOut}_{t,c,r,y,s} \ge pTechShareLo_{t,c,r,y,s}*\sum_{cp}{\left({\bf vTechOut}_{t,cp,r,y,s}\right)}\]

2.4.0.8 eqTechShareOutUp: Technology upper bound on output share

\[ {\bf vTechOut}_{t,c,r,y,s} \le pTechShareUp_{t,c,r,y,s}*\sum_{cp}{\left({\bf vTechOut}_{t,cp,r,y,s}\right)}\]

2.4.0.9 eqTechAInp: Technology auxiliary commodity input

\[ {\bf vTechAInp}_{t,c,r,y,s} = \left({\bf vTechAct}_{t,r,y,s}*pTechAct2AInp_{t,c,r,y,s}\right)+\left(\frac{{\bf vTechCap}_{t,r,y}*pTechCap2AInp_{t,c,r,y,s}}{pTechCap2act_{t}}\right)+\left({\bf vTechNewCap}_{t,r,y}*pTechNCap2AInp_{t,c,r,y,s}\right)+\sum_{cp}{\left(pTechCinp2AInp_{t,c,cp,r,y,s}*{\bf vTechInp}_{t,cp,r,y,s}\right)}+\sum_{cp}{\left(pTechCout2AInp_{t,c,cp,r,y,s}*{\bf vTechOut}_{t,cp,r,y,s}\right)}\]

2.4.0.10 eqTechAOut: Technology auxiliary commodity output

\[ {\bf vTechAOut}_{t,c,r,y,s} = \left({\bf vTechAct}_{t,r,y,s}*pTechAct2AOut_{t,c,r,y,s}\right)+\left(\frac{{\bf vTechCap}_{t,r,y}*pTechCap2AOut_{t,c,r,y,s}}{pTechCap2act_{t}}\right)+\left({\bf vTechNewCap}_{t,r,y}*pTechNCap2AOut_{t,c,r,y,s}\right)+\sum_{cp}{\left(pTechCinp2AOut_{t,c,cp,r,y,s}*{\bf vTechInp}_{t,cp,r,y,s}\right)}+\sum_{cp}{\left(pTechCout2AOut_{t,c,cp,r,y,s}*{\bf vTechOut}_{t,cp,r,y,s}\right)}\]

2.4.0.11 eqTechAfLo: Technology availability factor lower bound

\[ pTechAfLo_{t,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfLo_{wth1,t}*pWeather_{wth1,r,y,s}\right)} \le {\bf vTechAct}_{t,r,y,s}\]

2.4.0.12 eqTechAfUp: Technology availability factor upper bound

\[ {\bf vTechAct}_{t,r,y,s} \le pTechAfUp_{t,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfUp_{wth1,t}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.13 eqTechAfsLo: Technology availability factor for sum of slices lower bound

\[ pTechAfsLo_{t,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfsLo_{wth1,t}*pWeather_{wth1,r,y,s}\right)} \le \sum_{sp}{\left({\bf vTechAct}_{t,r,y,sp}\right)}\]

2.4.0.14 eqTechAfsUp: Technology availability factor for sum of slices upper bound

\[ \sum_{sp}{\left({\bf vTechAct}_{t,r,y,sp}\right)} \le pTechAfsUp_{t,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfsUp_{wth1,t}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.15 eqTechRampUp: Technology ramp up

\[ \frac{{\bf vTechAct}_{t,r,y,s}}{pSliceShare_{s}}-\frac{{\bf vTechAct}_{t,r,y,sp}}{pSliceShare_{sp}} \le \frac{pSliceShare_{s}*pTechCap2act_{t}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}}{pTechRampUp_{t,r,y,s}}\]

2.4.0.16 eqTechRampDown: Technology ramp down

\[ \frac{{\bf vTechAct}_{t,r,y,sp}}{pSliceShare_{sp}}-\frac{{\bf vTechAct}_{t,r,y,s}}{pSliceShare_{s}} \le \frac{pSliceShare_{s}*pTechCap2act_{t}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}}{pTechRampDown_{t,r,y,s}}\]

2.4.0.17 eqTechActSng: Technology activity to commodity output

\[ {\bf vTechAct}_{t,r,y,s} = \frac{{\bf vTechOut}_{t,c,r,y,s}}{pTechCact2cout_{t,c,r,y,s}}\]

2.4.0.18 eqTechActGrp: Technology activity to group output

\[ {\bf vTechAct}_{t,r,y,s} = \sum_{c}{\left(\frac{{\bf vTechOut}_{t,c,r,y,s}}{pTechCact2cout_{t,c,r,y,s}}\right)}\]

2.4.0.19 eqTechAfcOutLo: Technology commodity availability factor lower bound

\[ pTechCact2cout_{t,c,r,y,s}*pTechAfcLo_{t,c,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfcLo_{wth1,t,c}*pWeather_{wth1,r,y,s}\right)} \le {\bf vTechOut}_{t,c,r,y,s}\]

2.4.0.20 eqTechAfcOutUp: Technology commodity availability factor upper bound

\[ {\bf vTechOut}_{t,c,r,y,s} \le pTechCact2cout_{t,c,r,y,s}*pTechAfcUp_{t,c,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*\prod_{wth1}{\left(pTechWeatherAfcUp_{wth1,t,c}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.21 eqTechAfcInpLo: Technology commodity availability factor lower bound

\[ pTechAfcLo_{t,c,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfcLo_{wth1,t,c}*pWeather_{wth1,r,y,s}\right)} \le {\bf vTechInp}_{t,c,r,y,s}\]

2.4.0.22 eqTechAfcInpUp: Technology commodity availability factor upper bound

\[ {\bf vTechInp}_{t,c,r,y,s} \le pTechAfcUp_{t,c,r,y,s}*pTechCap2act_{t}*{\bf vTechCap}_{t,r,y}*pSliceShare_{s}*\prod_{wth1}{\left(pTechWeatherAfcUp_{wth1,t,c}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.23 eqTechCap: Technology capacity

\[ {\bf vTechCap}_{t,r,y} = pTechStock_{t,r,y}-{\bf vTechRetiredStockCum}_{t,r,y}+\sum_{yp}{\left(pPeriodLen_{yp}*\left({\bf vTechNewCap}_{t,r,yp}-\sum_{ye}{\left({\bf vTechRetiredNewCap}_{t,r,yp,ye}\right)}\right)\right)}\]

2.4.0.24 eqTechCapLo: Technology capacity lower bound

\[ {\bf vTechCap}_{t,r,y} \ge pTechCapLo_{t,r,y}\]

2.4.0.25 eqTechCapUp: Technology capacity upper bound

\[ {\bf vTechCap}_{t,r,y} \le pTechCapUp_{t,r,y}\]

2.4.0.26 eqTechNewCapLo: __

\[ {\bf vTechNewCap}_{t,r,y} \ge pTechNewCapLo_{t,r,y}\]

2.4.0.27 eqTechNewCapUp: __

\[ {\bf vTechNewCap}_{t,r,y} \le pTechNewCapUp_{t,r,y}\]

2.4.0.28 eqTechRetiredNewCap: Retirement of new capacity

\[ \sum_{yp}{\left({\bf vTechRetiredNewCap}_{t,r,y,yp}\right)} \le {\bf vTechNewCap}_{t,r,y}\]

2.4.0.29 eqTechRetiredStockCum: Retirement of stock cumulative

\[ {\bf vTechRetiredStockCum}_{t,r,y} \le pTechStock_{t,r,y}\]

2.4.0.30 eqTechRetiredStock: Retirement of stock

\[ {\bf vTechRetiredStock}_{t,r,y} = {\bf vTechRetiredStockCum}_{t,r,y}-\sum_{yp}{\left({\bf vTechRetiredStockCum}_{t,r,yp}\right)}\]

2.4.0.31 eqTechEac: Technology Equivalent Annual Cost (EAC)

\[ {\bf vTechEac}_{t,r,y} = \sum_{yp}{\left(pTechEac_{t,r,yp}*pPeriodLen_{yp}*\left({\bf vTechNewCap}_{t,r,yp}-\sum_{ye}{\left({\bf vTechRetiredNewCap}_{t,r,yp,ye}\right)}\right)\right)}\]

2.4.0.32 eqTechInv: Technology overnight investment costs

\[ {\bf vTechInv}_{t,r,y} = pTechInvcost_{t,r,y}*{\bf vTechNewCap}_{t,r,y}\]

2.4.0.33 eqTechOMCost: Technology O&M costs (weighted)

\[ {\bf vTechOMCost}_{t,r,y} = pTechFixom_{t,r,y}*{\bf vTechCap}_{t,r,y}+\sum_{s}{\left(pTechVarom_{t,r,y,s}*pSliceWeight_{s}*{\bf vTechAct}_{t,r,y,s}\right)}+\sum_{s}{\left(\sum_{c}{\left(pTechCvarom_{t,c,r,y,s}*pSliceWeight_{s}*{\bf vTechInp}_{t,c,r,y,s}\right)}\right)}+\sum_{s}{\left(\sum_{c}{\left(pTechCvarom_{t,c,r,y,s}*pSliceWeight_{s}*{\bf vTechOut}_{t,c,r,y,s}\right)}\right)}+\sum_{s}{\left(\sum_{c}{\left(pTechAvarom_{t,c,r,y,s}*pSliceWeight_{s}*{\bf vTechAOut}_{t,c,r,y,s}\right)}\right)}+\sum_{s}{\left(\sum_{c}{\left(pTechAvarom_{t,c,r,y,s}*pSliceWeight_{s}*{\bf vTechAInp}_{t,c,r,y,s}\right)}\right)}\]

2.4.0.34 eqSupAvaUp: Supply availability upper bound

\[ {\bf vSupOut}_{s1,c,r,y,s} \le pSupAvaUp_{s1,c,r,y,s}*\prod_{wth1}{\left(pSupWeatherUp_{wth1,s1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.35 eqSupAvaLo: Supply availability lower bound

\[ {\bf vSupOut}_{s1,c,r,y,s} \ge pSupAvaLo_{s1,c,r,y,s}*\prod_{wth1}{\left(pSupWeatherLo_{wth1,s1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.36 eqSupReserve: Cumulative supply (use of reserve)

\[ {\bf vSupReserve}_{s1,c,r} = \sum_{y,s}{\left(pPeriodLen_{y}*pSliceWeight_{s}*{\bf vSupOut}_{s1,c,r,y,s}\right)}\]

2.4.0.37 eqSupReserveUp: Cumulative supply upper constraint

\[ {\bf vSupReserve}_{s1,c,r} \le pSupReserveUp_{s1,c,r}\]

2.4.0.38 eqSupReserveLo: Cumulative supply lower constraint

\[ {\bf vSupReserve}_{s1,c,r} \ge pSupReserveLo_{s1,c,r}\]

2.4.0.39 eqSupCost: Supply costs

\[ {\bf vSupCost}_{s1,r,y} = \sum_{c,s}{\left(pSupCost_{s1,c,r,y,s}*pSliceWeight_{s}*{\bf vSupOut}_{s1,c,r,y,s}\right)}\]

2.4.0.40 eqDemInp: Demand equation

\[ {\bf vDemInp}_{c,r,y,s} = \sum_{d}{\left(pDemand_{d,c,r,y,s}\right)}\]

2.4.0.41 eqAggOutTot: Aggregating-commodity output (weighted)

\[ {\bf vAggOutTot}_{c,r,y,s} = \sum_{cp}{\left(pAggregateFactor_{c,cp}*\sum_{sp}{\left({\bf vOutTot}_{cp,r,y,sp}\right)}\right)}\]

2.4.0.42 eqEmsFuelTot: Total emissions from commodity consumption (weighted)

\[ {\bf vEmsFuelTot}_{c,r,y,s} = \sum_{cp}{\left(pEmissionFactor_{c,cp}*\sum_{t}{\left(pTechEmisComm_{t,cp}*\sum_{sp}{\left({\bf vTechInp}_{t,cp,r,y,sp}\right)}\right)}\right)}*pSliceWeight_{s}\]

2.4.0.43 eqStorageAInp: Storage level

\[ {\bf vStorageAInp}_{st1,c,r,y,s} = \sum_{cp}{\left(pStorageStg2AInp_{st1,c,r,y,s}*{\bf vStorageStore}_{st1,cp,r,y,s}\right)}+\sum_{cp}{\left(pStorageCinp2AInp_{st1,c,r,y,s}*{\bf vStorageInp}_{st1,cp,r,y,s}\right)}+\sum_{cp}{\left(pStorageCout2AInp_{st1,c,r,y,s}*{\bf vStorageOut}_{st1,cp,r,y,s}\right)}+\sum_{cp}{\left(pStorageCap2AInp_{st1,c,r,y,s}*{\bf vStorageCap}_{st1,r,y}\right)}+\sum_{cp}{\left(pStorageNCap2AInp_{st1,c,r,y,s}*{\bf vStorageNewCap}_{st1,r,y}\right)}\]

2.4.0.44 eqStorageAOut: Storage availability factor lower

\[ {\bf vStorageAOut}_{st1,c,r,y,s} = \sum_{cp}{\left(pStorageStg2AOut_{st1,c,r,y,s}*{\bf vStorageStore}_{st1,cp,r,y,s}\right)}+\sum_{cp}{\left(pStorageCinp2AOut_{st1,c,r,y,s}*{\bf vStorageInp}_{st1,cp,r,y,s}\right)}+\sum_{cp}{\left(pStorageCout2AOut_{st1,c,r,y,s}*{\bf vStorageOut}_{st1,cp,r,y,s}\right)}+\sum_{cp}{\left(pStorageCap2AOut_{st1,c,r,y,s}*{\bf vStorageCap}_{st1,r,y}\right)}+\sum_{cp}{\left(pStorageNCap2AOut_{st1,c,r,y,s}*{\bf vStorageNewCap}_{st1,r,y}\right)}\]

2.4.0.45 eqStorageStore: Storage availability factor upper

\[ {\bf vStorageStore}_{st1,c,r,y,s} = pStorageCharge_{st1,c,r,y,s}+\left(pStorageNCap2Stg_{st1,c,r,y,s}*{\bf vStorageNewCap}_{st1,r,y}\right)+pStorageInpEff_{st1,c,r,y,sp}*{\bf vStorageInp}_{st1,c,r,y,sp}+\left({pStorageStgEff_{st1,c,r,y,s}}^{pSliceShare_{s}}\right)*{\bf vStorageStore}_{st1,c,r,y,sp}-\frac{{\bf vStorageOut}_{st1,c,r,y,sp}}{pStorageOutEff_{st1,c,r,y,sp}}\]

2.4.0.46 eqStorageAfLo: Storage output vs level

\[ {\bf vStorageStore}_{st1,c,r,y,s} \ge pStorageAfLo_{st1,r,y,s}*pStorageCap2stg_{st1}*{\bf vStorageCap}_{st1,r,y}*\prod_{wth1}{\left(pStorageWeatherAfLo_{wth1,st1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.47 eqStorageAfUp: Storage aux-commodity input

\[ {\bf vStorageStore}_{st1,c,r,y,s} \le pStorageAfUp_{st1,r,y,s}*pStorageCap2stg_{st1}*{\bf vStorageCap}_{st1,r,y}*\prod_{wth1}{\left(pStorageWeatherAfUp_{wth1,st1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.48 eqStorageClear: Storage aux-commodity output

\[ \frac{{\bf vStorageOut}_{st1,c,r,y,s}}{pStorageOutEff_{st1,c,r,y,s}} \le {\bf vStorageStore}_{st1,c,r,y,s}\]

2.4.0.49 eqStorageInpUp: Storage input upper constraint

\[ {\bf vStorageInp}_{st1,c,r,y,s} \le {\bf vStorageCap}_{st1,r,y}*pStorageCinpUp_{st1,c,r,y,s}*\prod_{wth1}{\left(pStorageWeatherCinpUp_{wth1,st1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.50 eqStorageInpLo: Storage input lower constraint

\[ {\bf vStorageInp}_{st1,c,r,y,s} \ge {\bf vStorageCap}_{st1,r,y}*pStorageCinpLo_{st1,c,r,y,s}*\prod_{wth1}{\left(pStorageWeatherCinpLo_{wth1,st1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.51 eqStorageOutUp: Storage output upper constraint

\[ {\bf vStorageOut}_{st1,c,r,y,s} \le {\bf vStorageCap}_{st1,r,y}*pStorageCoutUp_{st1,c,r,y,s}*\prod_{wth1}{\left(pStorageWeatherCoutUp_{wth1,st1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.52 eqStorageOutLo: Storage output lower constraint

\[ {\bf vStorageOut}_{st1,c,r,y,s} \ge {\bf vStorageCap}_{st1,r,y}*pStorageCoutLo_{st1,c,r,y,s}*\prod_{wth1}{\left(pStorageWeatherCoutLo_{wth1,st1}*pWeather_{wth1,r,y,s}\right)}\]

2.4.0.53 eqStorageCap: Storage capacity

\[ {\bf vStorageCap}_{st1,r,y} = pStorageStock_{st1,r,y}+\sum_{yp}{\left(pPeriodLen_{yp}*{\bf vStorageNewCap}_{st1,r,yp}\right)}\]

2.4.0.54 eqStorageCapLo: Storage capacity lower bound

\[ {\bf vStorageCap}_{st1,r,y} \ge pStorageCapLo_{st1,r,y}\]

2.4.0.55 eqStorageCapUp: Storage capacity upper bound

\[ {\bf vStorageCap}_{st1,r,y} \le pStorageCapUp_{st1,r,y}\]

2.4.0.56 eqStorageNewCapLo: Storage new capacity lower bound

\[ {\bf vStorageNewCap}_{st1,r,y} \ge pStorageNewCapLo_{st1,r,y}\]

2.4.0.57 eqStorageNewCapUp: Storage new capacity upper bound

\[ {\bf vStorageNewCap}_{st1,r,y} \le pStorageNewCapUp_{st1,r,y}\]

2.4.0.58 eqStorageInv: Storage overnight investment costs

\[ {\bf vStorageInv}_{st1,r,y} = pStorageInvcost_{st1,r,y}*{\bf vStorageNewCap}_{st1,r,y}\]

2.4.0.59 eqStorageEac: Storage equivalent annual cost

\[ {\bf vStorageEac}_{st1,r,y} = \sum_{yp}{\left(pStorageEac_{st1,r,yp}*pPeriodLen_{yp}*{\bf vStorageNewCap}_{st1,r,yp}\right)}\]

2.4.0.60 eqStorageCost: Storage total costs

\[ {\bf vStorageOMCost}_{st1,r,y} = pStorageFixom_{st1,r,y}*{\bf vStorageCap}_{st1,r,y}+\sum_{c}{\left(\sum_{s}{\left(pStorageCostInp_{st1,r,y,s}*pSliceWeight_{s}*{\bf vStorageInp}_{st1,c,r,y,s}\right)}+\sum_{s}{\left(pStorageCostOut_{st1,r,y,s}*pSliceWeight_{s}*{\bf vStorageOut}_{st1,c,r,y,s}\right)}+\sum_{s}{\left(pStorageCostStore_{st1,r,y,s}*pSliceWeight_{s}*{\bf vStorageStore}_{st1,c,r,y,s}\right)}\right)}\]

2.4.0.61 eqImportTot: Import equation (Ir & ROW)

\[ {\bf vImportTot}_{c,dst,y,s} = \sum_{t1}{\left(\sum_{src}{\left(pTradeIrEff_{t1,src,dst,y,s}*{\bf vTradeIr}_{t1,c,src,dst,y,s}\right)}\right)}*pSliceWeight_{s}+\sum_{i}{\left({\bf vImportRow}_{i,c,dst,y,s}\right)}*pSliceWeight_{s}\]

2.4.0.62 eqExportTot: Export equation (Ir & ROW)

\[ {\bf vExportTot}_{c,src,y,s} = \sum_{t1}{\left(\sum_{dst}{\left({\bf vTradeIr}_{t1,c,src,dst,y,s}\right)}\right)}*pSliceWeight_{s}+\sum_{e}{\left({\bf vExportRow}_{e,c,src,y,s}\right)}*pSliceWeight_{s}\]

2.4.0.63 eqTradeFlowUp: Trade upper bound

\[ {\bf vTradeIr}_{t1,c,src,dst,y,s} \le pTradeIrUp_{t1,src,dst,y,s}\]

2.4.0.64 eqTradeFlowLo: Trade lower bound

\[ {\bf vTradeIr}_{t1,c,src,dst,y,s} \ge pTradeIrLo_{t1,src,dst,y,s}\]

2.4.0.65 eqCostTrade: Total trade costs

\[ {\bf vTradeCost}_{r,y} = {\bf vTradeRowCost}_{r,y}+{\bf vTradeIrCost}_{r,y}\]

2.4.0.66 eqCostRowTrade: Costs of trade with the Rest of the World (ROW)

\[ {\bf vTradeRowCost}_{r,y} = \sum_{i,c,s}{\left(pImportRowPrice_{i,r,y,s}*pSliceWeight_{s}*{\bf vImportRow}_{i,c,r,y,s}\right)}-\sum_{e,c,s}{\left(pExportRowPrice_{e,r,y,s}*pSliceWeight_{s}*{\bf vExportRow}_{e,c,r,y,s}\right)}\]

2.4.0.67 eqCostIrTrade: Costs of import

\[ {\bf vTradeIrCost}_{r,y} = \sum_{t1}{\left(pTradeFixom_{t1,y}*pTradeStock_{t1,y}\right)}+\sum_{t1}{\left(pTradeFixom_{t1,y}*\left({\bf vTradeCap}_{t1,y}-pTradeStock_{t1,y}\right)\right)}+\sum_{t1}{\left({\bf vTradeEac}_{t1,r,y}\right)}+\sum_{t1,src}{\left(\sum_{c}{\left(\sum_{s}{\left(\left(pTradeIrCost_{t1,src,r,y,s}+pTradeIrMarkup_{t1,src,r,y,s}\right)*{\bf vTradeIr}_{t1,c,src,r,y,s}*pSliceWeight_{s}\right)}\right)}\right)}-\sum_{t1,dst}{\left(\sum_{c}{\left(\sum_{s}{\left(\left(pTradeIrCost_{t1,r,dst,y,s}+pTradeIrMarkup_{t1,r,dst,y,s}\right)*{\bf vTradeIr}_{t1,c,r,dst,y,s}*pSliceWeight_{s}\right)}\right)}\right)}\]

2.4.0.68 eqExportRowUp: Export to ROW upper constraint

\[ {\bf vExportRow}_{e,c,r,y,s} \le pExportRowUp_{e,r,y,s}\]

2.4.0.69 eqExportRowLo: Export to ROW lower constraint

\[ {\bf vExportRow}_{e,c,r,y,s} \ge pExportRowLo_{e,r,y,s}\]

2.4.0.70 eqExportRowCum: Cumulative export to ROW

\[ {\bf vExportRowCum}_{e,c} = \sum_{r,y,s}{\left(pPeriodLen_{y}*pSliceWeight_{s}*{\bf vExportRow}_{e,c,r,y,s}\right)}\]

2.4.0.71 eqExportRowResUp: Cumulative export to ROW upper constraint

\[ {\bf vExportRowCum}_{e,c} \le pExportRowRes_{e}\]

2.4.0.72 eqImportRowUp: Import from ROW upper constraint

\[ {\bf vImportRow}_{i,c,r,y,s} \le pImportRowUp_{i,r,y,s}\]

2.4.0.73 eqImportRowLo: Import of ROW lower constraint

\[ {\bf vImportRow}_{i,c,r,y,s} \ge pImportRowLo_{i,r,y,s}\]

2.4.0.74 eqImportRowCum: Cumulative import from ROW

\[ {\bf vImportRowCum}_{i,c} = \sum_{r,y,s}{\left(pPeriodLen_{y}*pSliceWeight_{s}*{\bf vImportRow}_{i,c,r,y,s}\right)}\]

2.4.0.75 eqImportRowResUp: Cumulative import from ROW upper constraint

\[ {\bf vImportRowCum}_{i,c} \le pImportRowRes_{i}\]

2.4.0.76 eqTradeCapFlow: Trade capacity

\[ pSliceShare_{s}*pTradeCap2Act_{t1}*{\bf vTradeCap}_{t1,y} \ge \sum_{src,dst}{\left({\bf vTradeIr}_{t1,c,src,dst,y,s}\right)}\]

2.4.0.77 eqTradeCap: Trade capacity lower bound

\[ {\bf vTradeCap}_{t1,y} = pTradeStock_{t1,y}+\sum_{yp}{\left(pPeriodLen_{yp}*{\bf vTradeNewCap}_{t1,yp}\right)}\]

2.4.0.78 eqTradeCapLo: Trade capacity upper bound

\[ {\bf vTradeCap}_{t1,y} \ge pTradeCapLo_{t1,y}\]

2.4.0.79 eqTradeCapUp: Trade new capacity lower bound

\[ {\bf vTradeCap}_{t1,y} \le pTradeCapUp_{t1,y}\]

2.4.0.80 eqTradeNewCapLo: Trade new capacity upper bound

\[ {\bf vTradeNewCap}_{t1,y} \ge pTradeNewCapLo_{t1,y}\]

2.4.0.81 eqTradeNewCapUp: Trade overnight investment costs

\[ {\bf vTradeNewCap}_{t1,y} \le pTradeNewCapUp_{t1,y}\]

2.4.0.82 eqTradeInv: Trade equivalent annual costs

\[ {\bf vTradeInv}_{t1,r,y} = pTradeInvcost_{t1,r,y}*{\bf vTradeNewCap}_{t1,y}\]

2.4.0.83 eqTradeEac: Trade capacity to activity

\[ {\bf vTradeEac}_{t1,r,y} = \sum_{yp}{\left(pTradeEac_{t1,r,yp}*pPeriodLen_{yp}*{\bf vTradeNewCap}_{t1,yp}\right)}\]

2.4.0.84 eqTradeIrAInp: Trade auxiliary commodity input

\[ {\bf vTradeIrAInp}_{t1,c,r,y,s} = \sum_{dst}{\left(pTradeIrCsrc2Ainp_{t1,c,r,dst,y,s}*\sum_{cp}{\left({\bf vTradeIr}_{t1,cp,r,dst,y,s}\right)}\right)}+\sum_{src}{\left(pTradeIrCdst2Ainp_{t1,c,src,r,y,s}*\sum_{cp}{\left({\bf vTradeIr}_{t1,cp,src,r,y,s}\right)}\right)}\]

2.4.0.85 eqTradeIrAOut: Trade auxiliary commodity output

\[ {\bf vTradeIrAOut}_{t1,c,r,y,s} = \sum_{dst}{\left(pTradeIrCsrc2Aout_{t1,c,r,dst,y,s}*\sum_{cp}{\left({\bf vTradeIr}_{t1,cp,r,dst,y,s}\right)}\right)}+\sum_{src}{\left(pTradeIrCdst2Aout_{t1,c,src,r,y,s}*\sum_{cp}{\left({\bf vTradeIr}_{t1,cp,src,r,y,s}\right)}\right)}\]

2.4.0.86 eqTradeIrAInpTot: Trade auxiliary commodity input

\[ {\bf vTradeIrAInpTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{t1,sp}{\left({\bf vTradeIrAInp}_{t1,c,r,y,sp}\right)}\]

2.4.0.87 eqTradeIrAOutTot: Trade auxiliary commodity output

\[ {\bf vTradeIrAOutTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{t1,sp}{\left({\bf vTradeIrAOut}_{t1,c,r,y,sp}\right)}\]

2.4.0.88 eqBalLo: commodity balance <= 0 (e.g. upper limit - deficit is allowed)

\[ {\bf vBalance}_{c,r,y,s} \ge 0\]

2.4.0.89 eqBalUp: commodity balance >= 0 (e.g. lower limit - excess is allower)

\[ {\bf vBalance}_{c,r,y,s} \le 0\]

2.4.0.90 eqBalFx: commodity balance >= 0 (no excess nor deficit is allowed)

\[ {\bf vBalance}_{c,r,y,s} = 0\]

2.4.0.91 eqBal: Commodity balance definition

\[ {\bf vBalance}_{c,r,y,s} = {\bf vOutTot}_{c,r,y,s}-{\bf vInpTot}_{c,r,y,s}\]

2.4.0.92 eqOutTot: Total commodity output

\[ {\bf vOutTot}_{c,r,y,s} = pSliceWeight_{s}*{\bf vDummyImport}_{c,r,y,s}+{\bf vSupOutTot}_{c,r,y,s}+{\bf vEmsFuelTot}_{c,r,y,s}+{\bf vAggOutTot}_{c,r,y,s}+{\bf vTechOutTot}_{c,r,y,s}+{\bf vStorageOutTot}_{c,r,y,s}+{\bf vImportTot}_{c,r,y,s}+{\bf vTradeIrAOutTot}_{c,r,y,s}+pSliceWeight_{s}*\sum_{sp}{\left({\bf vOut2Lo}_{c,r,y,sp,s}\right)}\]

2.4.0.93 eqOut2Lo: Total commodity input

\[ \sum_{sp}{\left({\bf vOut2Lo}_{c,r,y,s,sp}\right)} = {\bf vSupOutTot}_{c,r,y,s}+{\bf vEmsFuelTot}_{c,r,y,s}+{\bf vAggOutTot}_{c,r,y,s}+{\bf vTechOutTot}_{c,r,y,s}+{\bf vStorageOutTot}_{c,r,y,s}+{\bf vImportTot}_{c,r,y,s}+{\bf vTradeIrAOutTot}_{c,r,y,s}\]

2.4.0.94 eqInpTot: From commodity slice to lo level

\[ {\bf vInpTot}_{c,r,y,s} = pSliceWeight_{s}*{\bf vDemInp}_{c,r,y,s}+pSliceWeight_{s}*{\bf vDummyExport}_{c,r,y,s}+{\bf vTechInpTot}_{c,r,y,s}+{\bf vStorageInpTot}_{c,r,y,s}+{\bf vExportTot}_{c,r,y,s}+{\bf vTradeIrAInpTot}_{c,r,y,s}+pSliceWeight_{s}*\sum_{sp}{\left({\bf vInp2Lo}_{c,r,y,sp,s}\right)}\]

2.4.0.95 eqInp2Lo: From commodity slice to lo level

\[ \sum_{sp}{\left({\bf vInp2Lo}_{c,r,y,s,sp}\right)} = {\bf vTechInpTot}_{c,r,y,s}+{\bf vStorageInpTot}_{c,r,y,s}+{\bf vExportTot}_{c,r,y,s}+{\bf vTradeIrAInpTot}_{c,r,y,s}\]

2.4.0.96 eqSupOutTot: Supply total output

\[ {\bf vSupOutTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{s1}{\left({\bf vSupOut}_{s1,c,r,y,s}\right)}\]

2.4.0.97 eqTechInpTot: Technology total input

\[ {\bf vTechInpTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{t}{\left({\bf vTechInp}_{t,c,r,y,s}\right)}+pSliceWeight_{s}*\sum_{t}{\left(\sum_{sp}{\left({\bf vTechInp}_{t,c,r,y,sp}\right)}\right)}+pSliceWeight_{s}*\sum_{t}{\left({\bf vTechAInp}_{t,c,r,y,s}\right)}+pSliceWeight_{s}*\sum_{t}{\left(\sum_{sp}{\left({\bf vTechAInp}_{t,c,r,y,sp}\right)}\right)}\]

2.4.0.98 eqTechOutTot: Technology total output

\[ {\bf vTechOutTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{t}{\left({\bf vTechOut}_{t,c,r,y,s}\right)}+pSliceWeight_{s}*\sum_{t}{\left(\sum_{sp}{\left({\bf vTechOut}_{t,c,r,y,sp}\right)}\right)}+pSliceWeight_{s}*\sum_{t}{\left({\bf vTechAOut}_{t,c,r,y,s}\right)}+pSliceWeight_{s}*\sum_{t}{\left(\sum_{sp}{\left({\bf vTechAOut}_{t,c,r,y,sp}\right)}\right)}\]

2.4.0.99 eqStorageInpTot: Storage total input

\[ {\bf vStorageInpTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{st1}{\left({\bf vStorageInp}_{st1,c,r,y,s}\right)}+pSliceWeight_{s}*\sum_{st1}{\left({\bf vStorageAInp}_{st1,c,r,y,s}\right)}\]

2.4.0.100 eqStorageOutTot: Storage total output

\[ {\bf vStorageOutTot}_{c,r,y,s} = pSliceWeight_{s}*\sum_{st1}{\left({\bf vStorageOut}_{st1,c,r,y,s}\right)}+pSliceWeight_{s}*\sum_{st1}{\left({\bf vStorageAOut}_{st1,c,r,y,s}\right)}\]

2.4.0.101 eqCost: Total costs (weighted)

\[ {\bf vTotalCost}_{r,y} = \sum_{t}{\left({\bf vTechEac}_{t,r,y}\right)}+\sum_{t}{\left(pTechRetCost_{t,r,y}*\left({\bf vTechRetiredStock}_{t,r,y}+\sum_{yp}{\left({\bf vTechRetiredNewCap}_{t,r,yp,y}\right)}\right)\right)}+\sum_{t,yp}{\left(pTechRetCost_{t,r,y}*{\bf vTechRetiredNewCap}_{t,r,yp,y}\right)}+\sum_{t}{\left({\bf vTechOMCost}_{t,r,y}\right)}+\sum_{s1}{\left({\bf vSupCost}_{s1,r,y}\right)}+\sum_{c,s}{\left(pDummyImportCost_{c,r,y,s}*pSliceWeight_{s}*{\bf vDummyImport}_{c,r,y,s}\right)}+\sum_{c,s}{\left(pDummyExportCost_{c,r,y,s}*pSliceWeight_{s}*{\bf vDummyExport}_{c,r,y,s}\right)}+\sum_{c}{\left({\bf vTaxCost}_{c,r,y}\right)}-\sum_{c}{\left({\bf vSubsCost}_{c,r,y}\right)}+\sum_{st1}{\left({\bf vStorageOMCost}_{st1,r,y}\right)}+\sum_{st1}{\left({\bf vStorageEac}_{st1,r,y}\right)}+{\bf vTradeCost}_{r,y}+{\bf vTotalUserCosts}_{r,y}\]

2.4.0.102 eqTaxCost: Commodity taxes (weighted)

\[ {\bf vTaxCost}_{c,r,y} = \sum_{s}{\left(pTaxCostOut_{c,r,y,s}*{\bf vOutTot}_{c,r,y,s}\right)}+\sum_{s}{\left(pTaxCostInp_{c,r,y,s}*{\bf vInpTot}_{c,r,y,s}\right)}+\sum_{s}{\left(pTaxCostBal_{c,r,y,s}*{\bf vBalance}_{c,r,y,s}\right)}\]

2.4.0.103 eqSubsCost: Commodity subsidy (weighted)

\[ {\bf vSubsCost}_{c,r,y} = \sum_{s}{\left(pSubCostOut_{c,r,y,s}*{\bf vOutTot}_{c,r,y,s}\right)}+\sum_{s}{\left(pSubCostInp_{c,r,y,s}*{\bf vInpTot}_{c,r,y,s}\right)}+\sum_{s}{\left(pSubCostBal_{c,r,y,s}*{\bf vBalance}_{c,r,y,s}\right)}\]

2.4.0.104 eqObjective: Objective equation NPV of total costs

\[ {\bf vObjective} = \sum_{r,y}{\left(pDiscountFactorMileStone_{r,y}*{\bf vTotalCost}_{r,y}\right)}\]

2.4.0.105 eqLECActivity: levelized costs (auxiliary equation)

\[ \sum_{s}{\left({\bf vTechAct}_{t,r,y,s}\right)} \ge pLECLoACT_{r}\]