GridPACK Release Notes
As of GridPACK release 3.3, the minimal allowable version of CMake that is necessary to build GridPACK is CMake 3.3.0. Please update to a version of CMake greater than 3.3.0 on any platform that you are using to build GridPACK. On some platforms, newer versions of CMake are accessed using the command “cmake3” instead of “cmake”. This is discussed further in the build documentation. A summary of updates to GridPACK is given below:
- The build documentation has been completely reviewed and revamped to make it simpler to build GridPACK. On most platforms, explicitly building libraries such as boost and MPI has been replaced by downloading modules using tools such as yum or get apt-get. We have made every effort to clarify the build process and reduce the number of steps required to get a working installation of GridPACK up and running. If you encounter any problems, feel free to contact us directly, either by emailing us at firstname.lastname@example.org or by creating an issue at https://github.com/GridOPTICS/GridPACK/issues. Some of the improvements in the build system have required us to move to CMake 3.3.0 or greater so users should plan on upgrading their version of CMake. This should only require minimal changes to existing build scripts.
- We have added a new StatBlock module to GridPACK that is designed to gather the results of contingency analysis calculations into a single large distributed arrays and to perform elementary analyses on the results. The power flow contingency analysis application has been extended to use this functionality and now provides statistics that have been gathered over all contingencies in the system. For large power grid networks, this can represent 10’s of thousands of separate calculations. The European Open Model, which is included as a test case for the current contingency analysis application, has over 20,000 contingencies for a network with over 10,000 buses. Users can get a complete description of the available output for the contingency analysis application by looking at the README.md file in the contingency analysis application directory. Data that is collected from contingency analysis calculations includes
- A performance index calculation of the severity of each contingency
- RMS fluctuations of the voltage magnitude and phase angle for each bus across all contingencies
- The maximum and minimum voltage magnitude and phase angle for each bus across all contingencies
- RMS fluctuations in the real and reactive power for each generator, as well as the maximum and minimum values, across all contingencies
- The total number of faults found on each line across all contingencies
- New instructions for building GridPACK on MacOS High Sierra have been added to the web page.
- Static libraries are no longer required for GridPACK builds. This may be useful for interfacing with other languages or libraries, such as Python.
- Isolated buses in contingency calculation were not getting properly reset for the next calculation (if the isolation was caused by removing a line from the network). This has been fixed so that all lines are reset to the same status as in the base case after each contingency.
- Matrix operations on complex matrices using an underlying build of PETSc based on real matrices were failing because the partitioning of the rows and columns of the real and imaginary parts was not necessarily the same. This has been fixed.
- Several problems with the dense matrix multiply were fixed, including unnecessary replication of communicators and a significant memory leak. This lead to improved performance and more robustness in the Kalman filter application.
GridPACK version 3.2 has been restructured and some new features added. These are enumerated below.
- The GridPACK applications directory was significantly restructured to eliminate
duplicate codes. The power grid applications now serve as test codes for the corresponding application modules. There are no separate test codes for the application modules. The online user manual has also been restructured to reflect the changes in directory structure. More test problems have been included with the existing applications so that users have a ready-made set of test calculations reflecting a range of problem sizes. These are automatically installed in the application directories when GridPACK is built. GridPACK still runs only small test cases if the test suite is run.
- The PTI33 parser for parsing PSS/E version 33 formatted files has been updated
to include more v33 parameters. It has also been verified against simulations based on the v23 formatted input. The v33 parser has also been updated so that it handles composite loads correctly. A command is available that can be used to decompose a composite load into extra buses and branches used in dynamic simulation.
- The dynamic simulation module has been modified to handle composite loads
- The Kalman filter dynamic state estimation module has been added to the GridPACK
applications directory. This module is still poorly scaling and slows down significantly for large problem sizes. However, it is available for users that are interested in trying it out.
- A new directory called "scripts" has been added to the source directory. This
contains build scripts that have been used to build the third-party libraries used in GridPACK on different platforms. These scripts can serve as a starting point for builds on users systems.
- A new build using Personal Package Archives (PPA) has been added to the
GridPACK build. This build can be used on Ubuntu systems to create a working copy of the entire GridPACK framework (including third-party library dependencies) with just a few commands.
- In addition to the above changes, minor bug fixes and performance improvements
have been added to the GridPACK framework.
GridPACK version 3.1 includes several new features. These are enumerated below.
- A new implementation of the dynamic simulation application based on inversion of the full Y-matrix has been included in GridPACK. This implementation also supports several generator models beyond the classical generator as well as models for exciters and governors. Models for relays and dynamic loads have also been included. The new implementation has been set up as a mini-framework, so the additional models can be added relatively easily, as needed. The PSS/E parser modules have been modified as well to read in parameters for the new models.
- A GlobalStore module has been added to GridPACK to enable task-based simulations to exchange data easily. Results from one simulation can be accessed by another simulation, even if the second simulation is running on another processor. This functionality is useful for contingency- or scenario-based calculations that are being distributed to processors on the basis of availability.
- A BusTable module has been created to support vectors of data that are associated with busses. The original input is a CVS-style file that has a string of data associated with a particular device on a bus (e.g. a generator). Examples of this type of data are time series measurements on on generators for Kalman Filter simulations and scenarios for outputs from wind generators.The BusTable module reads in this data and then makes it available to particular bus devices on any processors that might own the device.
- The overview documentation has been thoroughly revised to reflect new functionality in GridPACK as well as reviewing it for clarity and readability. New documents describing the validation of the GridPACK modules has also been added to the GridPACK website.
GridPACK™ version 3.0 includes several new features. These are enumerated below. We will also be updating documentation in the near future but users that have questions are encouraged to contact the GridPACK™ development team directly through the https://gridpack.org web page.
- The math library interface has been extended to support both real and complex matrices and vectors, regardless of what the underlying libraries support. In the past, only complex matrices were supported and the PETSc libraries had to be built so that they used complex numbers. The current version of GridPACK™ will support both real and complex vectors and matrices regardless of whether or not the underlying math library supports one or the other. However, higher performance will be achieved by using a math library that matches most of the matrices and vectors in the application. If the application uses primarily complex matrices then it would be better to use a math library that supports complex numbers.
- An initial interface to a standard optimization library has been implemented in GridPACK™ and used to develop a basic unit commitment application. This interface can be used to link GridPACK™ with the CPLEX optimizer package for quadratic, linear, and mixed integer programming. The GNU linear programming kit (GLPK) is also supported for linear and mixed integer programming. Neither package is supplied with GridPACK™ and must be obtained separately. We plan on further refining the optimization module and also to provide interfaces to more optimization libraries.
- GridPACK™ has been adapted to use the Progress Ranks implementation of the Global Arrays library.This is a high performance implementation of GA based on well-supported features of MPI-1 and MPI-2 and is therefore highly portable to most leadership class machines. This version of GA should be used on large platforms
V2.0.2 patch: There is a problem with serialization that causes GridPACK™ applications to crash on the IBM BlueGene platform. This patch provides a fix.
V2.0.1 patch: The original release was missing files in the network directory. This patch fixes that problem.
This release of GridPACK™ contains several new features and a new example application, as well as multiple bug fixes and performance enhancements. It also contains a new Fortran 2003 interface that allows users access to almost all the GridPACK™ functionality. The new power grid application is a state estimation code that can be used to find optimal values of the voltage magnitude and phase angle based on measurements of the power grid system. To implement this calculation, several new features were added to the GridPACK™ framework. These include a more general mapping capability for constructing the matrices used in solving power grid problems and a data distribution module that automatically distributes data to the processes containing the buses and branches that need the data.
The existing mapper functionality supports systems where variables and equations are associated with the buses. This is the case for systems such as powerflow and dynamic simulation. With state estimation, equations are associated with measurements that occur on the branches and a new model for mapping elements from the network to matrices and vectors is required. This has been implemented in Version 2.0 and is available through new generalized mapping modules.
Many power grid applications have large amounts of data that map to individual buses and branches but are not included in the original network configuration file. Mapping this data to a distributed network can be a major challenge. The hash distribution module can be used to redistribute data that has been read in on either a single processor or a collection of processors to the processor that owns the bus or branch objects that requires the data. The user interface for this module contains only a few simple commands but it can eliminate a large amount of complicated data exchanges.
Finally, a major new functionality is the initial release of a Fortran 2003 interface for the GridPACK™ toolkit. This interface supports most of the existing GridPACK functionality and contains an example powerflow application to illustrate how to use it. Additional documentation will be forthcoming. Most of the existing GridPACK constructs map directly to the new Fortran interface with only minor changes, mostly in naming conventions. The object-oriented nature of bus and branch types has been preserved using the Fortran 2003 support for polymorphic user types. Fortran does not support templated objects so application-specific bus, branch and factory classes need to start from template files. The templates provide stubs for framework methods that can be modified for specific applications. In addition, users can add their own procedures to these types for functionality that operates outside the framework.
This release of GridPACK™ contains several new features as well as multiple bug fixes and performance enhancements. Two new applications, illustrating the use of GridPACK components in building power grid simulation codes, are included as well as some additional codes that serve as pedagogical examples of how to use basic GridPACK functionality. The power grid applications include a contingency analysis code that can run multiple instances of the power flow simulation with individual transmission elements or generators eliminated from the calculation and a dynamic simulation code that can be used to evaluate the behavior of a temporary fault in one of the transmission elements.
Two example codes have also been included in this distribution that illustrate some of the features of the GridPACK™ framework without requiring users to master the complexities of a working power grid application. The first is a simple “hello world” code that shows how to create a simple network, initialize buses and branches on the network and use the IO modules to print a message from each bus and branch. The second example is a resistor grid application that solves a simple electric circuit problem for a network of electrical resistors. A current is induced in the system by holding two buses at different voltages. The code solves the corresponding linear electric circuit problem and prints out the potentials on all buses and the currents on all branches. This code adds a few elements beyond the “hello world” problem by showing how to create matrices based on properties of the grid and showing how to create a linear solver.
Besides including new applications and example codes, this release also includes improved communicators that can be used to implement multiple levels of parallelism in applications and a new task manager that can be used to distributed tasks on a first come, first serve basis. The task manager can be combined with the new communicators to implement dynamic load balancing calculations with relatively little effort. Several important bugs and performance issues have also been addressed in this release. The most important relates to how matrices are distributed internally. This bug was causing crashes in matrix-matrix and matrix-vector multiplies due to mismatched data distributions. Removing this bug has resulted in much more robust code for performing algebraic operations. Another significant performance bug has been the partitioner, which has been extremely slow for very large network configurations. Recent improvements have resulted in substantially better performance and reliability. However, issues remain for very large networks on many processors and the partitioning software remains an area of active development.
- Improved performance of partitioning software significantly and fixed some bugs that were causing hangs on some workstations
- Fixed parser so that powerflow application can run large WECC calculation
- Original GridPACK release