REMIND - REgional Model of INvestments and Development

3.0.0

created with goxygen 1.2.4

CES parameters (29_CES_parameters)

Description

The CES parameters module either loads CES parameters or calibrates new CES parameters.

Interfaces

Interfaces to other modules

Input

module inputs (A: calibrate | B: load)
  Description Unit A B
cm_GDPcovid GDP correction for covid x
pm_calibrate_eff_scale
(all_in, all_in, eff_scale_par)
parameters for scaling efficiencies in CES calibration x
pm_cesdata
(tall, all_regi, all_in, cesParameter)
parameters of the CES function x x
pm_cesdata_putty
(tall, all_regi, all_in, cesParameter)
quantities for the putty clay factors x
pm_cesdata_sigma
(ttot, all_in)
elasticities of substitution x
pm_cumDeprecFactor_new
(ttot, all_regi, all_in)
Investment depreciation within a period, applied to the investment of t. x
pm_cumDeprecFactor_old
(ttot, all_regi, all_in)
Investment depreciation within a period, applied to the investment of t -1. x
pm_delta_kap
(all_regi, all_in)
Depreciation rate of capital. x
pm_dt
(tall)
difference to last timestep x
pm_energy_limit
(all_in)
x
pm_fedemand
(tall, all_regi, all_in)
final energy demand x
pm_gdp
(tall, all_regi)
GDP data \(trn US\$ 2005\) x
pm_lab
(tall, all_regi)
data for labour \(bn people\) x
pm_shPPPMER
(all_regi)
PPP ratio for calculating GDP|PPP from GDP|MER x
pm_ttot_val
(ttot)
value of ttot set element x
pm_ue_eff_target
(all_in)
energy efficiency target trajectories \(\% p.a.\) x
sm_EJ_2_TWa multiplicative factor to convert from EJ to TWa x
sm_mega_2_non mega to non x
sm_tmp temporary scalar that can be used locally x
sm_tmp2 temporary scalar that can be used locally x
sm_trillion_2_non trillion to non x
sm_TWa_2_kWh tera Watt year to kilo Watt hour x
vm_cesIO
(tall, all_regi, all_in)
Production factor x
vm_cesIOdelta
(tall, all_regi, all_in)
Putty-clay production factor x
vm_deltaCap
(tall, all_regi, all_te, rlf)
capacity additions x
vm_effGr
(ttot, all_regi, all_in)
growth of factor efficiency x

Output

Realizations

(A) calibrate

The macro-calibration takes place in modules/29_CES_parameters/calibration/. The calibration itself is in the file preloop.gms.

The aim of the calibration is to provide the efficiency parameters of the CES tree for each time step and each region. Efficiency parameters have a strong influence on the level of energy demanded by the CES-tree to the energy system module. In order to avoid ad hoc assumptions on the level of these parameters, the new macro-calibration procedure loads exogenous energy demand pathways and ensures that a baseline REMIND run will meet these trajectories.

How to calibrate Remind

  1. the energy demand pathways will be selected automatically in input/pm_fe_demand.cs4r according to the modules selected and the SSP scenario chosen. If you wish to modify the pathways, refer to the mrremind library, which provides the pm_fe_demand.cs4r file.
  2. Select/Add the scenarios of interest in scenario_config_calibrateSSPs.csv and copy it to scenario_config.csv.
  3. Rscript start_bundle.R or similar command
  4. After the runs are finished, look at CES calibration report_RunName.pdf in the output folder
  1. If everything went well, you will see in the output folder a couple of files:
  1. One of these files should be copied to modules/29_CES_parameters/load/input, by removing the _ITERATION_IterationNumber of the file chosen. Generally, you can take the 10th iteration (_ITERATION_10.inc) So if you are in the output folder of your run: cp indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_1.inc ../../modules/29_CES_parameters/load/input/indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1.inc *KEEP THE SAME NAME WITH THE EXCEPTION OF THE _ITERATION_XX PART*
  2. Upload in GIT

How the calibration works

1. Principle

The calibration adapts the efficiency parameters of the CES function so that GDP and FE trajectories are met.

Efficiency parameters are divided in three dimensions: the efficiency parameter, the efficiency growth parameter, and the income share parameter. The efficiency growth parameter captures both the growth in efficiency and in the income share. So, this is the only time-variant parameter. The income share parameter hence represents the 2005 income share.

The calibration has to fulfill two constraints: an economical constraint and a technological constraint. The technological constraint only means that the inputs of the CES function must yield the desired output. At this stage, there is no economical consideration at all. During a REMIND run however, the model will strive to find out the most efficient solution in terms of costs. So, the second constraint is an economical constraint. The derivatives of the CES function, i.e. the marginal increase in income from increasing the considered input by one unit, must equal the price of that input, i.e. the marginal cost.

2. Inputs

In order to calibrate the CES tree of Remind, you will need

trajectories for labour, GDP and final energy carriers/energy services (ppfen) quantities, usually provided by EDGE. We also need the capital quantities pathways.

If you are calibrating a new CES structure (added/removed branches to/from the CES tree), you will also maybe need to adjust the value of cm_CES_calibration_default_prices, which serves as fallback prices for calculating CES parameters in the first calibration iteration.

Strictly speaking, the price only have to be larger than 0, but the closer the prices are to the “real” ones, the faster the calibration will converge. It is therefore advisable to use the prices of some substitute energy carrier/service. The prices give the indication of the marginal cost of each input, and thus represent the economical constraint.

The information on final energy quantities is stored in ./modules/29_CES_parameters/calibration/input/, read in ./modules/29_CES_parameters/calibration/datainput.gms in the parameter pm_fedemand and loaded in ./modules/29_CES_parameters/calibration/input/ and transfered to pm_cesdata(,,,"quantity") in ./modules/29_CES_parameters/calibration/datainput.gms The information on labour and GDP is stored and read somewhere else in the model in the parameters p_lab and pm_gdp, respectively. The information on capital quantities is stored in ./modules/29_CES_parameters/calibrate/input/p29_capitalQuantity.cs4r and loaded in ./modules/29_CES_parameters/calibration/datainput.gms in the parameter p29_capitalQuantity.

3. A calibration in several iterations

The calibration operates in several iterations. In each iteration, the nested CES function is adapted so that the exogenous final energy pathways and the exogenous GDP and labour trajectories correspond. Each iteration only differs from the others in the prices that are provided to the calibration. They represent the feedback from the energy system module. These prices are provided exogenously (or computed from input.gdx) for the first iteration, and are derived from a REMIND run for the next iteration. The assumption is that by adjusting the efficiency parameters in each iteration, the efficiency parameters converge towards a stable value. The steps to be followed between each iteration (start REMIND, store the fulldata.gdx under a different name, create the file to be used in the load mode) is contained in the function submit.R.

