PLaSK library

Loading...
Searching...
No Matches
PLaSK Developer Manual

# About

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:

- plask-core: The core library which provides framework for structure geometry description, material database, and data exchange between solvers. It also contains Python bindings, which allows to use Python scripts for setting-up the computation logic and the executable to run the simulation. All the other components depend on it.
- plask-solvers: PLaSK computational solvers.
- plask-gui: Graphical user interface and visual experiment designer which eases definition of an analyzed structure and helps in setting-up and performing simulations.

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 source code

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.

Remarks
  Although it is possible to compile and use PLaSK without Python, it is strongly discouraged, as all the simulation logic would have to be written in C++ and compiled for every structure analyzed. Such approach is also hardly documented and not tested.

# Tutorials

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.

- Coding style guide — please read it first!
- How to write a calculation solver?
  - How to use providers and receivers for data exchange?
- How to implement new providers and receivers for new data types?
- How to use meshes and write an own ones?
  - All about interpolation.
  - All about boundaries and boundary conditions.
- All about geometry.