Changelog¶
All notable changes to PyFDS will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
Added¶
- MkDocs Material documentation site
- Comprehensive user guides and API reference
[0.1.0] - -11-26¶
Added - Phase 3: VENT and MISC Namelists¶
- VENT namelist with comprehensive boundary condition support
- Open boundaries (
SURF_ID='OPEN') - HVAC vents with volume flow rates
- Circular and annular vent geometries
- Mesh boundary (MB) support for domain boundaries
- Pressure zone and leak area calculations
- MISC namelist for global simulation settings
- Ambient conditions (temperature, pressure, humidity)
- Turbulence model selection (Deardorff, Vreman, WALE, Dynamic Smagorinsky)
- Special simulation modes (wildfire, solid-phase only, isothermal)
- CFL control and solver parameters
- Radiation and stratification settings
- New example simulations:
- HVAC system with supply/exhaust vents
- Wildfire spread simulation
- Circular and annular burner geometries
- Solid-phase heat transfer only
- Enhanced logging system with configurable levels
- Validation utilities for common parameter checks
Changed¶
- Updated examples README with VENT and MISC feature overview
- Improved test coverage for VENT and MISC namelists
Fixed¶
- Validation edge cases for VENT geometries
- MISC parameter type checking
[0.0.3] - -11-19¶
Added - Phase 3: Complex Namelists¶
- RAMP namelist for time-varying and temperature-dependent properties
- MATL namelist for material definitions
- REAC namelist for combustion reactions
- PROP namelist for device properties
- CTRL namelist for control logic
- INIT namelist for initial conditions
- Comprehensive validation for all new namelists
- Phase 3 example demonstrating all complex features
- Complete test coverage for new namelists
Changed¶
- Enhanced
Simulationclass with new namelist methods - Improved type hints across all modules
- Updated documentation with complex feature examples
[0.0.2] - -11-19¶
Added - Phase 2: Execution and Analysis¶
- Execution Engine
FDSRunnerclass for local executionJobclass for job managementProgressMonitorfor real-time progress tracking- OpenMP multi-threading support
- MPI parallel execution support
- Non-blocking execution with callbacks
- Results Analysis
Resultsclass for output parsing- CSV parser for HRR and device data
- Polars DataFrame integration
- Built-in plotting utilities
- Summary statistics generation
- Examples
execution_demo.pyshowing complete workflow- Progress monitoring examples
- Parallel execution examples
- Testing
- 100+ total tests (62 unit + 38 integration)
-
90% code coverage
- Execution integration tests
Changed¶
Simulation.run()method for execution- Enhanced error handling and exceptions
- Improved logging throughout
[0.0.1] - -11-19¶
Added - Phase 1: Foundation¶
- Core Classes
Simulationclass for building simulationsValidatorclass for validation- Namelist base classes
- Basic Namelists
Head- Simulation metadataTime- Time controlMesh- Computational domainSurface- Surface propertiesObstruction- Solid objectsDevice- Measurement devices- Features
- FDS file writer
- Input validation
- Method chaining
- Type hints throughout
- Testing
- 62 unit tests
- Integration tests
-
90% code coverage
- Documentation
- README with examples
- Docstrings for all public APIs
- Contributing guide
- Examples
basic_room_fire.pyadvanced_room.pyparametric_study.py- Development Tools
- Ruff for linting and formatting
- MyPy for type checking
- Pytest for testing
- Pre-commit hooks
Changed¶
- Initial project structure
- uv-based dependency management
Fixed¶
- N/A (initial release)
Version History¶
| Version | Date | Phase | Status |
|---|---|---|---|
| 0.1.0 | -11-26 | Phase 3 Extended | ✅ Complete |
| 0.0.3 | -11-19 | Phase 3 | ✅ Complete |
| 0.0.2 | -11-19 | Phase 2 | ✅ Complete |
| 0.0.1 | -11-19 | Phase 1 | ✅ Complete |
Migration Guides¶
Migrating to 0.1.0¶
No breaking changes. New features:
- Use sim.add(Vent()) for boundary conditions
- Use sim.set_misc() for global settings
Migrating to 0.0.3¶
No breaking changes. New features:
- Use sim.add(Ramp()), sim.add(Material()), sim.add(Reaction()), etc. for complex features
from pyfds import Ramp, Material
# New in 0.0.3
sim.add(Ramp(id='T_RAMP', t=[0, 100, 200], f=[0, 0.5, 1.0]))
sim.add(Material(id='WOOD', conductivity=0.12, density=500.0))
Migrating to 0.0.2¶
No breaking changes. New features:
- Use .run() to execute simulations
- Use Results class to analyze output
Roadmap¶
Phase 4: Documentation & Polish (In Progress)¶
- MkDocs Material documentation
- Complete API reference
- Video tutorials
- Example notebooks
- PyPI release
Phase 5: Advanced Features (Planned)¶
- HPC cluster execution
- Binary output parsers (SLCF, PL3D)
- Advanced visualization
- Parametric study framework
- Optimization tools
Phase 6: Release (Planned)¶
- Comprehensive testing
- Performance optimization
- Security audit
- v1.0.0 release