Skip to content

Commit 51e36df

Browse files
committed
fix(designday): Improve importing of optional IDF fields
1 parent 9f3c750 commit 51e36df

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

ladybug/designday.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)