Skip to main content

OpenPH - Open-source Passive House energy modeling and calculation engine

Project description

OpenPH

Core PHPP data models and table view generation

Part of the openph UV workspace - a Python implementation of Passive House Planning Package (PHPP) calculations with exact numerical fidelity to Excel PHPP.

Purpose

OpenPH provides:

  • Data Models: Python classes representing PHPP building components (areas, constructions, rooms, climate, HVAC systems)
  • Table Rendering: Generate formatted output tables (.txt, .html) matching PHPP worksheet layouts for validation
  • Plugin Architecture: Extensible table system with auto-discovery via entry points
  • HBJSON Import: Convert Honeybee-PH JSON models to OpenPH data structures

Structure

openph/
├── src/
│   └── openph/         # Main package module
│       ├── model/      # PHPP data classes
│       ├── to_table/   # Table rendering system (plugin-based)
│       ├── from_HBJSON/# Honeybee-PH JSON import
│       └── phpp.py     # Main PHPP container class
├── tests/
└── pyproject.toml

Usage

Basic Model Creation

from openph.phpp import OpPhPHPP

# Create PHPP model
phpp = OpPhPHPP()

# Access model components
phpp.climate
phpp.areas
phpp.rooms
phpp.hvac

Table Rendering (Single Tables)

from openph.to_table import TableDisplayManager, TableNames

# Initialize table display manager
display = TableDisplayManager(phpp)

# Render individual tables
climate_table = display.get_table(TableNames.CLIMATE_ANNUAL)
climate_table.render(format="console")
climate_table.render(format="html", output_path="climate.html")

Table Grouping (Recommended)

Group related tables and render to a single file:

from openph.to_table import TableDisplayManager, TableNames

display = TableDisplayManager(phpp)

# Create logical groups
climate_group = display.create_group([
    TableNames.CLIMATE_ANNUAL,
    TableNames.CLIMATE_PEAK_LOAD,
    TableNames.CLIMATE_RADIATION_FACTORS,
])

# Render entire group to one file
climate_group.render(format="html", output_path="./climate_report.html")
climate_group.render(format="txt", output_path="./climate_report.txt")

Available Core Tables

Climate: CLIMATE_ANNUAL, CLIMATE_PEAK_LOAD, CLIMATE_RADIATION_FACTORS
Areas: AREAS_SUMMARY, AREAS_OPAQUE_SURFACE_*, AREAS_APERTURE_*, AREAS_SOLAR_REDUCTION_*
Rooms: ROOMS_VENTILATION_PROPERTIES, ROOMS_VENTILATION_SCHEDULE
Ventilation: VENTILATION_DUCT_INPUTS, VENTILATION_DUCT_RESULTS, VENTILATION_DUCT_*

See TableNames class for complete list.

Development

Part of UV workspace - see root context/ENVIRONMENT.md:

uv sync                      # Install all workspace packages
uv run pytest openph/tests/  # Run tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openph-0.3.0.tar.gz (123.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openph-0.3.0-py3-none-any.whl (142.8 kB view details)

Uploaded Python 3

File details

Details for the file openph-0.3.0.tar.gz.

File metadata

  • Download URL: openph-0.3.0.tar.gz
  • Upload date:
  • Size: 123.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openph-0.3.0.tar.gz
Algorithm Hash digest
SHA256 85a6760be370c26451abad5a9fda07356bc82e50de39ea7499a9f4d0149efd3e
MD5 adfbd50ca8650f96f46baa632ba34965
BLAKE2b-256 8371a8dba4f4fbf36e28d4ac8852d91ad35b9483cf8eb9d4cfd35bacb6c67aa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for openph-0.3.0.tar.gz:

Publisher: publish.yml on Open-PH/openph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openph-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: openph-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 142.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openph-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abd777256a1f2fc3b223fb03320dd4b7f121e1ce1a1a29403668c8903f6a1c57
MD5 14b70a5d48d077bb41fc110e66e700bd
BLAKE2b-256 4502a753041495418914ee25604f048ec876885eeafc3779b5c9aced1ff06783

See more details on using hashes here.

Provenance

The following attestation bundles were made for openph-0.3.0-py3-none-any.whl:

Publisher: publish.yml on Open-PH/openph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page