Calculate a complete thermal comfort measurement series
Map measurement columns, choose SI or IP, and audit every row before saving the complete thermal comfort package.
Prepare a table you can trace back to the original
Choose one original UTF-8 CSV file with a header, paste the complete CSV, or use the JSON table schema below. Keep auxiliary columns, repeated IDs and invalid measurements in the input. A row ordinal distinguishes repeated IDs; the report retains original tokens and their UTF-16/UTF-8 locations.
Bind roles by one-based column positions, not by matching header text. Numeric roles must use distinct positions. Leave external work unbound only when it should be zero; an explicitly bound empty, null or missing work cell is invalid. JSON cells may be strings, finite numbers, booleans or null, but a mapped numerical measurement still has to be a valid number.
| Measurement | SI input | IP input | Audit point |
|---|---|---|---|
| Indoor and mean radiant temperatures | °C | °F | Use the same selected unit system for both temperatures. |
| Already-relative air speed | m/s | ft/s | Do not apply a second relative-speed adjustment. |
| Relative humidity | Percent, 0–100 | Percent, 0–100 | 150 is invalid, not 150 times a humidity fraction. |
| Metabolic rate, clothing and external work | met, clo and met | met, clo and met | Unbound work means zero; a bound blank does not. |
Choose a fixed model and follow the unit chain
The model choices are ISO7730-2005 (ISO 7730:2005) and ASHRAE55-2020 (ASHRAE 55:2020) from jsthermalcomfort 1.4.0. These are fixed older calculations with applicability checks enabled, not a certificate of compliance with a current standard.
PMV is predicted mean vote, a model of thermal sensation; PPD is predicted percentage dissatisfied, a group estimate rather than an observed survey result. CE is cooling effect in °C. The ASHRAE path evaluates CE only when the SI relative speed is above 0.1 m/s. It converts IP inputs to SI before CE. A low-speed zero is different from a warned solver fallback to zero.
Dynamic clothing is an explicit choice and is off by default. The original model thresholds and clothing rounding remain. PMV/PPD are not rounded by the output setting; the original CE and clothing calculation rounding is retained. Compare the report’s input, effectiveSI and modelInputsSI values to see conversions and later model adjustments.
- Record the model, unit system, clothing setting and air-speed-control setting with the original table.
- Check applicability as well as finite numbers: the ISO path includes the explicit met ≥0.8 rule.
- Use the current parameter and limit reference below for the full binding and applicability rules.
Use the checked JSON fixture separately from the CSV starter
The complete result and independent readback of the single iso-normal JSON row below have been checked: PMV 0.08425176342008413 and PPD 5.146986265266861. It is an independent fixture, not the private measurements discussed in the source issue.
For this JSON fixture choose JSON table, SI and ISO7730-2005; bind the eight positions in order, including work at position 8. The CSV sample contains two rows. Its complete input and six exported files have been checked: ordinary gives PMV 0.08425176342008413 and PPD 5.146986265266861, while RH 150 remains not-applicable with null PMV/PPD.
{"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]]}Read the entire result before selecting usable rows
A complete report means every source row has been retained. It does not mean that every row has a valid comfort result. Keep ordinals, repeated IDs, auxiliary values, statuses and warnings together when reviewing the table.
Malformed UTF-8, malformed JSON, duplicate JSON object keys or an unclosed CSV field are whole-input failures. A recognizable row with a missing or invalid measurement remains in a successful complete report as an invalid row. The source representation, rather than a filtered list of successful numbers, is the audit record.
| Outcome | PMV / PPD | Review action |
|---|---|---|
| valid | Finite model results | Check units, applicability and settings before interpretation. |
| invalid-input | null / null | Correct the source cell or binding; keep the failed row visible. |
| not-applicable | null / null | Retain the row and the fixed model’s applicability reason. |
| cooling-failed / non-finite / non-convergent / engine-error | null / null | Retain the original warning and failure; do not recast zero as a valid cooling result. |
- Compare the reported source-row count with your complete input, including failed rows.
- Inspect the full value of shortened cells and the complete report, rather than relying on the paginated table alone.
- Check valid and failed counts separately before exporting a filtered analysis downstream.
Save a package another reviewer can reproduce
Save all six downloads together. The table preview is paginated; it is not a smaller substitute for the downloads or the complete readable/copied report. Numeric negative zero stays in runtime values and CSV; the JSON report also supplies the complete numericNegativeZeroPaths list.
After changing the source or settings, obtain a new result before using the downloads. If a run is cancelled, times out or fails, keep the same original and settings for a fresh task. A partial output is not a completed result.
| File | What to retain |
|---|---|
| thermal-comfort.csv | Every measurement row, outcome and complete exported field. |
| thermal-report.json | The full source table, tokens, settings, row results and warnings. |
| thermal-comfort.svg | Every-row visualization, including invalid states. |
| thermal-source.csv or thermal-source.json | The unchanged original bytes, with the fixed download name. |
| settings.json | The provided and effective parameters used for the run. |
| NOTICE.txt | The complete source, model and license notice. |
Plan for all of the original resource limits
These are joint ceilings, not a promise that all maxima can be reached at once. Headers, auxiliary values, ragged records and invalid cells count. Owned-memory accounting covers simultaneously retained source, worker, serialization, validation and result representations.
Complete report text and copied text each have a 128 MiB ceiling; compact typed JSON has 256 MiB, the files/text/copy/typed aggregate 640 MiB, and complete binary plus escaped metadata transport 2 GiB. These representation limits do not increase the shared 512 MiB owned-allocation ceiling.
The 300-second deadline begins at capture and ends at first result publication; it includes reading, import, calculation, complete validation and cleanup. Maximum joint capacity and actual browser/Native Worker acceptance remain pending. The fixed models do not provide certification or establish any person’s health or comfort.
| Resource | Limit |
|---|---|
| Original input | 32 MiB |
| Measurement rows | 100,000 |
| All source cells | 2,000,000 |
| ASHRAE cooling rows | 10,000 |
| Actual loop/call work charges | 1,000,000,000 |
| All six physical downloads combined | 128 MiB |
| Joint owned allocations | 512 MiB |
| Capture to first publication | 300 seconds |
References
- grjonathan: complete pandas.itertuples PMV/PPD workflow
Complete archived issue, both comments and all five timeline events reviewed. Private measurements unavailable.
- jsthermalcomfort 1.4.0 (MIT)
Fixed eight-leaf ESM closure; original arithmetic preserved with metering and failure guards.
Tools in this category
Expand a tool to see its steps, options and supported formats, then open its workspace.
Thermal comfort seriesCalculate a complete PMV/PPD measurement series with explicit row states and six reproducible downloads.
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.
Steps
- 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.
Available options
- Source format
- CSV · JSON
- Unit system
- SI (°C, m/s) · IP (°F, ft/s)
- Fixed older model
- ISO 7730:2005 · ASHRAE 55:2020
- Apply dynamic clothing explicitly
- Off by default
- Occupants control air speed
- On by default
- Row ID
- 1
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- Indoor temperature
- 2
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- Mean radiant temperature
- 3
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- Already-relative wind speed
- 4
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- Relative humidity (%)
- 5
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- Metabolic rate (met)
- 6
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- Clothing insulation (clo)
- 7
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
- External work (met)
- null
Use one-based column positions. All numeric roles must differ. Leave external work blank only to declare zero; an explicitly bound missing cell remains invalid.
Capabilities 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.