REMIND - REgional Model of INvestments and Development

3.2.0

created with goxygen 1.3.2

Welfare (02_welfare)

Description

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!

Interfaces

Interface plot missing!

Input

module inputs (A: ineqLognormal | B: utilitarian)
  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_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_taxCO2eqHist
(ttot, all_regi)
Historic CO2 tax path in 2010 and 2015 (also in BAU!) 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_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 due to CDR technologies of each region. \(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_prodSe
(tall, all_regi, all_enty, all_enty, all_te)
se production. \(TWa\) x x

Output

module outputs
  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

Realizations

(A) ineqLognormal

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.

Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel

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 / ( (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)
                    )
                )
$if %cm_INCONV_PENALTY% == "on"  - v02_inconvPen(ttot,regi) - v02_inconvPenCoalSolids(ttot,regi)
$if "%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 entySeSyn(entySe) OR entySeFos(entySe)) ), v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt))/1e3 
            )
        )
;

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*}\]

Variables affecting inequalities: 1/ Additional energy expenditures, 2/ Additional revenues from the carbon tax

\[\begin{multline*} v02\_energyExp\_Add(ttot,regi) = \left(v02\_energyExp(ttot,regi)-p02\_energyExp\_ref(ttot,regi)\right)\$\left(cm\_emiscen ne 1\right) \end{multline*}\]

\[\begin{multline*} v02\_energyexpShare(ttot,regi) = \frac{ v02\_energyExp\_Add(ttot,regi)}{vm\_cons(ttot,regi) } \end{multline*}\]

\[\begin{multline*} v02\_taxrev\_Add(ttot,regi) = \left(\left(pm\_taxCO2eq(ttot,regi)+ pm\_taxCO2eqSCC(ttot,regi)+pm\_taxCO2eqHist(ttot,regi)\right) \cdot v02\_emitaxredistr(ttot,regi) -p02\_taxrev\_redistr0\_ref(ttot,regi)\right)\$\left(cm\_emiscen ne 1\right) \end{multline*}\]

\[\begin{multline*} v02\_revShare(ttot,regi) = \frac{ v02\_taxrev\_Add(ttot,regi)\$\left(v02\_taxrev\_Add.l(ttot,regi) ge 0\right)}{vm\_cons(ttot,regi) } \end{multline*}\]

\[\begin{multline*} v02\_damageConsShare(ttot,regi) = \frac{ 1}{\left(p02\_damConsFactor1(ttot,regi)+vm\_damageFactor(ttot,regi) \cdot p02\_damConsFactor2(ttot,regi)\right)}-1 \end{multline*}\]

\[\begin{multline*} v02\_distrAlpha(ttot,regi) = 1+1.618788-2 \cdot 0.09746092 \cdot log\left(1000 \cdot \frac{vm\_cesIO(ttot,regi,"inco")}{pm\_pop(ttot,regi)}\right) \end{multline*}\]

Defining sigma

\[\begin{multline*} v02\_distrFinal\_sigmaSq(ttot,regi) = 2 \cdot p02\_ineqTheil(ttot,regi) \cdot \left(\frac{\left(1+p02\_distrBeta(ttot,regi) \cdot v02\_revShare(ttot,regi)-v02\_distrAlpha(ttot,regi) \cdot v02\_energyexpShare(ttot,regi)\right)}{\left(1+v02\_revShare(ttot,regi)-v02\_energyexpShare(ttot,regi)\right)}\right)^{2} \end{multline*}\]

\[\begin{multline*} v02\_distrFinal\_sigmaSq\_postDam(ttot,regi) = 2 \cdot p02\_ineqTheil(ttot,regi) \cdot \left(\frac{\left(1+p02\_distrBeta(ttot,regi) \cdot v02\_revShare(ttot,regi)-v02\_distrAlpha(ttot,regi) \cdot v02\_energyexpShare(ttot,regi)-cm\_distrAlphaDam \cdot v02\_damageConsShare(ttot,regi)\right)}{\left(1+v02\_revShare(ttot,regi)-v02\_energyexpShare(ttot,regi)-v02\_damageConsShare(ttot,regi)\right)}\right)^{2} \end{multline*}\]

Defining a boundary to prevent welfare-enhancing effects

\[\begin{multline*} v02\_distrFinal\_sigmaSq\_limit(ttot,regi) = 2 \cdot p02\_ineqTheil(ttot,regi) \end{multline*}\]

\[\begin{multline*} v02\_distrFinal\_sigmaSq\_welfare(ttot,regi) = 0.5 \cdot \left(v02\_distrFinal\_sigmaSq\_postDam(ttot,regi)+v02\_distrFinal\_sigmaSq\_limit(ttot,regi)+sqrt\left(\power\left(v02\_distrFinal\_sigmaSq\_postDam(ttot,regi)-v02\_distrFinal\_sigmaSq\_limit(ttot,regi),2\right)+0.00001\right)\right) \end{multline*}\]

Adding other boundaries to prevent model from failing

\[\begin{multline*} v02\_energyexpShare(ttot,regi) \leq 0.5 \end{multline*}\]

\[\begin{multline*} 0 \leq 1 \end{multline*}\]

\[\begin{multline*} 0 \leq \left(1+v02\_revShare(ttot,regi)-v02\_energyexpShare(ttot,regi)-0.05\right) \end{multline*}\]

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: inconvinienve penalty applies only for buildings use \end{multline*}\]

\[\begin{multline*} vm\_demFeSector(ttot,regi,entySe,entyFe,sector,emiMkt) - vm\_demFeSector(ttot-1,regi,entySe,entyFe,sector,emiMkt) + v02\_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - v02\_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) = 0 \end{multline*}\]

Limitations There are no known limitations.

(B) utilitarian

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.

Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel

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 / ( (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)
                    )
                )
$if %cm_INCONV_PENALTY% == "on"  - v02_inconvPen(ttot,regi) - v02_inconvPenCoalSolids(ttot,regi)
$if "%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 entySeSyn(entySe) OR entySeFos(entySe)) ), v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt))/1e3 
            )
        )
;

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*}\]

\[\begin{multline*} vm\_demFeSector(ttot,regi,entySe,entyFe,sector,emiMkt) - vm\_demFeSector(ttot-1,regi,entySe,entyFe,sector,emiMkt) + v02\_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - v02\_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) = 0 \end{multline*}\]

Limitations There are no known limitations.

Definitions

Objects

module-internal objects (A: ineqLognormal | B: utilitarian)
  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_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

Sets

sets in use
  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
entySeSyn(all_enty) synfuel secondary energy types
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) modeling time, usually starting in 2005, but later for fixed delay runs
tall time index
te(all_te) energy technologies
ttot(tall) time index with spin up

Authors

See Also

01_macro, 23_capitalMarket, 31_fossil, 45_carbonprice, 50_damages, 51_internalizeDamages, 80_optimization, core

References