@@ -100,9 +100,11 @@ def test_get_irradiance_poa():
100
100
expected_diffuse = np .array ([300. ])
101
101
expected_direct = np .array ([700. ])
102
102
expected_global = expected_diffuse + expected_direct
103
+ expected_shaded_fraction = np .array ([0. ])
103
104
assert np .isclose (res ['poa_global' ], expected_global )
104
105
assert np .isclose (res ['poa_diffuse' ], expected_diffuse )
105
106
assert np .isclose (res ['poa_direct' ], expected_direct )
107
+ assert np .isclose (res ['shaded_fraction' ], expected_shaded_fraction )
106
108
# vector inputs
107
109
surface_tilt = np .array ([0. , 0. , 0. , 0. ])
108
110
height = 1.
@@ -115,13 +117,16 @@ def test_get_irradiance_poa():
115
117
expected_direct = np .array (
116
118
[700. , 350. * np .sqrt (2 ), 350. * np .sqrt (2 ), 0. ])
117
119
expected_global = expected_diffuse + expected_direct
120
+ expected_shaded_fraction = np .array (
121
+ [0. , 0. , 0. , 0. ])
118
122
res = infinite_sheds .get_irradiance_poa (
119
123
surface_tilt , surface_azimuth , solar_zenith , solar_azimuth ,
120
124
gcr , height , pitch , ghi , dhi , dni ,
121
125
albedo , iam = iam , npoints = npoints )
122
126
assert np .allclose (res ['poa_global' ], expected_global )
123
127
assert np .allclose (res ['poa_diffuse' ], expected_diffuse )
124
128
assert np .allclose (res ['poa_direct' ], expected_direct )
129
+ assert np .allclose (res ['shaded_fraction' ], expected_shaded_fraction )
125
130
# series inputs
126
131
surface_tilt = pd .Series (surface_tilt )
127
132
surface_azimuth = pd .Series (data = surface_azimuth , index = surface_tilt .index )
@@ -133,15 +138,19 @@ def test_get_irradiance_poa():
133
138
data = expected_direct , index = surface_tilt .index )
134
139
expected_global = expected_diffuse + expected_direct
135
140
expected_global .name = 'poa_global' # to match output Series
141
+ expected_shaded_fraction = pd .Series (
142
+ data = expected_shaded_fraction , index = surface_tilt .index )
143
+ expected_shaded_fraction .name = 'shaded_fraction' # to match output Series
136
144
res = infinite_sheds .get_irradiance_poa (
137
145
surface_tilt , surface_azimuth , solar_zenith , solar_azimuth ,
138
146
gcr , height , pitch , ghi , dhi , dni ,
139
147
albedo , iam = iam , npoints = npoints )
140
148
assert isinstance (res , pd .DataFrame )
141
149
assert_series_equal (res ['poa_global' ], expected_global )
150
+ assert_series_equal (res ['shaded_fraction' ], expected_shaded_fraction )
142
151
assert all (k in res .columns for k in [
143
152
'poa_global' , 'poa_diffuse' , 'poa_direct' , 'poa_ground_diffuse' ,
144
- 'poa_sky_diffuse' ])
153
+ 'poa_sky_diffuse' , 'shaded_fraction' ])
145
154
146
155
147
156
def test__backside_tilt ():
@@ -177,10 +186,16 @@ def test_get_irradiance(vectorize):
177
186
expected_front_diffuse = np .array ([300. ])
178
187
expected_front_direct = np .array ([700. ])
179
188
expected_front_global = expected_front_diffuse + expected_front_direct
189
+ expected_shaded_fraction_front = np .array ([0. ])
190
+ expected_shaded_fraction_back = np .array ([0. ])
180
191
assert np .isclose (result ['poa_front' ], expected_front_global )
181
192
assert np .isclose (result ['poa_front_diffuse' ], expected_front_diffuse )
182
193
assert np .isclose (result ['poa_front_direct' ], expected_front_direct )
183
194
assert np .isclose (result ['poa_global' ], result ['poa_front' ])
195
+ assert np .isclose (result ['shaded_fraction_front' ],
196
+ expected_shaded_fraction_front )
197
+ assert np .isclose (result ['shaded_fraction_back' ],
198
+ expected_shaded_fraction_back )
184
199
# series inputs
185
200
ghi = pd .Series ([1000. , 500. , 500. , np .nan ])
186
201
dhi = pd .Series ([300. , 500. , 500. , 500. ], index = ghi .index )
@@ -200,7 +215,12 @@ def test_get_irradiance(vectorize):
200
215
expected_poa_global = pd .Series (
201
216
[1000. , 500. , result_front ['poa_global' ][2 ] * (1 + 0.8 * 0.98 ),
202
217
np .nan ], index = ghi .index , name = 'poa_global' )
218
+ expected_shaded_fraction = pd .Series (
219
+ result_front ['shaded_fraction' ], index = ghi .index ,
220
+ name = 'shaded_fraction_front' )
203
221
assert_series_equal (result ['poa_global' ], expected_poa_global )
222
+ assert_series_equal (result ['shaded_fraction_front' ],
223
+ expected_shaded_fraction )
204
224
205
225
206
226
def test_get_irradiance_limiting_gcr ():
@@ -230,6 +250,8 @@ def test_get_irradiance_limiting_gcr():
230
250
expected_direct = np .array ([0. ])
231
251
expected_diffuse = expected_ground_diffuse + expected_sky_diffuse
232
252
expected_poa = expected_diffuse + expected_direct
253
+ expected_shaded_fraction_front = np .array ([0. ])
254
+ expected_shaded_fraction_back = np .array ([0. ])
233
255
assert np .isclose (result ['poa_front' ], expected_poa , rtol = 0.01 )
234
256
assert np .isclose (result ['poa_front_diffuse' ], expected_diffuse , rtol = 0.01 )
235
257
assert np .isclose (result ['poa_front_direct' ], expected_direct )
@@ -244,6 +266,10 @@ def test_get_irradiance_limiting_gcr():
244
266
result ['poa_back_sky_diffuse' ])
245
267
assert np .isclose (result ['poa_front_ground_diffuse' ],
246
268
result ['poa_back_ground_diffuse' ])
269
+ assert np .isclose (result ['shaded_fraction_front' ],
270
+ expected_shaded_fraction_front )
271
+ assert np .isclose (result ['shaded_fraction_back' ],
272
+ expected_shaded_fraction_back )
247
273
248
274
249
275
def test_get_irradiance_with_haydavies ():
@@ -272,10 +298,16 @@ def test_get_irradiance_with_haydavies():
272
298
expected_front_diffuse = np .array ([151.38 ])
273
299
expected_front_direct = np .array ([848.62 ])
274
300
expected_front_global = expected_front_diffuse + expected_front_direct
301
+ expected_shaded_fraction_front = np .array ([0. ])
302
+ expected_shaded_fraction_back = np .array ([0. ])
275
303
assert np .isclose (result ['poa_front' ], expected_front_global )
276
304
assert np .isclose (result ['poa_front_diffuse' ], expected_front_diffuse )
277
305
assert np .isclose (result ['poa_front_direct' ], expected_front_direct )
278
306
assert np .isclose (result ['poa_global' ], result ['poa_front' ])
307
+ assert np .isclose (result ['shaded_fraction_front' ],
308
+ expected_shaded_fraction_front )
309
+ assert np .isclose (result ['shaded_fraction_back' ],
310
+ expected_shaded_fraction_back )
279
311
# test for when dni_extra is not supplied
280
312
with pytest .raises (ValueError , match = 'supply dni_extra for haydavies' ):
281
313
result = infinite_sheds .get_irradiance (
0 commit comments