The following paragraphs describe the calculations happening in each of the iteration i.e in preloop.gms.

4. Computation of prices

In the first iteration, for a new CES structure, there is no gdx file that could provide directly the equilibrium prices of the CES ppfen. Therefore, exogenous price trajectories must be provided. Switch cfg$gms$c_CES_calibration_new_structure to 1 in config/default.cfg in case you want to use exogenous prices for the first iteration. For other iterations, or if the structure is the one from the input.gdx, the equilibrium prices will be computed. They are computed as the derivative of GDP in terms of each input. By the chain rule, the derivatives of each level of the CES-tree must be multiplied to obtain the desired derivative.

Primary production factor (ppf) prices are thus calculated as the derivatives of the production function.

\(V_o = \left( \sum_{(o,i)} \xi_i \left( \theta_i \delta_i V_i \right)^{\rho_o} \right)^{1/\rho_o}\)

where \(\xi\) is the income share, \(\theta\) the efficiency parameter, \(\delta\) the efficiency growth, \(\rho\) a parameter derived from the substitution elasticity, \(i,o\) the elements of the input and output sets, respectively.

\(\pi_i = \xi_i \theta_i \delta_i \ V_o^{1 - \rho_o} \ \left(\theta_i \delta_i V_i\right)^{\rho_o - 1}\)


*** Compute ppf prices from CES derivatives of previous run
p29_CESderivative(t,regi,ces(out,in))$( vm_cesIO.l(t,regi,in) gt 0 )
=
pm_cesdata(t,regi,in,"xi")
* pm_cesdata(t,regi,in,"eff")
* vm_effGr.l(t,regi,in)

* vm_cesIO.l(t,regi,out)
** (1 - pm_cesdata(t,regi,out,"rho"))

* ( pm_cesdata(t,regi,in,"eff")
* vm_effGr.l(t,regi,in)
* vm_cesIO.l(t,regi,in)
)
** (pm_cesdata(t,regi,out,"rho") - 1);
;

*** Propagate price down the CES tree
loop ((ceslev(counter,in),ces(in,in2),ces2(in2,in3)),
p29_CESderivative(t,regi,"inco",in3)
= p29_CESderivative(t,regi,"inco",in2)
* p29_CESderivative(t,regi,in2,in3);
);

*** Prices of intermediate production factors are all 1
p29_CESderivative(t,regi,in,ipf(in2))$( p29_CESderivative(t,regi,in,in2) ) = 1;

In the code, the “propagation” part corresponds to the chain rule. The prices of the intermediate production factors are set to one, so that the prices of ppfen correspond to their price in terms of GDP. The efficiencies of the intermediate production factors will be changed accordingly, so that their derivative is equal to one.

Depending upon the setting, prices are then smoothed in the early years of the simulation.

5. Calculation of Intermediate Production Factors

The economical constraint tells us that the prices are equal to the derivatives.

\(\pi_i = \frac{\partial V_o(V_1,..., V_i,...,V_n)}{\partial V_i}\)

The technological constraint tells us, following the Euler’s rule, that, for homogenous functions of degree one (as it is the case here), the output is equal to the sum of the derivatives times the quantity of inputs.

\(V_o = \sum_{(o,i)} \frac{\partial V_o}{\partial V_i}\) \(V_i \qquad \forall o \in \text{ipf}\)

By combining both constraints, we deduce that the output is equal to the sum of inputs valued at their price.

\(V_o = \sum_{(o,i)} \pi_i V_i \qquad \forall o \in \text{ipf}\)

So, the prices and quantities given exogenously, combined with the two constraints, are sufficient to determine all the quantities of the CES tree up to the last level with labour and capital.

6. Changing efficiencies to ensure that the economical constraint holds.

We then have to ensure that the derivative is equal to the price. We set the efficiency growth to one to simplify the computation. The total efficiency is now two-dimensional: the income share and the efficiency parameter.

\(\pi_i = \xi_i \theta_i \ V_o^{1 - \rho_o} \ \left(\theta_i V_i\right)^{\rho_o - 1}\)

The couple \((\xi_i,\theta_i) = (\frac{\pi V_i}{Vo}, \frac{V_o}{V_i})\) solves this equation.

Calculate Income Shares \(\xi\)

\(\xi_i = \frac{\pi_i V_i}{V_o} \qquad \forall (o,i) \in \text{CES}\)

Calculate Efficiencies \(\theta\)

\(\theta_i = \frac{V_o}{V_i} \qquad \forall (o,i) \in \text{CES}\)

7. Last level of the CES-tree: Ensure the GDP and Labour trajectories are met

Thus far, we could compute the efficiencies for all levels below the energy component of the final aggregated production function. At the top level (GDP, Labour, Aggregated Energy and Capital), the constraints are somewhat different. We must ensure that the total product of the CES tree will deliver the exogenous level of GDP. The labour efficiency will be the adjustment variable. From the last steps, we know the income share of energy for all time steps. Capital is treated as the other inputs seen above in the CES function.

Once we have both the price and quantities of energy and capital, we can easily determine the income share of labour, and thereby its price and efficiency.

8. Calculate Efficiency growth parameter \(\delta\)

For all inputs but capital, the changes over time of \(\xi\) and \(\theta\) are put into \(\delta\). \(\xi\) and \(\theta\) are therefore constant at their 2005 levels.

\(\delta_i(t) = \frac{\theta_i(t)}{\theta_i(t_0)} \left(\frac{\xi_i(t)}{\xi_i(t_0)}\right)^{1 / \rho_o} \qquad \forall (o,i) \in \text{CES}\)

Calibrating at an intermediary level: What happens with efficiency in the lower part?

The CES nest cannot be calibrated on two levels lying one upon the other. So, if one decides to calibrate at an intermediary level of the CES nest, i.e. not at the level linked to the energy system module, the levels below cannot be calibrated to. There is no golden rule for the growth of the efficiency parameters below the calibration level. They can be left to their 2005 level or the user can provide exogenous efficiency trajectories.

Putty-Clay

It is possible to introduce segments of the CES tree which are subject to putty-clay dynamics, i.e. the model at time t will substitute between increments of the variables. The aggregate level of the variable will be the sum of the increment from the CES and the depreciated past aggregate level. This mechanism limits the extent to which the energy demand can be reduced in response to higher energy prices.

To treat some CES sections as putty-clay, the set items should be included to in_putty and ppf_putty for the lowest level of the putty-clay section. In addition, depreciation rates should be defined for the putty variables. For consistency, it is advisable to use identical depreciation rates for inputs and outputs in the same CES function.

Currently, the calibration script has not been tested for a putty-clay structure that is in the beyond_calib part.

The Powerpoint file attached gives some more explanations.

Perfectly complementary factors

