Skip to main content

A library for carrying out fluence and irradiance calculations for germicidal UV (GUV) applications.

Project description

GUV Calcs

A library for fluence and irradiance calculations for germicidal UV (GUV) applications. Simulate UV light propagation in rooms, calculate disinfection outcomes, and verify safety compliance.

Installation

Install with pip:

pip install guv-calcs

Or install from source:

git clone https://github.com/jvbelenky/guv-calcs.git
cd guv-calcs
uv sync

Quick Start

from guv_calcs import Room, Lamp

# Create a room (6m x 4m x 2.7m)
room = Room(x=6, y=4, z=2.7, units="meters")

# Add a lamp at the ceiling, aimed downward
lamp = Lamp(filedata="my_lamp.ies").move(3, 2, 2.7).aim(3, 2, 0)
room.add_lamp(lamp)

# Add standard calculation zones (fluence volume + safety planes)
room.add_standard_zones()

# Run the calculation
room.calculate()

# Access results
fluence = room.calc_zones["WholeRoomFluence"]
print(f"Mean fluence rate: {fluence.values.mean():.2f} µW/cm²")

Examples

Method Chaining

room = (
    Room(x=6, y=4, z=2.7)
    .place_lamp("my_lamp.ies")      # Auto-positions lamp
    .add_standard_zones()
    .calculate()
)

Multiple Lamps

room = Room(x=6, y=4, z=2.7)

lamp1 = Lamp(filedata="my_lamp.ies").move(2, 2, 2.7).aim(2, 2, 0)
lamp2 = Lamp(filedata="my_other_lamp.ies").move(4, 2, 2.7).aim(4, 2, 0)

room.add_lamp(lamp1).add_lamp(lamp2)
room.add_standard_zones()
room.calculate()

Custom Calculation Planes

from guv_calcs import Room, Lamp, CalcPlane

room = Room(x=6, y=4, z=2.7)
lamp = Lamp(filedata="my_lamp.ies").move(3, 2, 2.7).aim(3, 2, 0)
room.add_lamp(lamp)

# Add a plane at desk height (0.75m)
workplane = CalcPlane(
    zone_id="WorkPlane",
    x1=0, x2=6,
    y1=0, y2=4,
    height=0.75,
    x_spacing=0.25,
    y_spacing=0.25,
)
room.add_calc_zone(workplane)
room.calculate()

Non-Rectangular Rooms

from guv_calcs import Room, Polygon2D

# L-shaped room
floor = Polygon2D(vertices=[
    (0, 0), (4, 0), (4, 2), (2, 2), (2, 4), (0, 4)
])
room = Room(floor_polygon=floor, z=2.7)

Safety Compliance Check

room = (
    Room(x=6, y=4, z=2.7)
    .place_lamp("aerolamp")
    .add_standard_zones()
    .calculate()
)

result = room.check_lamps()
print(f"Compliant: {result.compliant}")

Save and Load

# Save
room.save("my_room.guv")

# Load
loaded = Room.load("my_room.guv")
loaded.calculate()

Lamp Keywords

lamp = Lamp.from_keyword('ushio_b1')

Currently, only 222nm lamps are available, with data downloaded from reports.osluv.org. We welcome collaboration to expand the availability of lamp data.

  • aerolamp - Aerolamp DevKit
  • beacon - Beacon
  • lumenizer_zone - LumenLabs Lumenizer Zone
  • nukit_lantern - NuKit Lantern
  • nukit_torch - NuKit Torch
  • sterilray - SterilRay Germbuster Sabre
  • ushio_b1 - Ushio B1
  • ushio_b15 - Ushio B1.5
  • uvpro222_b1 - Bioabundance UVPro222 B1
  • uvpro222_b2 - Bioabundance UVPro222 B2

License

Distributed under the MIT License. See LICENSE.txt for more information.

Contact

Vivian Belenky - jvb@osluv.org

Project Link: https://github.com/jvbelenky/guv-calcs/

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

guv_calcs-0.7.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

guv_calcs-0.7.0-py3-none-any.whl (530.1 kB view details)

Uploaded Python 3

File details

Details for the file guv_calcs-0.7.0.tar.gz.

File metadata

  • Download URL: guv_calcs-0.7.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for guv_calcs-0.7.0.tar.gz
Algorithm Hash digest
SHA256 18f53df107781321041d6c7fd01543d4d44db164ade9dcbe87ced267dda9e060
MD5 99f5cd84b3d62f0eb5f736b773001489
BLAKE2b-256 55a82793b2a73aee248435ac69e5ce37d0b13ddca52a777c22c6ea4d5cfa9ead

See more details on using hashes here.

File details

Details for the file guv_calcs-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: guv_calcs-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 530.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for guv_calcs-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b85b9ff16a32b76b2d29753d47ea330fcf250a28a37354ead4bc0a01bfa7e42
MD5 1ec1922d3bf00d21638282bd6348a784
BLAKE2b-256 c824a7314af37d2232cf3994c330261663ab2393c95db74949dcefd2d6393976

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page