lm83_daylight
Computes IES LM-83 sDA and ASE metrics with mandatory operable blinds, using three-phase simulation per window group and reporting blind hours and conformance conditions.
Instructions
IES LM-83-12 sDA(300/50%) and ASE(1000,250h) with MANDATORY operable blinds.
Unlike annual_daylight, which computes the arithmetic of sDA/ASE on whatever shading the scene happens to contain, this runs LM-83's method: a three-phase (V.T.D.s) engine per window group, an hourly blind that closes when 2.2.6's direct-sun trigger fires, and a zero-bounce ASE pass with blinds retracted and no sky or ground (3.2.6, 3.3).
obj_path + material_map: the same OBJ room and material mapping import_geometry takes. Glazing must be mapped {"type": "glass", "tvis": ...} -- window groups are formed from those faces, and with no glass face there is no window to operate.
units (mm|cm|m|ft) and up_axis (Y|Z) describe the OBJ, defaulting to metres and Z-up; north_angle_deg is the clockwise azimuth post-remap +Y points toward. These decide the facade azimuths that window grouping keys on, so a wrong up_axis silently regroups the windows.
points: inline rows or a .pts path, OR sensor_set='name'. Grid spacing, workplane height and wall offset are MEASURED from these coordinates and reported, never accepted as parameters.
areas: 2.2.6 trigger areas, [{name, area_m2, point_indices}], split by facade orientation and each under 10,000 sf -- the trigger must hold in EVERY area, and pooling facades dilutes the fraction so blinds close later than the standard requires. Omit and pass floor_area_m2 to get a single whole-grid area, which is only correct for a single-facade space. An area over 10,000 sf is refused before any Radiance runs.
blind: the operable shade, per 2.2.7. Omitted -> the unknown-shade default of 5% diffuse VLT. {"shade_type": "fabric", "vlt": .., "openness": ..}, {"shade_type": "louver", "reflectance": >0.8} for the 20% white-louver branch, or {"bsdf": "path.xml"} for a measured Klems file. Note the default is 5%, NOT 20% -- the 20% figure is the louver branch and needs a declared reflectance.
window_groups: optionally declare grouping instead of auto-clustering by azimuth and plane, [{name, face_indices, role}] with role 'view' or 'clerestory' -- 2.2.6 asks that view groups close before clerestory ones, and role cannot be inferred from azimuth.
declared_no_blinds: assert the design documents state no blinds (2.2.6's escape clause). Reported as a per-group condition; it never replaces the headline, which always operates blinds.
Returns metrics (sDA, ASE, per_point_DA, conditions) plus blind_hours and the window
groups. The conformance flag is lm83_method_conformant and is presently ALWAYS FALSE:
2.2.8-2.2.11's model-input clauses (dirt depreciation, frame occlusion, reveals,
obstructions, interior reflectance defaults, mandatory furniture) are out of scope, so
glazing runs at its raw tvis and sDA is biased upward -- roughly 32% of transmitted flux
on an unknown-frame vertical window. Read metrics.conditions.departures before quoting
a number; this is not by itself an LM-83 or LEED submission.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| run | No | ||
| wea | Yes | ||
| areas | No | ||
| blind | No | ||
| units | No | m | |
| points | No | ||
| quality | No | ||
| up_axis | No | Z | |
| d_params | No | ||
| latitude | No | ||
| obj_path | Yes | ||
| v_params | No | ||
| work_dir | No | ||
| sensor_set | No | ||
| material_map | Yes | ||
| floor_area_m2 | No | ||
| window_groups | No | ||
| north_angle_deg | No | ||
| declared_no_blinds | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||