To implement perfectly complementary factors, you should include the factors in the set in_complements. In addition, the elasticity of substitution between these factors should be set to INF (which is counter-intuitive). Prices of complementary inputs are set to 1, so that the output is equal to the sum of inputs (reason why the substitution elasticity should be INF), which makes sense for energetic entities. It would however be possible to change this (by choosing another elasticity of substitution) without harming the calibration.

In the model, the complementary factors are subject to a constraint (q01_prodCompl or q01_prodCompl_putty), so that each variable is computed by multiplying a key variable of the CES function by a given factor. The calibration computes this factor for each period.

Setup

The relevant changes to the configuration are * module 29_CES_parameters: realization calibrate * switch c_CES_calibration_iterations (default 10): The calibration is an iterative process that runs for a fixed number of iterations and has no convergence criterium. The calibration can be continued (by using the last_optim.gdx as the input.gdx in a new run) if convergence was not good enough. * switch c_CES_calibration_new_structure (default 0): Turn this on if you are calibrating a new CES structure (added/removed branches to/from the CES tree).

Calibration run

Once set up, start Remind as you normally would. Ten calibration iterations will take about five hours.

Calibration results

The calibration will store the full.lst, full.log and input.gdx files for all calibration iterations (i.e., input_00.gdx, input_01.gdx, …) for analysis and debugging. The most important numbers (quantities, prices and efficiencies) are also written to the file CES_calibration.csv for easy analysis. The file to be stored in /load/datainput/ are produced after each iteration. Which iteration to take remains to be decided. The calibration produces a PDF-file based on the data in CES_calibration.csv called CES calibration report_RunName.pdf. See at the “How to calibrate Remind” section to see how to interpret it. The input files gathering all the efficiency parameters take the name indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_ITERATIONnumber.inc. The file corresponding to the best iteration should be copied to ../../modules/29_CES_parameters/load/input/ removing the _ITERATIONnumber part

The macro-calibration takes place in modules/29_CES_parameters/calibration/. The calibration itself is in the file preloop.gms.

The aim of the calibration is to provide the efficiency parameters of the CES tree for each time step and each region. Efficiency parameters have a strong influence on the level of energy demanded by the CES-tree to the energy system module. In order to avoid ad hoc assumptions on the level of these parameters, the new macro-calibration procedure loads exogenous energy demand pathways and ensures that a baseline REMIND run will meet these trajectories.

How to calibrate Remind

  1. the energy demand pathways will be selected automatically in input/pm_fe_demand.cs4r according to the modules selected and the SSP scenario chosen. If you wish to modify the pathways, refer to the mrremind library, which provides the pm_fe_demand.cs4r file.
  2. Select/Add the scenarios of interest in scenario_config_calibrateSSPs.csv and copy it to scenario_config.csv.
  3. Rscript start_bundle.R or similar command
  4. After the runs are finished, look at CES calibration report_RunName.pdf in the output folder
  1. If everything went well, you will see in the output folder a couple of files:
  1. One of these files should be copied to modules/29_CES_parameters/load/input, by removing the _ITERATION_IterationNumber of the file chosen. Generally, you can take the 10th iteration (_ITERATION_10.inc) So if you are in the output folder of your run: cp indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_1.inc ../../modules/29_CES_parameters/load/input/indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1.inc *KEEP THE SAME NAME WITH THE EXCEPTION OF THE _ITERATION_XX PART*
  2. Upload in GIT

How the calibration works

1. Principle

The calibration adapts the efficiency parameters of the CES function so that GDP and FE trajectories are met.

Efficiency parameters are divided in three dimensions: the efficiency parameter, the efficiency growth parameter, and the income share parameter. The efficiency growth parameter captures both the growth in efficiency and in the income share. So, this is the only time-variant parameter. The income share parameter hence represents the 2005 income share.

The calibration has to fulfill two constraints: an economical constraint and a technological constraint. The technological constraint only means that the inputs of the CES function must yield the desired output. At this stage, there is no economical consideration at all. During a REMIND run however, the model will strive to find out the most efficient solution in terms of costs. So, the second constraint is an economical constraint. The derivatives of the CES function, i.e. the marginal increase in income from increasing the considered input by one unit, must equal the price of that input, i.e. the marginal cost.

2. Inputs

In order to calibrate the CES tree of Remind, you will need

trajectories for labour, GDP and final energy carriers/energy services (ppfen) quantities, usually provided by EDGE. We also need the capital quantities pathways.

If you are calibrating a new CES structure (added/removed branches to/from the CES tree), you will also maybe need to adjust the value of cm_CES_calibration_default_prices, which serves as fallback prices for calculating CES parameters in the first calibration iteration.

Strictly speaking, the price only have to be larger than 0, but the closer the prices are to the “real” ones, the faster the calibration will converge. It is therefore advisable to use the prices of some substitute energy carrier/service. The prices give the indication of the marginal cost of each input, and thus represent the economical constraint.

The information on final energy quantities is stored in ./modules/29_CES_parameters/calibration/input/, read in ./modules/29_CES_parameters/calibration/datainput.gms in the parameter pm_fedemand and loaded in ./modules/29_CES_parameters/calibration/input/ and transfered to pm_cesdata(,,,"quantity") in ./modules/29_CES_parameters/calibration/datainput.gms The information on labour and GDP is stored and read somewhere else in the model in the parameters p_lab and pm_gdp, respectively. The information on capital quantities is stored in ./modules/29_CES_parameters/calibrate/input/p29_capitalQuantity.cs4r and loaded in ./modules/29_CES_parameters/calibration/datainput.gms in the parameter p29_capitalQuantity.

3. A calibration in several iterations

The calibration operates in several iterations. In each iteration, the nested CES function is adapted so that the exogenous final energy pathways and the exogenous GDP and labour trajectories correspond. Each iteration only differs from the others in the prices that are provided to the calibration. They represent the feedback from the energy system module. These prices are provided exogenously (or computed from input.gdx) for the first iteration, and are derived from a REMIND run for the next iteration. The assumption is that by adjusting the efficiency parameters in each iteration, the efficiency parameters converge towards a stable value. The steps to be followed between each iteration (start REMIND, store the fulldata.gdx under a different name, create the file to be used in the load mode) is contained in the function submit.R.

The following paragraphs describe the calculations happening in each of the iteration i.e in preloop.gms.

4. Computation of prices

In the first iteration, for a new CES structure, there is no gdx file that could provide directly the equilibrium prices of the CES ppfen. Therefore, exogenous price trajectories must be provided. Switch cfg$gms$c_CES_calibration_new_structure to 1 in config/default.cfg in case you want to use exogenous prices for the first iteration. For other iterations, or if the structure is the one from the input.gdx, the equilibrium prices will be computed. They are computed as the derivative of GDP in terms of each input. By the chain rule, the derivatives of each level of the CES-tree must be multiplied to obtain the desired derivative.

Primary production factor (ppf) prices are thus calculated as the derivatives of the production function.

