📖 Full Documentation: 👉 ifctrano Docs
Generate Modelica building models directly from IFC files — with support for simulation, visualization, and multiple libraries.
ifctrano is yet another IFC to energy simulation tool designed to translate Industry Foundation Classes (IFC) models into energy simulation models in Modelica.
Unlike most translation approaches that rely on space boundaries (IfcRelSpaceBoundary) (e.g. see An automated IFC-based workflow for building energy performance simulation with Modelica), ifctrano operates solely on geometrical representation. This is crucial because space boundaries are rarely available in IFC models. Instead, ifctrano requires at least the definition of IfcSpace objects to build energy simulation models.
For now, each space is considered as a single thermal zone, and the necessary space boundaries are automatically generated.
✅ No reliance on IfcRelSpaceBoundary
✅ Works with geometric representation only
✅ Supports Modelica-based energy simulation
✅ Tested on multiple open-source IFC files
ifctrano has been tested using open-source IFC files from various repositories:
!!! warning ifctrano requires Python 3.11 or 3.12; simulating the models requires Docker.
ifctrano is a Python package that can be installed via pip.
pip install ifctranoRun the following commands to ensure everything is working:
ifctrano --help
ifctrano verifyTo enable model simulation using the official OpenModelica Docker image, install Docker Desktop:
👉 https://docs.docker.com/desktop/
Required for using the --simulate-model flag.
ifctrano leverages Graphviz to optimize component layout in generated Modelica models. It is optional, but recommended.
- Download and install from: https://graphviz.org/download/
- Add the Graphviz
binfolder to your systemPATH.
sudo apt update
sudo apt install graphvizifctrano create /path/to/your.ifcifctrano create /path/to/your.ifc IDEASifctrano create /path/to/your.ifc reduced_orderInstead of directly generating a Modelica model from an IFC file, this command creates a configuration .yaml file compatible with the Trano Python package (https://github.com/andoludo/trano). This configuration file can be reviewed, adapted, and enriched before generating the final Modelica model, allowing for verification and customization of the translation process.
ifctrano config /path/to/your.ifcOnce the YAML configuration file has been generated and adapted, the following command can be used to generate and/or simulate the model.
ifctrano from-config /path/to/your.yamlHydronic heating systems modelled with IFC4 MEP conventions (heat generator, circulators, mixing valves, radiators, connected
through IfcDistributionPorts) are translated into trano emissions and systems. Heating elements are read from the
architecture file itself, or from federated discipline models sharing its coordinates:
ifctrano create /path/to/architecture.ifc --hvac /path/to/heating.ifc
ifctrano config /path/to/architecture.ifc --hvac /path/to/heating.ifcRadiators are assigned to spaces by IfcRelReferencedInSpatialStructure/IfcRelContainedInSpatialStructure, or from
their location. Radiators of a space are lumped into one emitter (Pset_SpaceHeaterTypeCommon.OutputCapacity summed),
and each circuit (heat generator, circulator and mixing valve) becomes trano's hydronic circuit. Radiators not connected
to a heat generator become ideal emitters. Radiators and pumps without output or flow in the model are sized from the
design heat load of their spaces (simplified EN 12831), and every assumption is logged. Heat pumps, which IFC has no
class for, can be declared with --heat-generator water_water_heat_pump (or air_water_heat_pump).
To visualize the computed space boundaries:
ifctrano create /path/to/your.ifc --show-space-boundariesRun a full simulation after model generation:
ifctrano create /path/to/your.ifc --simulate-modelMake sure Docker is installed and running before simulating.
💡 ifctrano aims to make energy simulation model generation from IFC files simpler, more accessible, and less reliant on incomplete IFC attributes. 🚀