Thermal comfort series
Calculate a complete PMV/PPD measurement series with explicit row states and six reproducible downloads.
No file selected
The original is read when you run the task.
Your file, file name and pasted text stay in this browser.
Wind speed is already relative. Dynamic clothing is applied only when selected. The fixed older models are not current-standard certification.
Before you start
Bind your temperature, already-relative speed, humidity, met and clo columns. Review PMV, PPD and any ASHRAE cooling effect alongside original cells and explicit failures, then save the full table, report, chart, original, settings and notice.
How to use this tool
- Choose one complete UTF-8 CSV or JSON table and confirm the selected format.
- Bind one-based measurement roles; select SI/IP, the fixed model, clothing and air-speed-control settings.
- Run the complete series and reconcile all row ordinals, failed states, warnings and usable results.
- Read complete cell values and the full report, then save all six downloads with the original settings.
Supported inputs and limits
Choose one original file or pasted complete text. Input is strict UTF-8 CSV with a header or JSON {schema:"neatbo.thermal-comfort.input.v1",columns:[...],rows:[...]}. A leading BOM and exact original bytes are retained. JSON cells are strings, finite numbers, booleans or null; nested cells and duplicate object keys are rejected.
Bind eight roles by one-based column positions: row ID, indoor temperature, mean radiant temperature, already-relative speed, RH, met, clo and optional external work. Numeric roles must be distinct. An unbound external-work role explicitly means zero; a bound blank/null/missing cell is invalid. All header, auxiliary, ragged and invalid cells count.
SI uses Celsius and m/s; IP uses Fahrenheit and ft/s. The original converter runs IP→SI before the cooling calculation, which uses its default SI route. RH is percent 0–100. Wind speed is already relative and is never adjusted again. Dynamic clothing is off by default and uses the original ISO/ASHRAE thresholds only when enabled.
Fixed jsthermalcomfort 1.4.0 models: ISO 7730:2005 or ASHRAE 55:2020, unrounded output and applicability limits enabled. ISO met≥0.8 is an explicit additional applicability rule. These models do not certify compliance with the latest standard.
Preserve every source row, repeated ID, complete raw token, decoded cell, UTF-16/UTF-8 location and setting. Invalid or non-applicable rows have explicit states and null PMV/PPD. Non-finite values, non-convergence and cooling fallback-zero warnings are failures, not valid comfort results.
ASHRAE cooling applies only above 0.1 m/s. Both original SET and ET computations run and are charged. Original PMV/clothing 150-iteration and Brent 100-iteration limits remain; no additional SET/ET local iteration ceiling is introduced.
Joint limits: 32 MiB input, 100,000 measurement rows, 2,000,000 source cells including headers/auxiliary/invalid cells, 10,000 cooling rows and 1,000,000,000 actual loop/call charges. All limits must also satisfy complete-output and owned-memory budgets; their simultaneous maxima are not promised.
Six full downloads: rows CSV, full report JSON, every-row SVG including invalid states, unchanged original, settings and complete license notice. Negative zero is retained in runtime values and CSV; the report records sorted complete numericNegativeZeroPaths to restore JSON number signs.
Physical downloads, complete report text and copied text each ≤128 MiB; full compact typed JSON ≤256 MiB; their aggregate ≤640 MiB; full binary plus escaped metadata/text transport census ≤2 GiB. Owned allocations share one 512 MiB preflight ceiling; it is not a measured maximum browser heap.
One absolute 300-second deadline covers source metadata/read, import, calculation, complete validation, cleanup, six native downloads and first result publication. Cancellation, failure or late cleanup delivers no partial result. Retain the same original and settings for a fresh task. Maximum joint capacity and real cross-engine browser acceptance are pending.
Worked example
Example input
{"schema":"neatbo.thermal-comfort.input.v1","columns":["id","tdb","tr","vr","rh","met","clo","wme"],"rows":[["iso-normal",25,25,0.1,50,1.2,0.5,0]]}Example options
{"format":"json-table","units":"SI","model":"ISO7730-2005","columns":{"rowID":1,"temp_indoor":2,"mrt":3,"v_relative":4,"rh":5,"met":6,"clo":7,"wme":8}}Example output
{"ordinal":0,"rowID":"iso-normal","pmv":0.08425176342008413,"ppd":5.146986265266861,"status":"valid"}When something does not work
Correct the source or settings and run again. After cancellation or timeout the same original is retained for a fresh task.
Frequently asked questions
Do these models certify current standard compliance?
No. ISO7730-2005 and ASHRAE55-2020 identify the fixed older calculations from jsthermalcomfort 1.4.0. Applicability checks remain enabled; a valid result is not a compliance certificate or an individual health or comfort guarantee.
Why can zero cooling mean either success or failure?
For ASHRAE relative speed ≤0.1 m/s, CE is not required and zero is legitimate. A warned solver fallback to zero is cooling-failed with null PMV/PPD. ISO does not use the ASHRAE cooling route; read the model and cooling state together.
Which example has actually been checked?
The complete iso-normal JSON output and both rows of the CSV sample have been checked, including every exported file. In the CSV, ordinary gives PMV 0.08425176342008413 and PPD 5.146986265266861; the RH 150 row is not-applicable and retains null PMV/PPD. Neither example is the unavailable private measurement table from the source discussion.
Does a complete report mean every row is valid?
No. Completeness retains every original row, including repeated IDs, auxiliary cells and failures. Inspect the full row states and warnings; invalid or non-applicable rows keep null PMV/PPD. Save all six files before using a filtered downstream analysis.