Skip to main content

ifctrano - IFC to Energy Simulation Tool


📖 Full Documentation: 👉 ifctrano Docs

Generate Modelica building models directly from IFC files — with support for simulation, visualization, and multiple libraries.

Overview

ifctrano is yet another IFC to energy simulation tool designed to translate Industry Foundation Classes (IFC) models into energy simulation models in Modelica.

Key Differentiator

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.

Space-Zone Mapping

For now, each space is considered as a single thermal zone, and the necessary space boundaries are automatically generated.

Why ifctrano?

✅ No reliance on IfcRelSpaceBoundary

✅ Works with geometric representation only

✅ Supports Modelica-based energy simulation

✅ Tested on multiple open-source IFC files

Open Source IFC Test Files

ifctrano has been tested using open-source IFC files from various repositories:

🚀 Installation

📦 Install ifctrano

!!! 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 ifctrano

✅ Verify Installation

Run the following commands to ensure everything is working:

ifctrano --help
ifctrano verify

🔧 Optional Dependencies

🐳 Docker (for simulation)

To enable model simulation using the official OpenModelica Docker image, install Docker Desktop:

👉 https://docs.docker.com/desktop/

Required for using the --simulate-model flag.


🧠 Graphviz (for layout visualization)

ifctrano leverages Graphviz to optimize component layout in generated Modelica models. It is optional, but recommended.

📥 Install on Windows

🐧 Install on Linux

sudo apt update
sudo apt install graphviz

⚙️ Usage

📁 Generate Modelica models from IFC

🏢 Using the Buildings library

ifctrano create /path/to/your.ifc

🏫 Using the IDEAS library

ifctrano create /path/to/your.ifc IDEAS

🧮 Using the Reduced Order library

ifctrano create /path/to/your.ifc reduced_order

📁 Generate yaml configuration from IFC

Instead 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.ifc

Once 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.yaml

🔥 Include the heating system

Hydronic 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.ifc

Radiators 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).


🧱 Show Space Boundaries

To visualize the computed space boundaries:

ifctrano create /path/to/your.ifc --show-space-boundaries

🔁 Simulate the Model

Run a full simulation after model generation:

ifctrano create /path/to/your.ifc --simulate-model

Make sure Docker is installed and running before simulating.


🛠️ Development

The project is managed with uv:

uv sync                  # create .venv with the package and the dev and docs groups
uv run nox -s linting    # black, mypy and ruff
uv run nox -s tests      # fast tests (no large models, no simulation)
uv run pytest -m simulate  # simulation tests, needs Docker

📄 License

ifctrano is licensed under the Apache License 2.0.


💡 ifctrano aims to make energy simulation model generation from IFC files simpler, more accessible, and less reliant on incomplete IFC attributes. 🚀

Metadata

Release files for ifctrano 0.19.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ifctrano 0.19.0
File Size Uploaded Provenance Actions
ifctrano-0.19.0.tar.gz 41.4 kB Without provenance Details for ifctrano-0.19.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ifctrano 0.19.0
File Interpreter ABI Platform Actions
ifctrano-0.19.0-py3-none-any.whl Python 3 none any Details for ifctrano-0.19.0-py3-none-any.whl

Total release size: 85.3 kB

Release files / ifctrano-0.19.0.tar.gz

Download URL ifctrano-0.19.0.tar.gz
Size 41.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7b8fa63a3a5fc650f3648df0eba98c54799b0b3fbfbade02f4950ea618af2426
BLAKE2b-256 checksum
How to use checksums
2b9745bbcb1b7a57ab2161b563ff1b1e9e8086466446f430e7be2df7e8344a42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ifctrano-0.19.0-py3-none-any.whl

Download URL ifctrano-0.19.0-py3-none-any.whl
Size 43.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c4a3af975506d3d0c9de78aeaf676f2cbd5f5e934a12741aecd4809c4c5f35b5
BLAKE2b-256 checksum
How to use checksums
5905eca2f118ae7575528f7c0350c0623feb7a3b61228c097e74cfda97c0073a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for ifctrano 0.19.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page