carbonfly.iaq module
Indoor Air Quality (IAQ) utilities.
This module provides standards-based, CO2-based IAQ evaluation helpers that can be used in Carbonfly workflows (e.g., post-processing simulation results or interpreting sensor measurements).
- carbonfly.iaq.iaq_co2(co2_indoor: float | int | List[float] | List[int], co2_outdoor: float | int | List[float] | List[int] = 400, standard: str = 'EN') Tuple[Dict[str, Any], List[int]][source]
Calculate CO2-based Indoor Air Quality (IAQ) indices according to selected standards.
Warning
CO2 is only suitable for assessing IAQ as an indirect proxy indicator of ventilation rate. The assessment should be made aware of the following limitations:
CO2 below the threshold does not ensure an acceptable overall IAQ. Conversely, excessively high CO2 may indicate insufficient ventilation (e.g., malfunctioning mechanical ventilation or closed windows).
The direct impact of CO2 on health, well-being, and performance is still controversial. CO2 should not be used as a direct indicator for disease transmission risk, but only as an indirect indicator of ventilation rate.
CO2 measurements are strongly influenced by sensor accuracy, installation location, and calibration method. Therefore, ASHRAE does not define a CO2-based IAQ index; see: Persily A. 2020. Quit Blaming ASHRAE Standard 62.1 for 1000 ppm CO2, Indoor Air 2020 - The 16th Conference of the International Society of Indoor Air Quality & Climate.
- Parameters:
co2_indoor (float | int | list[float] | list[int]) – Indoor CO2 concentration(s) in ppm. Supported: float/int or list of float/int.
co2_outdoor (float | int | list[float] | list[int]) – Outdoor CO2 concentration(s) in ppm. Supported: float/int or list of float/int. If a list is given, it must have the same length as co2_indoor. Default is 400.
standard (str) – Standard code for evaluation. Supported: “EN”, “LEHB”, “SS”, “HK”, “UBA”, “DOSH”, “NBR” (see Notes).
- Returns:
- (report, indices)
- report (dict): IAQ report as a dictionary with keys:
”indices”: list[int]
”standard”: str
”co2_indoor”: original input
”co2_outdoor”: original input
indices (list[int]): IAQ indices (same as report[“indices”]).
- Return type:
tuple[dict, list[int]]
Notes
- EN: European standard CEN/EN 16798-1, based on german version DIN EN 16798-1:2019 (Page 55).
- Evaluation based on CO2 concentration differences between indoors and outdoors.
[Index = 1] Category I: delta(CO2) <= 550 ppm
[Index = 2] Category II: delta(CO2) <= 800 ppm
[Index = 3] Category III: delta(CO2) <= 1350 ppm
[Index = 4] Category IV: delta(CO2) > 1350 ppm
- LEHB: Japanese law for environmental health in buildings (LEHB).
- Evaluation based on CO2 concentration indoors.
[Index = 1] Acceptable: CO2 <= 1000 ppm
[Index = 2] Unacceptable: CO2 > 1000 ppm
- SS: Singapore standard SS 554:2016 (Page 22).
- Evaluation based on CO2 concentration differences between indoors and outdoors.
[Index = 1] Acceptable: delta(CO2) <= 700 ppm
[Index = 2] Unacceptable: delta(CO2) > 700 ppm
- HK: Hong Kong Environmental Protection Department.
“Hongkong Guidance Notes for the Management of Indoor Air Quality in Offices and Public Places” (Page 17). Evaluation based on CO2 concentration indoors (averaging time 8-hour). Here the average is changed to an instantaneous evaluation for each measurment.
[Index = 1] Excellent Class: CO2 <= 800 ppm
[Index = 2] Good Class: CO2 <= 1000 ppm
[Index = 3] Unacceptable: CO2 > 1000 ppm
- UBA: German environmental protection agency (Umweltbundesamt).
“Gesundheitsschutz 11-2008: Gesundheitliche Bewertung von Kohlendioxid in der Innenraumluft” (Page 1368). Evaluation based on CO2 concentration indoors.
[Index = 1] Hygienically safe: CO2 < 1000 ppm
[Index = 2] Hygienically conspicuous: CO2 <= 2000 ppm
[Index = 3] Hygienically unacceptable: CO2 > 2000 ppm
- DOSH: Department of Occupational Safety and Health (DOSH) Malaysia.
“Industry Code of Practice on Indoor Air Quality 2010 (ICOP IAQ 2010).” Evaluation based on CO2 concentration indoors.
[Index = 1] Acceptable: CO2 <= 1000 ppm
[Index = 2] Unacceptable: CO2 > 1000 ppm
- NBR: Brazilian standard ABNT NBR 16401-3:2008
“Air-conditioning installations – Central and unitary systems – Part 3: Indoor air quality” and ABNT NBR 17037:2023 “Indoor air quality in artificially heated non-residential environments – Referential standards” Evaluation based on CO2 concentration differences between indoors and outdoors.
[Index = 1] Acceptable: delta(CO2) <= 700 ppm
[Index = 2] Unacceptable: delta(CO2) > 700 ppm