After ten year of experience matured developing PSAT, I felt the need of restarting from scratch and creating a new project for power system analysis. The name of this work in progress is Dome. This project is written in Python, C and Fortran. It is a pure number-crunching command-line application for multi-core 64-bit Unix platforms.

Dome can currently solve power flow analysis, continuation power flow, time domain simulation including the quasi-static one, small signal stability analysis and optimal power flow.

As a rule of thumb, anything that can be done with PSAT can also be done with Dome. But Dome goes well beyond PSAT in what concerns device models, data format parsing and algorithms. Dome includes dc devices and can mix phasor and EMTP models. As a matter of fact, Dome could be also used to simulate three-phase electromagnetic transients, although this is not its main object. EMT models are used to simulate in detail the behavior of some non-conventional device, such as PV cells, fuel cells, and SMES. Finally, Dome can handle DAE, DDAE and SDAE models.

Why Python?

The main differences between Dome and PSAT is the architecture. While both projects have been structured in a modular way, Dome exploits modularity in a deeper and purely class-oriented manner. The key that makes this possible is the Python programming language.

Python is a modern scripting language that inherits some of the concepts of functional languages, while focusing on real-world applications. It is also an elegant and neat language that makes programming fun.

Since Python is an interpreted scripting language, some operations can be slow. There are several possibilities to speed up Python, e.g., Psyco, Cython, etc. However, since the bottlenecks of Dome are sparse matrix factorizations, eigenvalue analysis and floating-point matrix and array algebra, the best solution is to use efficient external libraries, such as BLAS, LAPACK, SuiteSparse, ARPACK, GSL, PETSc, and SLEPc. With this aim, Dome takes advantage of the excellent wrappers provided by the CVXOPT Python module, and extends it whenever necessary.


Release Date Fedora 15 RPM Examples
July 22, 2011 dome-20110722-1.fc15.x86_64.rpm IEEE14bus-examples-1.0.0.tar.gz
September 9, 2011 dome-20110902-1.fc15.x86_64.rpm

Please read the "no warranty" conditions and the installation instructions below. The examples can be used to reproduce some simulations of my book Power System Modelling and Scripting.

This is a demo version!. It only runs for systems up to 14 buses. Moreover, only 64-bit Fedora-compatible Linux platforms are supported. Download here a tutorial document to get started with Dome.

No Warranty

Because the software package "Dome" (hereinafter "the program") is licensed free of charge, there is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchandability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair or correction.

In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may modify and/or redistribute the program as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other software), even if such holder or other party has been advised of the possibility of such damages.

Installation and Dependencies

To be able to install the Dome RPM packages, Python 2.7.x is required. Python 3.x is not supported as some modules required by Dome have not been ported so far. As soon as all dependencies will be ported to Python 3.x, Dome will be ported to Python 3.x as well and support for Python 2.7.x will be discontinued.

The recommended method to install Dome is through yum which is the standard repository database manager in Fedora architectures. To install Dome simply run as root:
# yum install dome-[release].fc15.x64_86.rpm

If the installation completed correctly, two commands are available: dome to run simulations, and domeplot to plot results. This are Unix-style command line scripts. The option -h will display the synopsis and the complete list of command line options.

As indicated above, Cvxopt is strictly required by Dome. Then, Dome requires python-setuptools, Matplotlib, Numpy, and Sympy.
Dome requires some external shared libraries. If Dome is intalled using yum, such libraries are automatically downloaded if missing. These libraries are: blas, lapack, arpack, m, and gsl. Optional libraries are petsc and slepc which are currently not included in the Fedora repositories and, thus, have to be compiled and installed manually. Moreover, the Dome/SLEPc module requires the mpich and the mpl libraries provided by the MPICH2 project.

Optional, but strongly recommended, Python modules are:

  • NetworkX and Graphviz are used for creating graph drawing of the system topology.
  • MayaVi is used to display results ny means of 3D temperature maps. If MayaVi is not installed, 3D temperature maps are disabled.
  • Xlrd is used for parsing Excel data files. If you are not planning to use Excel-based data files, this package is not required.
  • Xlwt is used to dump results to Excel files. If you are not going to use Excel for the dumping results, this package is not required.

Further optional Python modules are:

  • Blist is used for improving performances for operations with very large lists.
  • Lxml is used for parsing XML data files. If this package is not found, the standard (and slower) Python XML parser is used.
  • Progressbar is used to print a pretty progress bar during time domain simulations. If this module is not installed, Dome prints a not-so-pretty progress bar.
  • Scipy is currently not required, but can be in the future. It is thus recommended to have it for future Dome releases.

Missing to install the packages above does not reduce Dome functionalities, but can slow down some operations.

How to obtain Dome sources

In general, Dome sources are NOT available. The experience with PSAT has taught me that the power system community is simply not responding properly to open source projects. In the last ten years, third-party contributions to PSAT have been very marginal or would have been developed even if PSAT had been not distributed as a free and open source project. On the other hand, I am quite sure that several extensions have been developed but not shared with the PSAT community.

I got to the conclusion that the free and open source paradigm is not attractive for small and closed communities like the power system one. Thus a different software development approach has to be adopted. The idea is that Dome sources are available only to those researchers seriously willing to develop them in some meaningful manner. The resulting code is then included in the project and made available to following developers.

Of course, one cannot decide to get involved into a project without having at least a little taste of it. With this aim, I am posting a demo version of Dome, constrained in the number of buses.

For now, only Fedora's RPM packages for 64-bit platforms are available. Maybe in the future other platforms or package formats will be supported. However, Dome is not compatible with Windows, in any of its versions and, unless a very relevant reason changes my mind, it is not intended to be in the future.

So, what's next?

The mission of Dome is to develop novel algorithms, to model new devices and to test emerging technologies. Since power systems are experiencing overall and world-wide changes, this is a good moment for power system research and for the development of unconventional simulation tools.

Currently, I am interested in parallelization (multi-treading, multi-processing, GPU architetures, etc.), modelling non-conventional devices such as distributed and/or renewable energy sources, smart grids (even if I do not like this expression...). I am also interested in any project through which Dome could be potentially extended and improved.

So, in turn, the next step is just to contact me!.

I welcome collaborations with researchers, universities, scientific laboratories, Ph.D. student candidates, visiting scholars, etc. All we have to do is to agree on some research topic of common interest and then defining a development plan. At the end of the collaboration, any useful implemented code will be included in Dome and, possibly, reused by others in the future.

Industries interested in appointments can contact me to discuss features to be implemented in Dome.

I offer ad hoc solutions for specific problems (e.g., implementation of a device model or a data parser) or more complex collaborations oriented to develop a custom software product. The terms of the agreemt are decided based on the project but, in any case, I will maintain the right to reuse any code resulting by the project and to include it in Dome.