Grasshopper Docs

Community documentation for Grasshopper add-ons & plugins

0 | Ladybug
1 | AnalyzeWeatherData
2 | VisualizeWeatherData
3 | EnvironmentalAnalysis
4 | Renewables
5 | Extra
6 | Developers
7 | WIP

Use this component to draw a psychrometric chart in the Rhino scene and evaluate a set of temperatures and humidity ratios in terms of indoor comfort. Connected data can include either outdoor temperature and humidty ratios from imported EPW weather data, indoor temperature and humidity ratios from an energy simulation, or indivdual numerical inputs of temperature and humidity. The input data will be plotted alongside polygons on the chart representing comfort as well as polygons representing the efects of passive building strategies on comfort.
The specific human energy balance model used by the psychrometric chart is the Predicted Mean Vote (PMV) model developed by P.O. Fanger. PMV is a seven-point scale from cold (-3) to hot (+3) that is used in comfort surveys. Each interger value of the scale indicates the following: -3:Cold, -2:Cool, -1:Slightly Cool, 0:Neutral, +1:Slightly Warm, +2:Warm, +3:Hot. The range of comfort is generally accepted as a PMV between -1 and +1 and this is what defines the range of the comfort polygon on the psychrometric chart.
Accordingly, this component will also output the PMV of the occupant for the input conditions as well as an estimated percentage of people dissatisfied (PPD) in the given conditions.
The comfort models that make this component possible were translated to python from a series of validated javascript comfort models developed at the Berkely Center for the Built Environment (CBE).
Specific documentation on the comfort models can be found here:
Special thanks goes to the authors of the online CBE Thermal Comfort Tool who first made the javascript models in order to power the tool:
Hoyt Tyler, Schiavon Stefano, Piccioli Alberto, Moon Dustin, and Steinfeld Kyle, 2013, CBE Thermal Comfort Tool.
Center for the Built Environment, University of California Berkeley,
The information for the polygons representing passive strategies comes from the climate consultant psychrometric chart. Further information on how these polygons are calculated can be found here:


