The welfare module enables the implementation of different social welfare functions. The ineqLognormal realization includes subregional inequality in the welfare function through a log-normal distribution. Any change in the utilitarian realization needs to be mirrored in the ineqLognormal realization!
Interface plot missing!
| Description | Unit | A | B | |
|---|---|---|---|---|
| cm_distrAlphaDam | income elasticity of damages for inequality | x | ||
| cm_distrBeta | elasticity of tax revenue redistribution | x | ||
| cm_emiscen | policy scenario choice | x | ||
| cm_startyear | first optimized modelling time step | \(year\) | x | x |
| pm_cesdata (tall, all_regi, all_in, cesParameter) |
parameters of the CES function | x | ||
| pm_FEPrice (ttot, all_regi, all_enty, sector, emiMkt) |
parameter to capture all FE prices across sectors and markets | \(tr\$2005/TWa\) | x | |
| pm_ies (all_regi) |
intertemporal elasticity of substitution | x | x | |
| pm_interpolWeight_ttot_tall (tall) |
weight for linear interpolation of ttot-dependent variables | x | ||
| pm_pop (tall, all_regi) |
population data | \(bn people\) | x | x |
| pm_shPPPMER (all_regi) |
PPP ratio for calculating GDP|PPP from GDP|MER | x | ||
| pm_SolNonInfes (all_regi) |
model status from last iteration. 1 means status 2 or 7, 0 for all other status codes | x | ||
| pm_tall_2_ttot (tall, ttot) |
mapping from tall to ttot | x | ||
| pm_taxCO2eq (ttot, all_regi) |
CO2 tax path in T\(/GtC =\)/kgC. To get $/tCO2, multiply with 272 | \(T\$/GtC\) | x | |
| pm_taxCO2eqRegi (tall, all_regi) |
additional regional CO2 tax path in T$/GtC = \(/kgC. To get\)/tCO2, multiply with 272 | \(T\$/GtC\) | x | |
| pm_taxCO2eqSCC (ttot, all_regi) |
carbon tax component due to damages (social cost of carbon) | x | ||
| pm_ts (tall) |
(t_n+1 - t_n-1)/2 for a timestep t_n | x | x | |
| pm_ttot_val (ttot) |
value of ttot set element | x | x | |
| sm_D2005_2_D2017 | Convert US$2005 to US$2017 | x | x | |
| sm_giga_2_non | giga to non | x | x | |
| sm_GJ_2_TWa | multiplicative factor to convert from GJ to TWa | x | x | |
| sm_tgch4_2_pgc | conversion factor 100-yr GWP from TgCH4 to PgCeq | x | ||
| sm_tgn_2_pgc | conversion factor 100-yr GWP from TgN to PgCeq | x | ||
| vm_cesIO (tall, all_regi, all_in) |
Production factor | x | x | |
| vm_cons (ttot, all_regi) |
Consumption | x | x | |
| vm_damageFactor (ttot, all_regi) |
damage factor reducing GDP | x | ||
| vm_demFeSector (ttot, all_regi, all_enty, all_enty, emi_sectors, all_emiMkt) |
fe demand per sector and emission market. Taxes should be applied to this variable or variables closer to the supply side whenever possible so the marginal prices include the tax effects. | \(TWa\) | x | x |
| vm_emiCdr (ttot, all_regi, all_enty) |
total (negative) emissions from CDR technologies of each region that are calculated in the CDR module. Note that it includes all atmospheric CO2 entering the CCUS chain (i.e. CO2 stored (CDR) AND used (not CDR)) | \(GtC\) | x | |
| vm_emiMacSector (ttot, all_regi, all_enty) |
total non-energy-related emission of each region. | \(GtC, Mt CH4, Mt N\) | x | |
| vm_emiTeMkt (tall, all_regi, all_enty, all_emiMkt) |
total energy-emissions of each region and emission market. | \(GtC, Mt CH4, Mt N\) | x | |
| vm_penSeFeSectorShareDevCost (ttot, all_regi) |
total penalty cost for secondary energy share deviation between sectors | x | x | |
| vm_prodSe (tall, all_regi, all_enty, all_enty, all_te) |
se production. | \(TWa\) | x | x |
| Description | Unit | |
|---|---|---|
| pm_prtp (all_regi) |
Pure rate of time preference | |
| pm_sccIneq (tall, all_regi) |
inequality term in SCC calculation | |
| pm_w (all_regi) |
Negishi weights | |
| pm_welf (tall) |
Weight parameter in the welfare function to avoid jumps with cm_less_TS | |
| vm_welfareGlob | Global welfare |
The ineqLognormal realization adds a representation of subregional inequality to the welfare equation. This is determined by the SSP-based Gini projections by Rao et al. and modified by the effects of climate damages and energy expenditure changes due to climate policy. It is also affected by the redistribution of carbon tax revenues, which can be distributed either proportional to income (distributionally neutral) or on an equal-per-capita basis.
The objective of the optimization is to maximize the total discounted intertemporal utility. It is summed over all regions.
\[\begin{multline*} vm\_welfareGlob = \sum_{regi}\left( pm\_w(regi) \cdot v02\_welfare(regi) \right) \end{multline*}\]
Total discounted intertemporal regional welfare calculated from per capita consumption summing over all time steps taking into account the pure time preference rate. Assuming an intertemporal elasticity of substitution of 1, it holds:
q02_welfare(regi) ..
v02_welfare(regi)
=e=
sum(ttot$( ttot.val ge 2005 ),
pm_welf(ttot)
* pm_ts(ttot)
/ ((1 + pm_prtp(regi)) ** (pm_ttot_val(ttot) - 2005))
* ( ( pm_pop(ttot,regi)
* ( ( ( ( ( vm_cons(ttot,regi)
* exp(
-0.5
* (1 / pm_ies(regi))
* v02_distrFinal_sigmaSq_welfare(ttot,regi)
)
)
/ pm_pop(ttot,regi)
)
** (1 - 1 / pm_ies(regi))
- 1
)
/ (1 - 1/pm_ies(regi))
)$( pm_ies(regi) ne 1 )
+ ( log((vm_cons(ttot,regi)) / pm_pop(ttot,regi))
- 0.5 * v02_distrFinal_sigmaSq_welfare(ttot,regi)
)$( pm_ies(regi) eq 1 )
)
)
$ifthen %cm_INCONV_PENALTY% == "on"
- v02_inconvPen(ttot,regi) - v02_inconvPenCoalSolids(ttot,regi)
$endif
$ifthen "%cm_INCONV_PENALTY_FESwitch%" == "on"
- sum((entySe,entyFe,te,sector,emiMkt)$(
se2fe(entySe,entyFe,te)
AND entyFe2Sector(entyFe,sector)
AND sector2emiMkt(sector,emiMkt)
AND (entySeBio(entySe) OR entySeFos(entySe)) ),
v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt)
+ v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt)
)
/ 1e3
$endif
$ifthen not "%cm_seFeSectorShareDevMethod%" == "off"
- vm_penSeFeSectorShareDevCost(ttot,regi)
$endif
)
)
;
Defining variables which are useful for the inequality module: 1/ Energy Expenditures 2/ Revenues from taxes
\[\begin{multline*} v02\_energyExp(ttot,regi) = \sum_{se2fe(entySe,entyFe,te)}\left( \sum_{sector2emiMkt(sector,emiMkt),entyFe2Sector(entyFe,sector)}\left( vm\_demFeSector(ttot,regi,entySe,entyFe,sector,emiMkt) \cdot pm\_FEPrice(ttot,regi,entyFe,sector,emiMkt)\right) \right) \end{multline*}\]
\[\begin{multline*} v02\_emitaxredistr(ttot,regi) = \sum_{emiMkt}\left( vm\_emiTeMkt(ttot,regi,"co2",emiMkt)+vm\_emiCdr(ttot,regi,"co2")\$sameas(emiMkt,"ETS") + sm\_tgn\_2\_pgc \cdot \left(vm\_emiTeMkt \left(ttot,regi,"n2o",emiMkt\right)+vm\_emiCdr(ttot,regi,"n2o")\$sameas(emiMkt,"ETS")\right) + sm\_tgch4\_2\_pgc \cdot \left(vm\_emiTeMkt \left(ttot,regi,"ch4",emiMkt\right)+vm\_emiCdr(ttot,regi,"ch4")\$sameas(emiMkt,"ETS")\right) \right) + vm\_emiMacSector(ttot,regi,"co2cement\_process") + sm\_tgch4\_2\_pgc \cdot \left(vm\_emiMacSector(ttot,regi,"ch4coal")+vm\_emiMacSector(ttot,regi,"ch4gas")+vm\_emiMacSector(ttot,regi,"ch4oil")\right) + sm\_tgn\_2\_pgc \cdot \left(vm\_emiMacSector(ttot,regi,"n2otrans")+vm\_emiMacSector(ttot,regi,"n2oadac")+vm\_emiMacSector(ttot,regi,"n2onitac")\right) \end{multline*}\]
Limitations There are no known limitations.
The utilitarian realization loads the utilitarian aka. Benthamite social welfare function, in which social welfare is equal to the discounted intertemporal sum of utility, which itself is a function of per capita consumption.
The objective of the optimization is to maximize the total discounted intertemporal utility. It is summed over all regions.
\[\begin{multline*} vm\_welfareGlob = \sum_{regi}\left( pm\_w(regi) \cdot v02\_welfare(regi) \right) \end{multline*}\]
Total discounted intertemporal regional welfare calculated from per capita consumption summing over all time steps taking into account the pure time preference rate. Assuming an intertemporal elasticity of substitution of 1, it holds:
q02_welfare(regi) ..
v02_welfare(regi)
=e=
sum(ttot$( ttot.val ge 2005 ),
pm_welf(ttot)
* pm_ts(ttot)
/ ((1 + pm_prtp(regi)) ** (pm_ttot_val(ttot) - 2005))
* ( ( pm_pop(ttot,regi)
* ( ( ( ( vm_cons(ttot,regi)
/ pm_pop(ttot,regi)
)
** (1 - 1 / pm_ies(regi))
- 1
)
/ (1 - 1 / pm_ies(regi))
)$( pm_ies(regi) ne 1 )
+ log(vm_cons(ttot,regi) / pm_pop(ttot,regi))$( pm_ies(regi) eq 1 )
)
)
$ifthen %cm_INCONV_PENALTY% == "on"
- v02_inconvPen(ttot,regi)
- v02_inconvPenCoalSolids(ttot,regi)
$endif
$ifthen "%cm_INCONV_PENALTY_FESwitch%" == "on"
- sum((entySe,entyFe,te,sector,emiMkt)$(
se2fe(entySe,entyFe,te)
AND entyFe2Sector(entyFe,sector)
AND sector2emiMkt(sector,emiMkt)
AND (entySeBio(entySe) OR entySeFos(entySe)) ),
v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt)
+ v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt)
)
/ 1e3
$endif
$ifthen not "%cm_seFeSectorShareDevMethod%" == "off"
- vm_penSeFeSectorShareDevCost(ttot,regi)
$endif
)
)
;
Calculation of the inconvenience penalty:
\[\begin{multline*} v02\_inconvPen(t,regi) \geq \cdot ' local air pollution for all entySe production except for coal solids \left(=sesofos\right), which is treated separately \left(see below\right) SUM\left(pe2se(enty,entySe,te)\$\left(NOT sameas(entySe,"sesofos")\right), p02\_inconvpen\_lap(t,regi,te) \cdot vm\_prodSe(t,regi,enty,entySe,te) \right) \end{multline*}\]
\[\begin{multline*} v02\_inconvPenCoalSolids(t,regi) \geq \cdot ' local air pollution for coal: inconvinience penalty applies only for buildings use \end{multline*}\]
Limitations There are no known limitations.
| Description | Unit | A | B | |
|---|---|---|---|---|
| f02_damConsFactor (all_regi, dam_factors) |
for translating output to consumption losses from KW damage function | x | ||
| f02_ineqTheil (tall, all_regi, all_GDPscen) |
Gini data | x | ||
| p02_cons_ref (ttot, all_regi) |
consumption in reference run | x | ||
| p02_damageFactor_ref (ttot, all_regi) |
damage factor in reference run | x | ||
| p02_damConsFactor1 (ttot, all_regi) |
factor translating output damages to consumption losses | x | ||
| p02_damConsFactor2 (ttot, all_regi) |
factor translating output damages to consumption losses | x | ||
| p02_distrAlpha (ttot, all_regi) |
income elasticity of mitigation costs | x | ||
| p02_distrBeta (ttot, all_regi) |
income elasticity of revenues redistribution | x | ||
| p02_distrMu (ttot, all_regi) |
mu of lognormal distribution (prior to mitigation costs) | x | ||
| p02_distrSigma (ttot, all_regi) |
sigma of lognormal distribution (prior to mitigation costs) | x | ||
| p02_energyExp_ref (ttot, all_regi) |
regional energy expenditure in the reference scenario | x | ||
| p02_inconvpen_lap (ttot, all_regi, all_te) |
Parameter for inconvenience penalty for local air pollution. | \(T\$/TWa at Consumption of 1000\$/cap\) | x | x |
| p02_inconvPen_Switch_Track (ttot, all_regi) |
Parameter to track magnitude of inconvenience penalty for bio/synfuel share switching | \(share of consumption\) | x | x |
| p02_ineqTheil (ttot, all_regi) |
regional Theil-T index = sigma^2/2 for lognormal | x | ||
| p02_prodFe_ref (ttot, all_regi, all_enty, all_enty, all_te) |
final energy in ref | x | ||
| p02_taxrev_redistr0_ref (ttot, all_regi) |
tax revenue in the reference run | x | ||
| q02_budget_first (ttot, all_regi) |
making sure budget is positive | x | ||
| q02_budget_second (ttot, all_regi) |
making sure budget is positive | x | ||
| q02_consLossShare (ttot, all_regi) |
share of consumption loss from damages | x | ||
| q02_distrAlpha (ttot, all_regi) |
income elasticity of mitigation costs | x | ||
| q02_distrFinal_sigmaSq (ttot, all_regi) |
sigma^2 parameter of lognormal final distribution (after costs and taxes) | x | ||
| q02_distrFinal_sigmaSq_limit (ttot, all_regi) |
sigma limit | x | ||
| q02_distrFinal_sigmaSq_postDam (ttot, all_regi) |
sigma^2 parameter of lognormal final distribution (after costs, taxes and damages) | x | ||
| q02_distrFinal_sigmaSq_welfare (ttot, all_regi) |
sigma^2 entering welfare equation after applying the limit | x | ||
| q02_emitaxredistr (ttot, all_regi) |
emissions that will be taxes and redistributed | x | ||
| q02_energyExp (ttot, all_regi) |
regional energy expenditure | x | ||
| q02_energyExp_Add (ttot, all_regi) |
regional additional energy expenditure w.r.t. reference run | x | ||
| q02_energyexpShare (ttot, all_regi) |
additional energy exp w.r.t. reference run as a share of consumption | x | ||
| q02_energyexpShare_cap (ttot, all_regi) |
cap energy expenditure share | x | ||
| q02_inconvPen (ttot, all_regi) |
Calculate the inconvenience penalty v02_inconvPen | x | x | |
| q02_inconvPenCoalSolids (ttot, all_regi) |
Calculate the inconvenience penalty v02_inconvPen | x | x | |
| q02_inconvPenFeBioSwitch (ttot, all_regi, all_enty, all_enty, all_te, emi_sectors, all_emiMkt) |
Calculate the inconvenience penalty to avoid switching biomass and synfuel shares in hydrocarbons in buildings, transport and industry and emissions markets if costs are relatively close | x | x | |
| q02_relTaxlevels (ttot, all_regi) |
relative tax revenues | x | ||
| q02_taxrev_Add (ttot, all_regi) |
tax revenue w.r.t. reference run | x | ||
| q02_welfare | Regional welfare | x | x | |
| q02_welfareGlob | Global welfare | x | x | |
| v02_damageConsShare (ttot, all_regi) |
share of consumption loss from damages in consumption | x | ||
| v02_distrAlpha (ttot, all_regi) |
income elasticity of mitigation costs | x | ||
| v02_distrFinal_sigmaSq (ttot, all_regi) |
sigma^2 parameter of final lognormal distribution (after redistributional effects of taxes) | x | ||
| v02_distrFinal_sigmaSq_limit (ttot, all_regi) |
Limit past which inequality improvements do not lead to welfare benefits | x | ||
| v02_distrFinal_sigmaSq_postDam (ttot, all_regi) |
sigma^2 parameter of final lognormal distribution (after redistributional effects of taxes and damages) | x | ||
| v02_distrFinal_sigmaSq_welfare (ttot, all_regi) |
sigma^2 entering welfare | x | ||
| v02_emitaxredistr (ttot, all_regi) |
emissions that will be taxes and redistributed | x | ||
| v02_energyExp (ttot, all_regi) |
regional energy expenditure | x | ||
| v02_energyExp_Add (ttot, all_regi) |
additional energy expenditure w.r.t. reference run | x | ||
| v02_energyexpShare (ttot, all_regi) |
relative additional energy expenditure w.r.t. reference run | x | ||
| v02_inconvPen (ttot, all_regi) |
Inconvenience penalty in the welfare function, e.g. for air pollution. Unit: ?Utils? | x | x | |
| v02_inconvPenCoalSolids (ttot, all_regi) |
Inconvenience penalty in the welfare function, e.g. for air pollution. Unit: ?Utils? | x | x | |
| v02_NegInconvPenFeBioSwitch (ttot, all_regi, all_enty, all_enty, emi_sectors, all_emiMkt) |
Negative inconvenience penalty in the welfare function for bio/synfuel shares switch between sectors and emissions markets | x | x | |
| v02_PosInconvPenFeBioSwitch (ttot, all_regi, all_enty, all_enty, emi_sectors, all_emiMkt) |
Positive inconvenience penalty in the welfare function for bio/synfuel shares switch between sectors and emissions markets | x | x | |
| v02_revShare (ttot, all_regi) |
tax revenues (share of consumption) | x | ||
| v02_sesoInconvPenSlack (ttot, all_regi) |
Slack to avoid negative inconvenience penalty for Coal Solids | x | x | |
| v02_taxrev_Add (ttot, all_regi) |
tax revenue w.r.t. reference run | x | ||
| v02_welfare (all_regi) |
Regional welfare | x | x |
| description | |
|---|---|
| all_emiMkt | emission markets |
| all_enty | all types of quantities |
| all_GDPscen | all possible GDP scenarios |
| all_in | all inputs and outputs of the CES function |
| all_regi | all regions |
| all_te | all energy technologies, including from modules |
| cesParameter | parameters of the CES functions and for calibration |
| cm_GDPscen | cm_GDPscen as set for use in GDX |
| dam_factors | damage conversion factors output to consumption |
| damscens | scenarios for which the conversion factor from output to consumption loss is available |
| emi_sectors | comprehensive sector set used for more detailed emissions accounting (REMIND-EU) and for CH4 tier 1 scaling - potentially to be integrated with similar set all_exogEmi |
| enty(all_enty) | all types of quantities |
| entyFe(all_enty) | final energy types. |
| entyFe2Sector(all_enty, emi_sectors) | final energy (stationary and transportation) mapping to sectors (industry, buildings, transportation and cdr) |
| entySe(all_enty) | secondary energy types |
| entySeBio(all_enty) | biomass secondary energy types |
| entySeFos(all_enty) | secondary energy types from fossil primary energy |
| in(all_in) | All inputs and outputs of the CES function |
| modules | all the available modules |
| pe2se(all_enty, all_enty, all_te) | map primary energy carriers to secondary |
| regi(all_regi) | all regions used in the solution process |
| run | iterator for performance test iterations |
| se2fe(all_enty, all_enty, all_te) | map secondary energy to end-use energy using a technology |
| sector2emiMkt(emi_sectors, all_emiMkt) | mapping sectors to emission markets |
| t(ttot) | optimisation time, years between cm_startyear and 2150 with 5 to 20 years time steps |
| tall | time index, each year from 1900 to 3000 |
| te(all_te) | energy technologies |
| ttot(tall) | time index with spin-up, years between 1900 and 2150 with 5 to 20 years time steps |
01_macro, 23_capitalMarket, 31_fossil, 45_carbonprice, 50_damages, 51_internalizeDamages, 80_optimization, core