PLaSK library
|
PLaSK (Photonic Laser Simulation Kit) is a complete software for performing simulations of semiconductor lasers and some other photonic devices. It consist of several computational solvers, which are used to perform numerical analysis of various physical phenomena in investigated structures, e.g. heat transfer, current flow, gain in quantum wells, optical modes, etc. Due to the interactions between these phenomena, PLaSK offers a feasible way of performing self-consitent calculations considering these interactions. The open architecture of the PLaSK framework allows to set-up almost any kind of computations using provided solvers or newly-written ones.
PLaSK project consists of:
This documentation is intended for developers who want to write new PLaSK solvers or enhance the core functionality. However, before you begin it is advisable to read the User Manual in order to get familiar with the PLaSK architecture and the way the computations are performed. Here you will find the technical details of the software.
PLaSK is designed using modern programming technologies. The core and computational solvers are written in C++ language using its latest 2011 standard. It means that it can be compiled only with compilers supporting this standard. The encouraged choices are GCC (ver. 4.6 and above) or ICC. However other compilers might work as well. The also requires the Boost C++ library and the solvers might need some other libraries to be installed as well (eg. BLAS and LAPACK). The user interface is provided through Python bindings and the communication between C++ and Python parts requires the Boost Python library. The graphical experiment designer is written in Python and uses the Qt graphics library (with PySide bindings) and Matplotlib for presenting the calculation results in attractive form. You should get familiar with all these technologies if you want to make modifications to PLaSK.
Here you can find the tutorials explaining how you can extend PLaSK by writing new solver, creating providers and receivers for data exchange between solvers or implement a new mesh. You should start reading from section How to implement an own solver as it explains the most basic particulars of the internal PLaSK architecture.