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

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 |

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.

- 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.
- Select/Add the scenarios of interest in
`scenario_config_calibrateSSPs.csv`

and copy it to`scenario_config.csv`

. - Rscript start_bundle.R or similar command
- After the runs are finished, look at
`CES calibration report_RunName.pdf`

in the output folder

- If there is nothing on the first two pages, it should be OK
- If there are a couple of rows in the table, look at the variables mentioned
- If you see more than 10 lines, there is a high chance that the calibration ran into problems
- There should be as many iterations as you asked for (default = 10). If that is not the case, itâ€™s probably better to refrain from using the produced efficiencies

- If everything went well, you will see in the output folder a couple of files:

`indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_1.inc`

- 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* - Upload in GIT

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.

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`

.

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`

.

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.

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.

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.

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

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

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.

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}\)

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.

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.

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.

The relevant changes to the configuration are * module
* 29_CES_parameters*: realization

`calibrate`

* switch
`c_CES_calibration_iterations`

`last_optim.gdx`

as the
`input.gdx`

in a new run) if convergence was not good enough.
* switch `c_CES_calibration_new_structure`

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

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.

- 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.
- Select/Add the scenarios of interest in
`scenario_config_calibrateSSPs.csv`

and copy it to`scenario_config.csv`

. - Rscript start_bundle.R or similar command
- After the runs are finished, look at
`CES calibration report_RunName.pdf`

in the output folder

- If there is nothing on the first two pages, it should be OK
- If there are a couple of rows in the table, look at the variables mentioned
- If you see more than 10 lines, there is a high chance that the calibration ran into problems
- There should be as many iterations as you asked for (default = 10). If that is not the case, itâ€™s probably better to refrain from using the produced efficiencies

- If everything went well, you will see in the output folder a couple of files:

`indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_1.inc`

- 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* - Upload in GIT

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.

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`

.

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`

.

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.

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.

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.

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

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

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.

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}\)

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.

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.

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.

The relevant changes to the configuration are * module
* 29_CES_parameters*: realization

`calibrate`

* switch
`c_CES_calibration_iterations`

`last_optim.gdx`

as the
`input.gdx`

in a new run) if convergence was not good enough.
* switch `c_CES_calibration_new_structure`

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

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.

- 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.
- Select/Add the scenarios of interest in
`scenario_config_calibrateSSPs.csv`

and copy it to`scenario_config.csv`

. - Rscript start_bundle.R or similar command
- After the runs are finished, look at
`CES calibration report_RunName.pdf`

in the output folder

- If there is nothing on the first two pages, it should be OK
- If there are a couple of rows in the table, look at the variables mentioned
- If you see more than 10 lines, there is a high chance that the calibration ran into problems
- There should be as many iterations as you asked for (default = 10). If that is not the case, itâ€™s probably better to refrain from using the produced efficiencies

- If everything went well, you will see in the output folder a couple of files:

`indu_fixed_shares-buil_services_putty-tran_complex-POP_pop_SSP2-GDP_gdp_SSP2-Kap_perfect-Reg_690d3718e1_ITERATION_1.inc`

- 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* - Upload in GIT

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.

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`

.

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`

.

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.

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.

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.

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

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

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.

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}\)

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.

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.

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.

The relevant changes to the configuration are * module
* 29_CES_parameters*: realization

`calibrate`

* switch
`c_CES_calibration_iterations`

`last_optim.gdx`

as the
`input.gdx`

in a new run) if convergence was not good enough.
* switch `c_CES_calibration_new_structure`

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

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

LimitationsThere are no known limitations.

LimitationsThere are no known limitations.

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 |

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) |

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