EnergyPlus Building Simulation (.idf, .epjson)
@modelscript/energyplus (languages/energyplus) provides compiler, thermal lumped-capacitance DAE lowering, and bidirectional TGG synchronization for US Department of Energy (DOE) EnergyPlus building energy and HVAC models.
Supported Extensions & Standards
| Extension | Format | Description |
|---|---|---|
.idf | EnergyPlus Input Data File | Industry-standard comma/semicolon delimited building simulation deck |
.epjson | EnergyPlus JSON Schema | Structured JSON schema representation of EnergyPlus models |
Key Capabilities
1. Lumped-Capacitance Multi-Zone Thermal DAEs
- Translates architectural thermal zones and building envelopes into continuous energy balance DAEs:
- Envelope Conduction: Multi-layer wall, floor, and roof constructions with layer-resolved thermal conductivity
, density , and specific heat . - Window & Fenestration Optics: U-factor, Solar Heat Gain Coefficient (SHGC), and visible transmittance shading calculations.
- Internal Loads: Schedules for lighting, occupancy sensible/latent heat release, and plug-load equipment dissipation.
2. Direct DAE Lowering
- Compiles building geometry and HVAC schedules directly into
@modelscript/runtime'sDAEBuilderlinear memory arena, enabling co-simulation with dynamic grid power models (@modelscript/pscad) and district energy networks.
3. Bidirectional Triple Graph Grammar (TGG) Sync
- Implements bidirectional TGG rules (
energyplus-sync.ts) synchronizing EnergyPlus thermal zones with:- Modelica (
Modelica.Thermal/ IBPSA Buildings): Automatic translation into acausal thermal components and fluid loops. - STEP CAD (ISO 10303): Validates physical geometric volume and boundary surface areas against 3D architectural CAD envelopes.
- Modelica (
Static Analysis & Pre-Flight Linter Rules
8 rules6 error2 warning Run with msx energyplus lint
| Code | Rule | Severity | Message |
|---|---|---|---|
M7901 | unmatched-interzone-surface | error | Interzone surface '<surfName>' in zone '<zoneName>' specifies outside boundary object '<targetSurf>' which does not exist or has mismatched reciprocal boundary. |
M7902 | non-convex-surface-polygon | warning | Surface polygon '<surfName>' in zone '<zoneName>' violates planar convexity, which may impair solar raytracing and view factor calculations. |
M7903 | missing-thermal-properties | error | Material '<matName>' has non-positive thermal property '<prop>' (<val>), violating second law of thermodynamics. |
M7904 | unconnected-hvac-zone | error | HVAC component '<hvacName>' references non-existent thermal zone '<zoneName>'. |
M7905 | excessive-surface-absorption | warning | Material '<matName>' has solar absorptance coefficient <value>, which exceeds the physical maximum of 1.0. |
M7906 | duplicate-zone-name | error | Duplicate thermal zone identifier '<zoneName>' detected in building model. |
M7907 | unreferenced-construction | error | Building surface '<surfName>' references undefined construction '<constName>'. |
M7908 | zero-thickness-material | error | Opaque material '<matName>' has invalid non-positive thickness (<value>m). |
Generated from languages/energyplus/src/lints/rules.ts. All languages →
CLI Usage
bash
# Lint an EnergyPlus building model deck
msx energyplus lint CommercialOffice.idf
# Lower thermal zones to ModelScript linear memory DAE arena
msx energyplus to-dae CommercialOffice.idf --out=office.dae.json
# Project into standard Modelica IBPSA Buildings library components
msx energyplus to-modelica CommercialOffice.idf -o BuildingThermalModel.mo
