eulumdat-ugr
UGR (Unified Glare Rating) calculation from EULUMDAT (.ldt) photometric files — part of the eulumdat-* ecosystem.
Produces the full 19 × 10 UGR table per CIE 117:1995 and CIE 190:2010, compatible with DIALux and Relux catalogue output.
Installation
pip install eulumdat-ugr
Quick start
from pyldt import LdtReader
from eulumdat_ugr import UgrCalculator
ldt = LdtReader.read("luminaire.ldt")
result = UgrCalculator.compute(ldt)
# NumPy array (19, 10)
print(result.values)
# Export to CSV
with open("ugr_table.csv", "w") as f:
f.write(result.to_csv())
# Export to JSON (compact)
with open("ugr_table.json", "w") as f:
f.write(result.to_json())
# Export to JSON (human-readable)
with open("ugr_table.json", "w") as f:
f.write(result.to_json(indent=2))
Output format
result.values is a (19 × 10) NumPy array:
- 19 rows — standard room configurations from CIE 190:2010 (2H×2H to 12H×8H)
- Columns 0–4 — crosswise orientation, 5 reflectance combinations
- Columns 5–9 — endwise orientation, same 5 reflectance combinations
Reflectance combinations (col % 5):
| Index | Ceiling | Walls | Reference plane |
|---|---|---|---|
| 0 | 0.7 | 0.5 | 0.2 |
| 1 | 0.7 | 0.3 | 0.2 |
| 2 | 0.5 | 0.5 | 0.2 |
| 3 | 0.5 | 0.3 | 0.2 |
| 4 | 0.3 | 0.3 | 0.2 |
Standards
- CIE 117:1995 — UGR formula, Guth position index (Table 4.1)
- CIE 190:2010 — tabular method, background luminance (E_WID), standard room geometry
Validation
Validated against DIALux and Relux reference tables on 11 luminaire samples (SHR = 0.25):
| Reference | Max deviation |
|---|---|
| Relux | ≤ 0.43 UGR |
| DIALux | ≤ 1.01 UGR |
DIALux values are systematically 0.1–0.8 UGR below Relux for small rooms (k ≤ 2.0) — a known inter-software variation. Our implementation follows CIE 190:2010 and aligns with Relux.
Dependencies
- eulumdat-py >= 1.0.0
- eulumdat-luminance >= 1.2.0
- numpy >= 1.24
- scipy >= 1.10
Geometry
Fixed geometry per CIE 190:2010 §4.2:
- H = 2.0 m (luminaire height above observer eye level)
- Observer at mid-point of short wall, eye level 1.2 m
- SHR = 0.25 (standard catalogue spacing)
Release files for eulumdat-ugr 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eulumdat_ugr-1.0.2.tar.gz | 27.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eulumdat_ugr-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.1 kB
Release files / eulumdat_ugr-1.0.2.tar.gz
| Download URL | eulumdat_ugr-1.0.2.tar.gz |
|---|---|
| Size | 27.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
55a3a0210f95a9087e83a4bce0f271ea8e61e0bd58bca9457e8e4f72fec99084
|
|
BLAKE2b-256 checksum How to use checksums |
77c0129a6a0fb82b247283bd373431745375f973e9fdb9738f778ed7cd25b9e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.11
|
Release files / eulumdat_ugr-1.0.2-py3-none-any.whl
| Download URL | eulumdat_ugr-1.0.2-py3-none-any.whl |
|---|---|
| Size | 17.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
94722bb82c5e078d69d969b37b19c44b79f6363d8a893371c8b20112a334ce3e
|
|
BLAKE2b-256 checksum How to use checksums |
19a99cb7397e64d7b70109ec8f44da7f7fc7ad89d3e365d169068938ad5c6f7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.11
|