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.
- honeybee_radiance_postprocess/cli/well.py +10 -46
- honeybee_radiance_postprocess/en17037.py +5 -5
- honeybee_radiance_postprocess/well/well.py +132 -87
- {honeybee_radiance_postprocess-0.4.477.dist-info → honeybee_radiance_postprocess-0.4.479.dist-info}/METADATA +1 -1
- {honeybee_radiance_postprocess-0.4.477.dist-info → honeybee_radiance_postprocess-0.4.479.dist-info}/RECORD +9 -9
- {honeybee_radiance_postprocess-0.4.477.dist-info → honeybee_radiance_postprocess-0.4.479.dist-info}/LICENSE +0 -0
- {honeybee_radiance_postprocess-0.4.477.dist-info → honeybee_radiance_postprocess-0.4.479.dist-info}/WHEEL +0 -0
- {honeybee_radiance_postprocess-0.4.477.dist-info → honeybee_radiance_postprocess-0.4.479.dist-info}/entry_points.txt +0 -0
- {honeybee_radiance_postprocess-0.4.477.dist-info → honeybee_radiance_postprocess-0.4.479.dist-info}/top_level.txt +0 -0
@@ -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,
|
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
|
-
|
72
|
-
|
73
|
-
|
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
|
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,
|
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 =
|
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
|
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],
|
168
|
-
|
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
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
370
|
+
l06_well_summary_ies_lm['points'] = 0
|
325
371
|
else:
|
326
372
|
l06_ies_lm_summary['credits'] = 0
|
327
|
-
|
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
|
-
|
337
|
-
l01_well_summary['comply'] = True
|
382
|
+
l01_well_summary_ies_lm['comply'] = True
|
338
383
|
else:
|
339
|
-
|
340
|
-
l01_well_summary['comply'] = False
|
384
|
+
l01_well_summary_ies_lm['comply'] = False
|
341
385
|
|
342
|
-
|
343
|
-
|
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
|
-
|
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
|
-
|
400
|
+
l01_well_summary_ies_lm['comply'] = False
|
358
401
|
|
359
|
-
|
360
|
-
|
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
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
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)
|
@@ -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=
|
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=
|
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=
|
45
|
-
honeybee_radiance_postprocess-0.4.
|
46
|
-
honeybee_radiance_postprocess-0.4.
|
47
|
-
honeybee_radiance_postprocess-0.4.
|
48
|
-
honeybee_radiance_postprocess-0.4.
|
49
|
-
honeybee_radiance_postprocess-0.4.
|
50
|
-
honeybee_radiance_postprocess-0.4.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|