honeybee-radiance-postprocess 0.4.477__py2.py3-none-any.whl → 0.4.479__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,9 @@
1
1
  """honeybee-radiance-postprocess WELL commands."""
2
- import json
3
2
  import sys
4
3
  import logging
5
- import os
6
4
  import click
7
5
 
8
6
  from ..well.well import well_annual_daylight
9
- from ..results.annual_daylight import AnnualDaylight
10
7
 
11
8
  _logger = logging.getLogger(__name__)
12
9
 
@@ -21,39 +18,20 @@ def well():
21
18
  'folder',
22
19
  type=click.Path(exists=True, file_okay=False, dir_okay=True, resolve_path=True)
23
20
  )
21
+ @click.argument(
22
+ 'daylight-hours',
23
+ type=click.Path(exists=True, file_okay=True, dir_okay=False, resolve_path=True)
24
+ )
24
25
  @click.option(
25
26
  '--grids-filter', '-gf', help='A pattern to filter the grids.', default='*',
26
27
  show_default=True
27
28
  )
28
- @click.option(
29
- '--shade-transmittance', '-st', help='A value to use as a multiplier in place of '
30
- 'solar shading. Value for shade transmittance must be 1 > value > 0.',
31
- default=0.02, show_default=True, type=click.FLOAT
32
- )
33
- @click.option(
34
- '--shade-transmittance-file', '-stf', help='A JSON file with a dictionary '
35
- 'where aperture groups are keys, and the value for each key is the shade '
36
- 'transmittance. Values for shade transmittance must be 1 > value > 0. '
37
- 'If any aperture groups are missing in the JSON file, its shade transmittance '
38
- 'value will be set to the value of the --shade-transmittance option (0.02 by '
39
- 'default).', default=None, show_default=True,
40
- type=click.Path(exists=False, file_okay=True, dir_okay=False, resolve_path=True)
41
- )
42
- @click.option(
43
- '--use-shade-transmittance/--use-states', help='A flag to select if the '
44
- 'post-processing should use a shade transmittance or the simulated states '
45
- 'of aperture groups. Using states should only be selected if the annual '
46
- 'daylight simulation included ray tracing of a second (blind) state for '
47
- 'each aperture group.',
48
- is_flag=True, default=True, show_default=True
49
- )
50
29
  @click.option(
51
30
  '--sub-folder', '-sf', help='Relative path for subfolder to write output '
52
31
  'files.', default='well_summary', show_default=True
53
32
  )
54
33
  def well_daylight(
55
- folder, shade_transmittance, shade_transmittance_file, grids_filter,
56
- use_shade_transmittance, sub_folder
34
+ folder, daylight_hours, grids_filter, sub_folder
57
35
  ):
58
36
  """Calculate credits for WELL L06.
59
37
 
@@ -68,29 +46,15 @@ def well_daylight(
68
46
  folder: Results folder. This folder is an output folder of annual daylight
69
47
  recipe. The daylight simulation must include aperture groups.
70
48
  """
71
- use_states = not use_shade_transmittance
72
- if (
73
- shade_transmittance_file
74
- and os.path.isfile(shade_transmittance_file)
75
- and use_shade_transmittance
76
- ):
77
- with open(shade_transmittance_file) as json_file:
78
- shd_trans = json.load(json_file)
79
- results = AnnualDaylight(folder)
80
- # check if aperture groups are missing in json file
81
- for light_path in results.light_paths:
82
- if (not light_path in shd_trans and
83
- light_path != '__static_apertures__'):
84
- shd_trans[light_path] = shade_transmittance
85
- shade_transmittance = shd_trans
49
+ with open(daylight_hours) as hourly_schedule:
50
+ daylight_hours = [int(float(v)) for v in hourly_schedule]
51
+
86
52
  try:
87
53
  well_annual_daylight(
88
- folder, grids_filter=grids_filter,
89
- shade_transmittance=shade_transmittance, use_states=use_states,
90
- sub_folder=sub_folder
54
+ folder, daylight_hours, grids_filter=grids_filter, sub_folder=sub_folder
91
55
  )
92
56
  except Exception:
93
- _logger.exception('Failed to generate LEED summary.')
57
+ _logger.exception('Failed to generate WELL summary.')
94
58
  sys.exit(1)
95
59
  else:
96
60
  sys.exit(0)
