|
6 | 6 | the time to read the source code for the module.
|
7 | 7 | """
|
8 | 8 |
|
| 9 | +from functools import partial |
| 10 | + |
9 | 11 | import pandas as pd
|
10 | 12 |
|
11 | 13 | from pvlib import solarposition, pvsystem, clearsky, atmosphere
|
| 14 | +from pvlib.tracking import SingleAxisTracker |
12 | 15 | import pvlib.irradiance # avoid name conflict with full import
|
13 | 16 |
|
14 | 17 |
|
@@ -317,9 +320,32 @@ def run_model(self, times, irradiance=None, weather=None):
|
317 | 320 | airmass_data=self.airmass['airmass_absolute'])
|
318 | 321 | self.irradiance = irradiance
|
319 | 322 |
|
320 |
| - self.total_irrad = self.system.get_irradiance( |
321 |
| - self.solar_position['apparent_zenith'], |
322 |
| - self.solar_position['azimuth'], |
| 323 | + # PVSystem.get_irradiance and SingleAxisTracker.get_irradiance |
| 324 | + # have different method signatures, so use partial to handle |
| 325 | + # the differences. |
| 326 | + if isinstance(self.system, SingleAxisTracker): |
| 327 | + self.tracking = self.system.singleaxis( |
| 328 | + self.solar_position['apparent_zenith'], |
| 329 | + self.solar_position['azimuth']) |
| 330 | + self.tracking['surface_tilt'] = ( |
| 331 | + self.tracking['surface_tilt'] |
| 332 | + .fillna(self.system.axis_tilt)) |
| 333 | + self.tracking['surface_azimuth'] = ( |
| 334 | + self.tracking['surface_azimuth'] |
| 335 | + .fillna(self.system.axis_azimuth)) |
| 336 | + get_irradiance = partial( |
| 337 | + self.system.get_irradiance, |
| 338 | + surface_tilt=self.tracking['surface_tilt'], |
| 339 | + surface_azimuth=self.tracking['surface_azimuth'], |
| 340 | + solar_zenith=self.solar_position['apparent_zenith'], |
| 341 | + solar_azimuth=self.solar_position['azimuth']) |
| 342 | + else: |
| 343 | + get_irradiance = partial( |
| 344 | + self.system.get_irradiance, |
| 345 | + self.solar_position['apparent_zenith'], |
| 346 | + self.solar_position['azimuth']) |
| 347 | + |
| 348 | + self.total_irrad = get_irradiance( |
323 | 349 | self.irradiance['dni'],
|
324 | 350 | self.irradiance['ghi'],
|
325 | 351 | self.irradiance['dhi'],
|
|
0 commit comments