Skip to main content

CEA External Tools

A standalone Python package containing compiled C++ tools for the City Energy Analyst (CEA).

This package provides pre-compiled binary executables for radiation calculations and urban energy modeling, including DAYSIM (daylighting simulation) and CRAX (City Radiation Accelerator).

By separating these computationally intensive C++ components into their own package, we enable faster CEA installations and reduce build complexity.

Installation

pip install cea-external-tools

Usage

import cea_external_tools

# Get path to binary tools
bin_path = cea_external_tools.get_bin_path()
print(f"External tools located at: {bin_path}")

Package Contents

This package includes compiled binaries for:

  • DAYSIM - Advanced daylighting simulation tools
  • CRAX - Fast urban radiation calculation engine

Development & Build Configuration

This directory contains the CMake configuration for building external tools required by the City Energy Analyst (CEA).

Structure

The build system has been modularized into separate configuration files:

  • CMakeLists.txt - Main build configuration file
  • DaysimConfig.cmake - DAYSIM-specific configuration and build logic
  • CraxConfig.cmake - CRAX-specific configuration and build logic

Components

DAYSIM

Daylighting simulation tool that provides various radiation calculation utilities.

Executables built:

  • ds_illum - Illuminance calculation
  • epw2wea - Weather file conversion
  • gen_dc - Daylight coefficient generation
  • oconv - Octree conversion
  • radfiles2daysim - Radiance file conversion
  • rtrace_dc - Ray tracing for daylight coefficients

CRAX

City Radiation Accelerator for fast urban radiation simulations.

Executables built:

  • radiation - Main radiation calculation engine
  • mesh-generation - 3D mesh generation utility

Build Options

You can control which components to build using CMake options:

# Build both components (default)
cmake -DBUILD_DAYSIM=ON -DBUILD_CRAX=ON ..

# Build only DAYSIM
cmake -DBUILD_DAYSIM=ON -DBUILD_CRAX=OFF ..

# Build only CRAX  
cmake -DBUILD_DAYSIM=OFF -DBUILD_CRAX=ON ..

CRAX-specific Options

CRAX has additional configuration options for Python wheel builds:

  • CRAX_USE_DYNAMIC_ARROW (default: ON) - Enable dynamic Arrow linking to save space in wheels
  • CRAX_USE_AUTOMATED_DEPENDENCIES (default: ON) - Use automated dependency fetching

Source Configuration

Both tools support local source directories or automatic fetching from GitHub:

DAYSIM

  • DAYSIM_SOURCE_DIR - Path to local DAYSIM source (default: ./daysim)
  • DAYSIM_GIT_REPOSITORY - Git repository URL (default: https://github.com/reyery/Daysim.git)
  • DAYSIM_GIT_TAG - Git tag/branch to use

Cross-platform determinism (#4080): earlier pinned DAYSIM commits gave different radiation results on Windows than on Linux/macOS for identical inputs, because Windows used the C runtime's rand() where the others use drand48(). daysim-portable-random.patch (this directory, kept for reference) fixes this -- verified bit-identical across all three OSes in CI -- and is applied on reyery/Daysim as commit 560374a (branch portable-random), which DAYSIM_GIT_TAG above is pinned to.

CRAX

  • CRAX_SOURCE_DIR - Path to local CRAX source (default: ./crax)
  • CRAX_GIT_REPOSITORY - Git repository URL (default: https://github.com/wanglittlerain/CityRadiation-Accelerator-CRAX-V1.0.git)
  • CRAX_GIT_TAG - Git tag/branch to use

Installation

The built executables are installed to the CEA resources directory:

  • CRAX tools: cea_external_tools/bin

Build Targets

The build system includes a custom target cea_all that builds all required CEA components:

# Configure build
cmake -B build -S .

# Build all CEA targets (recommended)
cmake --build build --target cea_all

# Or build all targets
cmake --build build

# Install to CEA resources
cmake --install build

Compiler Warnings

The build system automatically suppresses common warnings for cleaner output:

  • GNU/Clang: Suppresses missing prototypes, unused variables, sign comparison, and deprecated declarations
  • MSVC: Suppresses warning C4127 to prevent build failures on Windows

Metadata

Release files for cea-external-tools 0.2.4

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

Source distribution (sdist)

Source distribution for cea-external-tools 0.2.4
File Size Uploaded
cea_external_tools-0.2.4.tar.gz 77.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cea-external-tools 0.2.4
File Interpreter ABI Platform
cea_external_tools-0.2.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cea_external_tools-0.2.4-cp312-cp312-manylinux_2_39_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ x86-64 Details
cea_external_tools-0.2.4-cp312-cp312-macosx_13_0_arm64.whl CPython 3.12 CPython 3.12 macOS 13.0+ ARM64 Details

Total release size: 50.0 MB

Release files / cea_external_tools-0.2.4.tar.gz

Download URL cea_external_tools-0.2.4.tar.gz
Size 77.3 kB
Tags Source
SHA-256 checksum
How to use checksums
565559264d64ab5a2924328c365d639a91565663f1b2b06c2047e1be2209d4a1
BLAKE2b-256 checksum
How to use checksums
8dcd1010eade30d2782520ef9c50e96ebd5d5fa289ac93cdc771ab45d4f75e3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / cea_external_tools-0.2.4-cp312-cp312-win_amd64.whl

Download URL cea_external_tools-0.2.4-cp312-cp312-win_amd64.whl
Size 3.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
df6d305cb1d62fedecb0e15d98673eac727a5e7b755c6dc5a36ff14795cc9bc9
BLAKE2b-256 checksum
How to use checksums
15fc2109da954c01d863fe2278160be72bda3b6c6e4ddb6d964a466401ba21f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / cea_external_tools-0.2.4-cp312-cp312-manylinux_2_39_x86_64.whl

Download URL cea_external_tools-0.2.4-cp312-cp312-manylinux_2_39_x86_64.whl
Size 44.7 MB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
3467f6b466b11980b67a643821bbea7219e9ded1491d08757f7e978c42f6f664
BLAKE2b-256 checksum
How to use checksums
79d24756a8de8b9d13f37ddfa67ddfe5d9b7ba556b108d9fa917d56760704b4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / cea_external_tools-0.2.4-cp312-cp312-macosx_13_0_arm64.whl

Download URL cea_external_tools-0.2.4-cp312-cp312-macosx_13_0_arm64.whl
Size 1.6 MB
Tags CPython 3.12 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
56d921c330f6cab156238d1b1d8048744fbe09b125c82ced56dbb6b67500e71e
BLAKE2b-256 checksum
How to use checksums
5b3bd5a15bdc889628a5ddd8b5def0d044aed6aa6da094c63c5d530ca5398adb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.4 This release

4 release files

0.2.3

4 release files

0.2.2

4 release files

0.2.1

4 release files

0.2.0

5 release files

0.1.0

5 release files

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