43
44
45
46
47 IMPLICIT NONE
48
49 INTEGER, INTENT(in) :: &
50 emissionsmethod, &
51 it, &
52 imin, &
53 dls
54
55 INTEGER, DIMENSION(3), INTENT(in) :: DayofWeek_id
56
57 REAL(KIND(1D0)), DIMENSION(12), INTENT(in) :: HDD_id
58
59 REAL(KIND(1D0)), DIMENSION(2), INTENT(in) :: &
60 qf_a, qf_b, qf_c, &
61 ah_min, &
62 ah_slope_heating, &
63 ah_slope_cooling, &
64 fcef_v_kgkm, &
65 popdensdaytime, &
66 baset_heating, &
67 baset_cooling, &
68 trafficrate, &
69 qf0_beu
70
71 REAL(KIND(1D0)), DIMENSION(0:23, 2), INTENT(in) :: AHProf_24hr
72 REAL(KIND(1D0)), DIMENSION(0:23, 2), INTENT(in) :: HumActivity_24hr
73 REAL(KIND(1D0)), DIMENSION(0:23, 2), INTENT(in) :: TraffProf_24hr
74 REAL(KIND(1D0)), DIMENSION(0:23, 2), INTENT(in) :: PopProf_24hr
75
76 REAL(KIND(1D0)), INTENT(in) :: &
77 co2pointsource, &
78 ef_umolco2perj, &
79 enef_v_jkm, &
80 trafficunits, &
81 frfossilfuel_heat, &
82 frfossilfuel_nonheat, &
83 minfcmetab, &
84 maxfcmetab, &
85 minqfmetab, &
86 maxqfmetab, &
87 popdensnighttime, &
88 surfacearea, &
89 temp_c
90
91 REAL(KIND(1D0)), INTENT(out) :: &
92 qf_sahp, &
93 fc_anthro, &
94 fc_metab, fc_traff, fc_build, fc_point
95
96 INTEGER :: &
97 iu, &
98 ih
99
100 REAL(KIND(1D0)) :: &
103 hdd_daily, &
104 cdd_daily, &
105 tair_avg_daily, &
106 numcapita(2), &
107 dp_x_rhopop, dp_x_rhopop_traff, &
108 qf_build, qf_metab, qf_traff, &
109 qf_sahp_base, &
110 qf_sahp_heating, &
111 qf_sahp_cooling, &
112 popdornort, &
113 actdornort, &
114 traffdornort, &
115 ahdornort
116
117
118 qf_traff = 0
119 qf_sahp_heating = 0
120 qf_sahp_cooling = 0
121
122
123 hdd_daily = hdd_id(7)
124 cdd_daily = hdd_id(8)
125
126 tair_avg_daily = hdd_id(10)
127
128
129
130
131
132 IF (popdensdaytime(1) >= 0 .AND. popdensnighttime >= 0) numcapita(
133 IF (popdensdaytime(2) >= 0 .AND. popdensnighttime >= 0) numcapita(
134
135
136
137
138
139 ih = it - dls
140 IF (ih < 0) ih = 23
141
142
143 iu = 1
144 IF (dayofweek_id(1) == 1 .OR. dayofweek_id(1) == 7) iu = 2
145
146
147
148
149
150
151
152
153
158
159
160 dp_x_rhopop = ahdornort*numcapita(iu)
161
162 qf_metab = (popdensnighttime*minqfmetab*((2 - actdornort) + (2 - popdornort
163 popdensdaytime(iu)*maxqfmetab*((actdornort - 1) + (popdornort
164
165 fc_metab = (popdensnighttime*minfcmetab*((2 - actdornort) + (2 - popdornort
166 popdensdaytime(iu)*maxfcmetab*((actdornort - 1) + (popdornort
167
168
169
170
171
172
173 IF (emissionsmethod == 1 .OR. emissionsmethod == 4 .OR. &
174 emissionsmethod == 11 .OR. emissionsmethod == 14 .OR. &
175 emissionsmethod == 21 .OR. emissionsmethod == 24 .OR. &
176 emissionsmethod == 31 .OR. emissionsmethod == 34 .OR. &
177 emissionsmethod == 41 .OR. emissionsmethod == 44) THEN
178
179
180
181
182 IF (temp_c < baset_heating(iu)) THEN
183
184 qf_sahp_heating = (ah_slope_heating(iu)*(baset_heating(iu) -
185 ELSE
186 qf_sahp_heating = 0
187
188 END IF
189
190
191 qf_sahp_base = ah_min(iu)*ahdornort
192 qf_sahp_cooling = 0
193
194 ELSEIF (emissionsmethod == 2 .OR. emissionsmethod == 5 .OR. &
195 emissionsmethod == 12 .OR. emissionsmethod == 15 .OR. &
196 emissionsmethod == 22 .OR. emissionsmethod == 25 .OR. &
197 emissionsmethod == 32 .OR. emissionsmethod == 35 .OR. &
198 emissionsmethod == 42 .OR. emissionsmethod == 45) THEN
199
200
201
202
203 qf_sahp_base = (qf_a(iu))*dp_x_rhopop
204 qf_sahp_heating = (qf_c(iu)*hdd_daily)*dp_x_rhopop
205 qf_sahp_cooling = (qf_b(iu)*cdd_daily)*dp_x_rhopop
206
207 ELSEIF (emissionsmethod == 3 .OR. emissionsmethod == 6 .OR. &
208 emissionsmethod == 13 .OR. emissionsmethod == 16 .OR. &
209 emissionsmethod == 23 .OR. emissionsmethod == 26 .OR. &
210 emissionsmethod == 33 .OR. emissionsmethod == 36 .OR. &
211 emissionsmethod == 43 .OR. emissionsmethod == 46) THEN
212
213
214
215
216
217
218 qf_sahp_base = ah_min(iu)*ahdornort
219
220 IF (tair_avg_daily < baset_heating(iu)) THEN
221 qf_sahp_heating = (ah_slope_heating(iu)*(baset_heating(iu) -
222 qf_sahp_cooling = 0
223
224 ELSEIF (tair_avg_daily > baset_cooling(iu)) THEN
225 qf_sahp_heating = 0
226 qf_sahp_cooling = (ah_slope_cooling(iu)*(tair_avg_daily - baset_cooling
227
228 ELSE
229 qf_sahp_heating = 0
230 qf_sahp_cooling = 0
231 END IF
232
233 END IF
234
235
236 qf_sahp = qf_sahp_base + qf_sahp_heating + qf_sahp_cooling
237
238 IF (emissionsmethod >= 1 .AND. emissionsmethod <= 3 .OR. &
239 emissionsmethod >= 11 .AND. emissionsmethod <= 13 .OR. &
240 emissionsmethod >= 21 .AND. emissionsmethod <= 23 .OR. &
241 emissionsmethod >= 31 .AND. emissionsmethod <= 33 .OR. &
242 emissionsmethod >= 41 .AND. emissionsmethod <= 43) THEN
243
244
245
246 IF ((qf_sahp_base - qf_metab) > 0) THEN
247 qf_build = qf_sahp_base*qf0_beu(iu) + qf_sahp_heating + qf_sahp_cooling
248
249 ELSE
250 CALL errorhint(69,
'QF metab exceeds base QF.', qf_metab, qf_sahp_base
251
252 qf_build = qf_sahp_heating + qf_sahp_cooling + (qf_sahp_base
253 END IF
254
255
256
257
258 fc_build = qf_sahp_heating*frfossilfuel_heat*ef_umolco2perj
259
260
261 IF ((qf_sahp_base - qf_metab) > 0) THEN
262 fc_build = fc_build + qf_sahp_base*qf0_beu(iu)*frfossilfuel_nonheat
263 END IF
264
265
266
267 qf_traff = qf_sahp_base*(1.0 - qf0_beu(iu)) - qf_metab
268
269
270 fc_traff = qf_traff/enef_v_jkm*fcef_v_kgkm(iu)*1e3*1e6/44
271
272
273 IF (co2pointsource > 0) THEN
274 fc_point = co2pointsource*1e3*1e6/(12*60*60*24*surfacearea)
275 ELSE
276 fc_point = 0
277 END IF
278
279
280 fc_anthro = fc_metab + fc_traff + fc_build + fc_point
281
282 ELSEIF (emissionsmethod >= 4 .AND. emissionsmethod <= 6 .OR. &
283 emissionsmethod >= 14 .AND. emissionsmethod <= 16 .OR. &
284 emissionsmethod >= 24 .AND. emissionsmethod <= 26 .OR. &
285 emissionsmethod >= 34 .AND. emissionsmethod <= 36 .OR. &
286 emissionsmethod >= 44 .AND. emissionsmethod <= 46) THEN
287
288
289
290 IF (trafficunits == 1) THEN
291
292 qf_traff = trafficrate(iu)/(60*60*24)*enef_v_jkm*traffdornort
293
294 fc_traff = trafficrate(iu)/(60*60*24)*fcef_v_kgkm(iu)*1e3*1e6
295
296 ELSEIF (trafficunits == 2) THEN
297 dp_x_rhopop_traff = traffdornort*numcapita(iu)/10000
298
299 qf_traff = trafficrate(iu)/(60*60*24)*enef_v_jkm*dp_x_rhopop_traff
300
301 fc_traff = trafficrate(iu)/(60*60*24)*fcef_v_kgkm(iu)*1e3*1e6
302
303 ELSE
304 CALL errorhint(75,
'Check TrafficUnits', trafficunits, -999d1
305
306 END IF
307
308
309
310 qf_build = ((qf_sahp_base*qf0_beu(iu) + qf_sahp_heating + qf_sahp_cooling
311 (popdensnighttime*(2 - popdornort) + popdensdaytime(iu
312
313
314 fc_build = qf_sahp_heating*frfossilfuel_heat*ef_umolco2perj
315
316 fc_build = fc_build + qf_sahp_base*qf0_beu(iu)*frfossilfuel_nonheat
317
318
319 IF (co2pointsource > 0) THEN
320 fc_point = co2pointsource*1e3*1e6/(12*60*60*24*surfacearea)
321 ELSE
322 fc_point = 0
323 END IF
324
325
326 qf_sahp_base = qf_sahp_base + qf_traff + qf_metab
327
328
329 qf_sahp = qf_metab + qf_traff + qf_build
330
331
332 fc_anthro = fc_metab + fc_traff + fc_build + fc_point
333
334 END IF
335
336 RETURN
subroutine errorhint(errh, problemfile, value, value2, valuei)