@@ -620,21 +620,59 @@ def test_gti_dirint():
620
620
621
621
622
622
def test_erbs ():
623
- ghi = pd .Series ([ 0 , 50 , 1000 , 1000 ])
624
- zenith = pd .Series ([120 , 85 , 10 , 10 ] )
625
- doy = pd .Series ([1 , 1 , 1 , 180 ] )
626
- expected = pd .DataFrame (np .
627
- array ([[ - 0.00000000e+00 , 0.00000000e+00 , - 0.00000000e+00 ],
628
- [ 9.67127061e +01 , 4.15709323e +01 , 4.05715990e -01 ],
629
- [ 7.94187742e +02 , 2.17877755e +02 , 7.18119416e -01 ],
630
- [ 8.42358014e +02 , 1.70439297e +02 , 7.68919470e -01 ]]),
631
- columns = ['dni' , 'dhi' , 'kt' ])
623
+ index = pd .DatetimeIndex ([ '20190101' ] * 3 + [ '20190620' ])
624
+ ghi = pd .Series ([0 , 50 , 1000 , 1000 ], index = index )
625
+ zenith = pd .Series ([120 , 85 , 10 , 10 ], index = index )
626
+ expected = pd .DataFrame (np .array (
627
+ [[ 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ],
628
+ [ 9.67192672e +01 , 4.15703604e +01 , 4.05723511e -01 ],
629
+ [ 7.94205651e +02 , 2.17860117e +02 , 7.18132729e -01 ],
630
+ [ 8.42001578e +02 , 1.70790318e +02 , 7.68214312e -01 ]]),
631
+ columns = ['dni' , 'dhi' , 'kt' ], index = index )
632
632
633
- out = irradiance .erbs (ghi , zenith , doy )
633
+ out = irradiance .erbs (ghi , zenith , index )
634
634
635
635
assert_frame_equal (np .round (out , 0 ), np .round (expected , 0 ))
636
636
637
637
638
+ def test_erbs_min_cos_zenith_max_zenith ():
639
+ # map out behavior under difficult conditions with various
640
+ # limiting kwargs settings
641
+ columns = ['dni' , 'dhi' , 'kt' ]
642
+ times = pd .DatetimeIndex (['2016-07-19 06:11:00' ], tz = 'America/Phoenix' )
643
+
644
+ # max_zenith keeps these results reasonable
645
+ out = irradiance .erbs (ghi = 1.0 , zenith = 89.99999 ,
646
+ datetime_or_doy = times , min_cos_zenith = 0 )
647
+ expected = pd .DataFrame (np .array (
648
+ [[0. , 1. , 1. ]]),
649
+ columns = columns , index = times )
650
+ assert_frame_equal (out , expected )
651
+
652
+ # 4-5 9s will produce bad behavior without max_zenith limit
653
+ out = irradiance .erbs (ghi = 1.0 , zenith = 89.99999 ,
654
+ datetime_or_doy = times , max_zenith = 100 )
655
+ expected = pd .DataFrame (np .array (
656
+ [[6.00115286e+03 , 9.98952601e-01 , 1.16377640e-02 ]]),
657
+ columns = columns , index = times )
658
+ assert_frame_equal (out , expected )
659
+
660
+ # 1-2 9s will produce bad behavior without either limit
661
+ out = irradiance .erbs (ghi = 1.0 , zenith = 89.99 , datetime_or_doy = times ,
662
+ min_cos_zenith = 0 , max_zenith = 100 )
663
+ expected = pd .DataFrame (np .array (
664
+ [[4.78419761e+03 , 1.65000000e-01 , 1.00000000e+00 ]]),
665
+ columns = columns , index = times )
666
+ assert_frame_equal (out , expected )
667
+
668
+ # check default behavior under hardest condition
669
+ out = irradiance .erbs (ghi = 1.0 , zenith = 90 , datetime_or_doy = times )
670
+ expected = pd .DataFrame (np .array (
671
+ [[0. , 1. , 0.01163776 ]]),
672
+ columns = columns , index = times )
673
+ assert_frame_equal (out , expected )
674
+
675
+
638
676
def test_erbs_all_scalar ():
639
677
ghi = 1000
640
678
zenith = 10
0 commit comments