Generate complete EnergyPlus IDF (Input Data File) from minimal inputs like an address and basic building information.
Creating EnergyPlus IDF files typically requires detailed knowledge of:
- Building geometry and construction
- Material properties and constructions
- HVAC systems and schedules
- Climate data and simulation parameters
IDF Creator automates this process, allowing you to generate simulation-ready IDF files with just:
- A building address (for location and climate data)
- Optional documents (PDFs, images with building plans)
- Basic parameters (building type, stories, floor area)
Example: IDF Creator can generate energy models for various building types
- π Automatic location detection - Geocoding and climate zone determination
- π Document parsing - Extract building info from PDFs and images
- ποΈ Smart defaults - Industry-standard materials and constructions
- β‘ Building type templates - Office, Residential, Retail, Warehouse, etc.
- ποΈ Complete IDF generation - Zones, surfaces, loads, HVAC, schedules
- π BESTEST-compliant outputs - Automatically includes 30+ output variables for comprehensive analysis
- β Ready to simulate - Output files work directly with EnergyPlus
-
Clone or download this repository
-
Install Python dependencies:
pip install -r requirements.txt- (Optional) Install Tesseract OCR for image parsing:
# macOS
brew install tesseract
# Ubuntu/Debian
sudo apt-get install tesseract-ocr
# Windows
# Download from: https://github.com/UB-Mannheim/tesseract/wiki- (Optional) Configure API keys (for enhanced features):
cp .env.example .env
# Edit .env and add your API keysGenerate an IDF file from just an address:
python main.py "123 Main St, San Francisco, CA"Parse building information from PDFs or images:
python main.py "456 Oak Ave, Boston, MA" --documents building_plans.pdf floorplan.jpg specifications.pdfSpecify building characteristics:
python main.py "789 Pine Rd, Seattle, WA" \
--building-type "Retail" \
--stories 2 \
--floor-area 1500 \
--window-ratio 0.5python main.py "321 Elm St, Chicago, IL" --output my_simulation.idf- address: Building street address (any location worldwide)
--building-type: Office, Residential, Retail, Warehouse, School, Hospital--stories: Number of stories--floor-area: Total floor area in square meters--window-ratio: Window to wall ratio (0-1)--documents: List of PDFs, images, or text files--output: Custom output file path
The tool generates a complete EnergyPlus IDF file containing:
- β Building geometry - Multi-story zones with realistic dimensions
- β Construction assemblies - Exterior walls, roof, floor, windows
- β Material properties - Industry-standard thermal properties
- β Internal loads - People, lighting, equipment (type-dependent)
- β HVAC systems - Ideal loads system
- β Schedules - Occupancy, lighting, equipment, HVAC
- β Climate data - Location and weather file references
- β Simulation control - Run periods and output requests
- β
Comprehensive outputs - Automatically includes BESTEST-required output variables:
- Zone-level metrics (temperature, heating/cooling energy)
- Surface-level metrics (heat transfer, temperatures)
- HVAC system performance (COP, efficiency, energy consumption)
- Environmental data (outdoor conditions, solar radiation)
- Building-level summaries
IDF files are saved to the output/ directory by default, or to the specified path.
The IDF Creator pipeline: From address to complete EnergyPlus model
-
Location Processing
- Geocodes the address to get coordinates
- Determines ASHRAE climate zone
- Selects appropriate weather file
-
Document Parsing (if provided)
- Extracts text from PDFs using PyPDF2
- Performs OCR on images using Tesseract
- Identifies floor area, stories, building type, etc.
-
Parameter Estimation
- Uses building type to set typical loads and schedules
- Estimates building dimensions from floor area
- Calculates zone-level parameters
-
IDF Generation
- Creates complete IDF structure
- Generates zone, surface, and construction objects
- Adds loads, HVAC, and schedules
- Links to weather data
Edit config.yaml to customize:
defaults:
building_type: "Office"
stories: 3
floor_area_per_story_m2: 500
window_to_wall_ratio: 0.4
materials:
wall_construction: "ASHRAE_C90"
roof_construction: "ASHRAE_M90"
simulation:
run_period_start: "1/1"
run_period_end: "12/31"
timestep: 6When you run the tool, you'll see:
============================================================
ποΈ IDF Creator for EnergyPlus
============================================================
π Fetching location data...
β Found location: 37.7749, -122.4194
β Climate zone: ASHRAE_C3
π Estimating building parameters...
β Building dimensions: 25.0m Γ 20.0m
βοΈ Generating IDF file...
β
IDF file created: output/Building.idf
π Zone area: 500.0 mΒ²
π₯ People per zone: 35
π‘ Lighting power: 5000.0 W
============================================================
β¨ Ready to simulate in EnergyPlus!
============================================================
Example: Generated building model ready for EnergyPlus simulation
- Python 3.8+
- EnergyPlus (for running simulations)
- pyenergyplus - IDF manipulation
- geopy - Geocoding
- requests - API calls
- PyPDF2 - PDF parsing
- pytesseract - OCR
- pillow - Image processing
- pandas, numpy - Data processing
See requirements.txt for complete list.
Some features can be enhanced with API keys (not required for basic functionality):
- Google Maps API - Enhanced geocoding
- Weather APIs - More accurate climate data
Add them to .env (see .env.example).
The tool includes templates for common building types with typical:
| Building Type | People/mΒ² | Lighting W/mΒ² | Equipment W/mΒ² | Infiltration (ACH) |
|---|---|---|---|---|
| Office | 0.07 | 10.0 | 15.0 | 0.25 |
| Residential | 0.05 | 8.0 | 5.0 | 0.5 |
| Retail | 0.15 | 15.0 | 8.0 | 0.3 |
| Warehouse | 0.005 | 8.0 | 2.0 | 0.5 |
| School | 0.2 | 12.0 | 5.0 | 0.4 |
| Hospital | 0.1 | 12.0 | 20.0 | 0.2 |
Once you have an IDF file, run it with EnergyPlus:
# Download weather file first
# Then run EnergyPlus:
energyplus -w weather.epw output/Building.idf- The generated IDF files use simplified default values suitable for most simulations
- Materials and constructions follow ASHRAE standards
- HVAC systems use ideal loads (simplified but comprehensive)
- Consider customizing materials and systems for detailed studies
- Weather files should match your climate zone
Run the test suite:
python -m pytest tests/For more information, see docs/TESTING_GUIDE.md.
- Contributing Guidelines - How to contribute to the project
- API Documentation - API reference
- User Workflow Guide - Detailed usage guide
- How It Works - Technical overview
idf-creator/
βββ src/ # Main source code
β βββ core/ # Core IDF generation logic
β βββ validation/ # Validation modules
β βββ compliance/ # Compliance checking (ASHRAE 90.1)
β βββ utils/ # Utility functions
β βββ ... # Other modules (HVAC, geometry, etc.)
βββ tests/ # Test suite
β βββ data/ # Test data files
β βββ test_*.py # Test modules
βββ examples/ # Example scripts and usage
βββ scripts/ # Utility scripts
β βββ archive/ # Historical/one-off scripts
βββ docs/ # Documentation
β βββ history/ # Historical documentation
β βββ *.md # Current documentation
βββ main.py # Main entry point
βββ requirements.txt # Python dependencies
βββ CONTRIBUTING.md # Contribution guidelines
βββ README.md # This file
We welcome contributions! Please see CONTRIBUTING.md for detailed guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes and add tests
- Run tests:
python -m pytest tests/ - Submit a pull request
- Enhanced document parsing
- More building type templates
- Additional HVAC system types
- Better geometry estimation
- Integration with building databases
- Improved test coverage
- Documentation improvements
MIT License - see LICENSE file
Built for the EnergyPlus community. Uses open-source geocoding and document processing tools.
Need help? Open an issue or check the documentation.
Ready to simulate? Generate your IDF file and run EnergyPlus!

