/
gtap6data.gms
238 lines (193 loc) · 7.18 KB
/
gtap6data.gms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
* Initial creation data: 2 August 2005 (tfr)
* Updates:
* 3 August 2005 - Introduced sets define sector-specific factors
* sf(f) and mobile factors mf(f) on the basis of elasticity
* etrae(f) which is read from default.prm.
$if not set ds $set ds 'main_data_out'
$if not set datadir $set datadir "..\data\"
$setglobal datadir %datadir%
$if not set ghgdata $set ghgdata no
$setglobal ghgdata %ghgdata%
$if not set shock $set shock "test"
$setglobal shock %shock%
set i(*) Goods
f(*) Factors
r(*) Regions
$if exist %ds%.gdx $gdxin '%ds%.gdx'
$if not exist %ds%.gdx $gdxin '%datadir%%ds%.gdx'
$load r f i
set
rnum(r) Numeraire region,
sf(f) Sluggish primary factors (sector-specific)
mf(f) Mobile primary factors
src Sources /domestic, imported/,
ec Energy goods /
ecoa Coal,
eoil Crude oil,
egas Natural gas,
ep_c Refined oil products,
eely Electricity,
egdt Gas distribution /;
alias (r,s), (i,j);
parameters
vdgm(i,r) Government - domestic purchases at market prices,
vigm(i,r) Government - imports at market prices,
vdpm(i,r) Private households - domestic purchases at market prices,
vipm(i,r) Private households - imports at market prices
vdim(i,r) Investment demand
vfm(f,j,r) Endowments - Firms' purchases at market prices,
vdfm(i,j,r) Intermediates - firms' domestic purchases at market prices,
vifm(i,j,r) Intermediates - firms' imports at market prices,
vxmd(i,r,s) Trade - bilateral exports at market prices,
vst(i,r) Trade - exports for international transportation,
vtwr(i,j,r,s) Trade - Margins for international transportation at world prices,
p_priceShock(j,r) Price Shock,
p_techProgFac(j,r)
;
$load vdgm vigm vdpm vipm vfm vdim p_priceShock
$load vdfm vifm vxmd vst vtwr p_techProgFac
p_priceShock("CGDS",r) = 1;
p_techProgFac("CGDS",r) = 1;
display
vdgm
vigm
vdpm
vipm
vdim
vfm
vdfm
vifm
vxmd
vst
vtwr
p_priceShock
p_techProgFac
;
parameter
evf(ec,i,r) Volume of input purchases by firms (mtoe)
evh(ec,r) Volume of purchases by households (mtoe)
evt(ec,r,r) Volume of bilateral trade (mtoe)
evq(ec,r) Energy production (mtoe);
$load evf evh evt
evq(ec,r) = sum(i, evf(ec,i,r)) + evh(ec,r) + sum(s, evt(ec,r,s)-evt(ec,s,r));
display evf
evh
evt
evq
;
set srcs Source /dom, imp/,
ghg Greenhouse gases /co2/;
parameter eghg(ghg,i,srcs,*,r) Emissions of greenhouse gases (Gg CO2);
$if not %ghgdata%==no $load eghg
$if %ghgdata%==no eghg(ghg,i,srcs,j,r)=0; eghg(ghg,i,srcs,"hh",r)=0; eghg(ghg,i,srcs,"govt",r)=0;
display eghg;
parameter
rto(i,r) Output (or income) subsidy rates
rtf(f,j,r) Primary factor and commodity rates taxes
rtpd(i,r) Private domestic consumption taxes
rtpi(i,r) Private import consumption tax rates
rtgd(i,r) Government domestic rates
rtgi(i,r) Government import tax rates
rtfd(i,j,r) Firms domestic tax rates
rtfi(i,j,r) Firms' import tax rates
rtxs(i,r,s) Export subsidy rates
rtms(i,r,s) Import taxes rates;
$load rto rtf rtpd rtpi rtgd rtgi rtfd rtfi rtxs rtms
display
rto
rtf
rtpd
rtpi
rtgd
rtgi
rtfd
rtfi
rtxs
rtms
;
parameter
esubd(i) Elasticity of substitution (M versus D),
esubva(j) Elasticity of substitution between factors
esubm(i) Intra-import elasticity of substitution,
etrae(f) Elasticity of transformation,
eta(i,r) Income elasticity of demand,
epsilon(i,r) Own-price elasticity of demand;
$load esubd esubva esubm etrae eta epsilon
* Declare some intermediate arrays which are required to
* evaluate tax rates:
parameter vdm(i,r) Aggregate demand for domestic output,
vom(i,r) Total supply at market prices;
vdm(i,r) = vdpm(i,r) + vdgm(i,r) + sum(j, vdfm(i,j,r)) + vdim(i,r);
vom(i,r) = vdm(i,r) + sum(s, vxmd(i,r,s)) + vst(i,r);
parameter
rtf0(f,j,r) Primary factor and commodity rates taxes
rtpd0(i,r) Private domestic consumption taxes
rtpi0(i,r) Private import consumption tax rates
rtgd0(i,r) Government domestic rates
rtgi0(i,r) Government import tax rates
rtfd0(i,j,r) Firms domestic tax rates
rtfi0(i,j,r) Firms' import tax rates
rtxs0(i,r,s) Export subsidy rates
rtms0(i,r,s) Import taxes rates;
rtf0(f,j,r) = rtf(f,j,r);
rtpd0(i,r) = rtpd(i,r);
rtpi0(i,r) = rtpi(i,r);
rtgd0(i,r) = rtgd(i,r);
rtgi0(i,r) = rtgi(i,r);
rtfd0(i,j,r) = rtfd(i,j,r);
rtfi0(i,j,r) = rtfi(i,j,r);
rtxs0(i,r,s) = rtxs(i,r,s);
rtms0(i,r,s) = rtms(i,r,s);
parameter pvxmd(i,s,r) Import price (power of benchmark tariff)
pvtwr(i,s,r) Import price for transport services;
pvxmd(i,s,r) = (1+rtms0(i,s,r)) * (1-rtxs0(i,s,r));
pvtwr(i,s,r) = 1+rtms0(i,s,r);
parameter bmkprofit(i,r) Zero profit check;
bmkprofit(i,r) = round(vom(i,r)*(1-rto(i,r))
- sum(j, vdfm(j,i,r)*(1+rtfd(j,i,r))+vifm(j,i,r)*(1+rtfi(j,i,r)))
- sum(f, vfm(f,i,r)*(1+rtf(f,i,r))), 8);
display bmkprofit;
parameter
vtw(j) Aggregate international transportation services,
vpm(r) Aggregate private demand,
vgm(r) Aggregate public demand,
vim(i,r) Aggregate imports,
evom(f,r) Aggregate factor endowment at market prices,
vb(*) Current account balance;
vtw(j) = sum(r, vst(j,r));
vpm(r) = sum(i, vdpm(i,r)*(1+rtpd0(i,r)) + vipm(i,r)*(1+rtpi0(i,r)));
vgm(r) = sum(i, vdgm(i,r)*(1+rtgd0(i,r)) + vigm(i,r)*(1+rtgi0(i,r)));
vim(i,r) = vipm(i,r) + vigm(i,r) + sum(j, vifm(i,j,r));
evom(f,r) = sum(j, vfm(f,j,r));
vb(r) = vpm(r) + vgm(r) + sum(i,vdim(i,r))
- sum(f, evom(f,r))
- sum(j, vom(j,r)*rto(j,r))
- sum(j, sum(i, vdfm(i,j,r)*rtfd(i,j,r) + vifm(i,j,r)*rtfi(i,j,r)))
- sum(j, sum(f, vfm(f,j,r)*rtf(f,j,r)))
- sum(i, vdpm(i,r)*rtpd(i,r) + vipm(i,r)*rtpi(i,r))
- sum(i, vdgm(i,r)*rtgd(i,r) + vigm(i,r)*rtgi(i,r))
- sum((i,s), rtms(i,s,r) * (vxmd(i,s,r) * (1-rtxs(i,s,r)) + sum(j,vtwr(j,i,s,r))))
+ sum((i,s), rtxs(i,r,s) * vxmd(i,r,s));
vb("chksum") = sum(r, vb(r));
display vb;
* Determine which factors are sector-specific
mf(f) = yes$(1/etrae(f)=0);
sf(f) = yes$(1/etrae(f)>0);
display
mf
sf
vtw
vpm
vgm
vim
vb
vom
vdm
;
* Define a numeraire region for denominating international
* transfers:
rnum(r) = yes$(vpm(r)=smax(s,vpm(s)));
display
rnum
evom;
execute_unload "in_test.gdx";