\(V_o = \left( \sum_{(o,i)} \xi_i \left( \theta_i \delta_i V_i \right)^{\rho_o} \right)^{1/\rho_o}\)

where \(\xi\) is the income share, \(\theta\) the efficiency parameter, \(\delta\) the efficiency growth, \(\rho\) a parameter derived from the substitution elasticity, \(i,o\) the elements of the input and output sets, respectively.

\(\pi_i = \xi_i \theta_i \delta_i \ V_o^{1 - \rho_o} \ \left(\theta_i \delta_i V_i\right)^{\rho_o - 1}\)


*** Compute ppf prices from CES derivatives of previous run
p29_CESderivative(t,regi,ces(out,in))$( vm_cesIO.l(t,regi,in) gt 0 )
=
pm_cesdata(t,regi,in,"xi")
* pm_cesdata(t,regi,in,"eff")
* vm_effGr.l(t,regi,in)

* vm_cesIO.l(t,regi,out)
** (1 - pm_cesdata(t,regi,out,"rho"))

* ( pm_cesdata(t,regi,in,"eff")
* vm_effGr.l(t,regi,in)
* vm_cesIO.l(t,regi,in)
)
** (pm_cesdata(t,regi,out,"rho") - 1);
;

*** Propagate price down the CES tree
loop ((ceslev(counter,in),ces(in,in2),ces2(in2,in3)),
p29_CESderivative(t,regi,"inco",in3)
= p29_CESderivative(t,regi,"inco",in2)
* p29_CESderivative(t,regi,in2,in3);
);

*** Prices of intermediate production factors are all 1
p29_CESderivative(t,regi,in,ipf(in2))$( p29_CESderivative(t,regi,in,in2) ) = 1;

In the code, the “propagation” part corresponds to the chain rule. The prices of the intermediate production factors are set to one, so that the prices of ppfen correspond to their price in terms of GDP. The efficiencies of the intermediate production factors will be changed accordingly, so that their derivative is equal to one.

Depending upon the setting, prices are then smoothed in the early years of the simulation.

5. Calculation of Intermediate Production Factors

The economical constraint tells us that the prices are equal to the derivatives.

\(\pi_i = \frac{\partial V_o(V_1,..., V_i,...,V_n)}{\partial V_i}\)

The technological constraint tells us, following the Euler’s rule, that, for homogenous functions of degree one (as it is the case here), the output is equal to the sum of the derivatives times the quantity of inputs.

\(V_o = \sum_{(o,i)} \frac{\partial V_o}{\partial V_i}\) \(V_i \qquad \forall o \in \text{ipf}\)

By combining both constraints, we deduce that the output is equal to the sum of inputs valued at their price.

\(V_o = \sum_{(o,i)} \pi_i V_i \qquad \forall o \in \text{ipf}\)

So, the prices and quantities given exogenously, combined with the two constraints, are sufficient to determine all the quantities of the CES tree up to the last level with labour and capital.

6. Changing efficiencies to ensure that the economical constraint holds.

We then have to ensure that the derivative is equal to the price. We set the efficiency growth to one to simplify the computation. The total efficiency is now two-dimensional: the income share and the efficiency parameter.

\(\pi_i = \xi_i \theta_i \ V_o^{1 - \rho_o} \ \left(\theta_i V_i\right)^{\rho_o - 1}\)

The couple \((\xi_i,\theta_i) = (\frac{\pi V_i}{Vo}, \frac{V_o}{V_i})\) solves this equation.

Calculate Income Shares \(\xi\)

\(\xi_i = \frac{\pi_i V_i}{V_o} \qquad \forall (o,i) \in \text{CES}\)

Calculate Efficiencies \(\theta\)

\(\theta_i = \frac{V_o}{V_i} \qquad \forall (o,i) \in \text{CES}\)

7. Last level of the CES-tree: Ensure the GDP and Labour trajectories are met

Thus far, we could compute the efficiencies for all levels below the energy component of the final aggregated production function. At the top level (GDP, Labour, Aggregated Energy and Capital), the constraints are somewhat different. We must ensure that the total product of the CES tree will deliver the exogenous level of GDP. The labour efficiency will be the adjustment variable. From the last steps, we know the income share of energy for all time steps. Capital is treated as the other inputs seen above in the CES function.

Once we have both the price and quantities of energy and capital, we can easily determine the income share of labour, and thereby its price and efficiency.

8. Calculate Efficiency growth parameter \(\delta\)

For all inputs but capital, the changes over time of \(\xi\) and \(\theta\) are put into \(\delta\). \(\xi\) and \(\theta\) are therefore constant at their 2005 levels.

\(\delta_i(t) = \frac{\theta_i(t)}{\theta_i(t_0)} \left(\frac{\xi_i(t)}{\xi_i(t_0)}\right)^{1 / \rho_o} \qquad \forall (o,i) \in \text{CES}\)

Calibrating at an intermediary level: What happens with efficiency in the lower part?

The CES nest cannot be calibrated on two levels lying one upon the other. So, if one decides to calibrate at an intermediary level of the CES nest, i.e. not at the level linked to the energy system module, the levels below cannot be calibrated to. There is no golden rule for the growth of the efficiency parameters below the calibration level. They can be left to their 2005 level or the user can provide exogenous efficiency trajectories.

Putty-Clay

It is possible to introduce segments of the CES tree which are subject to putty-clay dynamics, i.e. the model at time t will substitute between increments of the variables. The aggregate level of the variable will be the sum of the increment from the CES and the depreciated past aggregate level. This mechanism limits the extent to which the energy demand can be reduced in response to higher energy prices.

To treat some CES sections as putty-clay, the set items should be included to in_putty and ppf_putty for the lowest level of the putty-clay section. In addition, depreciation rates should be defined for the putty variables. For consistency, it is advisable to use identical depreciation rates for inputs and outputs in the same CES function.

Currently, the calibration script has not been tested for a putty-clay structure that is in the beyond_calib part.

The Powerpoint file attached gives some more explanations.

Perfectly complementary factors

To implement perfectly complementary factors, you should include the factors in the set in_complements. In addition, the elasticity of substitution between these factors should be set to INF (which is counter-intuitive). Prices of complementary inputs are set to 1, so that the output is equal to the sum of inputs (reason why the substitution elasticity should be INF), which makes sense for energetic entities. It would however be possible to change this (by choosing another elasticity of substitution) without harming the calibration.

In the model, the complementary factors are subject to a constraint (q01_prodCompl or q01_prodCompl_putty), so that each variable is computed by multiplying a key variable of the CES function by a given factor. The calibration computes this factor for each period.

Setup

