Name | pythermalcomfort JSON |
Version |
3.4.2
JSON |
| download |
home_page | https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort |
Summary | pythermalcomfort is a comprehensive toolkit for calculating thermal comfort indices, heat/cold stress metrics, and thermophysiological responses. It supports multiple models, including PMV, PPD, adaptive comfort, SET, UTCI, Heat Index, Wind Chill Index, and Humidex. The package also includes thermophysiological models like the two-node (Gagge) and multinode (JOS-3) models to estimate physiological responses such as core temperature, skin temperature, and skin wettedness. |
upload_time | 2025-07-22 06:39:09 |
maintainer | None |
docs_url | None |
author | Federico Tartarini |
requires_python | >=3.10.0 |
license | MIT |
keywords |
thermal comfort
pmv
heat stress
cold stress
thermal sensation
thermal physiology
meteorology
climate analysis
discomfort
comfort
thermal environment
built environment
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
|
coveralls test coverage |
|
.. image:: https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/raw/development/docs/images/pythermalcomfort-3-short.png
:align: center
:alt: pythermalcomfort logo
================
pythermalcomfort
================
The ``pythermalcomfort`` Python package is a comprehensive toolkit for calculating **thermal comfort indices**, **heat/cold stress metrics**, and **thermophysiological responses** based on international standards and peer-reviewed research.
Designed for researchers, engineers, and building science professionals, it simplifies complex calculations while ensuring accuracy and compliance with industry standards.
Key Features
============
- **Thermal Comfort Calculations**:
Supports multiple models, including **PMV**, **PPD**, **adaptive comfort**, and **SET**.
- **Heat and Cold Stress Indices**:
Calculate **UTCI**, **Heat Index**, **Wind Chill Index**, and **Humidex** for assessing environmental stress.
- **Thermophysiological Models**:
Includes the **two-node (Gagge)** and **multinode (JOS-3)** models to estimate physiological responses like **core temperature**, **skin temperature**, and **skin wettedness**.
- **Standards Compliance**:
Implements calculations based on **ASHRAE 55**, **ISO 7730**, **EN 16798**, and more.
- **Ease of Use**:
Intuitive API for seamless integration into your projects.
- **Extensive Documentation**:
Detailed guides, examples, and tutorials to help you get started quickly.
- **Active Development**:
Regularly updated with new features, improvements, and bug fixes.
- **Open Source**:
Licensed under the MIT License for maximum flexibility and transparency.
Why Use pythermalcomfort?
=========================
- **Accurate Assessments**:
Reliable thermal comfort and stress evaluations for diverse environments.
- **Time-Saving**:
Automates complex calculations, saving you time and effort.
- **Versatility**:
Ideal for researchers, engineers, and professionals in **building science**, **HVAC design**, **environmental design**, **thermal physiology**, **sport science**, and **biometeorology**.
- **Enhanced Decision-Making**:
Empowers you to make data-driven decisions for **HVAC systems**, **building performance**, and **occupant comfort**.
Cite pythermalcomfort
=====================
If you use ``pythermalcomfort`` in your research, please cite it as follows:
.. code-block:: text
Tartarini, F., Schiavon, S., 2020.
pythermalcomfort: A Python package for thermal comfort research.
SoftwareX 12, 100578.
https://doi.org/10.1016/j.softx.2020.100578
Installation
============
Install ``pythermalcomfort`` via pip:
.. code-block:: bash
pip install pythermalcomfort
For advanced installation options, refer to the `Installation Instructions <https://pythermalcomfort.readthedocs.io/en/latest/installation.html>`_.
Quick Start
===========
Get started with ``pythermalcomfort`` in just a few lines of code:
.. code-block:: python
from pythermalcomfort.models import pmv_ppd_iso, utci
# Calculate PMV and PPD using ISO 7730 standard
result = pmv_ppd_iso(
tdb=25, # Dry Bulb Temperature in °C
tr=25, # Mean Radiant Temperature in °C
vr=0.1, # Relative air speed in m/s
rh=50, # Relative Humidity in %
met=1.4, # Metabolic rate in met
clo=0.5, # Clothing insulation in clo
model="7730-2005" # Year of the ISO standard
)
print(f"PMV: {result.pmv}, PPD: {result.ppd}")
# Calculate UTCI for heat stress assessment
utci_value = utci(tdb=30, tr=30, v=0.5, rh=50)
print(f"UTCI: {utci_value} °C")
For more examples and detailed usage, check out models and indices in the models section of the documentation.
Contribute
==========
We welcome contributions!
Whether you’re reporting a bug, suggesting a feature, or submitting a pull request, your input helps make ``pythermalcomfort`` better for everyone.
Check out our contribution page in the documentation to get started.
Documentation
=============
For detailed documentation, tutorials, and examples, visit our `Documentation <https://pythermalcomfort.readthedocs.io/en/latest/documentation/index.html>`_.
License
=======
``pythermalcomfort`` is released under the MIT License.
=====
Stats
=====
Changelog
=========
3.4.1 (2025-07-14)
------------------
.. warning::
removed support for Python 3.8 and 3.9
pythermalcomfort now requires Python 3.10 or higher.
Added support for Python 3.13
* fixed some typo in the documentation
* better formatted the code
3.4.0 (2025-06-08)
------------------
* Added the `work_capacity_dunne`.
* Added the `work_capacity_hothaps`.
* Added the `work_capacity_iso`.
* Added the `work_capacity_niosh`.
3.3.0 (2025-06-05)
------------------
* Added the `two_nodes_gagge_ji` function to calculate the two-node model for older individuals
* Added the `Temperature-Humidity Index (THI)`.
3.2.0 (2025-05-20)
------------------
* Added the `two_nodes_gagge_sleep` function to calculate the two-node model for sleeping individuals
* Added the `ESI` function to calculate the Environmental Stress Index.
3.1.0 (2025-04-28)
-------------------
* Updated the PHS model in compliance with the ISO 7933:2023 standard
- Added default‑kwarg overrides for 2023 mode (f_r, t_re, t_cr_eq)
- removed unused variable `round` from `default_kwargs`
* Included test cases according to the ISO 7933:2023 standard
* Added `AutoStrMixin` to provide a formatted `__str__` representation for result classes
.. note::
By default the ISO 7933:2023 standard will now be used for the PHS model.
The 2004 standard can still be specified as an optional parameter
.. warning::
The third ISO 7933:2023 test case is currently failing and has been marked xfail while the discrepancy is investigated.
3.0.1 (2025-04-14)
-------------------
* allow np.float and np.int as inputs to all functions
* fixed documentation for phs - met units
3.0.0 (2025-02-03)
-------------------
.. warning::
pythermalcomfort version 3.0.0 introduces some breaking changes.
**How functions return results:**
as the functions now return dataclass instances with the calculation results.
This change enhances the structure and accessibility of the results.
For example:
.. code-block:: python
from pythermalcomfort.models import pmv_ppd_iso
result = pmv_ppd_iso(
tdb=[22, 25], tr=25, vr=0.1, rh=50, met=1.4, clo=0.5, model="7730-2005"
)
print(result.pmv) # [-0. 0.41]
This update aims to make the package more user-friendly and to provide a more organized way to access all calculation results.
**Moved functions**
Moved all the functions that were in the `psychrometrics.py` file to the `utilities.py` file.
**Changed function names**
All the PMV functions have been renamed using the following format: `pmv_XXX` where XXX is the standard or the model name.
**PMV function**
The pmv_ppd function now has been split into two functions: pmv_ppd_iso and pmv_ppd_ashrae.
.. note::
We have updated all functions to accept Numpy arrays as inputs, allowing you to pass multiple values at once for faster results.
Single values are still accepted, and the functions will return results as before.
Additionally, we have synchronized the tests with the R comf package to ensure consistent calculation results across both packages.
Other improvements include:
* Enhanced documentation with more examples.
* Better described the models.
* Added more tests to ensure calculation accuracy.
* Implemented input validation to ensure inputs are within model applicability limits.
* Harmonized input names across all functions.
* Added surveys to assess thermal comfort to the documentation.
* Added a detailed section about clothing insulation.
2.10.0 (2024-03-18)
-------------------
* allow n-dimensional arrays for ``pet_steady`` and speedup ``p_sat`` calculation
2.9.1 (2024-01-19)
-------------------
* Fixed error calculation of mass sweating in PET mode, the unit was incorrect
2.9.0 (2024-01-15)
-------------------
.. warning::
pythermalcomfort 2.9.0 is no longer compatible with Python 3.8
* The PHS model accepts arrays as inputs
2.8.11 (2023-10-26)
-------------------
* wrote more test and improved code
2.8.11 (2023-10-26)
-------------------
* fixed issues with the documentation and sorted the models in alphabetical order
2.8.7 (2023-10-23)
-------------------
* Adaptive ASHRAE now returns a dataclass
2.8.6 (2023-10-09)
-------------------
* re-structured and linted the code
2.8.4 (2023-09-20)
-------------------
* calculation of cooling effect in pmv (standard='ashrae') triggered only when v>0.1 m/s
2.8.3 (2023-09-14)
-------------------
* general improvements in the JOS3 model
2.8.2 (2023-09-04)
-------------------
* general improvements in the JOS3 model
* fixed error when e_max == 0
2.8.1 (2023-07-05)
-------------------
* pythermalcomfort needs Python version > 3.8
* fixed issue in Cooling Effect calculation
2.8.0 (2023-07-03)
-------------------
* allowing the cooling effect to range from 0 to 40
* fixed PHS documentation
* improved JOS3 documentation
2.7.0 (2023-02-16)
-------------------
* changed coefficient of vasodilation in set_tmp() to 120 to match ASHRAE 55 2020 code
* slightly modified value in validation tables
2.6.0 (2023-01-17)
-------------------
* max sweating rate can be passed to two node model
* max skin wettedness can be passed to two node model
* rounding w to two decimals
* use_fans_heatwave function accepts arrays
* fixed typos unit documentation
2.5.4 (2022-10-12)
-------------------
* PHS model accepts all required inputs to be run on a minute by minute basis
* fix error check compliance PHS model
2.5.0 (2022-06-13)
-------------------
* Added the adaptive thermal heat balance (ATHB) model
2.4.0 (2022-06-10)
-------------------
* Added e_pmv model - Adjusted Predicted Mean Votes with Expectancy Factor
* Added a_pmv model - Adaptive Predicted Mean Vote
2.3.0 (2022-06-01)
-------------------
* Added discomfort index
2.2.0 (2022-05-17)
-------------------
* Implemented a better equation to calculate the mean radiant temperature
2.1.1 (2022-05-17)
-------------------
* Fixed how DISC is calculated
2.1.0 (2022-04-20)
-------------------
* Added Physiological Equivalent Temperature (PET) model
* In PMV and PPD function you can specify if occupants has control over airspeed
2.0.2 (2022-04-12)
-------------------
* UTCI accepts lists as inputs
2.0.0 (2022-04-07)
-------------------
.. warning::
Version 2.0.0 introduces some breaking changes. Now the default behaviour of most of the function is that they return a ``np.nan`` if the inputs are outside the model applicability limits.
For most functions we are no longer printing ``Warnings``. If you want the function to return a value even if your inputs are outside the model applicability limits then you can set the variable ``limit_input = False``. Please note that you should refrain from doing this.
.. note::
Starting from Version 2.0.0 of pythermalcomfort now most of the functions (see detailed list below) accept Numpy arrays or lists as inputs. This allows you to write more concise and faster code since we optimized vectorization, where possible using Numba.
* Allowing users to pass Numpy arrays or lists as input to the pmv_ppd, pmv, clo_tout, both adaptive models, utci, set_tmp, two_nodes
* Changed the input variable from return_invalid to limit_input
* Increased speed by using Numba @vectorize decorator
* Changed ASHRAE 55 2020 limits to match new addenda
* Improved documentation
1.11.0 (2022-03-16)
-------------------
* Allowing users to pass a Numpy array as input into the UTCI function
* Numpy is now a requirement of pythermalcomfort
* Improved PMV, JOS-3, and UTCI documentation
* Testing PMV, SET, and solar gains models using online reference tables
1.10.0 (2021-11-15)
-------------------
* Added JOS-3 model
1.9.0 (2021-10-07)
------------------
* Added Normal Effective Temperature (NET)
* Added Apparent Temperature (AT)
* Added Wind Chill Index (WCI)
1.8.0 (2021-09-28)
------------------
* Gagge's two-node model
* Added WBGT equation
* Added Heat index (HI)
* Added humidex index
1.7.1 (2021-09-08)
------------------
* Added ASHRAE equation to calculate the operative temperature
1.7.0 (2021-07-29)
------------------
* Implemented function to calculate the if fans are beneficial during heatwaves
* Fixed error in the SET equation to calculated radiative heat transfer coefficient
* Fixed error in SET definition
* Moved functions optimized with Numba to new file
1.6.2 (2021-07-08)
------------------
* Updated equation clo_dynamic based on ANSI/ASHRAE Addendum f to ANSI/ASHRAE Standard 55-2020
* Fixed import errors in examples
1.6.1 (2021-07-05)
------------------
* optimized UTCI function with Numba
1.6.0 (2021-05-21)
------------------
* (BREAKING CHANGE) moved some of the functions from psychrometrics to utilities
* added equation to calculate body surface area
1.5.2 (2021-05-05)
------------------
* return stress category UTCI
1.5.1 (2021-04-29)
------------------
* optimized phs with Numba
1.5.0 (2021-04-21)
------------------
* added Predicted Heat Strain (PHS) index from ISO 7933:2004
1.4.6 (2021-03-30)
------------------
* changed equation to calculate convective heat transfer coefficient in set_tmp() as per Gagge's 1986
* fixed vasodilation coefficient in set_tmp()
* docs changed term air velocity with air speed and improved documentation
* added new tests for comfort functions
1.3.6 (2021-02-04)
------------------
* fixed error calculation solar_altitude and sharp for supine person in solar_gain
1.3.5 (2021-02-02)
------------------
* not rounding SET temperature when calculating cooling effect
1.3.3 (2020-12-14)
------------------
* added function to calculate sky-vault view fraction
1.3.2 (2020-12-14)
------------------
* replaced input solar_azimuth with sharp in the solar_gain() function
* fixed small error in example pmv calculation
1.3.1 (2020-10-30)
------------------
* Fixed error calculation of cooling effect with elevated air temperatures
1.3.0 (2020-10-19)
------------------
* Changed PMV elevated air speed limit from 0.2 to 0.1 m/s
1.2.3 (2020-09-09)
------------------
* Fixed error in the calculation of erf
* Updated validation table erf
1.2.2 (2020-08-21)
------------------
* Changed default diameter in mean_radiant_tmp
* Improved documentation
1.2.0 (2020-07-29)
------------------
* Significantly improved calculation speed using numba. Wrapped set and pmv functions
1.0.6 (2020-07-24)
------------------
* Minor speed improvement changed math.pow with **
* Added validation PMV validation table from ISO 7730
1.0.4 (2020-07-20)
------------------
* Improved speed calculation of the Cooling Effect
* Bisection has been replaced with Brentq function from scipy
1.0.3 (2020-07-01)
------------------
* Annotated variables in the SET code.
1.0.2 (2020-06-11)
------------------
* Fixed an error in the bisection equation used to calculated Cooling Effect.
1.0.0 (2020-06-09)
------------------
* Major stable release.
0.7.0 (2020-06-09)
------------------
* Added equation to calculate the dynamic clothing insulation
0.6.3 (2020-04-11)
------------------
* Fixed error in calculation adaptive ASHRAE
* Added some examples
0.6.3 (2020-03-17)
------------------
* Renamed function to_calc to t_o
* Fixed error calculation of relative air speed
* renamed input parameter ta to tdb
* Added function to calculate mean radiant temperature from black globe temperature
* Added function to calculate solar gain on people
* Added functions to calculate vapour pressure, wet-bulb temperature, dew point temperature, and psychrometric data from dry bulb temperature and RH
* Added authors
* Added dictionaries with reference clo and met values
* Added function to calculate enthalpy_air
0.5.2 (2020-03-11)
------------------
* Added function to calculate the running mean outdoor temperature
0.5.1 (2020-03-06)
------------------
* There was an error in version 0.4.2 in the calculation of PMV and PPD with elevated air speed, i.e. vr > 0.2 which has been fixed in this version
* Added function to calculate the cooling effect in accordance with ASHRAE
0.4.1 (2020-02-17)
------------------
* Removed compatibility with python 2.7 and 3.5
0.4.0 (2020-02-17)
------------------
* Created adaptive_EN, v_relative, t_clo, vertical_tmp_gradient, ankle_draft functions and wrote tests.
* Added possibility to decide with measuring system to use SI or IP.
0.3.0 (2020-02-13)
------------------
* Created set_tmp, adaptive_ashrae, UTCI functions and wrote tests.
* Added warning to let the user know if inputs entered do not comply with Standards applicability limits.
0.1.0 (2020-02-11)
------------------
* Created pmv, pmv_ppd functions and wrote tests.
* Documented code.
0.0.0 (2020-02-11)
------------------
* First release on PyPI.
Raw data
{
"_id": null,
"home_page": "https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort",
"name": "pythermalcomfort",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10.0",
"maintainer_email": null,
"keywords": "thermal comfort, pmv, heat stress, cold stress, thermal sensation, thermal physiology, meteorology, climate analysis, discomfort, comfort, thermal environment, built environment",
"author": "Federico Tartarini",
"author_email": "cbecomforttool@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/43/43/49817d3c1bed9788f90b35f6d370dc01a527a62377e5c7cde33876d05a83/pythermalcomfort-3.4.2.tar.gz",
"platform": null,
"description": ".. image:: https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/raw/development/docs/images/pythermalcomfort-3-short.png\n :align: center\n :alt: pythermalcomfort logo\n\n================\npythermalcomfort\n================\n\nThe ``pythermalcomfort`` Python package is a comprehensive toolkit for calculating **thermal comfort indices**, **heat/cold stress metrics**, and **thermophysiological responses** based on international standards and peer-reviewed research.\nDesigned for researchers, engineers, and building science professionals, it simplifies complex calculations while ensuring accuracy and compliance with industry standards.\n\nKey Features\n============\n\n- **Thermal Comfort Calculations**:\n Supports multiple models, including **PMV**, **PPD**, **adaptive comfort**, and **SET**.\n- **Heat and Cold Stress Indices**:\n Calculate **UTCI**, **Heat Index**, **Wind Chill Index**, and **Humidex** for assessing environmental stress.\n- **Thermophysiological Models**:\n Includes the **two-node (Gagge)** and **multinode (JOS-3)** models to estimate physiological responses like **core temperature**, **skin temperature**, and **skin wettedness**.\n- **Standards Compliance**:\n Implements calculations based on **ASHRAE 55**, **ISO 7730**, **EN 16798**, and more.\n- **Ease of Use**:\n Intuitive API for seamless integration into your projects.\n- **Extensive Documentation**:\n Detailed guides, examples, and tutorials to help you get started quickly.\n- **Active Development**:\n Regularly updated with new features, improvements, and bug fixes.\n- **Open Source**:\n Licensed under the MIT License for maximum flexibility and transparency.\n\nWhy Use pythermalcomfort?\n=========================\n\n- **Accurate Assessments**:\n Reliable thermal comfort and stress evaluations for diverse environments.\n- **Time-Saving**:\n Automates complex calculations, saving you time and effort.\n- **Versatility**:\n Ideal for researchers, engineers, and professionals in **building science**, **HVAC design**, **environmental design**, **thermal physiology**, **sport science**, and **biometeorology**.\n- **Enhanced Decision-Making**:\n Empowers you to make data-driven decisions for **HVAC systems**, **building performance**, and **occupant comfort**.\n\nCite pythermalcomfort\n=====================\n\nIf you use ``pythermalcomfort`` in your research, please cite it as follows:\n\n.. code-block:: text\n\n Tartarini, F., Schiavon, S., 2020.\n pythermalcomfort: A Python package for thermal comfort research.\n SoftwareX 12, 100578.\n https://doi.org/10.1016/j.softx.2020.100578\n\nInstallation\n============\n\nInstall ``pythermalcomfort`` via pip:\n\n.. code-block:: bash\n\n pip install pythermalcomfort\n\nFor advanced installation options, refer to the `Installation Instructions <https://pythermalcomfort.readthedocs.io/en/latest/installation.html>`_.\n\nQuick Start\n===========\n\nGet started with ``pythermalcomfort`` in just a few lines of code:\n\n.. code-block:: python\n\n from pythermalcomfort.models import pmv_ppd_iso, utci\n\n # Calculate PMV and PPD using ISO 7730 standard\n result = pmv_ppd_iso(\n tdb=25, # Dry Bulb Temperature in \u00b0C\n tr=25, # Mean Radiant Temperature in \u00b0C\n vr=0.1, # Relative air speed in m/s\n rh=50, # Relative Humidity in %\n met=1.4, # Metabolic rate in met\n clo=0.5, # Clothing insulation in clo\n model=\"7730-2005\" # Year of the ISO standard\n )\n print(f\"PMV: {result.pmv}, PPD: {result.ppd}\")\n\n # Calculate UTCI for heat stress assessment\n utci_value = utci(tdb=30, tr=30, v=0.5, rh=50)\n print(f\"UTCI: {utci_value} \u00b0C\")\n\nFor more examples and detailed usage, check out models and indices in the models section of the documentation.\n\nContribute\n==========\n\nWe welcome contributions!\nWhether you\u2019re reporting a bug, suggesting a feature, or submitting a pull request, your input helps make ``pythermalcomfort`` better for everyone.\nCheck out our contribution page in the documentation to get started.\n\nDocumentation\n=============\n\nFor detailed documentation, tutorials, and examples, visit our `Documentation <https://pythermalcomfort.readthedocs.io/en/latest/documentation/index.html>`_.\n\nLicense\n=======\n\n``pythermalcomfort`` is released under the MIT License.\n\n\n=====\nStats\n=====\n\n\n\nChangelog\n=========\n\n3.4.1 (2025-07-14)\n------------------\n\n.. warning::\n removed support for Python 3.8 and 3.9\n pythermalcomfort now requires Python 3.10 or higher.\n Added support for Python 3.13\n\n\n* fixed some typo in the documentation\n* better formatted the code\n\n3.4.0 (2025-06-08)\n------------------\n\n* Added the `work_capacity_dunne`.\n* Added the `work_capacity_hothaps`.\n* Added the `work_capacity_iso`.\n* Added the `work_capacity_niosh`.\n\n3.3.0 (2025-06-05)\n------------------\n\n* Added the `two_nodes_gagge_ji` function to calculate the two-node model for older individuals\n* Added the `Temperature-Humidity Index (THI)`.\n\n3.2.0 (2025-05-20)\n------------------\n\n* Added the `two_nodes_gagge_sleep` function to calculate the two-node model for sleeping individuals\n* Added the `ESI` function to calculate the Environmental Stress Index.\n\n3.1.0 (2025-04-28)\n-------------------\n* Updated the PHS model in compliance with the ISO 7933:2023 standard\n - Added default\u2011kwarg overrides for 2023 mode (f_r, t_re, t_cr_eq)\n - removed unused variable `round` from `default_kwargs`\n* Included test cases according to the ISO 7933:2023 standard\n* Added `AutoStrMixin` to provide a formatted `__str__` representation for result classes\n\n.. note::\n By default the ISO 7933:2023 standard will now be used for the PHS model.\n The 2004 standard can still be specified as an optional parameter\n\n.. warning::\n The third ISO 7933:2023 test case is currently failing and has been marked xfail while the discrepancy is investigated.\n\n3.0.1 (2025-04-14)\n-------------------\n\n* allow np.float and np.int as inputs to all functions\n* fixed documentation for phs - met units\n\n3.0.0 (2025-02-03)\n-------------------\n\n.. warning::\n pythermalcomfort version 3.0.0 introduces some breaking changes.\n\n **How functions return results:**\n as the functions now return dataclass instances with the calculation results.\n This change enhances the structure and accessibility of the results.\n For example:\n\n .. code-block:: python\n\n from pythermalcomfort.models import pmv_ppd_iso\n\n result = pmv_ppd_iso(\n tdb=[22, 25], tr=25, vr=0.1, rh=50, met=1.4, clo=0.5, model=\"7730-2005\"\n )\n print(result.pmv) # [-0. 0.41]\n\n This update aims to make the package more user-friendly and to provide a more organized way to access all calculation results.\n\n **Moved functions**\n Moved all the functions that were in the `psychrometrics.py` file to the `utilities.py` file.\n\n **Changed function names**\n All the PMV functions have been renamed using the following format: `pmv_XXX` where XXX is the standard or the model name.\n\n **PMV function**\n The pmv_ppd function now has been split into two functions: pmv_ppd_iso and pmv_ppd_ashrae.\n\n.. note::\n We have updated all functions to accept Numpy arrays as inputs, allowing you to pass multiple values at once for faster results.\n Single values are still accepted, and the functions will return results as before.\n Additionally, we have synchronized the tests with the R comf package to ensure consistent calculation results across both packages.\n\n Other improvements include:\n\n * Enhanced documentation with more examples.\n * Better described the models.\n * Added more tests to ensure calculation accuracy.\n * Implemented input validation to ensure inputs are within model applicability limits.\n * Harmonized input names across all functions.\n * Added surveys to assess thermal comfort to the documentation.\n * Added a detailed section about clothing insulation.\n\n2.10.0 (2024-03-18)\n-------------------\n\n* allow n-dimensional arrays for ``pet_steady`` and speedup ``p_sat`` calculation\n\n\n2.9.1 (2024-01-19)\n-------------------\n\n* Fixed error calculation of mass sweating in PET mode, the unit was incorrect\n\n2.9.0 (2024-01-15)\n-------------------\n\n.. warning::\n pythermalcomfort 2.9.0 is no longer compatible with Python 3.8\n\n* The PHS model accepts arrays as inputs\n\n2.8.11 (2023-10-26)\n-------------------\n\n* wrote more test and improved code\n\n2.8.11 (2023-10-26)\n-------------------\n\n* fixed issues with the documentation and sorted the models in alphabetical order\n\n2.8.7 (2023-10-23)\n-------------------\n\n* Adaptive ASHRAE now returns a dataclass\n\n2.8.6 (2023-10-09)\n-------------------\n\n* re-structured and linted the code\n\n2.8.4 (2023-09-20)\n-------------------\n\n* calculation of cooling effect in pmv (standard='ashrae') triggered only when v>0.1 m/s\n\n2.8.3 (2023-09-14)\n-------------------\n\n* general improvements in the JOS3 model\n\n2.8.2 (2023-09-04)\n-------------------\n\n* general improvements in the JOS3 model\n* fixed error when e_max == 0\n\n2.8.1 (2023-07-05)\n-------------------\n\n* pythermalcomfort needs Python version > 3.8\n* fixed issue in Cooling Effect calculation\n\n2.8.0 (2023-07-03)\n-------------------\n\n* allowing the cooling effect to range from 0 to 40\n* fixed PHS documentation\n* improved JOS3 documentation\n\n2.7.0 (2023-02-16)\n-------------------\n\n* changed coefficient of vasodilation in set_tmp() to 120 to match ASHRAE 55 2020 code\n* slightly modified value in validation tables\n\n2.6.0 (2023-01-17)\n-------------------\n\n* max sweating rate can be passed to two node model\n* max skin wettedness can be passed to two node model\n* rounding w to two decimals\n* use_fans_heatwave function accepts arrays\n* fixed typos unit documentation\n\n2.5.4 (2022-10-12)\n-------------------\n\n* PHS model accepts all required inputs to be run on a minute by minute basis\n* fix error check compliance PHS model\n\n2.5.0 (2022-06-13)\n-------------------\n\n* Added the adaptive thermal heat balance (ATHB) model\n\n2.4.0 (2022-06-10)\n-------------------\n\n* Added e_pmv model - Adjusted Predicted Mean Votes with Expectancy Factor\n* Added a_pmv model - Adaptive Predicted Mean Vote\n\n2.3.0 (2022-06-01)\n-------------------\n\n* Added discomfort index\n\n2.2.0 (2022-05-17)\n-------------------\n\n* Implemented a better equation to calculate the mean radiant temperature\n\n2.1.1 (2022-05-17)\n-------------------\n\n* Fixed how DISC is calculated\n\n2.1.0 (2022-04-20)\n-------------------\n\n* Added Physiological Equivalent Temperature (PET) model\n* In PMV and PPD function you can specify if occupants has control over airspeed\n\n2.0.2 (2022-04-12)\n-------------------\n\n* UTCI accepts lists as inputs\n\n2.0.0 (2022-04-07)\n-------------------\n\n.. warning::\n Version 2.0.0 introduces some breaking changes. Now the default behaviour of most of the function is that they return a ``np.nan`` if the inputs are outside the model applicability limits.\n\n For most functions we are no longer printing ``Warnings``. If you want the function to return a value even if your inputs are outside the model applicability limits then you can set the variable ``limit_input = False``. Please note that you should refrain from doing this.\n\n\n.. note::\n Starting from Version 2.0.0 of pythermalcomfort now most of the functions (see detailed list below) accept Numpy arrays or lists as inputs. This allows you to write more concise and faster code since we optimized vectorization, where possible using Numba.\n\n* Allowing users to pass Numpy arrays or lists as input to the pmv_ppd, pmv, clo_tout, both adaptive models, utci, set_tmp, two_nodes\n* Changed the input variable from return_invalid to limit_input\n* Increased speed by using Numba @vectorize decorator\n* Changed ASHRAE 55 2020 limits to match new addenda\n* Improved documentation\n\n1.11.0 (2022-03-16)\n-------------------\n\n* Allowing users to pass a Numpy array as input into the UTCI function\n* Numpy is now a requirement of pythermalcomfort\n* Improved PMV, JOS-3, and UTCI documentation\n* Testing PMV, SET, and solar gains models using online reference tables\n\n1.10.0 (2021-11-15)\n-------------------\n\n* Added JOS-3 model\n\n1.9.0 (2021-10-07)\n------------------\n\n* Added Normal Effective Temperature (NET)\n* Added Apparent Temperature (AT)\n* Added Wind Chill Index (WCI)\n\n1.8.0 (2021-09-28)\n------------------\n\n* Gagge's two-node model\n* Added WBGT equation\n* Added Heat index (HI)\n* Added humidex index\n\n1.7.1 (2021-09-08)\n------------------\n\n* Added ASHRAE equation to calculate the operative temperature\n\n1.7.0 (2021-07-29)\n------------------\n\n* Implemented function to calculate the if fans are beneficial during heatwaves\n* Fixed error in the SET equation to calculated radiative heat transfer coefficient\n* Fixed error in SET definition\n* Moved functions optimized with Numba to new file\n\n1.6.2 (2021-07-08)\n------------------\n\n* Updated equation clo_dynamic based on ANSI/ASHRAE Addendum f to ANSI/ASHRAE Standard 55-2020\n* Fixed import errors in examples\n\n1.6.1 (2021-07-05)\n------------------\n\n* optimized UTCI function with Numba\n\n1.6.0 (2021-05-21)\n------------------\n\n* (BREAKING CHANGE) moved some of the functions from psychrometrics to utilities\n* added equation to calculate body surface area\n\n1.5.2 (2021-05-05)\n------------------\n\n* return stress category UTCI\n\n1.5.1 (2021-04-29)\n------------------\n\n* optimized phs with Numba\n\n1.5.0 (2021-04-21)\n------------------\n\n* added Predicted Heat Strain (PHS) index from ISO 7933:2004\n\n1.4.6 (2021-03-30)\n------------------\n\n* changed equation to calculate convective heat transfer coefficient in set_tmp() as per Gagge's 1986\n* fixed vasodilation coefficient in set_tmp()\n* docs changed term air velocity with air speed and improved documentation\n* added new tests for comfort functions\n\n1.3.6 (2021-02-04)\n------------------\n\n* fixed error calculation solar_altitude and sharp for supine person in solar_gain\n\n1.3.5 (2021-02-02)\n------------------\n\n* not rounding SET temperature when calculating cooling effect\n\n1.3.3 (2020-12-14)\n------------------\n\n* added function to calculate sky-vault view fraction\n\n1.3.2 (2020-12-14)\n------------------\n\n* replaced input solar_azimuth with sharp in the solar_gain() function\n* fixed small error in example pmv calculation\n\n1.3.1 (2020-10-30)\n------------------\n\n* Fixed error calculation of cooling effect with elevated air temperatures\n\n1.3.0 (2020-10-19)\n------------------\n\n* Changed PMV elevated air speed limit from 0.2 to 0.1 m/s\n\n1.2.3 (2020-09-09)\n------------------\n\n* Fixed error in the calculation of erf\n* Updated validation table erf\n\n1.2.2 (2020-08-21)\n------------------\n\n* Changed default diameter in mean_radiant_tmp\n* Improved documentation\n\n\n1.2.0 (2020-07-29)\n------------------\n\n* Significantly improved calculation speed using numba. Wrapped set and pmv functions\n\n1.0.6 (2020-07-24)\n------------------\n\n* Minor speed improvement changed math.pow with **\n* Added validation PMV validation table from ISO 7730\n\n1.0.4 (2020-07-20)\n------------------\n\n* Improved speed calculation of the Cooling Effect\n* Bisection has been replaced with Brentq function from scipy\n\n1.0.3 (2020-07-01)\n------------------\n\n* Annotated variables in the SET code.\n\n1.0.2 (2020-06-11)\n------------------\n\n* Fixed an error in the bisection equation used to calculated Cooling Effect.\n\n\n1.0.0 (2020-06-09)\n------------------\n\n* Major stable release.\n\n0.7.0 (2020-06-09)\n------------------\n\n* Added equation to calculate the dynamic clothing insulation\n\n0.6.3 (2020-04-11)\n------------------\n\n* Fixed error in calculation adaptive ASHRAE\n* Added some examples\n\n0.6.3 (2020-03-17)\n------------------\n\n* Renamed function to_calc to t_o\n* Fixed error calculation of relative air speed\n* renamed input parameter ta to tdb\n* Added function to calculate mean radiant temperature from black globe temperature\n* Added function to calculate solar gain on people\n* Added functions to calculate vapour pressure, wet-bulb temperature, dew point temperature, and psychrometric data from dry bulb temperature and RH\n* Added authors\n* Added dictionaries with reference clo and met values\n* Added function to calculate enthalpy_air\n\n0.5.2 (2020-03-11)\n------------------\n\n* Added function to calculate the running mean outdoor temperature\n\n0.5.1 (2020-03-06)\n------------------\n\n* There was an error in version 0.4.2 in the calculation of PMV and PPD with elevated air speed, i.e. vr > 0.2 which has been fixed in this version\n* Added function to calculate the cooling effect in accordance with ASHRAE\n\n0.4.1 (2020-02-17)\n------------------\n\n* Removed compatibility with python 2.7 and 3.5\n\n0.4.0 (2020-02-17)\n------------------\n\n* Created adaptive_EN, v_relative, t_clo, vertical_tmp_gradient, ankle_draft functions and wrote tests.\n* Added possibility to decide with measuring system to use SI or IP.\n\n0.3.0 (2020-02-13)\n------------------\n\n* Created set_tmp, adaptive_ashrae, UTCI functions and wrote tests.\n* Added warning to let the user know if inputs entered do not comply with Standards applicability limits.\n\n0.1.0 (2020-02-11)\n------------------\n\n* Created pmv, pmv_ppd functions and wrote tests.\n* Documented code.\n\n0.0.0 (2020-02-11)\n------------------\n\n* First release on PyPI.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "pythermalcomfort is a comprehensive toolkit for calculating thermal comfort indices, heat/cold stress metrics, and thermophysiological responses. It supports multiple models, including PMV, PPD, adaptive comfort, SET, UTCI, Heat Index, Wind Chill Index, and Humidex. The package also includes thermophysiological models like the two-node (Gagge) and multinode (JOS-3) models to estimate physiological responses such as core temperature, skin temperature, and skin wettedness. ",
"version": "3.4.2",
"project_urls": {
"Changelog": "https://pythermalcomfort.readthedocs.io/en/latest/changelog.html",
"Documentation": "https://pythermalcomfort.readthedocs.io/",
"Homepage": "https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort",
"Issue Tracker": "https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/issues"
},
"split_keywords": [
"thermal comfort",
" pmv",
" heat stress",
" cold stress",
" thermal sensation",
" thermal physiology",
" meteorology",
" climate analysis",
" discomfort",
" comfort",
" thermal environment",
" built environment"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "29251357cf6f98104056d4a41038d49486a5af2c4424266820b27580e9ea9565",
"md5": "c309b7d6979045a26f9aa693727bb3c3",
"sha256": "b9024fc9bb17abb4749ac9d6a17c96f77b775a2f30fb3f049db3705183ed0be1"
},
"downloads": -1,
"filename": "pythermalcomfort-3.4.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "c309b7d6979045a26f9aa693727bb3c3",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.10.0",
"size": 198112,
"upload_time": "2025-07-22T06:39:08",
"upload_time_iso_8601": "2025-07-22T06:39:08.003148Z",
"url": "https://files.pythonhosted.org/packages/29/25/1357cf6f98104056d4a41038d49486a5af2c4424266820b27580e9ea9565/pythermalcomfort-3.4.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "434349817d3c1bed9788f90b35f6d370dc01a527a62377e5c7cde33876d05a83",
"md5": "be5952eef1e6559e9e013b3e3a8227aa",
"sha256": "7568ab670e87099b25a13f16cf6148844dfdfb2d124aeb245f1dcf006d08fa37"
},
"downloads": -1,
"filename": "pythermalcomfort-3.4.2.tar.gz",
"has_sig": false,
"md5_digest": "be5952eef1e6559e9e013b3e3a8227aa",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10.0",
"size": 434939,
"upload_time": "2025-07-22T06:39:09",
"upload_time_iso_8601": "2025-07-22T06:39:09.969516Z",
"url": "https://files.pythonhosted.org/packages/43/43/49817d3c1bed9788f90b35f6d370dc01a527a62377e5c7cde33876d05a83/pythermalcomfort-3.4.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-22 06:39:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CenterForTheBuiltEnvironment",
"github_project": "pythermalcomfort",
"travis_ci": true,
"coveralls": true,
"github_actions": true,
"tox": true,
"lcname": "pythermalcomfort"
}