CenterForTheBuiltEnvironment / pythermalcomfort

Package to calculate several thermal comfort indices (e.g. PMV, PPD, SET, adaptive) and convert physical variables.
https://pythermalcomfort.readthedocs.io/en/latest/
MIT License
134 stars 49 forks source link

Change the SET default parameters to improve its accuracy #108

Open FedericoTartarini opened 2 weeks ago

FedericoTartarini commented 2 weeks ago

Melnikov found that the accuracy of the model can be improved by changing some of the default parameters in the SET model. In his paper (ref below) he suggests using the values in set 3 of the following table. In particular, in his analysis he suggest that changing the value of neutral core-skin blood flow from 6.3 to 10.7 has the most impact. Shall we update this value?

image

Moreover, Melnikov also provides additional equations to calculate the convective heat transfer coefficient. See the screenshot below.

image

I am tagging you in this discussion since I would like to know your feedback. We should also decide what it is the right procedure that we should follow when we suggest changes to the source code. I can open a separate discussion about this. @AkihisaNomoto @t-kramer @stefanoschiavon @eddes

@article{melnikov_system_2018, title = {System dynamics of human body thermal regulation in outdoor environments}, volume = {143}, issn = {0360-1323}, url = {https://www.sciencedirect.com/science/article/pii/S0360132318304323}, doi = {10.1016/j.buildenv.2018.07.024}, urldate = {2024-06-14}, journal = {Building and Environment}, author = {Melnikov, Valentin and Krzhizhanovskaya, Valeria V. and Lees, Michael H. and Sloot, Peter M. A.}, month = oct, year = {2018}, keywords = {Human body thermal regulation, Outdoor thermal comfort, System dynamics, Two-node model}, pages = {760--769}, file = {Accepted Version:/Users/ftar3919/Zotero/storage/3QX8AG2E/Melnikov et al. - 2018 - System dynamics of human body thermal regulation i.pdf:application/pdf;ScienceDirect Snapshot:/Users/ftar3919/Zotero/storage/QST4PK6H/S0360132318304323.html:text/html}, }

AkihisaNomoto commented 2 weeks ago

Hi @FedericoTartarini - Thank you for sharing the paper. It looks great.

I took a look at the paper but was not sure where the author's contribution was and where the original parts were. I do not remember all the SET equations, but it seems like the author's contribution is what you showed in this issue (#108).

Basic setting of blood flow: Honestly, I am not sure whether the value of blood flow is true or not. Increasing the basic setting value of blood flow may make the core temperature response faster. The authors have tuned the model parameters to fit Munir's data, so it is natural that the accuracy is high for Munir's data. The important thing is whether the accuracy has been validated against other datasets. While the authors have validated against Fiala's data, this experiment does not capture the response when moving from a cold to a slightly warm environment, which is the issue that the author points out. Therefore, in my opinion, further accuracy validation is necessary (i.e., the original model might also reproduce Fiala's experiment well). If the authors can accurately reproduce experiments in a cold environment and improve the accuracy of skin and core temperatures, it would be worth incorporating to the code.

Convective heat transfer coefficient: I do not think this value has a significant impact, but the method of selecting the maximum value from five formulas does not make sense to me and this seems to break physical principles. These simplified formulas are originally determined by the shape and conditions of the object. It is unclear which literature the five formulas reference. Values like 3 and 8.6 are written as constants, but they should be expressed as symbols since they inherently have dimensions. Otherwise, the units on the right and left sides would be completely different.

Source code modification: To simplify code maintenance, you better avoid duplication. How about making the model type selectable based on the original model code? I know many researchers who have improved the SET model, but most of these improvements are parameter tuning rather than significant changes to the calculation logic, so I think it can be handled with simple code like the one below.

def set_tmp(args, model_type="original"):
    if model_type == "original":
        a = 1
        b = 2
    elif model_type == "pizza":
        a = 2
        b = 3
    elif model_type == "melnikov":
        a = 4
        b = 5
    else:
        print("Error: Model type should be one of ['original', 'melnikov', 'pizza']")
ruijis commented 1 week ago

FYI, I just read another paper about the accuracy of the SET model: https://www.sciencedirect.com/science/article/pii/S0360132321011045

On Fri, Jun 14, 2024 at 10:56 AM Akihisa Nomoto @.***> wrote:

Hi @FedericoTartarini https://github.com/FedericoTartarini - Thank you for sharing the paper. It looks great.

I took a look at the paper but was not sure where the author's contribution was and where the original parts were. I do not remember all the SET equations, but it seems like the author's contribution is what you showed in this issue (#108 https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/issues/108 ).

Basic setting of blood flow: Honestly speaking, it is unclear whether the value of blood flow is true or not. Increasing the basic setting value of blood flow may make the core temperature response faster. The authors have tuned the model parameters to fit Munir's data, so it is natural that the accuracy is high for Munir's data. The important thing is whether the accuracy has been validated against other datasets. While the authors have validated against Fiala's data, this experiment does not capture the response when moving from a cold to a slightly warm environment, which is the issue that the author points out. Therefore, in my opinion, further accuracy validation is necessary (i.e., the original model might also reproduce Fiala's experiment well). If the authors can accurately reproduce experiments in a cold environment and improve the accuracy of skin and core temperatures, it would be worth incorporating to the code.

Convective heat transfer coefficient: I do not think this value has a significant impact, but the method of selecting the maximum value from five formulas does not make sense to me and this seems to break physical principles. These simplified formulas are originally determined by the shape and conditions of the object. It is unclear which literature the five formulas reference. Values like 3 and 8.6 are written as constants, but they should be expressed as symbols since they inherently have dimensions. Otherwise, the units on the right and left sides would be completely different.

Source code modification: To simplify code maintenance, you better avoid duplication. How about making the model type selectable based on the original model code? I know many researchers who have improved the SET model, but most of these improvements are parameter tuning rather than significant changes to the calculation logic, so I think it can be handled with simple code like the one below.

def set_tmp(args, model_type="original"): if model_type == "original": a = 1 b = 2 elif model_type == "pizza": a = 2 b = 3 elif model_type == "melnikov": a = 4 b = 5 else: print("Error: Model type should be one of ['original', 'melnikov', 'pizza']")

— Reply to this email directly, view it on GitHub https://github.com/CenterForTheBuiltEnvironment/pythermalcomfort/issues/108#issuecomment-2168506134, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKX6BLZIL6D7NGD4OI427Z3ZHMVEBAVCNFSM6AAAAABJJOIBYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRYGUYDMMJTGQ . You are receiving this because you are subscribed to this thread.Message ID: <CenterForTheBuiltEnvironment/pythermalcomfort/issues/108/2168506134@ github.com>