About

How this started and where is it going

This project started in December 2012 as a blog which you can find here. But a predecessor to this project was my own PhD thesis where I had simulated my systems by coding in C++. My PhD was on the topic of microgrids and I needed to simulate an isolated microgrid formed by as many as five three-phase inverters. Simulating such a complex system using existing commercial software available at my university was a bit problematic in the sense that in some cases the simulations took too long - I remember running some simulations overnight. In other cases, they simply crashed because matrices were badly formed. Over the past eleven years as a power electronics engineer, I have used a myriad of software with each one having advantages and disadvantages, but in all cases there was one significant drawback - when it came to running large electrical systems with multiple inverters, they were simply too slow.

By coding in C++, I could simulate microgrids with up to five three-phase inverters with as many as four cases running simultaneously. And all the while having full use of the computer for writing manuscripts and other applications and not having to run them overnight. The only drawback was that every time the circuit changed, I would have to rewrite all the loop equations and implement them as matrix equations in code. During my postdoctoral fellowship in Toronto, Canada, I decided to use the programs written before but create an engine that would automatically write the matrix equations for any circuit needed to be simulated and solve them.

I chose Python for developing the simulator because Python is being used extensively by the scientific community besides being easy as a development platform. Moreover, with modules like NumPy, SciPy and MatPlotLib, there was the possibility of developing a complete scientific software that can also perform post processing of the simulation data. It took another six months of debugging and optimizing before the simulator could process anything of reasonable size. In Pycon 2013 held in Toronto, I gave a 5 minute lightening talk about Python Power Electronics which you can find here.

I had my blog going all this time and also have my own SourceForge project that you can find here. Until recently I had been posting code and describing the changes made to the algorithms in the simulator. Now that the main aim is to test the simulator, I am now posting test cases and results of test cases. To make this project more efficient, I felt the need to bring all this stuff under one site - the programs, the blog and all other information. And that is why I started this site.

The test cases will progress from a simple case of a standalone inverter to more complex systems such as wind farms connected to the power system and microgrids with mutliple renewable sources. The purpose of these case studies is to examine how the simulator performs as the complexity of the system increases. At an advanced stage, my hope is that Python Power Electronics will be a fully functional simulator that energy professionals will be able to use for analysing and designing their systems.

Python Power Electronics is a set of Python programs. These programs are currently available open source and free. On SourceForge I have released the code in Public Domain. As will also be stated on the Downloads page, the code is open to public use. At the same time, I offer no warranties or guaranties on the performance of the programs or the accuracy of the results. For this reason, the use of this software as the sole means to simulate systems and assuming that the results are authentic is strongly discouraged. I would greatly appreciate engineers downloading the software and simulating systems to compare the results that they have obtained with other software. However, Python Power Electronics should not be used as the benchmark in analysing results or finalizing designs. This software is currently in the testing phase and all results obtained are being examined. The objective is to be able to be able to release a fully tested and stable version of the software in the near future.