コード例 #1
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_position_exception(self):
        s, eff = 0, 0
        lat, lng, h = 0, 0, 0
        v = array([0, 0, -1])
        d = datetime(2019, 1, 21, 12, 0)

        sp = solar_panel(s, eff, id_name=None)
        sp.set_orientation(v)
        sp.set_datetime(d)

        with self.assertRaises(ValueError):
            sp.set_position(-91, lng, h)  # latitude exceeds range
            sp.power()

        with self.assertRaises(ValueError):
            sp.set_position(90.1, lng, h)  # latitude exceeds range
            sp.power()

        with self.assertRaises(TypeError):
            sp.set_position('1', lng, h)  # wrong latitude type
            sp.power()

        with self.assertRaises(ValueError):
            sp.set_position(lat, lng, -1)  # altitude exceeds range
            sp.power()

        with self.assertRaises(TypeError):
            sp.set_position(lat, lng, '21')  # altitude wrong type
            sp.power()
コード例 #2
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_zero_efficiency(self):
        s, eff = 1, 0
        lat, lng, h = 0, 0, 0
        v = array([0, 0, -1])
        d = datetime(2019, 1, 21, 12, 0)

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)
コード例 #3
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_null_surface(self):
        s, eff = 0, 0.5
        lat, lng, h = 0, 0, 0
        v = array([0, 0, -1])
        d = datetime(2019, 1, 21, 12, 0)

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)
コード例 #4
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_upside_down(self):
        s, eff = 1, 0.3
        lat, lng, h = 0, 0, 0
        v = array([0, 0, 1])  # upside down
        d = datetime(2019, 1, 21, 12, 0)

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)
コード例 #5
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_datetime_exception(self):
        s, eff = 0, 0
        lat, lng, h = 0, 0, 0
        v = array([0, 0, -1])

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)

        with self.assertRaises(TypeError):
            sp.set_datetime('a')  # wrong type
            sp.power()
コード例 #6
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_orientation_exception(self):
        s, eff = 0, 0
        lat, lng, h = 0, 0, 0
        d = datetime(2019, 1, 21, 12, 0)

        sp = solar_panel(s, eff, 'panel1')
        sp.set_position(lat, lng, h)
        sp.set_datetime(d)

        with self.assertRaises(ValueError):
            sp.set_orientation(1)  # wrong type
            sp.power()
コード例 #7
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_pointing_opposite_direction(self):
        # panel points west in the morning
        s, eff = 1, 0.3
        lat, lng, h = 0, 0, 0
        v = array([0, -1, 0])  # west
        d = datetime(2019, 8, 1, 10, 0)

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)

        # panel points east in the afternoon
        s, eff = 1, 0.3
        lat, lng, h = 0, 0, 0
        v = array([0, 1, 0])  # east
        d = datetime(2019, 8, 1, 18, 0)

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)
コード例 #8
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_permanent_darkness(self):
        # north hemisphere
        s, eff = 1, 0.3
        lat, lng, h = 80, 0, 0
        v = array([0, 0, -1])
        d = datetime(2019, 1, 15, 12, 0)  # Jan 15

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)

        # south hemisphere
        s, eff = 1, 0.3
        lat, lng, h = -85, 0, 0
        v = array([0, 0, -1])
        d = datetime(2019, 7, 1, 12, 0)  # Jul 1

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)
コード例 #9
0
ファイル: test_pvpanel.py プロジェクト: ysh4017/solarpy
    def test_night(self):
        s, eff = 1, 0.3
        lat, lng, h = 0, 0, 0
        v = array([0, 0, -1])

        sp = solar_panel(s, eff)
        sp.set_position(lat, lng, h)
        sp.set_orientation(v)

        d = datetime(2019, 1, 21, 22, 15)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)

        d = datetime(2019, 7, 21, 0, 0)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)

        d = datetime(2019, 11, 1, 3, 40)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)

        d = datetime(2019, 4, 12, 5, 0)
        sp.set_datetime(d)
        self.assertAlmostEqual(sp.power(), 0)
コード例 #10
0
locale.setlocale(locale.LC_ALL, '')

# initialize location
# Ahrensburg
lat = 53.67
lon = 10.24

# initialize figures
plt.rcParams['toolbar'] = 'None'
plt.style.use('dark_background')
plt.rcParams['axes.linewidth'] = 0.1
fig = plt.figure(" ", figsize=(19.88910891089109, 10.28095238095238))
fig.set_tight_layout(False)

# initialize solar panel
panel = solar_panel(1, 0.2, id_name='NYC_xmas')  # surface, efficiency and name
panel.set_orientation(np.array([0, 0, -1]))  # upwards
panel.set_position(lat, lon, 0)  # NYC latitude, longitude, altitude
panel.set_datetime(dt.datetime(2019, 12, 25, 13, 15))  # Christmas Day!
panel.power()

y=0.48
#y=0.415
x=0.03564904697110492
dx=0.4181903129732449/244
startHour=-9
size=0.05
ax421a = plt.subplot2grid((4, 2), (0, 0), rowspan=2)  # Weather data text
ax421b = fig.add_axes([0.25, 0.8, 0.2, 0.2], anchor='NE', zorder=-1) # weather symbol
ax421c = fig.add_axes([dx*(startHour+24), y, size, size], anchor='NE', zorder=1) # weather symbol
ax421d = fig.add_axes([dx*(startHour+48), y, size, size], anchor='NE', zorder=1) # weather symbol