1
1
# (10/25/2021) BEA Table 1.1.9, line 1 GDP annual values as linked here: https://apps.bea.gov/iTable/iTable.cfm?reqid=19&step=3&isuri=1&select_all_years=0&nipa_table_list=13&series=a&first_year=2005&last_year=2020&scale=-99&categories=survey&thetable=
2
- const pricelevel_2011_to_2005 = 87.504 / 98.164
2
+ const pricelevel_2011_to_2005 = 87.504 / 98.164
3
3
4
4
function fill_socioeconomics! (source_Year, source_Country, source_Pop, source_GDP, population, gdp, country_lookup, start_year, end_year)
5
5
for i in 1 : length (source_Year)
60
60
end_year = Parameter {Int} (default= Int (2300 )) # year (annual) data should end
61
61
country_names = Parameter {String} (index= [country]) # need the names of the countries from the dimension
62
62
id = Parameter {Int64} (default= Int (6546 )) # the sample (out of 10,000) to be used
63
-
64
- population = Variable (index= [time, country], unit= " million" )
65
- population_global = Variable (index= [time], unit= " million" )
66
- deathrate = Variable (index= [time, country], unit= " deaths/1000 persons/yr" )
67
- gdp = Variable (index= [time, country], unit= " billion US\$ 2005/yr" )
68
- gdp_global = Variable (index= [time], unit= " billion US\$ 2005/yr" )
69
-
70
- population1990 = Variable (index= [country], unit = " million" )
71
- gdp1990 = Variable (index= [country], unit = unit= " billion US\$ 2005/yr" )
72
-
73
- co2_emissions = Variable (index= [time], unit= " GtC/yr" )
74
- ch4_emissions = Variable (index= [time], unit= " MtCH4/yr" )
75
- n2o_emissions = Variable (index= [time], unit= " MtN2/yr" )
76
-
77
- function init (p,v, d)
63
+
64
+ population = Variable (index= [time, country], unit= " million" )
65
+ population_global = Variable (index= [time], unit= " million" )
66
+ deathrate = Variable (index= [time, country], unit= " deaths/1000 persons/yr" )
67
+ gdp = Variable (index= [time, country], unit= " billion US\$ 2005/yr" )
68
+ gdp_global = Variable (index= [time], unit= " billion US\$ 2005/yr" )
69
+
70
+ population1990 = Variable (index= [country], unit= " million" )
71
+ gdp1990 = Variable (index= [country], unit= unit = " billion US\$ 2005/yr" )
72
+
73
+ co2_emissions = Variable (index= [time], unit= " GtC/yr" )
74
+ ch4_emissions = Variable (index= [time], unit= " MtCH4/yr" )
75
+ n2o_emissions = Variable (index= [time], unit= " MtN2/yr" )
76
+
77
+ function init (p, v, d)
78
78
79
79
# add countrys to a dictionary where each country key has a value holding it's
80
80
# index in country_names
81
- country_lookup = Dict {String,Int} (name=> i for (i,name) in enumerate (p. country_names))
81
+ country_lookup = Dict {String,Int} (name => i for (i, name) in enumerate (p. country_names))
82
82
country_indices = d. country:: Vector{Int} # helper for type stable country indices
83
83
84
84
# ----------------------------------------------------------------------
85
85
# Socioeconomic Data
86
86
# population in millions of individuals
87
87
# GDP in billions of $2005 USD
88
-
88
+
89
89
# Load Feather File
90
90
t = Arrow. Table (joinpath (datadep " rffsps_v5" , " pop_income" , " rffsp_pop_income_run_$(p. id) .feather" ))
91
91
fill_socioeconomics! (t. Year, t. Country, t. Pop, t. GDP, v. population, v. gdp, country_lookup, p. start_year, p. end_year)
92
92
93
93
for year in p. start_year: 5 : p. end_year- 5 , country in country_indices
94
94
year_as_timestep = TimestepIndex (year - p. start_year + 1 )
95
- pop_interpolator = LinearInterpolation (Float64[year, year+ 5 ], [log (v. population[year_as_timestep,country]), log (v. population[year_as_timestep+ 5 ,country])])
96
- gdp_interpolator = LinearInterpolation (Float64[year, year+ 5 ], [log (v. gdp[year_as_timestep,country]), log (v. gdp[year_as_timestep+ 5 ,country])])
95
+ pop_interpolator = LinearInterpolation (Float64[year, year+ 5 ], [log (v. population[year_as_timestep, country]), log (v. population[year_as_timestep+ 5 , country])])
96
+ gdp_interpolator = LinearInterpolation (Float64[year, year+ 5 ], [log (v. gdp[year_as_timestep, country]), log (v. gdp[year_as_timestep+ 5 , country])])
97
97
for year2 in year+ 1 : year+ 4
98
98
year2_as_timestep = TimestepIndex (year2 - p. start_year + 1 )
99
- v. population[year2_as_timestep,country] = exp (pop_interpolator[year2])
100
- v. gdp[year2_as_timestep,country] = exp (gdp_interpolator[year2])
99
+ v. population[year2_as_timestep, country] = exp (pop_interpolator[year2])
100
+ v. gdp[year2_as_timestep, country] = exp (gdp_interpolator[year2])
101
101
end
102
102
end
103
-
103
+
104
104
# add global data for future accessibility and quality control
105
- v. gdp_global[:,:] = sum (v. gdp[:,:], dims = 2 ) # sum across countries, which are the second dimension
106
- v. population_global[:,:] = sum (v. population[:,:], dims = 2 ) # sum across countries, which are the second dimension
105
+ v. gdp_global[:, :] = sum (v. gdp[:, :], dims= 2 ) # sum across countries, which are the second dimension
106
+ v. population_global[:, :] = sum (v. population[:, :], dims= 2 ) # sum across countries, which are the second dimension
107
107
108
108
# ----------------------------------------------------------------------
109
109
# Death Rate Data
115
115
g_datasets[:pop_trajectory_key ] = (load (joinpath (datadep " rffsps_v5" , " sample_numbers" , " sampled_pop_trajectory_numbers.csv" )) |> DataFrame). x
116
116
end
117
117
deathrate_trajectory_id = convert (Int64, g_datasets[:pop_trajectory_key ][p. id])
118
-
118
+
119
119
# Load Feather File
120
120
t = Arrow. Table (joinpath (datadep " rffsps_v5" , " death_rates" , " rffsp_death_rates_run_$(deathrate_trajectory_id) .feather" ))
121
121
fill_deathrates! (t. Year, t. ISO3, t. DeathRate, v. deathrate, country_lookup, p. start_year, p. end_year)
126
126
# carbon dioxide emissions in GtC
127
127
# nitrous oxide emissions in MtN2
128
128
# methane emissions in MtCH4
129
-
129
+
130
130
# add data to the global dataset if it's not there
131
131
if ! haskey (g_datasets, :ch4 )
132
132
g_datasets[:ch4 ] = load (joinpath (datadep " rffsps_v5" , " emissions" , " rffsp_ch4_emissions.csv" )) |> DataFrame
@@ -147,13 +147,13 @@ end
147
147
# Population and GDP 1990 Values
148
148
149
149
if ! haskey (g_datasets, :ypc1990 )
150
- g_datasets[:ypc1990 ] = load (joinpath (datadep " rffsps_v5" , " ypc1990" , " rffsp_ypc1990.csv" )) |>
151
- DataFrame |>
152
- i -> insertcols! (i, :sample => 1 : 10_000 ) |>
153
- i -> stack (i, Not (:sample )) |>
154
- DataFrame |>
155
- i -> rename! (i, [:sample , :country , :value ]) |>
156
- DataFrame
150
+ g_datasets[:ypc1990 ] = load (joinpath (datadep " rffsps_v5" , " ypc1990" , " rffsp_ypc1990.csv" )) |>
151
+ DataFrame |>
152
+ i -> insertcols! (i, :sample => 1 : 10_000 ) |>
153
+ i -> stack (i, Not (:sample )) |>
154
+ DataFrame |>
155
+ i -> rename! (i, [:sample , :country , :value ]) |>
156
+ DataFrame
157
157
end
158
158
if ! haskey (g_datasets, :pop1990 )
159
159
g_datasets[:pop1990 ] = load (joinpath (@__DIR__ , " .." , " .." , " data/population1990.csv" )) |> DataFrame
164
164
165
165
end
166
166
167
- function run_timestep (p,v,d, t)
167
+ function run_timestep (p, v, d, t)
168
168
169
169
if ! (gettime (t) in p. start_year: p. end_year)
170
170
error (" Cannot run SP component in year $(gettime (t)) , SP data is not available for this model and year." )
0 commit comments