Inputs and outputs (reference)
Simulation inputs and outputs#
This page is the reference for the input files that GloBI reads and the output files that it writes. For a guided run with working example files, see the sample-buildings tutorial.
Input files overview#
The files that you need depend on the type of run. The tutorial versions of all files are in examples/tutorial/ and tests/data/e2e/.
| File | Single building | Batch run | Contents |
|---|---|---|---|
building.yml |
required | -- | One building and its semantic field values |
manifest.yml |
-- | required | The experiment and its configs |
artifacts.yml |
-- | required | Paths to the GIS file, model files and weather file |
semantic-fields.yml |
required | required | Semantic fields and the names of GIS columns |
component-map.yml |
required | required | Rules that select components from semantic fields |
components-lib.db |
required | required | The component library (SQLite) |
| GIS file | -- | required | Building footprints and their attributes |
gis-preprocessor.yml |
-- | optional | Geometry checks and default values |
hourly-data-config.yml |
-- | optional | Hourly output variables |
overheating-config.yml |
-- | optional | Overheating thresholds |
| Weather file | required | required | A .zip with the .epw and .ddy files |
Input file details#
building.yml -- single building specification#
globi simulate reads this file. For all fields, defaults and an example, see Simulate a single building.
manifest.yml -- experiment specification#
globi submit manifest reads this file. For the keys, see Batch runs: prepare your inputs.
Each config key (file_config, gis_preprocessor_config, hourly_data_config, overheating_config) accepts a file path or inline YAML. To turn off an optional config, set it to null or leave it out.
Example (examples/tutorial/manifest-overheating.yml):
name: GloBI_Tutorial_Overheating
scenario: Baseline
hourly_data_config: tests/data/e2e/hourly-data-config.yml
file_config: examples/tutorial/artifacts.yml
gis_preprocessor_config: tests/data/e2e/gis-preprocessor.yml
overheating_config: tests/data/e2e/overheating-config.yml
artifacts.yml -- file references#
The file_config key of the manifest points to this file. For the keys, see Batch runs: prepare your inputs.
If epwzip_file is null and the GIS file has no weather column, GloBI uses the closest TMYx weather file to each building.
Example (examples/tutorial/artifacts.yml):
gis_file: examples/tutorial/buildings-100.geojson
db_file: tests/data/e2e/components-lib.db
semantic_fields_file: tests/data/e2e/semantic-fields.yml
epwzip_file: examples/tutorial/USA_MA_Boston-Logan.Intl.AP.725090_TMYx.2009-2023.zip
component_map_file: tests/data/e2e/component-map.yml
semantic-fields.yml -- semantic field definitions#
This file defines the semantic fields and names the GIS columns that hold building attributes.
| Key | Type | Required | Contents |
|---|---|---|---|
Name |
str | yes | Model name |
Fields |
list | yes | The semantic fields |
Fields[].Name |
str | yes | Field name. It must match the GIS column and semantic_field_context keys |
Fields[].Options |
list | yes | Allowed values of a categorical field |
Fields[].Min, Fields[].Max |
number | yes | Allowed range of a numeric field (instead of Options) |
Building_ID_col |
str | yes | GIS column with the building ID |
Height_col |
str | one of | GIS column with the building height [m] |
Num_Floors_col |
str | these two | GIS column with the number of floors |
WWR_col |
str | no | GIS column with the window-to-wall ratio |
Basement_col, Attic_col |
str | no | GIS columns with the basement and attic types |
Exposed_Basement_Frac_col |
str | no | GIS column with the exposed basement fraction |
Weather_File_col |
str | no | GIS column with a weather file for each building |
GFA_col |
str | no | Accepted, but GloBI does not use it |
Example (tests/data/e2e/semantic-fields.yml):
Name: Test Region Model
Fields:
- Name: Region
Options:
- TestRegion
- Name: Typology
Options:
- Office
- School
- Residential
- Hospital
- Hotel
- Name: Age_bracket
Options:
- Pre_1980
- 1980_to_2000
- Post_2000
- Name: Income
Options:
- Low
- High
- Name: Scenario
Options:
- Baseline
- Retrofit
Height_col: height
Num_Floors_col: num_storeys
Building_ID_col: id
Each building gets one value for each field: from the GIS file in a batch run, or from semantic_field_context in a single-building run. The component map uses these values to select components.
component-map.yml -- component selection rules#
The component map assigns a selector to each component. The source_fields of a selector list the semantic fields that build the component name.
The file has two top-level sections:
- Envelope: constructions, windows and infiltration.
- Operations: space use, HVAC and domestic hot water (DHW).
Example (tests/data/e2e/component-map.yml):
Envelope:
selector:
source_fields:
- Region
- Typology
- Scenario
- Age_bracket
Operations:
SpaceUse:
selector:
source_fields:
- Region
- Typology
- Income
- Scenario
HVAC:
selector:
source_fields:
- Region
- Typology
- Scenario
- Age_bracket
DHW:
selector:
source_fields:
- Region
- Typology
GloBI joins the field values with _ to make the component name. For example, a residential, post-2000 building in the Baseline scenario gets the Envelope record TestRegion_Residential_Baseline_Post_2000. The record must exist in the component library.
For a more detailed model, give each sub-component its own selector. In the example below, Envelope has separate selectors for Infiltration, Window and Assemblies. The suffix key adds _<suffix> to the end of the name, for example ..._Main.
Envelope:
Infiltration:
selector:
source_fields:
- Region
- TypologySpaceUse
- Weatherization
suffix: Main
Window:
selector:
source_fields:
- Region
Assemblies:
selector:
source_fields:
- Region
- TypologySpaceUse
- Age_bracket
Operations:
SpaceUse:
Occupancy:
selector:
source_fields:
- Region
- TypologySpaceUse
Lighting:
selector:
source_fields:
- Region
- TypologySpaceUse
- Lighting
Equipment:
selector:
source_fields:
- Region
- TypologySpaceUse
Thermostat:
selector:
source_fields:
- Region
- TypologySpaceUse
- Thermostat
WaterUse:
selector:
source_fields:
- Region
- TypologySpaceUse
HVAC:
ConditioningSystems:
Heating:
selector:
source_fields:
- Region
- Heating
Cooling:
selector:
source_fields:
- Region
- Cooling
Ventilation:
selector:
source_fields:
- Region
- TypologyVentilation
- Weatherization
DHW:
selector:
source_fields:
- Region
- DHW
To edit the component map in a browser, see Tutorial: edit the model in sbem-ui.
components-lib.db -- component library#
The component library is a SQLite database with the component records: materials, constructions, windows, HVAC systems, schedules and more. Single-building runs and batch runs use the same file.
The database has one table for each component type:
- Envelope:
ConstructionMaterial,ConstructionAssembly,ConstructionAssemblyLayer,GlazingConstructionSimple,Infiltration,Envelope,EnvelopeAssembly - Operations:
Occupancy,Lighting,Equipment,Thermostat,WaterUse,SpaceUse,ThermalSystem,ConditioningSystems,HVAC,Ventilation,DHW,Operations - Schedules:
Day,Week,Year - Zone:
Zone
The component map selects top-level records by name, for example TestRegion_Office_Baseline_Post_2000. To edit records in a browser, see Tutorial: edit the model in sbem-ui.
GIS file -- building footprints#
The GIS file holds one row for each building: a footprint polygon and its attributes. GloBI reads any format that GeoPandas reads, for example GeoJSON, GeoParquet or Shapefile. For the required columns, see What a GIS file needs.
Note
tests/data/e2e/buildings.parquet is a GeoJSON file, despite its name.
In a batch run, --scenario sets the Scenario column of all buildings. The value must be one of the options of the Scenario field.
gis-preprocessor.yml -- geometry checks and defaults#
This file controls how GloBI checks and prepares the GIS file. All keys are optional.
| Key | Type | Default | Contents |
|---|---|---|---|
cart_crs |
str | EPSG:3857 |
Cartesian CRS for geometry operations |
min_building_area |
float | 10.0 | Minimum footprint area [m²] |
min_edge_length |
float | 3.0 | Minimum edge length [m] |
max_edge_length |
float | 1000.0 | Maximum edge length [m] |
neighbor_threshold |
float | 100.0 | Distance to search for neighbor buildings [m] |
f2f_height |
float | 3.0 | Floor-to-floor height [m] |
min_building_height |
float | 3.0 | Minimum building height [m] |
max_building_height |
float | 300.0 | Maximum building height [m] |
min_num_floors |
int | 1 | Minimum number of floors |
max_num_floors |
int | 125 | Maximum number of floors |
default_wwr |
float | 0.2 | Window-to-wall ratio if the GIS file has none |
default_num_floors |
int | 2 | Number of floors if the GIS file has none |
default_basement |
str | none |
Basement type if the GIS file has none |
default_attic |
str | none |
Attic type if the GIS file has none |
default_exposed_basement_frac |
float | 0.25 | Exposed basement fraction if the GIS file has none |
epw_query |
str or null | "source in ['tmyx']" |
Filter for the closest weather file lookup |
GloBI ignores other keys. Set the weather file in artifacts.yml, not in this file.
Example (tests/data/e2e/gis-preprocessor.yml, shortened):
cart_crs: EPSG:3857
min_building_area: 10.0
neighbor_threshold: 100.0
f2f_height: 3.0
default_wwr: 0.2
default_num_floors: 2
epw_query: source in ['tmyx']
hourly-data-config.yml -- hourly output configuration#
This file selects the hourly EnergyPlus variables to report. To turn it on, set hourly_data_config in the manifest. Each variable becomes a separate result table.
| Key | Type | Contents |
|---|---|---|
data |
list[str] | Variables to report (see the list below) |
output_mode |
str | dataframes-and-filerefs, dataframes-only or fileref-only |
The available variables are:
Zone Mean Air TemperatureZone Air Relative HumidityZone Mean Radiant TemperatureSite Outdoor Air Drybulb Temperature
Example (tests/data/e2e/hourly-data-config.yml):
data:
- "Zone Mean Air Temperature"
- "Zone Air Relative Humidity"
output_mode: dataframes-and-filerefs
overheating-config.yml -- overheating analysis configuration#
This file sets the overheating thresholds. To turn it on, set overheating_config in the manifest. The run then produces the overheating tables. For their contents, see the overheating metrics reference.
| Key | Type | Contents |
|---|---|---|
heat_thresholds |
list | Temperatures [°C] for heat exceedance |
cold_thresholds |
list | Temperatures [°C] for cold exceedance |
heat_index_criteria |
dict | Hour limits for the heat index categories |
thermal_comfort |
dict | Thermal comfort assumptions (met, clo, v) |
Example (tests/data/e2e/overheating-config.yml):
heat_thresholds:
- threshold: 26.0
- threshold: 30.0
- threshold: 35.0
cold_thresholds:
- threshold: 10.0
- threshold: 5.0
heat_index_criteria:
extreme_danger_hours: null
danger_or_worse_hours: null
caution_or_worse_hours: null
thermal_comfort:
met: 1.1
clo: 0.5
v: 0.1
How inputs relate to each other#
Single building:
building.yml
├── db_file ──────────────► components-lib.db
├── semantic_fields_file ─► semantic-fields.yml
├── component_map_file ───► component-map.yml
└── epwzip_file ──────────► weather file (.zip, local path or URL)
Batch run:
manifest.yml
├── file_config ──────────────────► artifacts.yml
│ ├── gis_file ──────────────► GIS file
│ ├── db_file ───────────────► components-lib.db
│ ├── semantic_fields_file ──► semantic-fields.yml
│ ├── component_map_file ────► component-map.yml
│ └── epwzip_file ───────────► weather file
├── gis_preprocessor_config ──────► gis-preprocessor.yml
├── hourly_data_config (optional) ► hourly-data-config.yml
└── overheating_config (optional) ► overheating-config.yml
Warning
Write all file paths relative to the repository root, or as absolute paths. For runs with make cli (Docker), keep your files under inputs/: the container only sees inputs/, outputs/, examples/ and tests/data/e2e/.
Output files#
Single building output#
globi simulate writes these files to the output folder:
<output-dir>/
├── ep/
│ └── eplus_simulation/
│ ├── Minimal.idf # generated EnergyPlus model
│ └── {hash}/ # one EnergyPlus run
│ ├── Minimal.idf
│ ├── *.epw # weather file used
│ ├── eplusout.sql # all results (SQLite)
│ ├── eplusout.csv # output variables
│ ├── eplusmtr.csv # meter outputs
│ ├── eplustbl.csv # tabular summary report
│ ├── eplusout.err # warnings and errors
│ └── ... # other EnergyPlus files
└── results/
├── EnergyAndPeak.parquet # main results
├── EnergyAndPeak.csv # one row for each month
└── EnergyAndPeak.xlsx # one sheet for each measurement and aggregation
Batch run output#
globi get experiment downloads one result table for each call:
outputs/
└── {run_name}/
└── v{version}/
├── EnergyAndPeak.pq # always
├── EnergyAndPeak.xlsx # for EnergyAndPeak only
└── EnergyAndPeak.csv # only with --include-csv
To download another table, add --dataframe-key. Other tables are saved as .pq only. For the list of overheating and hourly tables, see section D of the tutorial.
EnergyAndPeak table format#
EnergyAndPeak is the main output. Its columns have four levels:
| Level | Name | Values |
|---|---|---|
| 0 | Measurement | Energy, Peak |
| 1 | Aggregation | Raw, End Uses, Utilities |
| 2 | Meter | End uses (Lighting, Equipment, Domestic Hot Water, Heating, Cooling) and fuels (Electricity, NaturalGas, ChilledWater, ...) |
| 3 | Month | 1 to 12 |
In a batch run, the row index has building_id and the building features, for example feature.semantic.Typology and feature.geometry.long_edge.
Units: energy in kWh/m², peak in kW/m².
CSV format: the CSV file has one row for each month. The header has four rows, one for each column level:
Measurement Energy Energy Energy ...
Aggregation Raw Raw Raw ...
Meter Lighting Equipment Domestic Hot Water ...
Month
1 1.588 1.860 1.397 ...
2 1.434 1.680 1.260 ...
Excel format: the workbook has one sheet for each measurement and aggregation:
Energy_Raw,Energy_EndUses,Energy_UtilitiesPeak_Raw,Peak_UtilitiesFeature Index: building IDs and semantic field values (batch runs only)
EnergyPlus raw outputs#
The ep/ folder has the EnergyPlus files of a single-building run. The most useful files are:
| File | Contents |
|---|---|
Minimal.idf |
The generated EnergyPlus model |
*.epw |
The weather file used |
eplusout.err |
Warnings and errors. Read it first if a run fails |
eplusout.sql |
All results in one SQLite database |
eplusout.csv |
Output variables (temperatures, humidity, energy in joules) |
eplusmtr.csv |
Meter outputs (energy by fuel type) |
eplustbl.csv, eplustbl.htm |
Tabular summary report (annual totals, end uses) |
epluszsz.csv |
Zone sizing data (design loads, mass flows) |
eplusout.eso |
EnergyPlus standard output (text) |
*.eio, *.rdd, *.mdd |
Variable dictionaries and metadata |
Quick reference#
Minimal single-building setup#
inputs/
├── building.yml
├── components-lib.db
├── semantic-fields.yml
├── component-map.yml
└── <weather>.zip
Minimal batch setup#
inputs/
├── manifest.yml
├── artifacts.yml
├── buildings.geojson # GIS file
├── components-lib.db
├── semantic-fields.yml
├── component-map.yml
├── <weather>.zip
└── gis-preprocessor.yml # optional
Batch run with hourly data and overheating#
Add these files to the minimal batch setup, and set their keys in the manifest: