Despite being the largest machine in the world, the electric power grid is still being modeled primarily on workstations running serial programs. Other technology sectors, such as pharmaceuticals, aerospace, and the automobile industry, are being modeled at scales that employ the resources of the largest available computing systems. Power grid engineers have spent enormous effort and ingenuity reducing simulations of the grid to manageable sizes, but these reductions have resulted in approximations and loss of detail which may be hiding or obscuring important features and behaviors of the electric power grid. The influx of more information from data sources such as smart meters is also making the task of modeling even small networks more challenging. Furthermore, as more energy is derived from renewable sources, the complexity and unpredictability of the grid will increase.
The power grid is an appealing target for high performance computing (HPC) but few tools are available to assist power grid engineers interested in writing code that runs on HPC platforms. Existing power grid modeling tools are built on serial kernels, some of which represents legacy code going back decades. In spite of the heterogeneity of power grid networks, these codes used array-based models of programming. The resulting codes can be both complicated and fragile and small changes in the model can require changes in the code in many places. These codes are a natural fit for modern object-oriented constructs, but, most of the code used in power grid modeling is proprietary commercial software, so there is no access to the source code and development is not focused on creating modules that can be used in a general context. Even when access to the source code is available, it still requires significant code redesign and reconstruction to utilize HPC technologies, partly because these serial codes have been highly optimized to run on single processors. Some recent efforts have been made to construct parallel versions of power grid simulations, but these have been single application development efforts and again, have not resulted in software that is useful across multiple applications. A generic framework for building power grid applications designed to run on HPC architectures would be extremely useful in this context.