Changelog
All notable changes to RSoft PLTools will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
Comprehensive documentation site with GitHub Pages
Sphinx-based API documentation generation
GitHub Actions workflow for automatic documentation building
Command-line interface for FemSIM simulations
Advanced visualization tools for effective index analysis
Custom taper profile support
Parameter sweep utilities for optimization
Changed
Improved error handling and validation
Enhanced configuration management system
Better integration between BeamPROP and FemSIM workflows
Fixed
Documentation formatting and cross-references
Import issues with optional dependencies
[0.1.0] - 2024-12-13
Added
Initial release of RSoft PLTools
Core photonic lantern design functionality
Mode selective lantern support
RSoft simulation file generation
BeamPROP and FemSIM integration
Configuration management system
Fiber layout visualization
Basic plotting and analysis tools
Features
Lantern Design
Photonic lantern creation with customizable parameters
Mode selective lantern (MSL) generation
Hexagonal and circular fiber layouts
Automated geometry calculations
Simulation Support
RSoft CAD file generation
BeamPROP simulation orchestration
FemSIM effective index analysis
Subprocess management for simulations
Analysis Tools
Monitor data plotting
Effective index visualization
Parameter sweep analysis
Outlier detection and data cleaning
Configuration System
JSON-based hierarchical configuration
Dynamic parameter expressions
Runtime configuration modification
Template-based segment definitions
Dependencies
Python 3.6+
NumPy 1.2+
Matplotlib 2.0+
Pandas
SciPy
Seaborn
Known Issues
Some docstring formatting issues in Sphinx generation
Missing tqdm dependency for progress bars
Limited error messages for simulation failures
Development Notes
Version 0.1.0 Architecture
The initial release implements a layered architecture:
Base Circuit Layer (
rsoft_circuit.py)Core RSoft simulation file generation
Builder pattern with component factories
Type-safe enums for simulation parameters
Simulation Layer (
rsoft_simulations.py)Simulation orchestration with subprocess management
Error handling and validation
Support for multiple RSoft packages
Domain Model Layer (
lantern/,geometry/)Photonic device modeling with inheritance
Composition with FiberConfigurator and SegmentManager
Strategy pattern for different lantern types
Utilities Layer (
utils/)File I/O operations
Plotting and visualization
Configuration management
Application Layer (
simulations/,examples/)High-level workflows
Example implementations
Parameter scanning utilities
Future Roadmap
Version 0.2.0 (Planned)
Enhanced mode coupling analysis
Optimization algorithms for taper design
Web-based configuration interface
Performance improvements for large simulations
Additional fiber types and materials
Version 0.3.0 (Planned)
Machine learning integration for design optimization
3D visualization capabilities
Export to commercial simulation packages
Advanced post-processing tools
Contributing
When contributing to RSoft PLTools:
Documentation: Update both code docstrings and user documentation
Testing: Add tests for new functionality
Changelog: Update this changelog with your changes
Version: Follow semantic versioning principles
Migration Guide
From Pre-Release to v0.1.0
If you were using development versions before the official release:
Configuration Files: Update configuration format to new JSON schema
Import Statements: Update imports to use new module structure
Function Names: Some utility functions have been renamed for consistency
Dependencies: Install new required packages (pandas, scipy, seaborn)
Example Migration
Old (Pre-release):
from rsoft_tools import create_lantern
from rsoft_tools.utils import plot_results
lantern = create_lantern(cores=6, taper=50000)
plot_results(lantern.output_file)
New (v0.1.0):
from rsoft_cad.lantern import PhotonicLantern
from rsoft_cad.utils.rsoft_file_plot import plot_monitor_data
lantern = PhotonicLantern()
core_map = lantern.create_lantern(highest_mode="LP02", taper_length=50000)
plot_monitor_data("simulation_results/monitor.dat")
For detailed API changes and migration assistance, please refer to the API Reference and GitHub Issues.