The macro module allows for the implementation of different macro-economic modules.
Description | Unit | A | |
---|---|---|---|
cm_startyear | first optimized modelling time step | \(year\) | x |
pm_cesdata (tall, all_regi, all_in, cesParameter) |
parameters of the CES function | x | |
pm_cesdata_putty (tall, all_regi, all_in, cesParameter) |
quantities for the putty clay factors | x | |
pm_costsTradePeFinancial (all_regi, char, all_enty) |
PE tradecosts (financial costs on import, export and use) | x | |
pm_dt (tall) |
difference to last timestep | x | |
pm_interpolWeight_ttot_tall (tall) |
weight for linear interpolation of ttot-dependent variables | x | |
pm_lab (tall, all_regi) |
data for labour | \(bn people\) | x |
pm_macCost (tall, all_regi, all_enty) |
abatement costs for all emissions subject to MACCs (type emiMacSector) | x | |
pm_pop (tall, all_regi) |
population data | \(bn people\) | x |
pm_risk_premium (all_regi) |
risk premium that lowers the use of capital imports | 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_totLUcosts (tall, all_regi) |
Total landuse costs (agriculture, bioenergy, MAC, etc). In standalone runs MAC costs are substituted by costs from the endogenous REMIND-MAC | \(T\$US\) | x |
pm_tradecostgood (all_regi) |
Trade costs (final good). | x | |
pm_ts (tall) |
(t_n+1 - t_n-1)/2 for a timestep t_n | x | |
pm_ttot_val (ttot) |
value of ttot set element | x | |
vm_costAdjNash (ttot, all_regi) |
Adjustment costs for deviation from the trade structure of the last iteration. | x | |
vm_costEnergySys (ttot, all_regi) |
energy system costs | x | |
vm_costpollution (tall, all_regi) |
costs for air pollution policies | x | |
vm_damageFactor (ttot, all_regi) |
damage factor reducing GDP | x | |
vm_effGr (ttot, all_regi, all_in) |
growth of factor efficiency | x | |
vm_enerSerAdj (tall, all_regi, all_in) |
adjustment costs for energy service transformations | x | |
vm_esCapInv (ttot, all_regi, all_teEs) |
investment for energy end-use capital at the energy service level | x | |
vm_Mport (tall, all_regi, all_enty) |
Import of traded commodity. | x | |
vm_taxrev (ttot, all_regi) |
difference between tax volume in current and previous iteration | x | |
vm_Xport (tall, all_regi, all_enty) |
Export of traded commodity. | x |
Description | Unit | |
---|---|---|
pm_consPC (tall, all_regi) |
Consumption per capita | |
pm_cumDeprecFactor_new (ttot, all_regi, all_in) |
Investment depreciation within a period, applied to the investment of t. | |
pm_cumDeprecFactor_old (ttot, all_regi, all_in) |
Investment depreciation within a period, applied to the investment of t -1. | |
pm_delta_kap (all_regi, all_in) |
Depreciation rate of capital. | |
pm_ppfen_ratios (all_in, all_in) |
Limit ratio of two primary production factors of energy (ppfEn). | |
pm_ppfen_shares (all_in, all_in) |
Limit the share of one ppfEn in total CES nest inputs. | |
qm_budget (ttot, all_regi) |
Budget balance | |
vm_cesIO (tall, all_regi, all_in) |
Production factor | |
vm_cesIOdelta (tall, all_regi, all_in) |
Putty-clay production factor | |
vm_cons (ttot, all_regi) |
Consumption | |
vm_invImi (ttot, all_regi, all_in) |
Investment into imitation | |
vm_invInno (ttot, all_regi, all_in) |
Investment into innovation | |
vm_invMacro (ttot, all_regi, all_in) |
Investment for capital for ttot | |
vm_invRD (ttot, all_regi, all_in) |
R&D investments |
The singleSectorGr realization corresponds to a neo-classical, single sector growth model.
Usable macroeconomic output - net of climate change damages - is calculated from the macroeconomic output, taking into account export and import of the final good, taking specific trade costs into account, which are assigned to the importer. The resulting output is used for consumption, for investments into the capital stock, and for the energy system cost components investments, fuel costs and operation & maintenance. Other additional costs like non-energy related greenhouse gas abatement costs and agricultural costs, which are delivered by the land use model MAgPIE, are deduced from disposable output. Net tax revenues and adjustment costs converge to zero in the optimal solution (equilibrium point).
\[\begin{multline*} vm\_cesIO(ttot,regi,"inco") \cdot vm\_damageFactor(ttot,regi) - vm\_Xport(ttot,regi,"good") + vm\_Mport(ttot,regi,"good") \cdot \left(1 - pm\_tradecostgood(regi) - pm\_risk\_premium(regi)\right) \geq vm\_cons(ttot,regi) + \sum_{ppfKap(in)} vm\_invMacro(ttot,regi,in) + \sum_{ppfKap(in)} v01\_invMacroAdj(ttot,regi,in) + \sum_{in} vm\_invRD(ttot,regi,in) + \sum_{in} vm\_invInno(ttot,regi,in) + \sum_{in} vm\_invImi(ttot,regi,in) + \sum_{tradePe(enty)}\left( pm\_costsTradePeFinancial(regi,"Mport",enty) \cdot vm\_Mport(ttot,regi,enty)\right) + \sum_{tradePe(enty)}\left( \left(pm\_costsTradePeFinancial(regi,"Xport",enty) \cdot vm\_Xport(ttot,regi,enty)\right) \cdot \left( 1 + \left(\frac{ pm\_costsTradePeFinancial(regi,"XportElasticity",enty) }{ sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right) } \cdot \left(\frac{ vm\_Xport(ttot,regi,enty) }{ \left( vm\_Xport(ttot-1,regi,enty) + pm\_costsTradePeFinancial\left(regi, "tradeFloor",enty\right) \right) }- 1 \right) \right)\$\left( ttot.val ge max\left(2010, cm\_startyear\right) \right) \right) \right) + vm\_taxrev(ttot,regi)\$\left(ttot.val ge 2010\right) + vm\_costAdjNash(ttot,regi) + \sum_{in\_enerSerAdj(in)} vm\_enerSerAdj(ttot,regi,in) + \sum_{teEs} vm\_esCapInv(ttot,regi,teEs) + vm\_costpollution(ttot,regi) + pm\_totLUcosts(ttot,regi) + \sum_{enty\$\left(emiMacSector(enty) \& \left(NOT emiMacMagpie(enty)\right)\right)} pm\_macCost(ttot,regi,enty) + vm\_costEnergySys(ttot,regi) \end{multline*}\]
The labor available in every time step and every region comes from exogenous data. It is the population corrected by the population age structure, which results in the labour force of people agged 15 to 65. The labor participation rate is not factored into the labour supply (as it would only imply a rescaling of parameters without consequences for the model’s dynamic). The labour market balance equation reads as follows:
\[\begin{multline*} vm\_cesIO(t,regi,"lab") = pm\_lab(t,regi) \end{multline*}\]
The production function is a nested CES (constant elasticity of substitution) production function. The macroeconomic output is generated by the inputs capital, labor, and total final energy (as a macro-ecoomic aggregate in $US units). The generation of total final energy is described by a CES production function as well, whose input factors are CES function outputs again. Hence, the outputs of CES nests are intermediates measured in $US units. According to the Euler-equation the value of the intermediate equals the sum of expenditures for the inputs. Sector-specific final energy types represent the bottom end of the `CES-tree’. These ‘CES leaves’ are measured in physical units and have a price in $US per physical unit. The top of the tree is the total economic output measured in $US. The following equation is the generic form of the production function. It treats the various CES nests separately and the nests are inter-connetected via mappings. This equation calculates the amount of intermediate output in a time-step and region from the associated factor input amounts according to:
\[\begin{multline*} vm\_cesIO(t,regi,out) = \sum_{cesOut2cesIn(out,in)}\left( pm\_cesdata(t,regi,in,"xi") \cdot \left( pm\_cesdata(t,regi,in,"eff") \cdot vm\_effGr(t,regi,in) \cdot vm\_cesIO(t,regi,in) \right) ^{ pm\_cesdata(t,regi,out,"rho") }\right) ^{ \left(\frac{1 }{ pm\_cesdata(t,regi,out,"rho")}\right) } \end{multline*}\]
Constraints for perfect complements in the CES tree
\[\begin{multline*} vm\_cesIO(t,regi,in) = pm\_cesdata(t,regi,in2,"compl\_coef") \cdot vm\_cesIO(t,regi,in2) \end{multline*}\]
The capital stock is claculated recursively. Its amount in the previous time step is devaluated by an annual depreciation factor and enlarged by investments. Both depreciation and investments are expressed as annual values, so the time step length is taken into account.
q01_kapMo(ttot,regi,ppfKap(in))$( ( NOT in_putty(in)) AND (ord(ttot) lt card(ttot)) AND (pm_ttot_val(ttot+1) ge max(2010, cm_startyear)) AND (pm_cesdata("2005",regi,in,"quantity") gt 0))..
vm_cesIO(ttot+1,regi,in)
=e=
(1- pm_delta_kap(regi,in))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * vm_cesIO(ttot,regi,in)
$ifthen setGlobal END2110
+ pm_ts(ttot)*vm_invMacro(ttot,regi,in)*0.94**5 - (0.5*pm_ts(ttot)*vm_invMacro(ttot,regi,in)*0.94**5)$(ord(ttot) eq card(ttot));
Adjustment costs of macro economic investments:
\[\begin{multline*} v01\_invMacroAdj(ttot,regi,in) = sqr\left(\frac{\frac{ \left(vm\_invMacro(ttot,regi,in)-vm\_invMacro(ttot-1,regi,in)\right) }{ \left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right) }}{ \left(vm\_invMacro(ttot,regi,in)+0.0001\right) }\right) \cdot \frac{ vm\_cesIO(ttot,regi,in) }{ 11 } \end{multline*}\]
Initial conditions for capital:
\[\begin{multline*} vm\_cesIO(t,regi,in) = pm\_cesdata(t,regi,in,"quantity") \end{multline*}\]
Limit the share of one ppfEn in total CES nest inputs:
\[\begin{multline*} vm\_cesIO(t,regi,in) \leq pm\_ppfen\_shares(out,in) \cdot \sum_{cesOut2cesIn(out,in2)} vm\_cesIO(t,regi,in2) \end{multline*}\]
Limit the ratio of two ppfEn:
\[\begin{multline*} vm\_cesIO(t,regi,in) \leq pm\_ppfen\_ratios(in,in2) \cdot vm\_cesIO(t,regi,in2) \end{multline*}\]
Putty-Clay production function:
\[\begin{multline*} vm\_cesIOdelta(t,regi,out) = \sum_{cesOut2cesIn(out,in)}\left( pm\_cesdata(t,regi,in,"xi") \cdot \left( pm\_cesdata(t,regi,in,"eff") \cdot vm\_effGr(t,regi,in) \cdot vm\_cesIOdelta(t,regi,in) \right) ^{ pm\_cesdata(t,regi,out,"rho") }\right) ^{ \left(\frac{1 }{ pm\_cesdata(t,regi,out,"rho")}\right) } \end{multline*}\]
Putty-Clay constraints for perfect complements in the CES tree:
\[\begin{multline*} vm\_cesIOdelta(t,regi,in) = pm\_cesdata(t,regi,in2,"compl\_coef") \cdot vm\_cesIOdelta(t,regi,in2) \end{multline*}\]
Correspondance between vm_cesIO and vm_cesIOdelta:
\[\begin{multline*} vm\_cesIO(ttot+1,regi,in) = vm\_cesIO(ttot,regi,in) \cdot \left(1- pm\_delta\_kap(regi,in)\right)^{\left(pm\_ttot\_val(ttot+1)-pm\_ttot\_val(ttot)\right) }+ pm\_cumDeprecFactor\_old(ttot+1,regi,in) \cdot vm\_cesIOdelta(ttot,regi,in) + pm\_cumDeprecFactor\_new(ttot+1,regi,in) \cdot vm\_cesIOdelta(ttot+1,regi,in) \end{multline*}\]
Capital motion equation for putty clay capital:
q01_kapMo_putty(ttot,regi,in_putty(in))$(ppfKap(in) AND (ord(ttot) le card(ttot)) AND (pm_ttot_val(ttot) ge max(2005, cm_startyear)) AND (pm_cesdata("2005",regi,in,"quantity") gt 0))..
vm_cesIOdelta(ttot,regi,in)
=e=
0
$ifthen setGlobal END2110
+ pm_ts(ttot)*vm_invMacro(ttot,regi,in)*0.94**5 - (0.5*pm_ts(ttot)*vm_invMacro(ttot,regi,in)*0.94**5)$(ord(ttot) eq card(ttot));
Limitations There are no known limitations.
Description | Unit | A | |
---|---|---|---|
p01_boundInvMacro (all_regi) |
macro investments in 2005 | x | |
q01_balLab (ttot, all_regi) |
Labour balance | x | |
q01_cesIO (ttot, all_regi, all_in) |
Production function | x | |
q01_cesIO_puttyclay (ttot, all_regi, all_in) |
Putty-clay production function | x | |
q01_invMacroAdj (ttot, all_regi, all_in) |
Adjustment costs for macro economic investments | x | |
q01_kapMo (ttot, all_regi, all_in) |
Capital motion equation | x | |
q01_kapMo_putty (ttot, all_regi, all_in) |
Putty-clay capital motion equation | x | |
q01_kapMo0 (t0, all_regi, all_in) |
Initial condition for capital | x | |
q01_limitShPpfen (ttot, all_regi, all_in, all_in) |
Limit the share of one ppfEn in total CES nest inputs | x | |
q01_limtRatioPpfen (ttot, all_regi, all_in, all_in) |
Limit the ratio of two ppfEn | x | |
q01_prodCompl (ttot, all_regi, all_in, all_in) |
Constraints for perfect complements in the CES tree | x | |
q01_prodCompl_putty (ttot, all_regi, all_in, all_in) |
Putty-Clay constraints for perfect complements in the CES tree | x | |
q01_puttyclay (ttot, all_regi, all_in) |
Putty-clay Correspondance between variations in input and past stocks of input | x | |
v01_invMacroAdj (ttot, all_regi, all_in) |
Adjustment costs of macro economic investments | x |
description | |
---|---|
all_enty | all types of quantities |
all_in | all inputs and outputs of the CES function |
all_regi | all regions |
all_teEs | energy service technologies |
cesLevel2cesIO(counter, all_in) | CES tree structure by level |
cesOut2cesIn(all_in, all_in) | CES tree structure |
cesOut2cesIn_below(all_in, all_in) | All elements of the CES below located below the first item given |
cesParameter | parameters of the CES functions and for calibration |
cesRev2cesIO(counter, all_in) | CES tree structure by level - descending order |
char | characteristics of technologies |
complements_ref(all_in, all_in) | Correspondence between complementary factors. Necessary to have a reference factor for the constraints equations |
counter | helper set to facilitate looping in defined order |
emiMacMagpie(all_enty) | types of climate-relevant non-energy emissions with mac curve where baseline emissions come from MAgPIE only |
emiMacSector(all_enty) | types of climate-relevant non-energy emissions with mac curve. Emissions in this set HAVE to be in emiMac2mac as well - if no MAC is available it will be set to zero automatically. |
enty(all_enty) | all types of quantities |
in(all_in) | All inputs and outputs of the CES function |
in_below_putty(all_in) | All elements of the CES below ppf_putty, excluding ppf_putty. Only meaningful in case putty structures are not intertwined |
in_complements(all_in) | Factors which are perfect complements |
in_enerSerAdj(all_in) | Energy services factors which should be constrained by adjustment costs |
in_industry_dyn37(all_in) | all inputs and outputs of the CES function - industry |
in_putty(all_in) | Production factors subject to putty-clay dynamics |
industry_ue_calibration_target_dyn37(all_in) | target values of industry calibration |
ipf(all_in) | All intermediate production factors |
ipf_putty(all_in) | All putty-clay intermediate production factors |
modules | all the available modules |
nests_putty(all_in, all_in) | Defines factors which are in the same putty subnest. The first all_in gives the higher factors of the subnest |
ppf(all_in) | All primary production factors |
ppf_putty(all_in) | All putty-clay primary production factors |
ppfEn(all_in) | Primary production factors energy |
ppfIO_putty(all_in) | Factors treated in the normal CES as ppf and in putty-clay as output |
ppfKap(all_in) | Primary production factors capital |
regi(all_regi) | all regions used in the solution process |
t(ttot) | modeling time, usually starting in 2005, but later for fixed delay runs |
t0(tall) | start of modelling time, not optimization |
tall | time index |
teEs(all_teEs) | ES technologies which are actually used (to be filled by module realizations). |
tradePe(all_enty) | Traded primary energy commodities |
ttot(tall) | time index with spin up |
02_welfare, 11_aerosols, 20_growth, 21_tax, 22_subsidizeLearning, 23_capitalMarket, 24_trade, 26_agCosts, 29_CES_parameters, 32_power, 36_buildings, 37_industry, 38_stationary, 45_carbonprice, 50_damages, 51_internalizeDamages, 80_optimization, core