Dry Bulb Temperature_dryBulbTemperatureA number representing the dry bulb temperature of the air in degrees Celcius. This input can also accept a list of temperatures representing conditions at different times or the direct output of dryBulbTemperature from the Import EPW component. Indoor temperatures from Honeybee energy simulations are also possible inputs. Finally, this component can also acccept temperatures in Farenheit in order to draw a chart with IP units but, in order for this component to sense that the values are Farenheit, there must be at least one 'F' or '°F' in the stream of connected data.Goo
Relative Humidity_relativeHumidityA number between 0 and 100 representing the relative humidity of the air in percentage. This input can also accept a list of relative humidity values representing conditions at different times or the direct output of relativeHumidity from of the Import EPW component.Goo
Barometric PressurebarometricPressure_A number representing the barometric pressure in Pascals. If no value is connected here, the default pressure will be 101325 Pa, which is air pressure at sea level. It is recommended that you connect the barometric pressure from the Import epw component here as the air pressure at sea level can cause some misleading results for cities at higher elevations.Goo
Mean Rad TemperaturemeanRadTemperature_A number representing the mean radiant temperature of the surrounding surfaces. This value should be in degrees Celcius unless you have connected values in Farenheit to the dryBulbTemperature and you are seeing a chart in IP units. If no value is plugged in here, this component will assume that the mean radiant temperature is the same as the connected dry bulb temperature (and the X-Axis of the Psychrometric Chart is for Operative Temperature instead of Dry Bulb Temperature). This input can also accept a list of temperatures and this will produce several comfort polygons (one for each mean radiant temperature).Goo
Wind SpeedwindSpeed_A number representing the wind speed of the air in meters per second. If no value is plugged in here, this component will assume a very low wind speed of 0.05 m/s, characteristic of most indoor conditions. This input can also accept a list of wind speeds representing conditions and this will produce several comfort polygons (one for each wind speed).Goo
Metabolic RatemetabolicRate_A number representing the metabolic rate of the human subject in met. This input can also accept text inputs for different activities. Acceptable text inputs include Sleeping, Reclining, Sitting, Typing, Standing, Driving, Cooking, House Cleaning, Walking, Walking 2mph, Walking 3mph, Walking 4mph, Running 9mph, Lifting 10lbs, Lifting 100lbs, Shoveling, Dancing, and Basketball. If no value is input here, the component will assume a metabolic rate of 1 met, which is the metabolic rate of a seated human being. This input can also accept lists of metabolic rates and will produce multiple comfort polygons accordingly.Goo
Clothing LevelclothingLevel_A number representing the clothing level of the human subject in clo. If no value is input here, the component will assume a clothing level of 1 clo, which is roughly the insulation provided by a 3-piece suit. A person dressed in shorts and a T-shirt has a clothing level of roughly 0.5 clo and a person in a thick winter jacket can have a clothing level as high as 2 to 4 clo. This input can also accept lists of clothing levels and will produce multiple comfort polygons accordingly.Goo
--------------------------------------------------Script variable PythonGoo
Merge Comf PolygonsmergeComfPolygons_Set to "True" if you have connected multiple values for any of the four comfort variables in the section above and you wish to merge all of the computed comfort polygons into one.Goo
Comfort ParcomfortPar_Optional comfort parameters from the "Ladybug_PMV Comfort Parameters" component. Use this to adjust maximum and minimum acceptable humidity ratios. These comfortPar can also change whether comfort is defined by eighty or ninety percent of people comfortable.Goo
Passive StrategypassiveStrategy_An optional text input of passive strategies to be laid over the psychrometric chart as polygons. It is recommended that you use the "Ladybug_Passive Strategy List" to select which polygons you would like to display. Otherwise, acceptable text inputs include "Evaporative Cooling", "Thermal Mass + Night Vent", "Occupant Use of Fans", "Internal Heat Gain", and "Dessicant Dehumidification".Goo
Strategy ParstrategyPar_Optional passive strategy parameters from the "Ladybug_Passive Strategy Parameters" component. Use this to adjust the maximum comfortable wind speed, the building balance temperature, and the temperature limits for thermal mass and night flushing.Goo
Mollier HXmollierHX_Set to "True" to visualize the psychrometric chart as a mollier-hx diagram. This is essentially a psychrometric chart where the axes have been switched, which is popular in Europe.Goo
Enthalpy Or Wet BulbenthalpyOrWetBulb_Set to "True" to have the psychrometric chart plot lines of constant enthalpy and set to "False" to have the chart plot linest of constant wet bulb temperature. The default is set to "True" for enthalpy.Goo
Analysis PeriodanalysisPeriod_An optional analysis period from the Ladybug_Analysis Period component. If no Analysis period is given and epw data from the ImportEPW component has been connected, the analysis will be run for the enitre year.Goo
Annual Hourly DataannualHourlyData_An optional list of hourly data from the Import epw component, which will be used to create hourPointColors that correspond to the hours of the data (e.g. windSpeed). You can connect up several different annualHourly data here.Goo
Conditional StatementconditionalStatement_This input allows users to remove data that does not fit specific conditions or criteria from the psychrometric chart. The conditional statement input here should be a valid condition statement in Python, such as "a>25" or "b<80" (without quotation marks). The current version of this component accepts "and" and "or" operators. To visualize the hourly data, only lowercase English letters should be used as variables, and each letter alphabetically corresponds to each of the lists (in their respective order): "a" always represents dryBulbtemperature, "b" always represents the relativeHumidity, "c" always represents the 1st list plugged into annualHourlyData_, "d" represents the 2nd list, etc. For example, if you want to plot the data for the time period when temperature is between 18C and 23C, and humidity is less than 80%, the conditional statement should be written as “18Goo
Base PointbasePoint_An optional base point that will be used to place the Psychrometric Chart in the Rhino scene. If no base point is provided, the base point will be the Rhino model origin.Goo
Scalescale_An optional number to change the scale of the spychrometric chart in the Rhino scene. By default, this value is set to 1.Goo
Legend ParlegendPar_Optional legend parameters from the Ladybug Legend Parameters component.Goo
Bake ItbakeIt_An integer that tells the component if/how to bake the bojects in the Rhino scene. The default is set to 0. Choose from the following options: 0 (or False) - No geometry will be baked into the Rhino scene (this is the default). 1 (or True) - The geometry will be baked into the Rhino scene as a colored hatch and Rhino text objects, which facilitates easy export to PDF or vector-editing programs. 2 - The geometry will be baked into the Rhino scene as colored meshes, which is useful for recording the results of paramteric runs as light Rhino geometry.Goo
Run It_runItSet to "True" to run the component and generate a psychrometric chart! Returns:Goo