The relevant changes to the configuration are * module 29_CES_parameters: realization calibrate * switch c_CES_calibration_iterations (default 10): The calibration is an iterative process that runs for a fixed number of iterations and has no convergence criterium. The calibration can be continued (by using the last_optim.gdx as the input.gdx in a new run) if convergence was not good enough. * switch c_CES_calibration_new_structure (default 0): Turn this on if you are calibrating a new CES structure (added/removed branches to/from the CES tree).

Calibration run

Once set up, start Remind as you normally would. Ten calibration iterations will take about five hours.

Calibration results

The calibration will store the full.lst, full.log and input.gdx files for all calibration iterations (i.e., input_00.gdx, input_01.gdx, …) for analysis and debugging. The most important numbers (quantities, prices and efficiencies) are also written to the file CES_calibration.csv for easy analysis. The file to be stored in /load/datainput/ are produced after each iteration. Which iteration to take remains to be decided. The calibration produces a PDF-file based on the data in CES_calibration.csv called CES calibration report_RunName.pdf. See at the “How to calibrate Remind” section to see how to interpret it. The input files gathering all the efficiency parameters take the name indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_ITERATIONnumber.inc. The file corresponding to the best iteration should be copied to ../../modules/29_CES_parameters/load/input/ removing the _ITERATIONnumber part

\[\begin{multline*} v29\_cesdata\left(t\_29 + 1,regi,in\right) = \left(1- pm\_delta\_kap(regi,in)\right)^{pm\_dt(t\_29+1) } \cdot v29\_cesdata(t\_29,regi,in) + \left(pm\_cumDeprecFactor\_old(t\_29+1,regi,in) \cdot v29\_cesdata\_putty(t\_29,regi,in)\right) + \left(pm\_cumDeprecFactor\_new(t\_29+1,regi,in) \cdot v29\_cesdata\_putty(t\_29+1,regi,in)\right) \end{multline*}\]

\[\begin{multline*} v29\_ratioTotalPutty(t\_29,regi,out,in,in2) = \frac{\frac{ \left(v29\_cesdata\_putty(t\_29,regi,in) \right)}{v29\_cesdata\_putty(t\_29,regi,in2) }}{ \left(\frac{pm\_cesdata(t\_29,regi,in,"quantity") }{pm\_cesdata(t\_29,regi,in2,"quantity") }\right) } \end{multline*}\]

\[\begin{multline*} v29\_puttyTechDiff(t,regi,out) = \frac{ p29\_capitalUnitProjections(regi,in2,"0") }{ p29\_capitalUnitProjections(regi,in,"0") }-\frac{ v29\_cesdata\_putty(t,regi,in2) }{v29\_cesdata\_putty(t,regi,in) } \end{multline*}\]

\[\begin{multline*} v29\_putty\_obj = 5e-1 \cdot \sum \left(\left(t\_29,regi\_dyn29(regi),in\right)\$\left(putty\_compute\_in(in) \& \left(ord(t\_29) lt card(t\_29)\right)\right) , \left( v29\_cesdata\_putty(t\_29+1,regi,in) - v29\_cesdata\_putty(t\_29,regi,in) \right)^{2} \right) + \sum_{\left(t\_29,regi\_dyn29(regi),in\right)\$putty\_compute\_in(in) }\left(\left( v29\_cesdata(t\_29,regi,in) - pm\_cesdata(t\_29,regi,in,"quantity") \right)^{6} \right) + \sum \left(\left(t\_29hist\_last(t),regi\_dyn29(regi), out\right), \power \left( v29\_puttyTechDiff(t,regi,out), 2\right) \right) + 1e-6 \cdot \sum \left(\left(t\_29, regi\_dyn29(regi),out, in,in2\right) \$\left(putty\_compute\_in(in) \& putty\_compute\_in(in2) \& cesOut2cesIn(out,in) \& cesOut2cesIn2(out,in2) \& \left( NOT sameAs(in,in2)\right) \right), \power \left( v29\_ratioTotalPutty(t\_29,regi,out,in,in2), 2\right) \right) \end{multline*}\]

\[\begin{multline*} v29\_outputtech(regi,out,index\_Nr) = \sum \left(\left(cesOut2cesIn(out,in), t\_29hist\_last(t)\right), pm\_cesdata(t,regi,in,"xi") \cdot \left( pm\_cesdata(t,regi,in,"eff") \cdot p29\_capitalUnitProjections(regi,in,index\_Nr) \right) ^{ v29\_rho(regi,out) }\right) ^{ \left(\frac{1 }{ v29\_rho(regi,out)}\right) } \end{multline*}\]

\[\begin{multline*} v29\_esub\_err = \sum \left(\left(out,regi\_dyn29(regi),index\_Nr, t\_29hist\_last(t)\right)\$\left(\left(pm\_cesdata\_sigma("2015",out) eq -1\right) \& p29\_capitalUnitProjections(regi,out,index\_Nr)\right), \left(1 + pm\_cesdata(t,regi,out,"quantity")\right) ^{2 } \cdot \left( \power \left( \left(\frac{ p29\_output\_estimation(regi,out) }{ v29\_outputtech(regi,out,index\_Nr) }\right) - 1 , 2 \right) + \power \left( \left(\frac{ v29\_outputtech(regi,out,index\_Nr) }{ p29\_output\_estimation(regi,out) }\right) -1 ,2 \right) \right) \right) \end{multline*}\]

Reduce the lower limit on the CES function to accommodate less utilised production factors in (energetically) small regions. (Example: gas heating in Sub-Sahara Africa – SSA/enhgab). relax industry fixing over the calibration iterations

The macro-calibration takes place in modules/29_CES_parameters/calibration/. The calibration itself is in the file preloop.gms.

The aim of the calibration is to provide the efficiency parameters of the CES tree for each time step and each region. Efficiency parameters have a strong influence on the level of energy demanded by the CES-tree to the energy system module. In order to avoid ad hoc assumptions on the level of these parameters, the new macro-calibration procedure loads exogenous energy demand pathways and ensures that a baseline REMIND run will meet these trajectories.

How to calibrate Remind

  1. the energy demand pathways will be selected automatically in input/pm_fe_demand.cs4r according to the modules selected and the SSP scenario chosen. If you wish to modify the pathways, refer to the mrremind library, which provides the pm_fe_demand.cs4r file.
  2. Select/Add the scenarios of interest in scenario_config_calibrateSSPs.csv and copy it to scenario_config.csv.
  3. Rscript start_bundle.R or similar command
  4. After the runs are finished, look at CES calibration report_RunName.pdf in the output folder
  1. If everything went well, you will see in the output folder a couple of files:
  1. One of these files should be copied to modules/29_CES_parameters/load/input, by removing the _ITERATION_IterationNumber of the file chosen. Generally, you can take the 10th iteration (_ITERATION_10.inc) So if you are in the output folder of your run: cp indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_1.inc ../../modules/29_CES_parameters/load/input/indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1.inc *KEEP THE SAME NAME WITH THE EXCEPTION OF THE _ITERATION_XX PART*
  2. Upload in GIT

