@@ -251,6 +251,41 @@ def test_reindl(irrad_data, ephem_data, dni_et):
251251 assert_allclose (result , [0. , 27.9412 , 104.1317 , 34.1663 ], atol = 1e-4 )
252252
253253
254+ def test_reindl_components (irrad_data , ephem_data , dni_et ):
255+ keys = ['poa_sky_diffuse' , 'poa_isotropic' , 'poa_circumsolar' ,
256+ 'poa_horizon' ]
257+ expected = pd .DataFrame (np .array (
258+ [[0 , 27.941170 , 104.131724 , 34.166258 ],
259+ [0 , 27.177514 , 30.181807 , 27.983728 ],
260+ [0 , 0 , 72.813055 , 5.207138 ],
261+ [0 , 0.763656 , 1.136862 , 0.975393 ]]).T ,
262+ columns = keys ,
263+ index = irrad_data .index
264+ )
265+ # pandas
266+ result = irradiance .reindl (
267+ 40 , 180 , irrad_data ['dhi' ], irrad_data ['dni' ], irrad_data ['ghi' ],
268+ dni_et , ephem_data ['apparent_zenith' ], ephem_data ['azimuth' ],
269+ return_components = True )
270+ assert_frame_equal (result , expected , check_less_precise = 4 )
271+ # numpy
272+ result = irradiance .reindl (
273+ 40 , 180 , irrad_data ['dhi' ].values , irrad_data ['dni' ].values ,
274+ irrad_data ['ghi' ].values , dni_et , ephem_data ['apparent_zenith' ].values ,
275+ ephem_data ['azimuth' ].values , return_components = True )
276+ for key in keys :
277+ assert_allclose (result [key ], expected [key ], atol = 1e-4 )
278+ assert isinstance (result , dict )
279+ # scalar
280+ result = irradiance .reindl (
281+ 40 , 180 , irrad_data ['dhi' ].values [- 1 ], irrad_data ['dni' ].values [- 1 ],
282+ irrad_data ['ghi' ].values [- 1 ], dni_et [- 1 ], ephem_data ['apparent_zenith' ].values [- 1 ],
283+ ephem_data ['azimuth' ].values [- 1 ], return_components = True )
284+ for key in keys :
285+ assert_allclose (result [key ], expected [key ].iloc [- 1 ], atol = 1e-4 )
286+ assert isinstance (result , dict )
287+
288+
254289def test_king (irrad_data , ephem_data ):
255290 result = irradiance .king (40 , irrad_data ['dhi' ], irrad_data ['ghi' ],
256291 ephem_data ['apparent_zenith' ])
0 commit comments