@@ -43,14 +43,14 @@ configuration at a handful of sites listed below.
43
43
import seaborn as sns
44
44
sns.set_color_codes()
45
45
46
- times = pd.DatetimeIndex(start = ' 2015' , end = ' 2016' , freq = ' 1h' )
46
+ naive_times = pd.DatetimeIndex(start = ' 2015' , end = ' 2016' , freq = ' 1h' )
47
47
48
48
# 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 ' )]
54
54
55
55
import pvlib
56
56
@@ -80,7 +80,9 @@ to accomplish our system modeling goal:
80
80
' surface_azimuth' : 180 }
81
81
82
82
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)
84
86
system[' surface_tilt' ] = latitude
85
87
cs = pvlib.clearsky.ineichen(times, latitude, longitude, altitude = altitude)
86
88
solpos = pvlib.solarposition.get_solarposition(times, latitude, longitude)
@@ -125,8 +127,9 @@ a full understanding of what it is doing internally!
125
127
from pvlib.modelchain import basic_chain
126
128
127
129
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,
130
133
module, inverter,
131
134
altitude = altitude,
132
135
orientation_strategy = ' south_at_latitude_tilt' )
@@ -173,14 +176,15 @@ objects to accomplish our system modeling goal:
173
176
inverter_parameters = inverter)
174
177
175
178
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)
178
182
# very experimental
179
183
mc = ModelChain(system, location,
180
184
orientation_strategy = ' south_at_latitude_tilt' )
181
185
# model results (ac, dc) and intermediates (aoi, temps, etc.)
182
186
# assigned as mc object attributes
183
- mc.run_model(times )
187
+ mc.run_model(naive_times.tz_localize(timezone) )
184
188
annual_energy = mc.ac.sum()
185
189
energies[name] = annual_energy
186
190
@@ -211,15 +215,17 @@ object to accomplish our modeling goal:
211
215
from pvlib.pvsystem import LocalizedPVSystem
212
216
213
217
energies = {}
214
- for latitude, longitude, name, altitude in coordinates:
218
+ for latitude, longitude, name, altitude, timezone in coordinates:
215
219
localized_system = LocalizedPVSystem(module_parameters = module,
216
220
inverter_parameters = inverter,
217
221
surface_tilt = latitude,
218
222
surface_azimuth = 180 ,
219
223
latitude = latitude,
220
224
longitude = longitude,
221
225
name = name,
222
- altitude = altitude)
226
+ altitude = altitude,
227
+ tz = timezone)
228
+ times = naive_times.tz_localize(timezone)
223
229
clearsky = localized_system.get_clearsky(times)
224
230
solar_position = localized_system.get_solarposition(times)
225
231
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
283
289
and especially pull requests.
284
290
The pvlib-python community thanks all of the
285
291
maintainers and contributors to the PyData stack.
286
-
0 commit comments