How the calibration works

1. Principle

The calibration adapts the efficiency parameters of the CES function so that GDP and FE trajectories are met.

Efficiency parameters are divided in three dimensions: the efficiency parameter, the efficiency growth parameter, and the income share parameter. The efficiency growth parameter captures both the growth in efficiency and in the income share. So, this is the only time-variant parameter. The income share parameter hence represents the 2005 income share.

The calibration has to fulfill two constraints: an economical constraint and a technological constraint. The technological constraint only means that the inputs of the CES function must yield the desired output. At this stage, there is no economical consideration at all. During a REMIND run however, the model will strive to find out the most efficient solution in terms of costs. So, the second constraint is an economical constraint. The derivatives of the CES function, i.e. the marginal increase in income from increasing the considered input by one unit, must equal the price of that input, i.e. the marginal cost.

2. Inputs

In order to calibrate the CES tree of Remind, you will need

trajectories for labour, GDP and final energy carriers/energy services (ppfen) quantities, usually provided by EDGE. We also need the capital quantities pathways.

If you are calibrating a new CES structure (added/removed branches to/from the CES tree), you will also maybe need to adjust the value of cm_CES_calibration_default_prices, which serves as fallback prices for calculating CES parameters in the first calibration iteration.

Strictly speaking, the price only have to be larger than 0, but the closer the prices are to the “real” ones, the faster the calibration will converge. It is therefore advisable to use the prices of some substitute energy carrier/service. The prices give the indication of the marginal cost of each input, and thus represent the economical constraint.

The information on final energy quantities is stored in ./modules/29_CES_parameters/calibration/input/, read in ./modules/29_CES_parameters/calibration/datainput.gms in the parameter pm_fedemand and loaded in ./modules/29_CES_parameters/calibration/input/ and transfered to pm_cesdata(,,,"quantity") in ./modules/29_CES_parameters/calibration/datainput.gms The information on labour and GDP is stored and read somewhere else in the model in the parameters p_lab and pm_gdp, respectively. The information on capital quantities is stored in ./modules/29_CES_parameters/calibrate/input/p29_capitalQuantity.cs4r and loaded in ./modules/29_CES_parameters/calibration/datainput.gms in the parameter p29_capitalQuantity.

3. A calibration in several iterations

The calibration operates in several iterations. In each iteration, the nested CES function is adapted so that the exogenous final energy pathways and the exogenous GDP and labour trajectories correspond. Each iteration only differs from the others in the prices that are provided to the calibration. They represent the feedback from the energy system module. These prices are provided exogenously (or computed from input.gdx) for the first iteration, and are derived from a REMIND run for the next iteration. The assumption is that by adjusting the efficiency parameters in each iteration, the efficiency parameters converge towards a stable value. The steps to be followed between each iteration (start REMIND, store the fulldata.gdx under a different name, create the file to be used in the load mode) is contained in the function submit.R.

The following paragraphs describe the calculations happening in each of the iteration i.e in preloop.gms.

4. Computation of prices

In the first iteration, for a new CES structure, there is no gdx file that could provide directly the equilibrium prices of the CES ppfen. Therefore, exogenous price trajectories must be provided. Switch cfg$gms$c_CES_calibration_new_structure to 1 in config/default.cfg in case you want to use exogenous prices for the first iteration. For other iterations, or if the structure is the one from the input.gdx, the equilibrium prices will be computed. They are computed as the derivative of GDP in terms of each input. By the chain rule, the derivatives of each level of the CES-tree must be multiplied to obtain the desired derivative.

Primary production factor (ppf) prices are thus calculated as the derivatives of the production function.

\(V_o = \left( \sum_{(o,i)} \xi_i \left( \theta_i \delta_i V_i \right)^{\rho_o} \right)^{1/\rho_o}\)

where \(\xi\) is the income share, \(\theta\) the efficiency parameter, \(\delta\) the efficiency growth, \(\rho\) a parameter derived from the substitution elasticity, \(i,o\) the elements of the input and output sets, respectively.

\(\pi_i = \xi_i \theta_i \delta_i \ V_o^{1 - \rho_o} \ \left(\theta_i \delta_i V_i\right)^{\rho_o - 1}\)


*** Compute ppf prices from CES derivatives of previous run
p29_CESderivative(t,regi,ces(out,in))$( vm_cesIO.l(t,regi,in) gt 0 )
=
pm_cesdata(t,regi,in,"xi")
* pm_cesdata(t,regi,in,"eff")
* vm_effGr.l(t,regi,in)

* vm_cesIO.l(t,regi,out)
** (1 - pm_cesdata(t,regi,out,"rho"))

* ( pm_cesdata(t,regi,in,"eff")
* vm_effGr.l(t,regi,in)
* vm_cesIO.l(t,regi,in)
)
** (pm_cesdata(t,regi,out,"rho") - 1);
;

*** Propagate price down the CES tree
loop ((ceslev(counter,in),ces(in,in2),ces2(in2,in3)),
p29_CESderivative(t,regi,"inco",in3)
= p29_CESderivative(t,regi,"inco",in2)
* p29_CESderivative(t,regi,in2,in3);
);

*** Prices of intermediate production factors are all 1
p29_CESderivative(t,regi,in,ipf(in2))$( p29_CESderivative(t,regi,in,in2) ) = 1;

In the code, the “propagation” part corresponds to the chain rule. The prices of the intermediate production factors are set to one, so that the prices of ppfen correspond to their price in terms of GDP. The efficiencies of the intermediate production factors will be changed accordingly, so that their derivative is equal to one.

Depending upon the setting, prices are then smoothed in the early years of the simulation.

5. Calculation of Intermediate Production Factors

The economical constraint tells us that the prices are equal to the derivatives.

\(\pi_i = \frac{\partial V_o(V_1,..., V_i,...,V_n)}{\partial V_i}\)

The technological constraint tells us, following the Euler’s rule, that, for homogenous functions of degree one (as it is the case here), the output is equal to the sum of the derivatives times the quantity of inputs.

\(V_o = \sum_{(o,i)} \frac{\partial V_o}{\partial V_i}\) \(V_i \qquad \forall o \in \text{ipf}\)

By combining both constraints, we deduce that the output is equal to the sum of inputs valued at their price.

\(V_o = \sum_{(o,i)} \pi_i V_i \qquad \forall o \in \text{ipf}\)

So, the prices and quantities given exogenously, combined with the two constraints, are sufficient to determine all the quantities of the CES tree up to the last level with labour and capital.

6. Changing efficiencies to ensure that the economical constraint holds.

We then have to ensure that the derivative is equal to the price. We set the efficiency growth to one to simplify the computation. The total efficiency is now two-dimensional: the income share and the efficiency parameter.

