@@ -43,14 +43,14 @@ configuration at a handful of sites listed below.
4343 import seaborn as sns
4444 sns.set_color_codes()
4545
46- times = pd.DatetimeIndex(start = ' 2015' , end = ' 2016' , freq = ' 1h' )
46+ naive_times = pd.DatetimeIndex(start = ' 2015' , end = ' 2016' , freq = ' 1h' )
4747
4848 # very approximate
49- # latitude, longitude, name, altitude
50- coordinates = [(30 , - 110 , ' Tucson' , 700 ),
51- (35 , - 105 , ' Albuquerque' , 1500 ),
52- (40 , - 120 , ' San Francisco' , 10 ),
53- (50 , 10 , ' Berlin' , 34 )]
49+ # latitude, longitude, name, altitude, timezone
50+ coordinates = [(30 , - 110 , ' Tucson' , 700 , ' Etc/GMT+7 ' ),
51+ (35 , - 105 , ' Albuquerque' , 1500 , ' Etc/GMT+7 ' ),
52+ (40 , - 120 , ' San Francisco' , 10 , ' Etc/GMT+8 ' ),
53+ (50 , 10 , ' Berlin' , 34 , ' Etc/GMT-1 ' )]
5454
5555 import pvlib
5656
@@ -80,7 +80,9 @@ to accomplish our system modeling goal:
8080 ' surface_azimuth' : 180 }
8181
8282 energies = {}
83- for latitude, longitude, name, altitude in coordinates:
83+ # localize datetime indices (pvlib>=0.3.0)
84+ for latitude, longitude, name, altitude, timezone in coordinates:
85+ times = naive_times.tz_localize(timezone)
8486 system[' surface_tilt' ] = latitude
8587 cs = pvlib.clearsky.ineichen(times, latitude, longitude, altitude = altitude)
8688 solpos = pvlib.solarposition.get_solarposition(times, latitude, longitude)
@@ -125,8 +127,9 @@ a full understanding of what it is doing internally!
125127 from pvlib.modelchain import basic_chain
126128
127129 energies = {}
128- for latitude, longitude, name, altitude in coordinates:
129- dc, ac = basic_chain(times, latitude, longitude,
130+ for latitude, longitude, name, altitude, timezone in coordinates:
131+ dc, ac = basic_chain(naive_times.tz_localize(timezone),
132+ latitude, longitude,
130133 module, inverter,
131134 altitude = altitude,
132135 orientation_strategy = ' south_at_latitude_tilt' )
@@ -173,14 +176,15 @@ objects to accomplish our system modeling goal:
173176 inverter_parameters = inverter)
174177
175178 energies = {}
176- for latitude, longitude, name, altitude in coordinates:
177- location = Location(latitude, longitude, name = name, altitude = altitude)
179+ for latitude, longitude, name, altitude, timezone in coordinates:
180+ location = Location(latitude, longitude, name = name, altitude = altitude,
181+ tz = timezone)
178182 # very experimental
179183 mc = ModelChain(system, location,
180184 orientation_strategy = ' south_at_latitude_tilt' )
181185 # model results (ac, dc) and intermediates (aoi, temps, etc.)
182186 # assigned as mc object attributes
183- mc.run_model(times )
187+ mc.run_model(naive_times.tz_localize(timezone) )
184188 annual_energy = mc.ac.sum()
185189 energies[name] = annual_energy
186190
@@ -211,15 +215,17 @@ object to accomplish our modeling goal:
211215 from pvlib.pvsystem import LocalizedPVSystem
212216
213217 energies = {}
214- for latitude, longitude, name, altitude in coordinates:
218+ for latitude, longitude, name, altitude, timezone in coordinates:
215219 localized_system = LocalizedPVSystem(module_parameters = module,
216220 inverter_parameters = inverter,
217221 surface_tilt = latitude,
218222 surface_azimuth = 180 ,
219223 latitude = latitude,
220224 longitude = longitude,
221225 name = name,
222- altitude = altitude)
226+ altitude = altitude,
227+ tz = timezone)
228+ times = naive_times.tz_localize(timezone)
223229 clearsky = localized_system.get_clearsky(times)
224230 solar_position = localized_system.get_solarposition(times)
225231 total_irrad = localized_system.get_irradiance(solar_position[' apparent_zenith' ],
@@ -283,4 +289,3 @@ The pvlib-python maintainers thank all of pvlib's contributors of issues
283289and especially pull requests.
284290The pvlib-python community thanks all of the
285291maintainers and contributors to the PyData stack.
286-
0 commit comments