@@ -184,8 +184,8 @@ def from_idf(cls, idf_string, location):
184184 # extract humidity conditions
185185 h_type = ep_fields [9 ]
186186 h_val = 0 if ep_fields [10 ] == '' else float (ep_fields [10 ])
187- rain = True if ep_fields [18 ].lower () == 'yes' else False
188- snow = True if ep_fields [19 ].lower () == 'yes' else False
187+ rain = True if len ( ep_fields ) > 18 and ep_fields [18 ].lower () == 'yes' else False
188+ snow = True if len ( ep_fields ) > 19 and ep_fields [19 ].lower () == 'yes' else False
189189 if h_type == 'HumidityRatio' :
190190 h_val = float (ep_fields [12 ])
191191 elif h_type == 'Enthalpy' :
@@ -197,19 +197,25 @@ def from_idf(cls, idf_string, location):
197197 wind_condition = WindCondition (float (ep_fields [16 ]), float (ep_fields [17 ]))
198198
199199 # extract the sky conditions
200- sky_model = ep_fields [21 ]
201- dl_save = True if ep_fields [20 ].lower () == 'yes' else False
202200 date_obj = Date (int (ep_fields [2 ]), int (ep_fields [3 ]))
203- if sky_model == 'ASHRAEClearSky' :
204- sky_condition = ASHRAEClearSky (date_obj , float (ep_fields [26 ]), dl_save )
205- elif sky_model == 'ASHRAETau' :
206- sky_condition = ASHRAETau (date_obj , float (ep_fields [24 ]),
207- float (ep_fields [25 ]), dl_save )
208- else :
209- sky_condition = _SkyCondition (date_obj , dl_save )
210- if sky_model == 'Schedule' :
211- sky_condition .beam_schedule = ep_fields [22 ]
212- sky_condition .diffuse_schedule = ep_fields [23 ]
201+ dl_save = True if len (ep_fields ) > 20 and ep_fields [20 ].lower () == 'yes' \
202+ else False
203+ if len (ep_fields ) > 21 :
204+ sky_model = ep_fields [21 ]
205+ if sky_model == 'ASHRAEClearSky' :
206+ sky_clr = float (ep_fields [26 ]) if len (ep_fields ) > 26 else 0
207+ sky_condition = ASHRAEClearSky (date_obj , sky_clr , dl_save )
208+ elif sky_model == 'ASHRAETau' :
209+ t_b = float (ep_fields [24 ]) if len (ep_fields ) > 24 else 0
210+ t_d = float (ep_fields [25 ]) if len (ep_fields ) > 25 else 0
211+ sky_condition = ASHRAETau (date_obj , t_b , t_d , dl_save )
212+ else :
213+ sky_condition = _SkyCondition (date_obj , dl_save )
214+ if sky_model == 'Schedule' :
215+ sky_condition .beam_schedule = ep_fields [22 ]
216+ sky_condition .diffuse_schedule = ep_fields [23 ]
217+ else : # default of no sky condition
218+ sky_condition = ASHRAEClearSky (date_obj , 0 , dl_save )
213219
214220 return cls (name , day_type , location , dry_bulb_condition ,
215221 humidity_condition , wind_condition , sky_condition )
0 commit comments