@@ -131,6 +131,8 @@ def en17037_to_folder(
131
131
 
132
132
  grids_info = results._filter_grids(grids_filter=grids_filter)
133
133
 
134
+ sub_folder = Path(sub_folder)
135
+
134
136
  if total_occ != 4380:
135
137
  raise ValueError(
136
138
  f'There are {total_occ} occupied hours in the schedule. According '
@@ -138,8 +140,6 @@ def en17037_to_folder(
138
140
  'which is defined as the half of the year with the largest '
139
141
  'quantity of daylight')
140
142
 
141
- metrics_folder = Path(results.folder).parent.joinpath(sub_folder)
142
-
143
143
  for grid_info in grids_info:
144
144
  array = results._array_from_states(
145
145
  grid_info, states=states, res_type='total', zero_array=True)
@@ -147,7 +147,7 @@ def en17037_to_folder(
147
147
  array = np.apply_along_axis(
148
148
  filter_array, 1, array, occ_mask)
149
149
  da_folders, sda_folders, compliance_folders = en17037_to_files(
150
- array, metrics_folder, grid_info)
150
+ array, sub_folder, grid_info)
151
151
 
152
152
  # copy grids_info.json to all results folders
153
153
  for folder in da_folders + sda_folders + compliance_folders:
@@ -156,13 +156,13 @@ def en17037_to_folder(
156
156
  json.dump(grids_info, outf, indent=2)
157
157
 
158
158
  metric_info_dict = _annual_daylight_en17037_vis_metadata()
159
- da_folder = metrics_folder.joinpath('da')
159
+ da_folder = sub_folder.joinpath('da')
160
160
  for metric, data in metric_info_dict.items():
161
161
  file_path = da_folder.joinpath(metric, 'vis_metadata.json')
162
162
  with open(file_path, 'w') as fp:
163
163
  json.dump(data, fp, indent=4)
164
164
 
165
- return metrics_folder
165
+ return sub_folder
166
166
 
167
167
 
168
168
  def _annual_daylight_en17037_vis_metadata():
@@ -19,6 +19,7 @@ from ..annual import occupancy_schedule_8_to_6
19
19
  from ..results.annual_daylight import AnnualDaylight
20
20
  from ..util import filter_array, recursive_dict_merge
21
21
  from ..ies.lm import dynamic_schedule_direct_illuminance
22
+ from ..en17037 import en17037_to_folder
22
23
 
23
24
 
24
25
  def _create_grid_summary(
@@ -164,20 +165,20 @@ def _well_summary(
164
165
 
165
166
 
166
167
  def well_annual_daylight(
167
- results: Union[str, AnnualDaylight], grids_filter: str = '*',
168
- states_schedule: dict = None, sub_folder: str = None):
168
+ results: Union[str, AnnualDaylight], daylight_hours: list, sub_folder,
169
+ grids_filter: str = '*', states_schedule: dict = None):
169
170
  """Calculate credits for WELL L06.
170
171
 
171
172
  Args:
172
173
  results: Path to results folder or a Results class object.
174
+ daylight_hours: Schedule of daylight hours used for EN 17037
175
+ sub_folder: Relative path for a subfolder to write the output.
173
176
  grids_filter: The name of a grid or a pattern to filter the grids.
174
177
  Defaults to '*'.
175
178
  states_schedule: A custom dictionary of shading states. In case this is
176
179
  left empty, the function will calculate a shading schedule by using
177
180
  the shade_transmittance input. If a states schedule is provided it
178
181
  will check that it is complying with the 2% rule. Defaults to None.
179
- sub_folder: Relative path for a subfolder to write the output. If None,
180
- the files will not be written. Defaults to None.
181
182
 
182
183
  Returns:
183
184
  Tuple:
@@ -306,25 +307,70 @@ def well_annual_daylight(
306
307
  l01_pass_sda_grids, grids_info, grid_areas,
307
308
  l01_pass_sda_blinds_up_grids, l01_pass_sda_blinds_down_grids)
308
309
 
309
- l06_well_summary = {}
310
- l01_well_summary = {}
311
- l06_well_summary['method'] = 'IES LM-83-12'
312
- l01_well_summary['method'] = 'IES LM-83-12'
310
+ sub_folder = Path(sub_folder)
311
+ en17037_folder = en17037_to_folder(
312
+ results, schedule=daylight_hours,
313
+ sub_folder=sub_folder.joinpath('en17037'))
314
+
315
+ l06_well_summary = []
316
+ l01_well_summary = []
317
+ l06_well_summary_ies_lm = {}
318
+ l06_well_summary_en17037 = {}
319
+ l01_well_summary_ies_lm = {}
320
+ l01_well_summary_en17037 = {}
321
+ l06_well_summary_ies_lm['method'] = 'IES LM-83-12'
322
+ l06_well_summary_en17037['method'] = 'EN 17037'
323
+ l01_well_summary_ies_lm['method'] = 'IES LM-83-12'
324
+ l01_well_summary_en17037['method'] = 'EN 17037'
325
+
326
+ l06_combined_da_target = []
327
+ l06_combined_da_minimum = []
328
+ l01_combined_da_target = []
329
+ for grid_info in grids_info:
330
+ l06_grid_da_target = np.loadtxt(en17037_folder.joinpath('da', 'target_illuminance_300', f'{grid_info["full_id"]}.da'))
331
+ l06_grid_da_minimum = np.loadtxt(en17037_folder.joinpath('da', 'minimum_illuminance_100', f'{grid_info["full_id"]}.da'))
332
+ l06_combined_da_target.append(l06_grid_da_target >= 50)
333
+ l06_combined_da_minimum.append(l06_grid_da_minimum >= 50)
334
+
335
+ array = results._array_from_states(
336
+ grid_info, res_type='total', zero_array=True)
337
+ if np.any(array):
338
+ array = np.apply_along_axis(
339
+ filter_array, 1, array, occ_mask)
340
+ l01_grid_da_target = da_array2d(array, total_occ=4380, threshold=200)
341
+ l01_combined_da_target.append(l01_grid_da_target >= 50)
342
+
343
+ l06_combined_sda_target_illuminance = np.concatenate(l06_combined_da_target).mean() * 100
344
+ l06_combined_sda_minimum_illuminance = np.concatenate(l06_combined_da_minimum).mean() * 100
345
+
346
+ l01_combined_sda_target_illuminance = np.concatenate(l01_combined_da_target).mean() * 100
347
+
348
+ if l01_combined_sda_target_illuminance > 30:
349
+ l01_well_summary_en17037['comply'] = True
350
+ else:
351
+ l01_well_summary_en17037['comply'] = False
352
+
353
+ if l06_combined_sda_target_illuminance > 50 and l06_combined_sda_minimum_illuminance > 95:
354
+ l06_well_summary_en17037['points'] = 2
355
+ elif l06_combined_sda_target_illuminance > 50:
356
+ l06_well_summary_en17037['points'] = 1
357
+ else:
358
+ l06_well_summary_en17037['points'] = 0
313
359
 
314
360
  # credits
315
361
  if not fail_to_comply:
316
362
  if l06_ies_lm_summary['sda'] >= 75:
317
363
  l06_ies_lm_summary['credits'] = 3
318
- l06_well_summary['credits'] = 2
364
+ l06_well_summary_ies_lm['points'] = 2
319
365
  elif l06_ies_lm_summary['sda'] >= 55:
320
366
  l06_ies_lm_summary['credits'] = 2
321
- l06_well_summary['credits'] = 1
367
+ l06_well_summary_ies_lm['points'] = 1
322
368
  elif l06_ies_lm_summary['sda'] >= 40:
323
369
  l06_ies_lm_summary['credits'] = 1
324
- l06_well_summary['credits'] = 0
370
+ l06_well_summary_ies_lm['points'] = 0
325
371
  else:
326
372
  l06_ies_lm_summary['credits'] = 0
327
- l06_well_summary['credits'] = 0
373
+ l06_well_summary_ies_lm['points'] = 0
328
374
 
329
375
  if all(grid_summary['sda'] >= 55 for grid_summary in l06_ies_lm_summary_grid.values()):
330
376
  if l06_ies_lm_summary['credits'] <= 2:
@@ -333,14 +379,12 @@ def well_annual_daylight(
333
379
  l06_ies_lm_summary['credits'] = 'Exemplary performance'
334
380
 
335
381
  if l01_ies_lm_summary['sda'] >= 30:
336
- l01_ies_lm_summary['comply'] = True
337
- l01_well_summary['comply'] = True
382
+ l01_well_summary_ies_lm['comply'] = True
338
383
  else:
339
- l01_ies_lm_summary['comply'] = False
340
- l01_well_summary['comply'] = False
384
+ l01_well_summary_ies_lm['comply'] = False
341
385
 
342
- l06_well_summary['sda'] = l06_ies_lm_summary['sda']
343
- l01_well_summary['sda'] = l01_ies_lm_summary['sda']
386
+ l06_well_summary_ies_lm['sda'] = l06_ies_lm_summary['sda']
387
+ l01_well_summary_ies_lm['sda'] = l01_ies_lm_summary['sda']
344
388
  else:
345
389
  l06_ies_lm_summary['credits'] = 0
346
390
  fail_to_comply_rooms = ', '.join(list(fail_to_comply.keys()))
@@ -350,14 +394,13 @@ def well_annual_daylight(
350
394
  f'illuminance of 1000 lux or more: {fail_to_comply_rooms}.'
351
395
  )
352
396
  l06_ies_lm_summary['note'] = note
353
- l06_well_summary['credits'] = 0
397
+ l06_well_summary_ies_lm['points'] = 0
354
398
 
355
- l01_ies_lm_summary['comply'] = False
356
399
  l01_ies_lm_summary['note'] = note
357
- l01_well_summary['comply'] = False
400
+ l01_well_summary_ies_lm['comply'] = False
358
401
 
359
- l06_well_summary['total_floor_area'] = sum(np.sum(arr) for arr in grid_areas)
360
- l01_well_summary['total_floor_area'] = sum(np.sum(arr) for arr in grid_areas)
402
+ l06_well_summary_ies_lm['total_floor_area'] = sum(np.sum(arr) for arr in grid_areas)
403
+ l01_well_summary_ies_lm['total_floor_area'] = sum(np.sum(arr) for arr in grid_areas)
361
404
 
362
405
  # convert to datacollection
363
406
  def to_datacollection(aperture_group: str, values: np.ndarray):
@@ -369,67 +412,69 @@ def well_annual_daylight(
369
412
 
370
413
  states_schedule = {k:to_datacollection(k, v['schedule']) for k, v in states_schedule.to_dict().items()}
371
414
 
372
- if sub_folder:
373
- folder = Path(sub_folder)
374
- folder.mkdir(parents=True, exist_ok=True)
375
-
376
- l06_ies_lm_folder = folder.joinpath('l06_ies_lm_summary')
377
- l01_ies_lm_folder = folder.joinpath('l01_ies_lm_summary')
378
-
379
- l06_ies_lm_folder.mkdir(parents=True, exist_ok=True)
380
- l01_ies_lm_folder.mkdir(parents=True, exist_ok=True)
381
-
382
- ies_lm_summary_file = l06_ies_lm_folder.joinpath('ies_lm_summary.json')
383
- ies_lm_summary_file.write_text(json.dumps(l06_ies_lm_summary, indent=2))
384
- ies_lm_summary_file = l01_ies_lm_folder.joinpath('ies_lm_summary.json')
385
- ies_lm_summary_file.write_text(json.dumps(l01_ies_lm_summary, indent=2))
386
-
387
- ies_lm_summary_grid_file = l06_ies_lm_folder.joinpath('ies_lm_summary_grid.json')
388
- ies_lm_summary_grid_file.write_text(json.dumps(l06_ies_lm_summary_grid, indent=2))
389
- ies_lm_summary_grid_file = l01_ies_lm_folder.joinpath('ies_lm_summary_grid.json')
390
- ies_lm_summary_grid_file.write_text(json.dumps(l01_ies_lm_summary_grid, indent=2))
391
-
392
- states_schedule_file = l06_ies_lm_folder.joinpath('states_schedule.json')
393
- states_schedule_file.write_text(json.dumps(states_schedule))
394
- states_schedule_file = l01_ies_lm_folder.joinpath('states_schedule.json')
395
- states_schedule_file.write_text(json.dumps(states_schedule))
396
-
397
- grids_info_file = l06_ies_lm_folder.joinpath('grids_info.json')
398
- grids_info_file.write_text(json.dumps(grids_info, indent=2))
399
- grids_info_file = l01_ies_lm_folder.joinpath('grids_info.json')
400
- grids_info_file.write_text(json.dumps(grids_info, indent=2))
401
-
402
- for (da, grid_info) in \
403
- zip(l06_da_grids, grids_info):
404
- grid_id = grid_info['full_id']
405
- da_file = l06_ies_lm_folder.joinpath('results', 'da', f'{grid_id}.da')
406
- da_file.parent.mkdir(parents=True, exist_ok=True)
407
- np.savetxt(da_file, da, fmt='%.2f')
408
- for (da, grid_info) in \
409
- zip(l01_da_grids, grids_info):
410
- grid_id = grid_info['full_id']
411
- da_file = l01_ies_lm_folder.joinpath('results', 'da', f'{grid_id}.da')
412
- da_file.parent.mkdir(parents=True, exist_ok=True)
413
- np.savetxt(da_file, da, fmt='%.2f')
414
-
415
- da_grids_info_file = l06_ies_lm_folder.joinpath(
416
- 'results', 'da', 'grids_info.json')
417
- da_grids_info_file.write_text(json.dumps(grids_info, indent=2))
418
- da_grids_info_file = l01_ies_lm_folder.joinpath(
419
- 'results', 'da', 'grids_info.json')
420
- da_grids_info_file.write_text(json.dumps(grids_info, indent=2))
421
-
422
- states_schedule_err_file = \
423
- l06_ies_lm_folder.joinpath('states_schedule_err.json')
424
- states_schedule_err_file.write_text(json.dumps(fail_to_comply))
425
- states_schedule_err_file = \
426
- l01_ies_lm_folder.joinpath('states_schedule_err.json')
427
- states_schedule_err_file.write_text(json.dumps(fail_to_comply))
428
-
429
- well_summary_file = folder.joinpath('l06_well_summary.json')
430
- well_summary_file.write_text(json.dumps(l06_well_summary, indent=2))
431
- well_summary_file = folder.joinpath('l01_well_summary.json')
432
- well_summary_file.write_text(json.dumps(l01_well_summary, indent=2))
433
-
434
- return (l06_well_summary, l06_ies_lm_summary, l06_ies_lm_summary_grid, l06_da_grids, states_schedule,
435
- fail_to_comply, grids_info)
415
+ ies_lm_folder = sub_folder.joinpath('ies_lm')
416
+ ies_lm_folder.mkdir(parents=True, exist_ok=True)
417
+
418
+ l06_ies_lm_folder = ies_lm_folder.joinpath('l06_ies_lm_summary')
419
+ l01_ies_lm_folder = ies_lm_folder.joinpath('l01_ies_lm_summary')
420
+
421
+ l06_ies_lm_folder.mkdir(parents=True, exist_ok=True)
422
+ l01_ies_lm_folder.mkdir(parents=True, exist_ok=True)
423
+
424
+ ies_lm_summary_file = l06_ies_lm_folder.joinpath('ies_lm_summary.json')
425
+ ies_lm_summary_file.write_text(json.dumps(l06_ies_lm_summary, indent=2))
426
+ ies_lm_summary_file = l01_ies_lm_folder.joinpath('ies_lm_summary.json')
427
+ ies_lm_summary_file.write_text(json.dumps(l01_ies_lm_summary, indent=2))
428
+
429
+ ies_lm_summary_grid_file = l06_ies_lm_folder.joinpath('ies_lm_summary_grid.json')
430
+ ies_lm_summary_grid_file.write_text(json.dumps(l06_ies_lm_summary_grid, indent=2))
431
+ ies_lm_summary_grid_file = l01_ies_lm_folder.joinpath('ies_lm_summary_grid.json')
432
+ ies_lm_summary_grid_file.write_text(json.dumps(l01_ies_lm_summary_grid, indent=2))
433
+
434
+ states_schedule_file = l06_ies_lm_folder.joinpath('states_schedule.json')
435
+ states_schedule_file.write_text(json.dumps(states_schedule))
436
+ states_schedule_file = l01_ies_lm_folder.joinpath('states_schedule.json')
437
+ states_schedule_file.write_text(json.dumps(states_schedule))
438
+
439
+ grids_info_file = l06_ies_lm_folder.joinpath('grids_info.json')
440
+ grids_info_file.write_text(json.dumps(grids_info, indent=2))
441
+ grids_info_file = l01_ies_lm_folder.joinpath('grids_info.json')
442
+ grids_info_file.write_text(json.dumps(grids_info, indent=2))
443
+
444
+ for (da, grid_info) in \
445
+ zip(l06_da_grids, grids_info):
446
+ grid_id = grid_info['full_id']
447
+ da_file = l06_ies_lm_folder.joinpath('results', 'da', f'{grid_id}.da')
448
+ da_file.parent.mkdir(parents=True, exist_ok=True)
449
+ np.savetxt(da_file, da, fmt='%.2f')
450
+ for (da, grid_info) in \
451
+ zip(l01_da_grids, grids_info):
452
+ grid_id = grid_info['full_id']
453
+ da_file = l01_ies_lm_folder.joinpath('results', 'da', f'{grid_id}.da')
454
+ da_file.parent.mkdir(parents=True, exist_ok=True)
455
+ np.savetxt(da_file, da, fmt='%.2f')
456
+
457
+ da_grids_info_file = l06_ies_lm_folder.joinpath(
458
+ 'results', 'da', 'grids_info.json')
459
+ da_grids_info_file.write_text(json.dumps(grids_info, indent=2))
460
+ da_grids_info_file = l01_ies_lm_folder.joinpath(
461
+ 'results', 'da', 'grids_info.json')
462
+ da_grids_info_file.write_text(json.dumps(grids_info, indent=2))
463
+
464
+ states_schedule_err_file = \
465
+ l06_ies_lm_folder.joinpath('states_schedule_err.json')
466
+ states_schedule_err_file.write_text(json.dumps(fail_to_comply))
467
+ states_schedule_err_file = \
468
+ l01_ies_lm_folder.joinpath('states_schedule_err.json')
469
+ states_schedule_err_file.write_text(json.dumps(fail_to_comply))
470
+
471
+ l06_well_summary.append(l06_well_summary_ies_lm)
472
+ l06_well_summary.append(l06_well_summary_en17037)
473
+ well_summary_file = sub_folder.joinpath('l06_well_summary.json')
474
+ well_summary_file.write_text(json.dumps(l06_well_summary, indent=2))
475
+ l01_well_summary.append(l01_well_summary_ies_lm)
476
+ l01_well_summary.append(l01_well_summary_en17037)
477
+ well_summary_file = sub_folder.joinpath('l01_well_summary.json')
478
+ well_summary_file.write_text(json.dumps(l01_well_summary, indent=2))
479
+
480
+ return (l06_well_summary, l01_well_summary, states_schedule, fail_to_comply, grids_info)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-radiance-postprocess
3
- Version: 0.4.477
3
+ Version: 0.4.479
4
4
  Summary: Postprocessing of Radiance results and matrices
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-radiance-postprocess
6
6
  Author: Ladybug Tools
@@ -6,7 +6,7 @@ honeybee_radiance_postprocess/annualirradiance.py,sha256=1ZBUizL95S4uWfLh5B6Hwbu
6
6
  honeybee_radiance_postprocess/data_type.py,sha256=jbtOYr-Wb6xfF4kJKvfqEXXPXkN0grLE8AbFK4JZ5JM,3652
7
7
  honeybee_radiance_postprocess/dynamic.py,sha256=RPJh2SsjASYJCsG5QRkazVCvzWjzMxm9eeuinb3O8QA,9226
8
8
  honeybee_radiance_postprocess/electriclight.py,sha256=E7uhq7-YtZ02F9a1FbEdrXnxmYJNOFnfLF0Yw3JLQ-g,732
9
- honeybee_radiance_postprocess/en17037.py,sha256=5c5ahfzad12FqMwBL7c0sLOKHzLKSTXtlYFfaNhzA3w,10848
9
+ honeybee_radiance_postprocess/en17037.py,sha256=h3W1ewnVsLSBamArowMkQKYaJfpKV8updJxQuTkB31k,10800
10
10
  honeybee_radiance_postprocess/helper.py,sha256=qz5kaJxzy1tGBfVYYXc2cEToOCoj0YLOtwjr3LVI3YU,9000
11
11
  honeybee_radiance_postprocess/metrics.py,sha256=6EHCuXf5jnhh6GglI9mTd0MFpfhfPFoKMf4b5gKRTMI,14038
12
12
  honeybee_radiance_postprocess/reader.py,sha256=p4A91amyCI16lRRn0bhZdInsg-qJV0Jas3v4YVhRx-4,2674
@@ -29,7 +29,7 @@ honeybee_radiance_postprocess/cli/translate.py,sha256=rwUjjDK_Ttjen4ooAMvugyDN5x
29
29
  honeybee_radiance_postprocess/cli/two_phase.py,sha256=xA6ayPv26DM5fuMkLhBMYGklf_j5ymowmncwJGXRgo8,7034
30
30
  honeybee_radiance_postprocess/cli/util.py,sha256=Be9cGmYhcV2W37ma6SgQPCWCpWLLLlroxRYN_l58kY0,4077
31
31
  honeybee_radiance_postprocess/cli/viewfactor.py,sha256=kU36YRzLya5PReYREjTfw3zOcWKHYZjVlVclyuR7Cqk,5245
32
- honeybee_radiance_postprocess/cli/well.py,sha256=JaedicMSvP7wfrX8opytnShsSVN5AnIr4dN-ZJBxrxM,3686
32
+ honeybee_radiance_postprocess/cli/well.py,sha256=A4i5scnWWOOwZFfC9vg8bUV2lOOJfbOb-HP8zCZy_ic,1888
33
33
  honeybee_radiance_postprocess/ies/__init__.py,sha256=kQXElEqFnLGNnrMSpA51XDHoqBup849FHeAqWASIy6w,45
34
34
  honeybee_radiance_postprocess/ies/lm.py,sha256=kHvwd2uT8Y-c2TjpvQzjLrWzwgayWjpzpbwS2S6cEvo,9570
35
35
  honeybee_radiance_postprocess/ies/lm_schedule.py,sha256=ci58GXq2PntJ4yNUdI_x4UCRmq6KrLes-u7GeboX058,9954
@@ -41,10 +41,10 @@ honeybee_radiance_postprocess/results/annual_daylight.py,sha256=11d4J1iIuITKuoWy
41
41
  honeybee_radiance_postprocess/results/annual_irradiance.py,sha256=5zwrr4MNeHUebbSRpSBbscPOZUs2AHmYCQfIIbdYImY,8298
42
42
  honeybee_radiance_postprocess/results/results.py,sha256=ABb_S8kDPruhGkDsfREXMg6K0p8FRhAZ3QIRUZCQPAI,54888
43
43
  honeybee_radiance_postprocess/well/__init__.py,sha256=kQXElEqFnLGNnrMSpA51XDHoqBup849FHeAqWASIy6w,45
44
- honeybee_radiance_postprocess/well/well.py,sha256=C80NGCKWAXkz0LfBTux5db8SVnH0z8WSNmDyq8dMvuo,19050
45
- honeybee_radiance_postprocess-0.4.477.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
46
- honeybee_radiance_postprocess-0.4.477.dist-info/METADATA,sha256=8q14RNekKPOvcNzSjp4NTIbG8svaqANX5LeY5Nv8-pU,2240
47
- honeybee_radiance_postprocess-0.4.477.dist-info/WHEEL,sha256=AHX6tWk3qWuce7vKLrj7lnulVHEdWoltgauo8bgCXgU,109
48
- honeybee_radiance_postprocess-0.4.477.dist-info/entry_points.txt,sha256=gFtVPx6UItXt27GfEZZO00eOZChJJEL6JwGSAB_O3rs,96
49
- honeybee_radiance_postprocess-0.4.477.dist-info/top_level.txt,sha256=4-sFbzy7ewP2EDqJV3jeFlAFx7SuxtoBBELWaKAnLdA,30
50
- honeybee_radiance_postprocess-0.4.477.dist-info/RECORD,,
44
+ honeybee_radiance_postprocess/well/well.py,sha256=Troym2sdGMYyzW2MGuflCFr737eUWrDP6Pc-zju7LiA,21071
45
+ honeybee_radiance_postprocess-0.4.479.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
46
+ honeybee_radiance_postprocess-0.4.479.dist-info/METADATA,sha256=h2VqYJPqoPBgguc10KFI5Z-qiOBNs27D0PMcfEOkrII,2240
47
+ honeybee_radiance_postprocess-0.4.479.dist-info/WHEEL,sha256=AHX6tWk3qWuce7vKLrj7lnulVHEdWoltgauo8bgCXgU,109
48
+ honeybee_radiance_postprocess-0.4.479.dist-info/entry_points.txt,sha256=gFtVPx6UItXt27GfEZZO00eOZChJJEL6JwGSAB_O3rs,96
49
+ honeybee_radiance_postprocess-0.4.479.dist-info/top_level.txt,sha256=4-sFbzy7ewP2EDqJV3jeFlAFx7SuxtoBBELWaKAnLdA,30
50
+ honeybee_radiance_postprocess-0.4.479.dist-info/RECORD,,