REMIND is a global multi-regional model incorporating the economy, the climate system and a detailed representation of the energy sector. It solves for an intertemporal Pareto optimum in economic and energy investments in the model regions, fully accounting for interregional trade in goods, energy carriers and emissions allowances. REMIND enables analyses of technology options and policy proposals for climate change mitigation.
The macro-economic core of REMIND is a Ramsey-type optimal growth model in which intertemporal global welfare is optimized subject to equilibrium constraints (02_welfare). Intertemporal optimization (80_optimization) with perfect foresight is subject to market clearing. The model explicitly represents trade in final goods, primary energy carriers, and when certain climate policies are enabled, emissions allowances (24_trade). The macro-economic production factors are capital, labor, and final energy. A nested production function with constant elasticity of substitution determines the final energy demand (01_macro, 29_CES_parameters). REMIND uses economic output for investments in the macro-economic capital stock as well as for consumption, trade, and energy system expenditures.
The macro-economic core and the energy system part are hard-linked via the final energy demand and the costs incurred by the energy system. Economic activity results in demand for final energy in different sectors (transport (35_transport), industry (37_industry), buildings (36_buildings)…) and of different type (electric (32_power) and non-electric). The primary energy carriers in REMIND include both exhaustible and renewable resources. Exhaustible resources comprise uranium as well as three fossil resources (31_fossil), namely coal, oil, and gas. Renewable resources include hydro, wind, solar, geothermal, and biomass (30_biomass). More than 50 technologies are available for the conversion of primary energy into secondary energy carriers as well as for the distribution of secondary energy carriers into final energy.
The model accounts for the full range of anthropogenic greenhouse gas (GHG) emissions, most of which are represented by source. REMIND simulates emissions from long-lived GHGs (CO2, CH4, N2O), short-lived GHGs (CO, NOx, VOC) and aerosols (SO2, BC, OC). It accounts for these emissions with different levels of detail depending on the types and sources of emissions. It calculates CO2 emissions from fuel combustion, CH4 emissions from fossil fuel extraction and residential energy use, and N2O emissions from energy supply based on sources.
The code is structured in a modular way, with code belonging either to the model’s core, or to one of the modules. The folder structure is as follows: at the top level are the folders config, core, modules and scripts. The config folder contains the REMIND settings and configuration information. The core folder contains all the files that are part of the core. The modules folder holds all the files that belong to the modules, with numbered sub-folders for every module. The scripts folder contains helpful scripts for starting a model run and analysing results.
REMIND is run by executing the main.gms file, which loads the configuration information and builds the model, by concatenating all necessary files from the core and modules folders into a single file called full.gms. The concatenation process starts with files from the core and continues with files from activated modules, in increasing order of module-number. It observes the following structure:
SETS
DECLARATION ---> of equations, variables, parameters, and scalars
DATAINPUT
EQUATIONS
PRELOOP ---> initial calibration of e.g. macroeconomic model
LOOP
---> read gdx
----------------------------------------------- BEGIN OF NEGISH/NASH ITERATION LOOP -----
* BOUNDS
* PRESOLVE
* SOLVE ---> solve statement in module 80_optimization
* POSTSOLVE
---> write gdx
----------------------------------------------- END OF NEGISHI/NASH ITERATATION LOOP ----
OUTPUT
The GAMS code follows a Coding Etiquette:
budget1/budget2,
tradebal1/tradebal2 will cause everyone for
the next years much more frustration than if you choose names like
emi_budget_G8/emi_budget_Mud,
tradebal_res/tradebal_perm/tradebal_good" " behind each parameter/variable/equation
declaration). directteinv is easier to memorize if you know
it means “Direct technology investment”XpPerm is more easily translated into “Export of Permits”
than xpperm, the first part of the name (after the prefix)
should describe the type of parameter/variable (e.g. sh for
share, cap for capacity, prod for production,
dem for demand, cost for costs)Use the following prefixes:
These prefixes are extended in some cases by a second letter:
Sets are treated differently: instead of a prefix, sets exclusively used within a module get that module’s number added as a suffix. If the set is used in more than one module no suffix is given.
The units (e.g., TWa, EJ, GtC, GtCO2, …) of variables and parameters
are documented in the declaration files using square brackets at the end
of the explanatory text
(e.g. v_var(set1,set2) "variable [unit]").
For the labels of parameters, scalars and set, use double quotes only.
" " for descriptive text to avoid compilation
errors)*** for comments or *'
if the comment should show up in the documentation of REMINDinfes in comments$+number combinations, e.g., $20
(this interferes with GAMS error codes).*** EOF filename.inc ***ETS or ESR), otherwise the magclass R library
might interpret this as a region name when reading in GDX dataThe general idea is not to write code and equations as short as possible, but to write them in a way they can be read and understood as fast as possible. To that end:
*, /,
+, -) at the beginning of a line, not the end
of the last line+ and -
operators and equation signs (=g=, =l=,
=e=)"feel") instead of single quotes
('feel') when specifying individual elements of a set (this
makes automatic replacement via sed easier)=g=, =l=,
=e=) in a single line without anything elseA switch must be defined in main.gms Follow this mode of definition for parameters, including the indentation: ——– parameter param_name “explanation what it means” ; param_name = 0; !! def = 0 !! regexp = 0|1 ——– * def shows the default value, which is added only for the user to remember if changed manually * regexp is optional, the value is read by scripts/start/checkFixCfg.R to check the validity of the input. In this case, it checks whether the value fits this regular expression: ^(0|1)$ Use ‘value1|value2’ for specific values, use ‘[1-7]’ for a row of integers. Three shortcut are defined: use ‘is.numeric’ for numeric values, ‘is.nonnegative’ for >= 0, and ‘is.share’ if the value must be >= 0 and <= 1
.lst-file (by using $offlisting and
$onlisting), nevertheless display the parameter afterwards
for an easier debugging laterparameter test(x,y); instead of
parameter test;Gunnar Luderer, Nico Bauer, Lavinia Baumstark, Christoph Bertram, Marian Leimbach, Robert Pietzcker, Jessica Strefler, Tino Aboumahboub, Gabriel Abrahão, Cornelia Auer, Falk Benke, Stephen Bi, Jan Philipp Dietrich, Alois Dirnaichner, Jakob Duerrwaechter, Sophie Fuchs, Pascal Führlich, Anastasis Giannousakis, Chen Chris Gong, Markus Haller, Robin Hasse, Jerome Hilaire, Johanna Hoppe, David Klein, Johannes Koch, Laurin Köhler-Schindler, Alexander Körner, Katarzyna Kowalczyk, Elmar Kriegler, Antoine Levesque, Alexander Lorenz, Sylvie Ludig, Michael Lüken, Aman Malik, Rahel Mandaroux, Susanne Manger, Anne Merfort, Leon Merfort, Simón Moreno-Leiva, Ioanna Mouratiadou, Adrian Odenweller, Michaja Pehl, Mika Pflüger, Franziska Piontek, Laura Popin, Sebastian Rauner, Oliver Richters, Renato Rodrigues, Niklas Roming, Marianna Rottoli, Tonn Rüter, Eva Schmidt, Christof Schötz, Felix Schreyer, Anselm Schultes, Björn Sörgel, Falko Ueckerdt, Philipp Verpoort, Pascal Weigmann
Luderer G, Bauer N, Baumstark L, Bertram C, Leimbach M, Pietzcker R, Strefler J, Aboumahboub T, Abrahão G, Auer C, Benke F, Bi S, Dietrich J, Dirnaichner A, Duerrwaechter J, Fuchs S, Führlich P, Giannousakis A, Gong C, Haller M, Hasse R, Hilaire J, Hoppe J, Klein D, Koch J, Köhler-Schindler L, Körner A, Kowalczyk K, Kriegler E, Levesque A, Lorenz A, Ludig S, Lüken M, Malik A, Mandaroux R, Manger S, Merfort A, Merfort L, Moreno-Leiva S, Mouratiadou I, Odenweller A, Pehl M, Pflüger M, Piontek F, Popin L, Rauner S, Richters O, Rodrigues R, Roming N, Rottoli M, Rüter T, Schmidt E, Schötz C, Schreyer F, Schultes A, Sörgel B, Ueckerdt F, Verpoort P, Weigmann P (2024). “REMIND - REgional Model of INvestments and Development - Version 3.4.0.” https://www.pik-potsdam.de/research/transformation-pathways/models/remind.
@Misc{,
title = {REMIND - REgional Model of INvestments and Development - Version 3.4.0},
author = {Gunnar Luderer and Nico Bauer and Lavinia Baumstark and Christoph Bertram and Marian Leimbach and Robert Pietzcker and Jessica Strefler and Tino Aboumahboub and Gabriel Abrahão and Cornelia Auer and Falk Benke and Stephen Bi and Jan Philipp Dietrich and Alois Dirnaichner and Jakob Duerrwaechter and Sophie Fuchs and Pascal Führlich and Anastasis Giannousakis and Chen Chris Gong and Markus Haller and Robin Hasse and Jerome Hilaire and Johanna Hoppe and David Klein and Johannes Koch and Laurin Köhler-Schindler and Alexander Körner and Katarzyna Kowalczyk and Elmar Kriegler and Antoine Levesque and Alexander Lorenz and Sylvie Ludig and Michael Lüken and Aman Malik and Rahel Mandaroux and Susanne Manger and Anne Merfort and Leon Merfort and Simón Moreno-Leiva and Ioanna Mouratiadou and Adrian Odenweller and Michaja Pehl and Mika Pflüger and Franziska Piontek and Laura Popin and Sebastian Rauner and Oliver Richters and Renato Rodrigues and Niklas Roming and Marianna Rottoli and Tonn Rüter and Eva Schmidt and Christof Schötz and Felix Schreyer and Anselm Schultes and Björn Sörgel and Falko Ueckerdt and Philipp Verpoort and Pascal Weigmann},
date = {2024-12-11},
year = {2024},
url = {https://www.pik-potsdam.de/research/transformation-pathways/models/remind},
}
cff-version: 1.2.0
message: If you use this model, please cite it as below.
type: software
authors:
- family-names: Luderer
given-names: Gunnar
orcid: https://orcid.org/0000-0002-9057-6155
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Bauer
given-names: Nico
orcid: https://orcid.org/0000-0002-0211-4162
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Baumstark
given-names: Lavinia
orcid: https://orcid.org/0000-0002-6979-6671
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Bertram
given-names: Christoph
orcid: https://orcid.org/0000-0002-0933-4395
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Leimbach
given-names: Marian
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Pietzcker
given-names: Robert
orcid: https://orcid.org/0000-0002-9403-6711
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Strefler
given-names: Jessica
orcid: https://orcid.org/0000-0002-5279-4629
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Aboumahboub
given-names: Tino
- family-names: Abrahão
given-names: Gabriel
orcid: https://orcid.org/0000-0003-0336-6246
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Auer
given-names: Cornelia
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Benke
given-names: Falk
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Bi
given-names: Stephen
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Dietrich
given-names: Jan Philipp
orcid: https://orcid.org/0000-0002-4309-6431
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Dirnaichner
given-names: Alois
orcid: https://orcid.org/0000-0002-3240-2608
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Duerrwaechter
given-names: Jakob
orcid: https://orcid.org/0000-0001-8961-5340
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Fuchs
given-names: Sophie
orcid: https://orcid.org/0009-0000-7258-1287
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Führlich
given-names: Pascal
orcid: https://orcid.org/0000-0002-6856-8239
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Giannousakis
given-names: Anastasis
orcid: https://orcid.org/0000-0002-4225-0011
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Gong
given-names: Chen Chris
orcid: https://orcid.org/0000-0002-6406-6266
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Haller
given-names: Markus
- family-names: Hasse
given-names: Robin
orcid: https://orcid.org/0000-0003-1818-3186
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Hilaire
given-names: Jerome
orcid: https://orcid.org/0000-0002-9879-6339
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Hoppe
given-names: Johanna
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Klein
given-names: David
orcid: https://orcid.org/0009-0001-7917-8041
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Koch
given-names: Johannes
orcid: https://orcid.org/0000-0003-2920-8086
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Köhler-Schindler
given-names: Laurin
orcid: https://orcid.org/0000-0003-4268-3084
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Körner
given-names: Alexander
- family-names: Kowalczyk
given-names: Katarzyna
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Kriegler
given-names: Elmar
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Levesque
given-names: Antoine
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Lorenz
given-names: Alexander
- family-names: Ludig
given-names: Sylvie
- family-names: Lüken
given-names: Michael
- family-names: Malik
given-names: Aman
orcid: https://orcid.org/0000-0002-7310-8448
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Mandaroux
given-names: Rahel
orcid: https://orcid.org/0000-0001-5596-2571
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Manger
given-names: Susanne
- family-names: Merfort
given-names: Anne
orcid: https://orcid.org/0000-0002-5929-7748
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Merfort
given-names: Leon
orcid: https://orcid.org/0000-0003-1704-6892
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Moreno-Leiva
given-names: Simón
orcid: https://orcid.org/0000-0002-9625-3955
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Mouratiadou
given-names: Ioanna
- family-names: Odenweller
given-names: Adrian
orcid: https://orcid.org/0000-0002-1123-8124
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Pehl
given-names: Michaja
orcid: https://orcid.org/0000-0003-2349-6515
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Pflüger
given-names: Mika
orcid: https://orcid.org/0000-0002-7814-8916
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Piontek
given-names: Franziska
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Popin
given-names: Laura
- family-names: Rauner
given-names: Sebastian
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Richters
given-names: Oliver
orcid: https://orcid.org/0000-0001-8253-4716
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Rodrigues
given-names: Renato
orcid: https://orcid.org/0000-0002-5863-5514
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Roming
given-names: Niklas
- family-names: Rottoli
given-names: Marianna
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Rüter
given-names: Tonn
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Schmidt
given-names: Eva
- family-names: Schötz
given-names: Christof
orcid: https://orcid.org/0000-0003-3528-4544
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Schreyer
given-names: Felix
orcid: https://orcid.org/0000-0003-0376-2599
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Schultes
given-names: Anselm
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Sörgel
given-names: Björn
orcid: https://orcid.org/0000-0002-2630-7081
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Ueckerdt
given-names: Falko
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Verpoort
given-names: Philipp
orcid: https://orcid.org/0000-0003-1319-5006
affiliation: Potsdam Institute for Climate Impact Research
- family-names: Weigmann
given-names: Pascal
orcid: https://orcid.org/0000-0001-8801-173X
affiliation: Potsdam Institute for Climate Impact Research
title: REMIND - REgional Model of INvestments and Development
abstract: REMIND (REgional Model of Investment and Development) is a numerical open
source model that represents the future evolution of the world economies with a
special focus on the development of the energy sector and the implications for our
world climate. The goal of REMIND is to find the optimal mix of investments in the
economy and the energy sectors of each model region given a set of population, technology,
policy and climate constraints. It also accounts for regional trade characteristics
on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due
to human activities are represented in the model.
version: 3.4.0
date-released: '2024-12-11'
repository-code: https://github.com/remindmodel/remind
keywords:
- energy
- economy
- modeling
- model
- active-development
license: AGPL-3.0-or-later
url: https://www.pik-potsdam.de/research/transformation-pathways/models/remind