guv-calcs v0.10.0: An open-source Python library for modeling germicidal UV in indoor environments

Read full text
Authors: Vivian Belenky, Holger Claus
Cited by: 0

Abstract

Added Method on lamp to clear spectrum but preserve wavelength/guv_type place_at_index and place_lamp_at_index API in lamp_placement module Major occlusion/shadowing module Object class irradiance_at method for Lamp nearfield convenience property for Lamp Ozone calculation method PlaneCalcType fully implemented CalcPoint class (with GridPoint geometry class) performance.py file with both calc time and memory requirements estimations nudge_into_bounds() methods on registry objects Mass lamp operations: batch placement, aiming, and height. Lamp placement now uses lazy cacheing to speed up operations. Room-level wrappers: Room.place_lamps(), Room.aim_lamps(), Room.set_lamp_height(). Lamps can be aimed with various programmatic methods: "down", "point", "direction", "centroid", "furthest_edge", "furthest_corner". Fixed room.set_units() early return is now self, not None lamp_types with no default wavelength will now return an explicitly set wavelength subset() in InactivationData now non-mutating LightingCalculator will now subsample in grid points that are too close to light sources Bug in loading an intensity map while width/length are 0 Bug in update_managers call preventing interreflections from being calculated x/y coordinate swap in photometry lamp.nearfield parameter returning float and not bool lamp.irradiance_at() function not using lamp.intensity_factor properly break ties in downlight placement by preferring centroid Changed PolyGrids and RectGrids consolidated; PlaneGrid and VolGrid classes replaced with SurfaceGrid and VolumeGrid classes CalcPlane/CalcVol can no longer be constructed with legacy constructors--use from_legacy instead Lamp now stores preset_id if loaded from keyword Old CalcZone API no longer accepts x1/x2 etc constructors--migration logic added to _serialization Cleanup of how SceneRegistry handles object position checking CalcZone's show_values is now display_mode + zones no longer have individual colormaps CalcZone/LightingCalculator restructured to accept surfaces instead of the ref_manager Reflectance calculation moved to LightingCalculator calculate_nearfield method in LightingCalculator extracted to _irradiance_at method LampSurface position computation simplified ReflectanceManager no longer mirrors room surfaces More accurate calculation time estimates Optimized downlight placement, rename new_lamp_position_polygon->new_lamp_position_downlight to match corner and edge functions Simplify LampPlace API--separate computation and mutation paths Significant simplification of calc zone spacing/num_points flow--whichever value was last set is what is kept. If spacing is set, that's the spacing forever--if span is then set to smaller than the spacing, the spacing is temporarily clamped, but reverts to its original value when the span is restored.

Fields of Study & Subjects

Infection Control and Ventilation Indoor Air Quality and Microbial Exposure Building Energy and Comfort Optimization

Publication details

Journal / source
Zenodo (CERN European Organization for Nuclear Research)
Publication date
30 March 2026
Language
EN