REMIND - REgional Model of INvestments and Development


created with goxygen 1.2.4

Macro-Economic Growth Module (01_macro)


The macro module allows for the implementation of different macro-economic modules.


Interfaces to other modules


module inputs (A: singleSectorGr)
  Description Unit A
cm_startyear first optimized modelling time step \(year\) x
(tall, all_regi, all_in, cesParameter)
parameters of the CES function x
(tall, all_regi, all_in, cesParameter)
quantities for the putty clay factors x
(all_regi, char, all_enty)
PE tradecosts (financial costs on import, export and use) x
difference to last timestep x
weight for linear interpolation of ttot-dependent variables x
(tall, all_regi)
data for labour \(bn people\) x
(tall, all_regi, all_enty)
abatement costs for all emissions subject to MACCs (type emiMacSector) x
(tall, all_regi, all_enty)
Secondary energy import price for region (only used in se_trade realisation). x
(tall, all_regi)
population data \(bn people\) x
risk premium that lowers the use of capital imports x
PPP ratio for calculating GDP|PPP from GDP|MER x
model status from last iteration. 1 means status 2 or 7, 0 for all other status codes x
(tall, ttot)
mapping from tall to ttot x
(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
Trade costs (final good). x
(t_n+1 - t_n-1)/2 for a timestep t_n x
value of ttot set element x
(tall, all_regi, all_enty)
Export price for region (capacity realisation). Calculated in the postsolve and corresponding to the region secondary energy price \(T\$/TWa\) x
(ttot, all_regi)
Adjustment costs for deviation from the trade structure of the last iteration. x
(ttot, all_regi)
energy system costs x
(tall, all_regi)
costs for air pollution policies x
(tall, all_regi, all_enty)
Trade technology and transportation cost x
(ttot, all_regi)
damage factor reducing GDP x
(ttot, all_regi, all_in)
damage factor reducing production factors x
(ttot, all_regi, all_in)
growth of factor efficiency x
(tall, all_regi, all_in)
adjustment costs for energy service transformations x
(ttot, all_regi, all_teEs)
investment for energy end-use capital at the energy service level x
(tall, all_regi, all_enty)
Import of traded commodity. x
(ttot, all_regi)
difference between tax volume in current and previous iteration x
(tall, all_regi, all_enty)
Export of traded commodity. x


module outputs
  Description Unit
(tall, all_regi)
Consumption per capita
(ttot, all_regi, all_in)
Investment depreciation within a period, applied to the investment of t.
(ttot, all_regi, all_in)
Investment depreciation within a period, applied to the investment of t -1.
(all_regi, all_in)
Depreciation rate of capital.
(ttot, all_regi, all_in, all_in)
Limit the share of one ppfEn in total CES nest inputs.
(ttot, all_regi)
Budget balance
(tall, all_regi, all_in)
Production factor
(tall, all_regi, all_in)
Putty-clay production factor
(ttot, all_regi)
(ttot, all_regi, all_in)
Investment into imitation
(ttot, all_regi, all_in)
Investment into innovation
(ttot, all_regi, all_in)
Investment for capital for ttot
(ttot, all_regi, all_in)
R&D investments


(A) singleSectorGr

The singleSectorGr realization corresponds to a neo-classical, single sector growth model.

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(NOT tradeCap(enty)\right)}\left( pm\_costsTradePeFinancial(regi,"Mport",enty) \cdot vm\_Mport(ttot,regi,enty)\right) + \sum_{tradePe(enty)\$\left(NOT tradeCap(enty)\right)}\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) + \sum_{tradeSe}\left( pm\_MPortsPrice(ttot,regi,tradeSe) \cdot vm\_Mport(ttot,regi,tradeSe)\right) - \sum_{tradeSe}\left( pm\_XPortsPrice(ttot,regi,tradeSe) \cdot vm\_Xport(ttot,regi,tradeSe)\right) + \sum_{tradeCap} vm\_costTradeCap(ttot,regi,tradeCap) + 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\_damageProdFactor(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))..
    (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) + pm\_cesdata(t,regi,in,"offset\_quantity") \leq pm\_ppfen\_shares(t,regi,out,in) \cdot \left(\sum\left(cesOut2cesIn(out,in2), vm\_cesIO(t,regi,in2) + pm\_cesdata(t,regi,in2,"offset\_quantity")\right)\right) \end{multline*}\]

Limit the ratio of two ppfEn:

\[\begin{multline*} vm\_cesIO(t,regi,in) + pm\_cesdata(t,regi,in,"offset\_quantity") \leq p01\_ppfen\_ratios(t,regi,in,in2) \cdot \left(vm\_cesIO(t,regi,in2) + pm\_cesdata(t,regi,in,"offset\_quantity")\right) \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))..
$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));

The singleSectorGr realization corresponds to a neo-classical, single sector growth model.

Limitations There are no known limitations.



module-internal objects (A: singleSectorGr)
  Description Unit A
(ttot, all_regi, all_in, all_in)
derivatives of production CES function x
(ttot, all_regi, all_in, all_in)
marginal rate of subsitution of CES production factors x
(ttot, all_regi, all_in)
total CES efficiency x
macro investments in 2005 x
(ttot, all_regi, all_in, all_in)
Limit ratio of two primary production factors of energy (ppfEn). x
(ttot, all_regi)
Labour balance x
(ttot, all_regi, all_in)
Production function x
(ttot, all_regi, all_in)
Putty-clay production function x
(ttot, all_regi, all_in)
Adjustment costs for macro economic investments x
(ttot, all_regi, all_in)
Capital motion equation x
(ttot, all_regi, all_in)
Putty-clay capital motion equation x
(t0, all_regi, all_in)
Initial condition for capital x
(ttot, all_regi, all_in, all_in)
Limit the share of one ppfEn in total CES nest inputs x
(ttot, all_regi, all_in, all_in)
Limit the ratio of two ppfEn x
(ttot, all_regi, all_in, all_in)
Constraints for perfect complements in the CES tree x
(ttot, all_regi, all_in, all_in)
Putty-Clay constraints for perfect complements in the CES tree x
(ttot, all_regi, all_in)
Putty-clay Correspondance between variations in input and past stocks of input x
(ttot, all_regi, all_in)
Adjustment costs of macro economic investments x


sets in use
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
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).
tradeCap(all_enty) Commodities traded via capacity mode.
tradePe(all_enty) Traded primary energy commodities
tradeSe(all_enty) Traded secondary energy commodities
ttot(tall) time index with spin up


See Also

02_welfare, 11_aerosols, 20_growth, 21_tax, 22_subsidizeLearning, 23_capitalMarket, 24_trade, 26_agCosts, 29_CES_parameters, 32_power, 35_transport, 36_buildings, 37_industry, 45_carbonprice, 50_damages, 51_internalizeDamages, 80_optimization, core