VISTAS_py v2.3 includes all the features of previous releases, plus:
- improved visualization, including a new plot showing side-by-side the carrier and optical profiles in the cavity at t = tmax
- improved logic in the GUI to define the allowed parameters combos (disabled GUI elements)
- computation of the individual wavelength of each optical mode
- maintenance and bug fixes
VISTAS_py v2.3 comes with the following files:
- 'default_params.json': a working set of simulation and VCSEL parameters that is loaded when clicking the "initialize params" button (recovery option)
- 'last_params.json': the last set of automatically saved parameters that is automatically loaded when launching the GUI
- 'ttips.json': the help texts appearing when hovering over the GUI elements
- 'VISTAS_algorithm.py': the core algorithm (modified rate equations) and its integration with the adjacent elements (modes, overlap parameters, modulation signal, etc.)
- 'VISTAS_gui.py': the GUI to manage the simulation and VCSEL parameters, the logic that handles the allowed combinations of parameters, and the data management for saving to/reading from files
- 'VISTAS_modes.py': the self consistent LP modes solver for the VCSEL cavity
- 'VISTAS_visualization.py': a series of visualization functions, called from the GUI
- 'LICENSE': the MIT license
- 'README.md': the VISTAS_py project description on GitHub
To run a simulation:
- make sure Python and the required packages (numpy, scipy, matplotlib, PySimpleGUI) are installed
- copy the files above in the same working directory
- run the script 'VISTAS_gui.py'
VISTAS_py v2.3 was tested on an Intel machine running windows 10 Pro 64 bit with:
- Python 3.9.6
- numpy 1.21.1
- scipy 1.7.0
- matplotlib 3.4.2
- PySimpleGUI 4.43
Previous releases:
VISTAS_py v2.2 includes all the features of previous releases, plus:
- electrical parasitics, and their effect on both small- and large-signal responses
- fixed bug in the calculation of the frequency response H(f)
- enhanced visualization of the frequency response, with the intrinsic and parasitics responses plotted separately
- small fixes
VISTAS_py v2.1 includes all the features of previous releases, plus:
- noise
- Relative Intensity Noise (RIN) computation and visualization
- improved logic to manage allowed/sensible parameters combos
- small fixes
VISTAS_py v2.0 includes all the features of VISTAS_py v1.0, plus:
- carrier transport across the barriers into the quantum wells (QWs)
- updated Jacobian, now implemented both for both the static (scipy's fsolve) and dynamic (scipy's solve_ivp) solvers
- new and renamed variables to improve readability
- numerous smaller improvements
VISTAS_py v1.0 includes:
- the basic 1D (no azimuthal dependency -> 'doughnut-shaped" modes) algorithm...
- ... implemented in a fully vectorized manner with numpy arrays
- a clean architecture with four clearly delimited scripts (1. core algorithm, 2. GUI, 3. modes solver, 4. visualization)
- static (LI) solution using scipy’s built-in fsolve with analytical Jacobian
- time-domain dynamic solution using either finite differences or scipy’s built-in solve_ivp
- logarithmic gain model in the time domain (linear gain model across the cavity area)
- a simple data model consisting of three dictionaries: 1. simulation parameters, 2. VCSEL parameters, and 3. simulation results
- a GUI to manage the simulation parameters, the VCSEL parameters, the data management for writing to / reading from JSON files, and the logic that handles permitted combinations of parameters
- basic visualization