Total Comfort PercenttotalComfortPercentThe percent of the input data that are inside all comfort and passive strategy polygons.Goo
Total Comfort Or NottotalComfortOrNotA list of 0's and 1's indicating, for each hour of the input data, if the hour is inside a comfort or strategy polygon (1) or not(0).Goo
Strategy NamesstrategyNamesA list of names for the comfort polygons and strategeis that corresponds to the numbers in the following outputs.Goo
Strategy Percent Of TimestrategyPercentOfTimeThe percent of the input data that are in each of the comfort or passive strategy polygons. Each number here corresponds to the names in the "strategyNames" output above.Goo
Strategy Or NotstrategyOrNotA list of 0's and 1's indicating, for each hour of the input temperature and humidity ratio, if the hour is inside a given comfort or passive strategy polygon (1) or not(0). If there are multiple comfort polyogns or passive strategies connected to the passiveStrategy_ input, this output will be a grafted list for each polygon. Each list here corresponds to the names in the "strategyNames" output above.Goo
Chart Curves And TxtchartCurvesAndTxtThe chart curves and text labels of the psychrometric chart.Goo
Psych Chart MeshpsychChartMeshA colored mesh showing the number of input hours happen in each part of the psychrometric chart.Goo
LegendlegendA colored legend showing the number of hours that correspond to each color.Goo
Legend Base PtlegendBasePtThe legend base point, which can be used to move the legend in relation to the chart with the grasshopper "move" component.Goo
Comfort PolygonscomfortPolygonsA brep representing the range of comfort for the input radiant temperature, wind speed, metabolic rate and clothing level. IF multiple values have been hooked up for any of these inputs, multiple polygons will be output here.Goo
Strategy PolygonsstrategyPolygonsA brep representing the area of the chart made comfortable by the passive strategies. If multiple strategies have been hooked up to the passiveStrategy_ input, multiple polygons will be output here.Goo
--------------------------------------------------Script variable PsychChartGoo
Chart Hour PointschartHourPointsPoints representing each of the hours of input temperature and humidity ratio. By default, this ouput is hidden and, to see it, you should connect it to a Grasshopper preview component.Goo
Hour Point ColorshourPointColorsColors that correspond to the chartHourPoints above and can be hooked up to the "Swatch" input of a Grasshopper Preview component that has the hour points above connected as geometry. By default, points are colored red if they lie inside comfort or strategy polygons and are colored blue if they do not meet such comfort criteria. In the event that you have hooked up annualHourlyData_ this output will be a grafted list of colors. The first list corresponds to the comfort conditions while the second list colors points based on the annualHourlyData.Goo
Hour Point LegendhourPointLegendA legend that corresponds to the hour point colors above. In the event that annualHourlyData_ is connected, this output will be a grafted list of legends that each correspond to the grafted lists of colors.Goo

Video Tutorials

Site design © Robin Rodricks.   Co-created by Andrew Heumann.   Ladybug and associated data © 2023 Ladybug Tools.  
Rhinoceros and Grasshopper are registered trademarks of Robert McNeel & Associates.  Hosted by GitHub

Report an Issue  |  Terms of Service