Big Picture
What is bim2sim about?
bim2sim
is a Python tool that allows to use BIM models (in the form of
IFC files) as source to generate simulation models in a semi-automated process.
The existing version supports the following domains, where the focus of the
development was on the first two:
Heating, Ventilation Air-conditioning (HVAC)
Building Performance Simulation (BPS)
Computational Fluid Dynamics (CFD)
The biggest challenge for this process is the mixed quality of IFC files. IFC as standard theoretically offers the options to hold most of the information needed for a simulation model generation. Nonetheless, even most current IFC files are lacking detailed information about e.g. wall constructions or the relevant characteristics of HVAC equipment.
This makes the process of a semi-automated
generation of simulation models quite complex. With bim2sim
we provide a tool
that offers a lot of functionalities to simplify and unify this process.
How does bim2sim work?
The general structure of bim2sim is shown below:
flowchart TB subgraph PL["`**Plugin**`"] default_tasks sim_settings end PL-.->|input| PJ(Project) subgraph IP["`**Configuration**`"] X[ifc_paths] Y[project directory] style X text-align:left end IP -.->|input| PJ subgraph PJ["`**Project**`"] rd("run_default(): \n   for task in plugin.default_tasks:\n     playground.run_task()") style rd text-align:left end subgraph PG["`**Playground**`"] C["run_task ()"] S[(state)] end rd --> C C -->|run| D{{Task 1}} D <-.-> |data exchange| S C -->|run| E{{Task 2}} E <-.-> |data exchange| S C -->|run| F{{Task n}} F <-.-> |data exchange| S D-->E-->F S --> |load data|R F --> R(Task Export) User <---> |decisions| rd
Let’s define what each of these elements is and how they work together in short wrap up. For more detailed information please have a look at the detailed linked documentation of the components.
Project:
A project is the main object in bim2sim
. It takes the selected
Plugin and further configuration as
input and then performs the tasks
configured in the Plugin through the
Playground.
Plugin:
Plugin are simulation use case and
sometimes even simulation tool specific. E.g. one plugin we provide is the
PluginTEASER
that creates simulation models for building energy performance
simulation through the tool TEASER and the modeling language Modelica. A plugin
takes two information: the default_tasks
which is a list that describes what
tasks should be performed and the
tasks which allow detailed
configuration of the model creation that have default values but can be
defined for every project.
Configuration
Next to the Plugin the Project needs the object ifc_paths
which is a
dictionary where the key is a
domain and the value is the path to
the IFC file. This allows to assign multiple IFCs to a project, e.g. one for
HVAC domain and one for architecture domain. Additionally, a project directory
needs to assigned. This can either be an empty path where a project should be
created or an existing project directory.
Playground:
The Playground itself deals as a manager which coordinates the
different tasks. * A task is used to
fulfill one specific part of the whole process. One task is for example the
loading process of the IFC into the bim2sim tool. The results of each task will
be stored in the state
of the
Playground. Every task might have
requirements (reads
) and outputs (touches
). The Playground checks for every
task if the requirements are met and then performs the task. Some tasks, like
model creation tasks might also export information in form of files. Those will
be stored in the export folder of the project directory.
User: To overcome the already mentioned challenges regarding the mixed quality of IFC-files the process might need feedback and additional information from the user. This feedback is given through Decisions.
You find detailed information about each of the concepts in the corresponding documentation.
#TODO this is copied to advanced-user-guide/simulation-types, strip it down here
Simulation Types
Building Performance Simulation (BPS)
BPS dynamically computes a building’s heating and cooling loads for a chosen period. The simulation results are a base for the design of heating and cooling systems. Even advanced renewable energy systems that require demand management can be sized efficiently. A building’s internal and external thermal loads vary throughout the day. The internal temperature changes are caused by the heat exchange with the surroundings and the building’s thermal mass.
To set up a BPS, one must balance the results’ robustness and the workload. The selected level of detail of the simulation must fit the problem.
Reasons to perform a BPS
It is the current state of the art that a high manual modeling effort is required to create a dynamic simulation model of a building. Therefore, thermal simulation is often performed, if at all, only for a specific time in a later planning phase, when only a few changes to the cubature are expected. Alternatively, static calculation methods are used, which cannot represent the dynamic loads in the building in detail.
The bim2sim
tool aims to automate the IFC-based creation of thermal simulation
models to make BPS accessible for all IFC-based design processes, as the
designers can significantly influence the building’s geometry in the early
design phases.
By linking the building simulation to the IFC model, cubature variants can be
simulated and evaluated without modeling effort.
The IFC-based setup of the building geometry lowers the barrier for the detailed
dynamic thermal analysis.
The considerable CO2 savings potential is to be expected through optimal
building orientation and optimization of thermal loads in an early planning
phase.
Requirements for BPS in bim2sim
The BPS part in bim2sim
requires a sufficient representation of the building.
This includes a description of:
building geometry
materials (the building’s thermal mass)
HVAC systems (only covered with ideal loads for now. Coupled simulations are in scope of future releases)
internal loads (occupancy, equipment, lighting, schedules)
external loads (weather)
building’s location and surroundings (shadings)
This information is extracted from the IFC file. Missing data can be added by using e.g. a template-based enrichment.
IFC Requirements
The BPS Plugins (PluginEnergyPlus and PluginTEASER) should only be applied, if minimum IFC requirements are fulfilled:
IFC-Version: IFC4
Validity: The IFC file must be valid (fulfill all rules of its schema)
Space Boundaries: IfcRelSpaceBoundary elements should be included of type 2ndLevel (either IfcRelSpaceBoundary2ndLevel (optimum) or IfcRelSpaceBoundary with Description 2ndLevel)
Quality of Space Boundaries: The provided space boundary data must be valid in terms of syntax, geometry and consistency (cf. Richter et al.: ‘Validation of IFC-based Geometric Input for Building Energy Performance Simulation’, 2022 Building Performance Analysis Conference and SimBuild co-organized by ASHRAE and IBPSA-USA, https://doi.org/10.26868/25746308.2022.C033)
Other IFC requirements (optional, improve model accuracy):
Material definitions
Shading Space Boundaries (only applicable for PluginEnergyPlus)
Heating Ventilation and Air Conditioning (HVAC) Simulation
HVAC simulations are used to simulate the behaviour of different system
components in the energy system. For now bim2sim
focuses on the heating and
cooling generation, while ventilation and air conditioning is planned for the
future (see issue 245 # TODO github deploy).
The corresponding simulation models for heating and cooling analysis typically include:
hydraulic network including pipes, valves and pumps
generation devices for heating and cooling
consumers
control logic
Hydraulic Network
Since it is not convenient to model every pipe, pipe fitting and all components
of the hydraulic network, one part of the creation of simulation models for
heating and cooling analysis is the abstraction of the hydraulic network.
The abstraction can be quite time-consuming and error-prone, so one of the
strengths of bim2sim
is offering automated tasks for analysis and aggregation
of the network. To do so we convert the imported meta structure
elements and their connections into a HvacGraph using
networkx python package.
The possible aggregations start with quite simply aggregations like
PipeStrand to aggregate multiple straight connected pipes, but
also include more complex aggregations like Underfloorheating
which tries to identify underfloor-heating or concrete core activation as there is
no possibility in IFC to represent these directly. You can find an overview to
all aggregations in it the corresponding documentation.
Generation devices and consumers are also simplified in aggregations which
brings us to the next group.
Generation Devices & Consumers
Generation devices are e.g. boilers or chillers and consumers might be radiators or the already mentioned underfloor-heating.
Control Logic
Even if IFC offers the possibility to include controls, it is not very practical and rarely used. But for a running simulation the control logic is indispensable. So we came up with a mix of two solutions:
For elements where common standard control logics exist we include these logics as default into the mapped Modelica models.
We try to gather the relevant parameters for the control from the IFC via the attribute system. One example would be the flow set temperature of a boiler. If there is no information in IFC we can either request them during export or mark them as non-existing in the exported model, so the user can input them in Modelica.For custom controls and complex controls which highly depend on the system and the usage we offer the possibility to deactivate the internal controls inside the modelica models and allow the user to model their own controls.
What are Plugins?
To make bim2sim
usable for different simulation domains and tools we use
Plugins that are built upon the functionality that bim2sim
offers. These
plugins put together one or multiple Tasks and a use a
set of simulation settings to create a simulation model
based on an IFC.
Not all plugins are at the same level of development. Following, we give an
overview about the current development process and what works and what notin the
following table.
Plugin |
Domain |
Model Generation |
Comment |
Export |
Comment |
Simulation |
Comment |
---|---|---|---|---|---|---|---|
AixLib |
HVAC |
Working |
improvements aggregations needed |
Working |
Not working |
Modelica models not published yet |
|
EnergyPlus |
BPS |
Working |
Working |
||||
TEASER |
BPS |
Working |
Working |
||||
LCA |
LCA |
- |
no model |
Working |
improvements IfcWindows needed |
- |
no simulation |
CFD |
CFD |
- |
no model |
Working |
documentation missing |
- |
no simulation |
Compatibility
For the Plugins that export a simulation model, following the listed compatible versions and branches are listed, which our Plugins are compatible with at the moment.
Plugin |
Repository |
version/branch |
---|---|---|
TEASER |
AixLib |
|
TEASER |
|
|
EnergyPlus |
EnergyPlus |
|