\(\pi_i = \xi_i \theta_i \ V_o^{1 - \rho_o} \ \left(\theta_i V_i\right)^{\rho_o - 1}\)

The couple \((\xi_i,\theta_i) = (\frac{\pi V_i}{Vo}, \frac{V_o}{V_i})\) solves this equation.

Calculate Income Shares \(\xi\)

\(\xi_i = \frac{\pi_i V_i}{V_o} \qquad \forall (o,i) \in \text{CES}\)

Calculate Efficiencies \(\theta\)

\(\theta_i = \frac{V_o}{V_i} \qquad \forall (o,i) \in \text{CES}\)

7. Last level of the CES-tree: Ensure the GDP and Labour trajectories are met

Thus far, we could compute the efficiencies for all levels below the energy component of the final aggregated production function. At the top level (GDP, Labour, Aggregated Energy and Capital), the constraints are somewhat different. We must ensure that the total product of the CES tree will deliver the exogenous level of GDP. The labour efficiency will be the adjustment variable. From the last steps, we know the income share of energy for all time steps. Capital is treated as the other inputs seen above in the CES function.

Once we have both the price and quantities of energy and capital, we can easily determine the income share of labour, and thereby its price and efficiency.

8. Calculate Efficiency growth parameter \(\delta\)

For all inputs but capital, the changes over time of \(\xi\) and \(\theta\) are put into \(\delta\). \(\xi\) and \(\theta\) are therefore constant at their 2005 levels.

\(\delta_i(t) = \frac{\theta_i(t)}{\theta_i(t_0)} \left(\frac{\xi_i(t)}{\xi_i(t_0)}\right)^{1 / \rho_o} \qquad \forall (o,i) \in \text{CES}\)

Calibrating at an intermediary level: What happens with efficiency in the lower part?

The CES nest cannot be calibrated on two levels lying one upon the other. So, if one decides to calibrate at an intermediary level of the CES nest, i.e. not at the level linked to the energy system module, the levels below cannot be calibrated to. There is no golden rule for the growth of the efficiency parameters below the calibration level. They can be left to their 2005 level or the user can provide exogenous efficiency trajectories.

Putty-Clay

It is possible to introduce segments of the CES tree which are subject to putty-clay dynamics, i.e. the model at time t will substitute between increments of the variables. The aggregate level of the variable will be the sum of the increment from the CES and the depreciated past aggregate level. This mechanism limits the extent to which the energy demand can be reduced in response to higher energy prices.

To treat some CES sections as putty-clay, the set items should be included to in_putty and ppf_putty for the lowest level of the putty-clay section. In addition, depreciation rates should be defined for the putty variables. For consistency, it is advisable to use identical depreciation rates for inputs and outputs in the same CES function.

Currently, the calibration script has not been tested for a putty-clay structure that is in the beyond_calib part.

The Powerpoint file attached gives some more explanations.

Perfectly complementary factors

To implement perfectly complementary factors, you should include the factors in the set in_complements. In addition, the elasticity of substitution between these factors should be set to INF (which is counter-intuitive). Prices of complementary inputs are set to 1, so that the output is equal to the sum of inputs (reason why the substitution elasticity should be INF), which makes sense for energetic entities. It would however be possible to change this (by choosing another elasticity of substitution) without harming the calibration.

In the model, the complementary factors are subject to a constraint (q01_prodCompl or q01_prodCompl_putty), so that each variable is computed by multiplying a key variable of the CES function by a given factor. The calibration computes this factor for each period.

Setup

The relevant changes to the configuration are * module 29_CES_parameters: realization calibrate * switch c_CES_calibration_iterations (default 10): The calibration is an iterative process that runs for a fixed number of iterations and has no convergence criterium. The calibration can be continued (by using the last_optim.gdx as the input.gdx in a new run) if convergence was not good enough. * switch c_CES_calibration_new_structure (default 0): Turn this on if you are calibrating a new CES structure (added/removed branches to/from the CES tree).

Calibration run

Once set up, start Remind as you normally would. Ten calibration iterations will take about five hours.

Calibration results

The calibration will store the full.lst, full.log and input.gdx files for all calibration iterations (i.e., input_00.gdx, input_01.gdx, …) for analysis and debugging. The most important numbers (quantities, prices and efficiencies) are also written to the file CES_calibration.csv for easy analysis. The file to be stored in /load/datainput/ are produced after each iteration. Which iteration to take remains to be decided. The calibration produces a PDF-file based on the data in CES_calibration.csv called CES calibration report_RunName.pdf. See at the “How to calibrate Remind” section to see how to interpret it. The input files gathering all the efficiency parameters take the name indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_ITERATIONnumber.inc. The file corresponding to the best iteration should be copied to ../../modules/29_CES_parameters/load/input/ removing the _ITERATIONnumber part

Limitations There are no known limitations.

(B) load

Limitations There are no known limitations.

Definitions

Objects

module-internal objects (A: calibrate | B: load)
  Description Unit A B
f29_capitalQuantity
(tall, all_regi, all_demScen, all_in)
capital quantities x
f29_capitalUnitProjections Capital cost per unit of consumed energy and final energy per unit of useful energy (or UE per unit of ES) used to calibrate some elasticities of substitution x
f29_efficiency_growth
(tall, all_regi, all_demScen, all_in)
efficency growth for ppf beyond calibration x
f29_esdemand
(tall, all_regi, all_demScen, all_in)
energy service demand x
p29_alpha
(all_regi, all_in)
XXX x
p29_beta
(all_regi, all_in)
XXX x
p29_capitalPrice
(tall, all_regi)
capital prices x
p29_capitalQuantity
(tall, all_regi, all_in)
capital quantities x
p29_capitalUnitProjections
(all_regi, all_in, index_Nr)
Capital cost per unit of consumed energy and final energy per unit of useful energy (or UE per unit of ES) used to calibrate some elasticities of substitution. kap is in $/kWh; UE and FE in kWh x
p29_cesdata_load
(tall, all_regi, all_in, cesParameter)
pm_cesdata from the gdx file x
p29_cesdata_sigma
(all_in)
substitution elasticities x
p29_CESderivative
(tall, all_regi, all_in, all_in)
derivative of the CES function for calculating prices x
p29_cesIO_load
(tall, all_regi, all_in)
production factor vm_cesIO from input.gdx x
p29_cesIOdelta_load
(tall, all_regi, all_in)
production factor vm_cesIOdelta from input.gdx x
p29_effGr
(tall, all_regi, all_in)
growth of factor efficiency from input.gdx x
p29_efficiency_growth
(tall, all_regi, all_in)
efficency level paths for ppf beyond calibration x
p29_esdemand
(tall, all_regi, all_in)
energy service demand x
p29_esubGrowth long term growth of the elasticity of substitution x
p29_fedemand_alt
(tall, all_regi, all_GDPscen, all_in)
alt final energy demand x
p29_fedemand_trasp
(tall, all_regi, all_GDPscen, EDGE_scenario_all, all_in)
transport alternative demand for complex module based on EDGE-T x
p29_fedemand_trasp2005_2015
(tall, all_regi, all_in)
transport demand based on complex in 2005 x
p29_output_estimation
(all_regi, all_in)
scaling of the target quantity for comparability with technological data x
p29_share_H2HTH_traj_indst
(ttot, all_regi, all_in)
H2 and electricity HTH baseline trajectories as share of gas (for H2) and low-temperature electricity (for HTH electricity) trajectories in industry x
p29_t_tmp
(tall)
tmp value for calculations over t x
p29_test_CES_putty_recursive
(tall, all_regi, all_in)
test the technological consistency of pm_cesdata_putty x
p29_test_CES_recursive
(tall, all_regi, all_in)
test the technological consistency of pm_cesdata x
p29_trpdemand transport demand x
q29_esub_obj objective function of esub estimation x
q29_esubsConstraint
(tall, all_regi, all_in, all_in, all_in)
constraint ensuring that the ratio between capital and energy in putty for the last historical region will be close to the technological data used for the ESUB estimation x
q29_outputtech
(all_regi, all_in, index_Nr)
CES equation for technological data x
q29_pathConstraint
(tall, all_regi, all_in)
equation describing the relation between a variable and its variation x
q29_putty_obj objective function x
q29_ratioTotalPutty (tallall_regiall_inall_inall_in) Computation of the ratio between the two putty inputs of a same CES nestand the the ratio of pm_cesdata x
v29_cesdata
(tall, all_regi, all_in)
underlying variables to the putty variations x
v29_cesdata_putty
(tall, all_regi, all_in)
variation in the underlying variable x
v29_esub_err sum of errors to be minimized x
v29_outputtech
(all_regi, all_in, index_Nr)
CES output from the technological data x
v29_putty_obj index of the step by step variation of v29_cesdata_putty x
v29_puttyTechDiff
(tall, all_regi, all_in)
Difference to be minimised between the K/E ratio of putty and the K/E ratio from the technological data x
v29_ratioTotalPutty
(tall, all_regi, all_in, all_in, all_in)
Ratio of the ratio between input quantities for total and putty quantities x
v29_rho
(all_regi, all_in)
parameter to be calibrated, related to the esub through: rho = 1 - 1/esub x

Sets

sets in use
  description
all_demScen all possible demand scenarios
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
c_expname c_expname as set for use in GDX
cal_ppf_buildings_dyn36(all_in) primary production factors - buildings - used for the calibration
cal_ppf_industry_dyn37(all_in) primary production factors for calibration - industry
capUnitType Type of technological data: for investments or for the standing capital
ces_29(all_in, all_in) calibration CES tree structure
ces_29_load(all_in, all_in) ces from input.gdx
ces_beyondcalib_29(all_in, all_in) production relationships for the non calibrated CES
ces_eff_target_dyn37(all_in, all_in)
ces2_29(all_in, all_in) calibration CES tree structure
ces2_beyondcalib_29(all_in, all_in) production relationships for the non calibrated CES
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
cm_GDPscen cm_GDPscen as set for use in GDX
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
EDGE_scenario_all EDGE-T scenarios, used to get the bunkers share on total liquids demand.
eff_scale_par parameters for scaling certain efficiencies during calibration
in(all_in) All inputs and outputs of the CES function
in_29(all_in) calibration production factors
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_beyond_calib_29(all_in) all factors which are outside of the calibration, including the ones which are ppf_29
in_beyond_calib_29_excludeRoot(all_in) all factors which are outside of the calibration, excluding the ones which are ppf_29
in_complements(all_in) Factors which are perfect complements
in_dyn35(all_in) all inputs and outputs of the CES function - transport module additions
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
index_Nr index to differentiate data points with identical characteristics
industry_ue_calibration_target_dyn37(all_in)
ipf(all_in) All intermediate production factors
ipf_29(all_in) calibration intermediate production factors
ipf_beyond_29(all_in) all ces intermediary levels whose inputs are in beyond_calib
ipf_beyond_29_excludeRoot(all_in) all ces intermediary levels whose inputs are in beyond_calib, excluding the roots
ipf_beyond_last(all_in) intermediary factors which are just above the ppf_beyondcalib_29 level
ipf_industry_dyn37(all_in) intermediate production factors - industry
ipf_putty(all_in) All putty-clay intermediate production factors
iteration iterator for main (Negishi/Nash) iterations
modules all the available modules
pf_eff_target_dyn29(all_in) production factors with efficiency target
pf_industry_relaxed_bounds_dyn37(all_in)
pf_quan_target_dyn29(all_in) production factors with quantity target
pf_quantity_shares_37(all_in, all_in) quantities for the calibration defined as a percentage of another pf
ppf(all_in) All primary production factors
ppf_29(all_in) primary production factors to calibrate for
ppf_beyondcalib_29(all_in) all factors which are not part of in_29
ppf_industry_dyn37(all_in) primary production factors - industry
ppf_putty(all_in) All putty-clay primary production factors
ppfen_dyn35(all_in) all energy inputs because of unit conversion - transport module additions
ppfen_industry_dyn37(all_in) primary production factors energy - industry
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
ppfKap_industry_dyn37(all_in)
putty_compute_in(all_in) factors inside putty which should be computed from non-putty values
regi(all_regi) all regions used in the solution process
regi_29_load(all_regi) regional resolution from input.gdx
regi_dyn29(all_regi) dynamic region set for compatibility with testOneRegi
regi_dyn80(all_regi) region for testOneRegi
rlf cost levels of fossil fuels
root_beyond_calib_29(all_in) all factors which operate the junction between the calibrated CES and the CES which is not calibrated
set regi_nucscen(all_regi) regions which nucscen applies to
steps iterator for MAC steps
t(ttot) modeling time, usually starting in 2005, but later for fixed delay runs
t_29(ttot) time steps considered in the calibration
t_29_last(ttot) last period of the calibration
t_29hist(ttot) historical periods from 2005 on. Used for setting the efficiencies of FE if calibrated at the UE level
t_29hist_last(ttot) last historical period
t_29scen(ttot) non historical periods in t_29
t0(tall) start of modelling time, not optimization
tall time index
te_29_report(all_te) set of technologies to report on
ttot(tall) time index with spin up
ue_29(all_in) useful energy variables
ue_dyn36(all_in) useful energy items
ue_fe_kap_29(all_in) useful energy items which are the direct output of one FE and one Kap, and which is calibrated to. The CES efficiencies need specific treatment
ue_industry_2_pf(all_in, all_in) link industry sub-sectors activity to pf
ue_industry_dyn37(all_in)

Authors

See Also

01_macro, 20_growth, 29_CES_parameters, 37_industry, core

References